#ktistec 201 hashtags

Todd Sundsted
Release v2.4.1 of Ktistec

Eh, I didn't test enough and released v2.4.0 of Ktistec with a few annoying regressions. Release v2.4.1 fixes them! ☹️ 😠 😡 🤬

Fixed

  • Handle edge cases and race conditions in script runner.
  • Reconnect editor autocomplete support.
  • Fix permissions on uploaded files.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted
Release v2.4.0 of Ktistec

I just released v2.4.0 of Ktistec. This release encompasses a few things that I've been working on for a while: improved support for operating without JavaScript available/enabled and support for running scripted automations.

Except for a few items, Ktistec now works without JavaScript. Obviously, things like WYSIWYG editing of HTML don't work—I plan to add support for Markdown to compensate. Running in Lynx is a stretch, but...

lynx on osx displaying the authenticated home page

Since the early days, most controller actions supported both text/html and application/json.  I cleaned up support for the latter and have officially documented the Ktistec API in the README.

In addition, I've added support for running bots/automations (prior announcement). The Ktistec server will periodically run any executable script in the etc/scripts directory. These scripts have access to the Ktistec API and can post, follow, share, like, etc. This is experimental and obviously introduces an attack surface, though that shouldn't be a problem on correctly configured hosts.

Here's the full changelog:

Added

  • Support running scripted automations.
  • "Fetch Once" button on hashtag and thread pages. (fixes #108)
  • Support navigation to a post's threaded view. (fixes #108)
  • Add support for post name and summary.

Fixed

  • Improve support for operating without JavaScript available/enabled.
  • Only enforce CSRF protection on "simple" requests.

Changed

  • Replace use of multi-action controller with formaction. (fixes #101)

Other

  • API usability improvements.


#ktistec #fediverse #activitypub #crystallang

Todd Sundsted

I've been thinking about the demise of botsin.space. Running a site for bots is hard (and expensive) but writing and running an ActivityPub-based bot should be easy.

To prove this was the case I added experimental support for bots/automations to Ktistec in the form of scripts that the server periodically runs. These scripts can be in a programming language of your choice. The server provides credentials for its API in the process environment (if you can use curl you can publish posts), simple interaction happens via stdin/stdout/stderr, and the complexity of using ActivityPub is abstracted away.

The code is only available on the following branch for the moment:

    https://github.com/toddsundsted/ktistec/commits/run-scripts/

There are a couple example shell scripts here:

    https://github.com/toddsundsted/ktistec/commit/4982925a...

I have a few enhancements in mind, but it's already proven useful as a means to periodically log data from my server host, and I'll use it, when finished, to publish release notes.

#ktistec #activitypub #fediverse #bots

Todd Sundsted

TIL scripting media queries... gone are the days of the no-js class on the body tag...

i'm working on improving the ktistec user experience when javascript is disabled.

ktistec uses trix as its rich text editor.  of course. trix doesn't work without javascript. behind the scenes, however, trix uses a hidden textarea to hold the body of the post being edited. using scripting media queries, ktistec can now show (or hide) either the editor or the textarea based on the availability of javascript (2030b26b). 

#ktistec #activitypub #fediverse

Todd Sundsted

i'm working toward providing a decent experience in ktistec with javascript turned off.  the first step was emitting minified css instead of using the webpack style loader plugin to apply css via javascript (fd7a5369).

#ktistec #activitypub #fediverse

Todd Sundsted

I just released v2.3.0 of Ktistec.  It fixes a few bugs introduced in the previous release. In particular, it handles a case I've observed a few times in production where the fetching of followed content hangs. The fix adds a monitor that periodically checks for "running" tasks without a backing fiber and sets socket timeouts to ensure requests eventually terminate (I believe the latter actually fixes the problem, but belts and suspenders...)

#ktistec #crystallanguage #crystallang #activitypub #fediverse

Todd Sundsted

on a separate note, why am i discovering all of the things that don’t work with #ktistec while i am away!?! fetching just stopped for a few hashtags I follow…!

Todd SundstedJayVii

I am actually really happy about how my mobile-tweaks for #ktistec turned out. There was a lot of #CSS hacking involved, but I am pretty happy with the results :)

Here's a little video of how it looks:

Bildschirmaufzeichnung vom 2024-08-08, 18-28-20.webm 187.76 KB
Todd Sundsted

I just released v2.2.0 of Ktistec. A lot of code was written but the main user-visible change is streaming timeline updates to the web client using server-sent events.  The back-end pub/sub framework will also make it easier to decouple some components down the road.

I want a visual indicator that new posts are in my timeline. I appreciate that not everyone feels the same way—if there's interest I may make it switchable.

And now, off to #worldcon!

#ktistec #fediverse #crystallang

Todd Sundsted

I just released v2.0.0 of ktistec. It's just bug fixes on top of the last prerelease, but it's much improved over v1.0.0. The README and CHANGELOG have more detail but features and improvements include:

  • Content filtering
  • Support for more ActivityPub object types
  • Support for following threads, hashtags and mentions
  • Collection and presentation of server performance metrics
  • Setting the application name in the webmanifest (thanks JayVii)
  • Mastodon-compatible user profile metadata (thanks relistan)
  • Links to the pages of remote actors (thanks vrthra)
  • Support for handling 303s in searches (thanks winks)
  • Automatic database backups

I'm working on user experience enhancements for the next release: I've just finished streaming updates to the front-end—no more refreshing the page to see if you have new posts in your timeline (and new notifications).

#ktistec