Release v3.3.4 of Ktistec is available.

This release adds Mastodon-compatible client support for publishing posts. Just like the previous release, however, all Mastodon API support is behind a build flag (-Dwith_mastodon_api). It's still experimental, so opt in only if you're happy to work with rough edges.

Beyond that, I focused on cleanup and refactoring throughout the codebase. Here's the full changelog:

Added

  • Cursor-based pagination on actor timeline and everything pages.
  • Mastodon-compatible API: /api/v1/statuses endpoint for status posting.
  • Mastodon-compatible API: /api/v1/timelines/public endpoint.

Fixed

  • Autosave focus handling. Fixes problems introduced in v3.3.3.
  • Prevent blur from creating a draft post when publishing a post.

Changed

  • Integrate X-Ray Mode colors into the theming system.
  • Improve CI: add npm audit, test, and caching.
  • Use npm ci in Dockerfile for reproducible builds.
  • Remove very old compiler bug work-around.

🏋️ Mastodon API support is coming along—more in the next release!

#ktistec #crystallang #activitypub #fediverse

Comparing f64f24d1...df77bdab · toddsundsted/ktistec

ActivityPub (https://www.w3.org/TR/activitypub/) server for individual users and small groups. - Comparing f64f24d1...df77bdab · toddsundsted/ktistec

GitHub

is it the expectation that atomic should be used for all class level variables now?

#crystallang

The Weekly Challenge 364: Decrypted Goals

I’ve been doing the Weekly Challenges. The latest involved various sorts of string parsing. (Note that this ends today.)

RogerBW's Blog
Maybe one way to change the rules is to stop writing code that needs big hardware. The old options were C or C++ for speed and efficiency (which are difficult and dangerous) or Python, Ruby, NodeJS, Perl, PHP for quick and easy coding (but which are fat and slow). But we have better options now, better compromises... #RustLang, #NimLang, #GoLang, #CrystalLang ... the legacy languages have become the tools of the oppressor

I have started work on a Mastodon-compatible API layer intended to support the many Mastodon front-ends available. It is incomplete and requires an explicit build flag to enable, but what's there (the main timeline) already works with the official Mastodon app, Tusky, and Phanpy.

Here's the full changelog:

Fixed

  • Editor focus now stays in the editor after the first draft is saved. (fixes #139)
  • Filter settings instructions. (fixes #135)

Changed

  • Improved consistency of mini button colors.

As always, check out the full diff for the complete details.

#ktistec #crystallang #activitypub #fediverse

Get an app for Mastodon

Browse official and third-party apps for the decentralized social network Mastodon

You're looking for something that's readable but more efficient and smaller than #JSON or #YAML?
Structure data with #ASCII control codes like people did in 1963!

https://trans.github.io/c0data/

There's also a library in @CrystalLanguage available.

#crystallang #crystallanguage

C0DATA — Structure Data with Control Codes

This small release focused on two big deliverables: support for the latest version of Crystal and fixes for a few delivery issues.

Previous releases supported a wide range of Crystal Language versions, but ran into problems with version 1.17.x and beyond due to breaking changes in the standard library. This release works on 1.19.1 but also requires at least 1.19.1.

This release also fixes a bug, present since mid-2020 when HTTP signatures were first added, that resulted in signatures some fediverse servers wouldn't accept. Mastodon did, but with the proliferation of new ActivityPub servers, I increasingly encountered servers that did not.

Here's the full changelog:

Fixed

  • HTTP signature keyId now includes #main-key fragment.
  • IRI matching during dereferencing.
  • Broken down-detection for actors.

Changed

  • Fall back to Activity Streams context if supplied context is empty.
  • Deliver to personal inbox if delivery to shared inbox fails.

It's always good to stay up-to-date on releases. But if your platform doesn't yet support 1.19.1, I've also released a parallel branch that still runs on 1.16.3 and earlier. I'll maintain that branch for the next few releases to give everyone time to upgrade.

#ktistec #crystallang #activitypub #fediverse

Comparing f64f24d1...df77bdab · toddsundsted/ktistec

ActivityPub (https://www.w3.org/TR/activitypub/) server for individual users and small groups. - Comparing f64f24d1...df77bdab · toddsundsted/ktistec

GitHub

This code scratches an itch I've had for a while, which is (when used with find's -exec) to search for directories based in their contents. It can express conditions like "directories containing at least 2 .c files but lacking a Makefile". This is a pretty early version and there's lots to do but it's functional, comments welcomed:

https://codeberg.org/joatca/indir

#Linux #CrystalLang

indir

`indir` is a tool intended to be used with the `-exec` test of `find` to search for directories with particular contents. It can express conditions like "contains more than 2 C files but lacks a Makefile".

Codeberg.org
The Weekly Challenge 362: Spellbound Echo

I’ve been doing the Weekly Challenges. The latest involved character duplication and number to word conversion. (Note that this ends today.)

RogerBW's Blog

The latest release of Ktistec addresses the shortcomings of the previous release that became apparent after using quote posts in production for a few days. So far, there have been no major bugs, but there was room for improvement.

Here's the full changelog.

Added

  • Federation documentation (FEDERATION.md).
  • Visibility (private or direct) icon in object summary.
  • Object social activity details include dislikes.
  • "quotes-me" theming class for objects.
  • Notification for quote posts.
  • MCP integration for quote posts.

Changed

  • Renamed NodeInfo siteName to more standard nodeName.
  • Increased hard-coded limits for actor attachments and pinned collections.

Fixed

  • Displaying quoted posts in draft view.
  • Visual indication of nested quotes in object view.

I added a FEDERATION.md document to the project. This is documentation required by FEP-67ff on "information necessary for achieving interoperability with a federated service". The document describes, at a high level, what federation protocols and standards Ktistec currently supports.

#ktistec #crystallang #activitypub #fediverse

Comparing f64f24d1...df77bdab · toddsundsted/ktistec

ActivityPub (https://www.w3.org/TR/activitypub/) server for individual users and small groups. - Comparing f64f24d1...df77bdab · toddsundsted/ktistec

GitHub