Skip to content

Releases: asciinema/asciinema-server

20250722

23 Jul 07:41
Compare
Choose a tag to compare

Notable changes

  • new HTTP API for management of recordings and streams
  • per-user stream limit now applies to live streams only, users can have any number of dead streams
  • when streaming with --title option the title is now set on the stream and used for stream recordings
  • added gruvbox-dark theme (thanks @hupfdule!)
  • uploads of recordings with invalid terminal size (cols or rows less than 1) are now rejected
  • upgraded the player and avt to latest versions
  • added audio URL attribute to recordings and streams (audio_url in the API), which will be used by the upcoming version of the player
  • fixed SMTP connection issues with TLS (#463, #464)
  • fixed oEmbed endpoint crash when looking up non-existing recordings
  • fixed duration calculation for very short (single-event) recordings
  • code cleanup, lots of new tests

Breaking changes

  • streaming related API endpoints used by asciinema CLI 3.0 RC3 (and earlier RCs) have been removed - if you use one of these RC versions then upgrade your CLI to the latest RC to be able to stream
  • DB name used in dev env has been changed from asciinema_development to asciinema_dev - run psql -U postgres asciinema_development and execute ALTER DATABASE asciinema_development RENAME TO asciinema_dev

Upgrading

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

20250509

09 May 08:54
Compare
Choose a tag to compare

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.

20241103

03 Nov 15:36
Compare
Choose a tag to compare

Notable changes

  • upgraded the player and avt to latest versions
  • disabled auto-update (at runtime) of timezone database file used by tzdata library, fixing deployment to read-only filesystems (re #453)
  • updated link to the latest CLI RC pre-release binary on the live stream page
  • updated live stream API endpoint path/method, needed for recent changes in the upcoming CLI 3.0
  • UI tweaks

Upgrading

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

20240627

27 Jun 20:27
Compare
Choose a tag to compare

Notable changes

  • new identicons based avatars (see below)
  • redesigned the filtering and sorting on the Explore page, for better use of horizontal space
  • improved the iframe embed: matching background color, smarter margin, better footer text look
  • upgraded the player and avt to the latest version - fixes rendering of RGB colors recorded on certain terminals (Kitty, WezTerm)
  • fixed centering of the logo in embeddable SVG previews

The new identicons avatars are now used by default, replacing previously used gravatar.com. Shout out to @waseigo for his awesome identicon Elixir library.

This change was made to make asciinema server less dependent on 3rd party services. In fact, as of this release, asciinema server doesn't depend on any 3rd party (other than a SMTP server), and is a 100% local and self-contained service.

New DEFAULT_AVATAR configuration variable can be used to select avatar implementation, accepting the following values:

  • identicon (default)
  • gravatar

Upgrading

If you wish to keep using gravatar.com then set DEFAULT_AVATAR=gravatar environment variable.

Beside that, no manual changes are needed, other than bumping the container image version number as shown here.

20240523

23 May 13:10
Compare
Choose a tag to compare

Notable changes

  • extended recording visibility to 3 options: public, unlisted, private (see below)
  • added account deletion option, available from user settings page
  • renamed SMTP_FROM_ADDRESS and SMTP_REPLY_TO_ADDRESS config options to MAIL_FROM_ADDRESS and MAIL_REPLY_TO_ADDRESS (the old names are kept for backward compatibility)
  • improved reliability of mail delivery (upgraded SMTP client lib, surfaced send failures in the UI)
  • UI tweaks

Old recording visibility options are mapped to the new ones as follows:

  • previous public -> new public
  • previous secret -> new unlisted - same behavior, more appropriate name

The new private visibility is now truly private, i.e. accessible only by the (logged-in) author of the recording. Note that private recordings cannot be shared in any way; also they can't be embedded on external websites.

Upgrading

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

20240515

15 May 11:34
Compare
Choose a tag to compare

Notable changes

  • user account email addresses are now case-insensitive and automatically lower-cased (see Upgrading section below)
  • extended live stream visibility to 3 options: public, unlisted, private
  • fixed memory leak caused by telemetry_metrics_prometheus (which has been removed, for now)
  • SVG preview images are now cacheable (Cache-Control: public, max-age: ...)
  • improved recording instructions on new user profile, added streaming instructions there too
  • fixed embed script for private recordings
  • added support for use of Nerd fonts in embed iframes (thanks @jonpetersathan!)
  • added support for use of original terminal themes in embed iframes
  • improved duration formatting on the live stream card on user profile
  • recording files are now fetched via local path instead of absolute URL - easier for reverse proxies / front web servers
  • various code cleanups and refactorings

Upgrading

For most folks no manual changes are needed, other than bumping the container image version number as shown here.

If it happened that you signed up multiple times with the same email address but different letter casing, e.g. foo@example.com and Foo@example.com, then the duplicate account is automatically renamed to 1_foo@example.com upon first boot of this version.

In such case, and if the other account had recordings which you'd like to access, you can merge the accounts by:

  • attaching to the Elixir shell in the asciinema server container, e.g.: docker-compose exec asciinema bin/asciinema remote
  • merging the accounts by executing: Asciinema.merge_accounts("1_foo@example.com", "foo@example.com")

Asciinema.merge_accounts merges the first account (first arg) into the second account (second arg).

Example:

$ docker-compose exec asciinema bin/asciinema remote
Erlang/OTP 25 [erts-13.1.4] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [jit]

Interactive Elixir (1.14.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(app@1.2.3.4)1> Asciinema.merge_accounts("1_foo@example.com", "foo@example.com")
{:ok, %User{...}}

I've already merged duplicate accounts on asciinema.org.

20240428

28 Apr 11:37
Compare
Choose a tag to compare

Notable changes

  • exposed live streams in the UI: "Stream" link in the user menu, stream card on user profile
  • upgraded live streaming endpoints to support latest asciinema CLI 3.0 RC1
  • vastly improved robustness of live streaming
  • added "Use the actual terminal theme when available" option to live stream settings
  • added "Prefer original terminal theme" option to user settings
  • upgraded the js player to the latest version
  • made the flash messages disappear automatically or upon clicking "x"
  • ... and many other code and test improvements

Upgrading

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

20240324

24 Mar 16:07
Compare
Choose a tag to compare

Notable changes

  • greatly improved recording preview cards and SVG embed images with regards to character rendering accuracy and grid alignment - ascii drawing, box elements, Powerline, kanji and emojis render much much better now
  • fixed the behaviour of UNCLAIMED_RECORDING_TTL config option to match the docs
  • upgraded the player to the latest version
  • improved the user settings page: split into sections, improved labels and hints
  • added account-level font family setting
  • improved wording around CLI authentication
  • enabled use of the original (embedded) recording theme (when available)
  • fixed styling/positioning of the sorting links on the Explore page
  • improved snapshot (preview card) cropping algorithm
  • added multi-platform build step (thanks @aemr3!)

A taste of the rendering improvements:

asciicast

Upgrading

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

20240203

03 Feb 20:52
Compare
Choose a tag to compare

Notable changes

  • added configuration option for upload size limit - see doc
  • changed automatic deletion of unclaimed recordings to a 2-step process - see doc
  • added new speed setting to the recording settings page
  • removed support for legacy uploads (pre-version 1)
  • improved email sending reliability
  • implemented honeypot fields in the login form to reduce signup spam
  • updated the "welcome" recording
  • added forum link to the navbar
  • performed internal code maintenance and dependency upgrades
  • removed example docker-compose.yml (see details below)

The example docker-compose.yml has been removed because there isn't one which fits all setups. Refer to the self-hosting quick-start guide and server configuration docs for example snippets to use in your own docker-compose.yml. Example Nginx config file has been removed as well. The docs now suggest use of Caddy, which is easier to configure and provides automatic HTTPS. You're free to continue using Nginx if that's what you prefer.

Upgrading

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

20231217

17 Dec 21:44
Compare
Choose a tag to compare

Notable changes

Upgrading

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