#fediverse 52 hashtags

Todd Sundsted
Release v3.1.3 of Ktistec

There are two big features in release v3.1.3 of Ktistec: auto-approve followers and a new image viewer.

Auto-approve followers is conceptually simple ("the server automatically sends an Accept activity when it receives a Follow activity") but it required extensive changes to some of the oldest code in the codebase: the inboxes and outboxes controllers. I refactored inbox and outbox side-effect processing into independent services, which made it possible to support side-effects like auto-approve follow (and also auto-follow back), without having to go through the controllers.

A more significant change for me personally was replacing the lightGallery image gallery (an external dependency) with my own implementation. It's not as slick, and not as full of features—I wrote it in two days—but it is fully free software, and that's important to me.

Added

  • Add admin page for managing OAuth access tokens.
  • Add support for auto-approve followers. (fixes #26)
  • Add support for auto-follow back.

Fixed

  • Prevent triggering actor refresh when user is anonymous.

Changed

  • Replace "lightgallery" dependency with custom image viewer.
  • Set OAuth access token expiry to 30 days (previously expired after 24 hours).
  • Refactor inbox and outbox processing into dedicated processor services.

The OAuth changes set the groundwork for better support of the Mastodon API and the Fediverse clients that depend on it. Stay tuned!

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted
Release v3.1.2 of Ktistec

I'm working on federation issues.

👻 Release v3.1.2 of Ktistec improves support for Lemmy and community servers like it that distribute content by wrapping it in Announce activities (FEP-1b12: Group federation support). Ktistec also supports the audience property, although support for that was removed from Lemmy earlier this year.

🎃 This release also adds support for delivering to shared inboxes, which are widely supported by other ActivityPub servers. Despite being federated, the Fediverse is not highly distributed, and this optimization can reduce outbound delivery traffic by 10-20x.

Added

  • Support for the Dislike activity.
  • Support for the audience property on activities and objects.
  • Support for delivery to shared inboxes.
  • Support for full-width hash signs in hashtags (e.g. #日本語) commonly used in Japanese and other Asian languages.

Fixed

  • Strip HTML from object summaries rather than escaping it.
  • Properly unwrap Lemmy-style Announce activities.

Changed

  • Destroy discarded drafts instead of deleting them.

Enjoy!

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted
Release v3.1.1 of Ktistec

Vacations are wonderful. It is a privilege to be able to travel without worry. It's also wonderful to be home, and to have the time to work on projects I care about. With those thoughts in mind, I present release v3.1.1 of Ktistec, an ActivityPub server written in the Crystal programming language!

This release is a mixed bag of small features and improvements:

Added

  • Auto-link URLs in posts. (fixes #24)
  • Support searching by actor username. (fixes #102)
  • Support hourly granularity in metrics charts.

Fixed

  • Mark actor as down if refresh fails.
  • Remove draft posts from the everything collection.
  • Ignore charts with no points in the date range.
  • Ensure HTTP::Client instances are closed.

I added support for multiple users at the beginning of the month. I'm very interested in feedback on how that's working out for anyone using it.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted
Release v3.1.0 of Ktistec

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

  • Add a small banner to highlight "offline" status.
  • Support YAML MCP prompts and hot-reloading.

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.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted

I'm trying to decide how much of "quote posts" I want to support in Ktistec. On one hand, it's not trivial functionality, and I really do question how much extra value someone's comments on someone else's post will add to the Fediverse. On the other hand, I dunno... assuming Mastodon limits abuse by enforcing quoting rules, Ktistec could probably just follow along and display quoted posts. Is there any value in just that?

#ktistec #activitypub #fediverse

Todd Sundsted
Release v2.4.16 of Ktistec

Release v2.4.16 of Ktistec... because I forgot to include some critical code in v2.4.15... namely, the menu.

Changed

  • Reorganize the admin menu.

If you're not planning on adding additional users, you don't need to update!

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted
Release v2.4.15 of Ktistec

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

  • Add support for multiple user accounts.

Fixed

  • Hide attachments behind the summary. (fixes #125)
  • Mark actors as up after refreshing their profile.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted

With the addition of the @ktistec account, Ktistec (the server) now supports multiple users.

I still have a few rough edges to fix, but there's a good chance official multi-user support will be included in the next release.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted
Release v2.4.14 of Ktistec

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.

Figure 1: Ktistec editor showing the Dracula theme

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

  • Add design system page for previewing UI elements.
  • Support custom themes with automatic light/dark mode switching.
  • Add autosave functionality for new posts, draft posts, and replies.

Changed

  • Add external link indicators.

#ktistec #fediverse #activitypub #crystallang

Todd SundstedWeek in Fediverse :fediverse_light: