This action will delete this post on this instance and on all federated instances, and it cannot be undone. Are you certain you want to delete this post?
This action will delete this post on this instance and on all federated instances, and it cannot be undone. Are you certain you want to delete this post?
This action will block this actor and hide all of their past and future posts. Are you certain you want to block this actor?
This action will block this object. Are you certain you want to block this object?
Are you sure you want to delete the OAuth client [Client Name]? This action cannot be undone and will revoke all access tokens for this client.
Are you sure you want to revoke the OAuth token [Token ID]? This action cannot be undone and will immediately revoke access for this token.
#crystallang 75 hashtags

This release of Ktistec merges the main_3.x branch into the main branch.
Managing two branches, and two releases, was a lot of work. And sometimes changes were lost in the shuffle, like:
Added
I have about a dozen more features and fixes that are ready for the next release, but to keep things simple, I'm doing the merge first, in its own commit.

Release v2.4.16 of Ktistec... because I forgot to include some critical code in v2.4.15... namely, the menu.
Changed
If you're not planning on adding additional users, you don't need to update!

Experimental support for multiple users landed with Ktistec release v2.4.15. "Experimental" means that it works for me, but hasn't seen enough testing for me to call it "ready for production". With that said, it's unlikely you'll lose your data.
There are lots of intentional design decisions that fit my vision for Ktistec but may surprise you. Here they are:
Every user is an administrator. That doesn't mean users have access to each other's posts and data, but it does mean all users have access to the shared parts of the site—they can change the site description, for example—and they can add new users. So only add people you trust.
If you want to add another user, create an account for them and give them their username and password. There is no self-registration. There are no invitations.
Beyond adding a user, there is no support for user management. You can't even boot a user from your site. Users can delete themselves, however.
There is no support for content moderation. Only add people you trust.
TL;DR Multi-user support in Ktistec is suitable for small teams, families (biological or chosen), and your personal avatars. There are better tools for online communities.
Here's the full set of changes:
Added
Fixed


Release v2.4.14 of Ktistec is small in terms of features and fixes, but it improves in two areas where I thought Ktistec was weak: light/dark mode support and autosave.
I'm not hardcore dark mode, but I do prefer it in some cases. Ktistec selects light or dark mode based on the browser or system setting—there is currently no means to select the mode directly. A nice side effect of light/dark mode support is that custom theming support comes nearly for free.

Ktistec was meant for writing. I post my fair share of one-line bits of wisdom, but I started building Ktistec because I wanted a space to write long form, and existing Fediverse platforms were more for social interaction. When writing long form, autosaving is an essential feature. Ktistec will now autosave draft posts and replies. If you navigate away before publishing, you can always find the incomplete draft in the Drafts collection which is accessible from your timeline page.
Added
Changed

I was planning on adding support for custom themes in release v2.4.13 of Ktistec. That turned out to be difficult, so I implemented post visibility instead—which then also turned out to be difficult. C'est la vie.
The editor now includes radio buttons for controlling post distribution and visibility. In particular, you can now send messages directly to mentioned users without sending them to all of your followers.
You can also mark posts as sensitive using the content warning checkbox in the editor. Sensitive posts are hidden behind a summary that readers can click to reveal the content.

This release of Ktistec includes RSS feeds and RSS feed discovery. RSS feeds are currently available for the site home page and account pages.
Here's the full changelog:
Added
Changed
Fixed

The biggest changes in release v2.4.12 of Ktistec are the UI/UX enhancements. The mobile profile, in particular, felt like an afterthought—which it was. The changes make the mobile experience much more pleasant and ergonomic. All of the credit for this work goes to @jayvii.
This release also now refuses to deserialize and use embedded ActivityPub objects from hosts other than the host of the embedding object. While I haven't encountered any problems with the previous implementation in practice, this fix closes a gap that could be exploited by a bad actor to spoof or change content.
Added
Changed
Fixed

Ktistec is taking steps toward supporting multiple users. The first (small) step removes the actor panel from the unauthenticated home page and replaces it with a site description. You can see this in action at epiktistes.com. The site description is managed on the settings page using the same rich text editor used to edit posts. See the README for more information.
Other changes in this release:
Added
trix_editor view helper.Changed
Fixed
all_types output. (fixes #104)at_beginning_of_week. (see crystal-lang/crystal#16112)Other

I'm trying to get through the backlog of bugs and features in my to-do list. Release v2.4.10 of Ktistec packages up several important improvements. The most impactful change is graceful server shutdown—I've never had a problem with shutdown leaving the database in a broken state, but prevention is the best cure.
Added
Fixed
Changed
I'm considering adding lightweight multi-user support (invitation-only, not open registration). I'm interested in your thoughts on whether this would be useful.

the 113,520 lines of code across 332 files in the ktistec codebase is teaching me the importance of distinctive class/method/function/variable names