Skip to content

Releases: asciinema/asciinema-server

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

The 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.

20231216

16 Dec 22:27
Compare
Choose a tag to compare

Notable changes

Breaking changes

  • the data (uploads) directory inside the container changed - see below

Upgrading

Bump the container image version number in docker-compose.yml:

 services:
   asciinema:
-    image: ghcr.io/asciinema/asciinema-server:20231120
+    image: ghcr.io/asciinema/asciinema-server:20231216
     # ...

Next, update the volume mapping:

In previous versions, when local file store was used (default), the uploads were stored in /opt/app/uploads. Starting with this release, all persistent data is written to /var/opt/asciinema. Uploads in particular are stored in /var/opt/asciinema/uploads.

Right now, asciinema server writes to /var/opt/asciinema/uploads only, but in the future we may use other directories in /var/opt/asciinema/ to store other files.

The quick fix, is to make the following change to the volume mapping section:

 services:
   asciinema:
     volumes:
-      - ./path/to/asciinema/uploads:/opt/app/uploads
+      - ./path/to/asciinema/uploads:/var/opt/asciinema/uploads
     # ...

A more future proof solution is to change the mapping like this:

 services:
   asciinema:
     volumes:
-      - ./path/to/asciinema/uploads:/opt/app/uploads
+      - ./path/to/asciinema:/var/opt/asciinema
     # ...

Note the change also on the host side - we now map the parent directory of the uploads directory, which will let the server create other sub-directories next to uploads.

Finally, execute docker compose up -d.

20231120

16 Dec 22:24
Compare
Choose a tag to compare

Notable changes:

  • upgraded asciinema player to 3.6.3
  • added Dracula to theme selector
  • used term "secret" for non-public recordings instead of previous "private" ("private" in the future will be used to refer to recordings accessible to the authenticated author only)
  • new download dropdown option - .txt - pure text version of the recording
  • added .gif generation instructions to the download dropdown
  • added icons for Share and Download buttons
  • fixed Date header in login emails
  • the cache directory inside the container changed - see below

Upgrading

Bump the container image version number in docker-compose.yml:

 services:
   asciinema:
-    image: ghcr.io/asciinema/asciinema-server:20230826
+    image: ghcr.io/asciinema/asciinema-server:20231120
     # ...

Next, update the cache volume mapping:

 services:
   asciinema:
     volumes:
-      - ./path/to/asciinema/cache:/opt/app/cache
+      - ./path/to/asciinema/cache:/var/cache/asciinema
     # ...

Finally, execute docker compose up -d.

20230826

26 Aug 19:49
Compare
Choose a tag to compare

Notable changes:

  • fixed player initialization for recordings with custom font family set
  • fixed display of recording metadata when OS is known while term/shell are not
  • upgraded JS player to the latest version
  • implemented basic WebFinger endpoint