#crystallang 76 hashtags

Todd Sundsted
Release v3.3.0 of Ktistec

Release v3.3.0 of Ktistec adds support for consent-respecting quote posts (FEP-044f). Quote posts represent the most lines of code I've written for any single changelog entry in my life.

Added

  • Support for consent-respecting quote posts (FEP-044f).

Changed

  • next_attempt_at in tasks now means not scheduled when nil.
  • Permit type changes for ActivityPub objects.

Important: Quote posts come with a few big caveats. I've been using iterations of this in production for weeks, but if you don't like what you read below you might want to wait for the patch release.

  • FEP-044f quote posts require delicate choreography between quoted and quoting servers. Server support across the fediverse is incomplete and evolving. If a quote post doesn't display it might be my bug, it might be their bug. Expect bugs.
  • Quote authorization is currently all or nothing鈥攜ou either blanket reject quote post requests (the default) or blanket accept them. I intend to support more granular controls and manual approval but that comes later.
  • Quote authorization revocation isn't supported.
  • Automatic re-verification of quote authorization isn't supported.
  • Compatibility with other quote implementations is incomplete.
  • There will be bugs 馃悶 and more bugs 馃悳.

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted
Release v3.2.9 of Ktistec

I just released v3.2.9 of Ktistec!

You can now customize the secondary menu on your home page. This is the menu that links to your posts, drafts, notifications, etc. Posts, drafts, and notifications are fixed, but you can change the final three鈥攖hey default to bookmarks, followers, and following. Edit the links on your Settings page in the section titled Pinned Collections. I typically replace the defaults with hashtags I'm following and threads I'm actively participating in.

I am slowly adding functionality to support Mastodon API compatible clients. In line with that effort, OAuth access tokens are now associated with sessions, which makes it possible for clients that authenticate via OAuth (instead of username/password) to access all of the existing API.

I use this extensively when building scripts to automate my Ktistec instance. A script can authenticate and cache the access token in a secure keystore. Since access tokens have a limited lifespan and can be individually invalidated, a compromised access token does not force me to change my password!

Here's the full list of changes:

Added

  • Support for customizing the secondary menu with pinned collections.

Fixed

  • Thread rendering no longer fails when drafts are present.

Changed

  • Content warnings are now preserved when replying to posts. (fixes #136)
  • OAuth access tokens are now associated with sessions.
  • Attachments are deleted when draft objects are destroyed.
  • Actor icons and images are deleted when replaced or unset.

A recent poll prioritized emoji reactions and quote posts. I see dozens of quote posts every day, so that's where I plan to focus next.

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted
Release v3.2.8 of Ktistec

I didn't think I'd ever pull it off 馃榾, but the new editor framework is complete and with it support for creating polls. One nice extra鈥攜ou can now choose which content editor to use (rich text or Markdown) on a per-post basis without updating your settings.

The full set of changes in this release:

Added

  • Front-end support for creating polls.
  • Editor selection support for content, polls, and optional metadata (name, summary, etc.).
  • Poll expiry notifications for poll authors.

Fixed

  • Poll closed_at handling for drafts and remote polls.

I'll try not to be quite as ambitious for the next release! 馃槄

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted
Release v3.2.7 of Ktistec

The two big features in release v3.2.7 of Ktistec are back end support for creating polls (the front end is coming in the next release) and advanced theming support鈥攕pecifically, a rich vocabulary of CSS class values and data attributes on which to build a theme. The full set is documented in the README. I'll post more on how I'm using these later this week.

Here is the full set of notable changes:

Added

  • Back-end support for creating polls.
  • Advanced theming support with new classes, data attributes, and view helpers.
  • Task status display on admin page showing running and imminently scheduled task counts.

Fixed

  • Poll vote form now correctly submits Question ID.

Changed

  • Move location of Ktistec version notice. (fixes #133)
  • Updated admin page for better accessibility and less clutter.

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted

working with ameba has been a treat. #ktistec is now all properly linted.

out of a few dozen rules, i disabled only five and tweaked the configuration of five more. that's a pretty good set of defaults. i also added a few custom rules covering spec hygiene. i highly recommend it!

#crystallang #ameba

Todd Sundsted
Todd Sundsted
Release v3.2.6 of Ktistec

I took a detour and worked on alt text editing in release v3.2.6 rather than continuing with the polls backend. I also continued to fix bugs and to add polish. Here's the full set of changes:

Added

  • Support for editing alt text in the Trix editor. (fixes #52)

Fixed

  • Render fallback icon when actor is down.
  • Remove blank figcaption elements.
  • Emojify display names in notifications.

Changed

  • Color notifications label by type of unread notifications.
  • Render lines instead of points for server starts in metrics.

(I'm editing this post in Markdown鈥攖he new feature in the last release!)

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted
Release v3.2.5 of Ktistec

I rolled out a lot of features over the last several weeks and created a lot of bugs in the process. Release v3.2.5 of Ktistec is mostly about fixing those bugs. I did implement two requested features, however: support for editing posts in Markdown and support for Open Graph metadata. Here's the full list of new features:

Added

  • Support for editing posts in Markdown. (fixes #25)
  • Support for Open Graph metadata on actors and objects. (fixes #71)
  • Support for uploading a site image.
  • Internal table of contents page.
  • Poll expiry notifications.

馃巹 I'm working on support for poll creation and management now. It's also time for a performance improvement pass or two.

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted
Release v3.2.4 of Ktistec

The big feature in release v3.2.4 of Ktistec is support for viewing and voting on Mastodon polls (AKA FEP-9967: Polls). This feature took a surprising amount of work. Some of the effort was due to my struggles with visual design, but getting the behavior right was also tricky. For example, a "vote" is just an ActivityPub Note, but unlike other notes, it shouldn't appear in a poll's replies (it could, but that would be redundant and confusing). So I had to add exceptions throughout the code to deal with this. A custom Vote object type would have been nice in the original implementation.

Added

  • Support for viewing and voting on polls. (fixes #49)
  • Added tooltip to notifications menu item summarizing new notifications.

Fixed

  • Improved wrapping of actor panel follow/refresh information. (fixes #130)
  • Autocomplete now works correctly when adjacent to a Trix attachment.
  • Image title attributes are now preserved.

Changed

  • Moved avatars to the bottom of the object detail view.

Thank you @jayvii for the build fix!

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted
Release v3.2.3 of Ktistec

Release v3.2.3 of Ktistec includes two big features:

  • FEP-1b12 Group federation
    Improved federation with Lemmy and other forum-type servers. Ktistec supports community and thread follow/unfollow, as well as up-vote/like (down-vote/dislike is supported but there is no visual affordance for that yet).
  • FEP-9098 Custom emojis
    Support for viewing custom emoji in posts and on actor profiles. Ktistec does not yet support custom emoji creation and management.

The full changelog:

Added

  • Support for viewing custom emoji in posts and on actor profiles.
  • Actor type (Person, Group, etc.) overlay badges on actor panels.
  • Colored fallback avatars for actors without icons.
  • Support for robots.txt.

Fixed

  • Federation with Lemmy and other servers that support FEP-1b12.
    • Shared inbox support for local actors.
    • Serialization of Undo includes the undone activity.
    • Serialization of Like and Dislike does not.
  • Notify only once for an object's first received activity.

Changed

  • Accumulate metrics by hour for finer granularity.
  • Clean up presentation of public followers/following pages.

The next release will include support for Mastodon polls (FEP-9967).

#ktistec #crystallang #activitypub #fediverse