Skip to content

20250509

Compare
Choose a tag to compare
@ku1ik ku1ik released this 09 May 08:54
· 91 commits to develop since this release

This is quite a significant release with lots of good stuff!

Notable changes

Highlights:

  • added support for asciicast v3 recording format
  • added new stream management page (/user/streams), accessible from the profile page and the session dropdown menu
  • added basic user management and background job introspection to the admin endpoint
  • recording and stream pages now use a background color matching terminal background color (darker shade of it) for greater immersion
  • added "Past recordings" section to the stream page (see STREAM_RECORDING below)
  • added terminal version info (from XTVERSION query) to the recording and stream pages
  • improved the onboarding instructions on new user's profile page
  • new config option UPLOAD_AUTH_REQUIRED, to require authentication for all uploads
  • new config option UPLOAD_PATH_TPL, which allows using a custom directory structure for uploaded recordings (see Breaking changes section below)
  • new config option STREAM_RECORDING, which lets saving all streams into regular recordings
  • new config options DEFAULT_RECORDING_VISIBILITY / DEFAULT_STREAM_VISIBILITY, for setting default recording/stream visibility (overridable by user-level setting)
  • new config options DEFAULT_STREAMING_ENABLED / DEFAULT_STREAM_LIMIT, for enabling/disabling streaming for new users (overridable by admin-only user-level setting)

Improvements to live streaming:

  • leaner streaming protocol - uses delta coding for timestamps, LEB128 encoding for all integers
  • implemented WebSocket subprotocol negotiation for stream producer and consumer endpoints for future-proofing / backward compat
  • more robust handling of stream producer (re)connections

Other changes:

  • upgraded the player and avt to latest versions
  • upgraded compilers used for Docker build - Elixir version to 1.18, Erlang/OTP to 26.2, Rust to 1.83

... and tons of other improvements and fixes.

Breaking changes

In relation to the new UPLOAD_PATH_TPL config option, the default upload path for recordings in the file store have changed in this release:

previous: asciicasts/{shard}/{id}.{ext}
new: recordings/{username}/{year}/{month}/{day}/{id}.{ext}

For example:

previous: asciicasts/09/72/12790.cast
now: recordings/ku1ik/2025/04/04/12790.cast

This is a breaking change only if you were accessing the recording files directly and assuming the old directory structure. If you didn't then there's nothing to worry about. The files are automatically migrated via a background job, which runs daily, so there's no need to manually move anything.

Upgrading

No manual changes needed other than bumping the container image version number as shown here.