Releases: asciinema/asciinema-server
20240627
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
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
andSMTP_REPLY_TO_ADDRESS
config options toMAIL_FROM_ADDRESS
andMAIL_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
-> newpublic
- previous
secret
-> newunlisted
- 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
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
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
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:
Upgrading
No manual changes needed other than bumping the container image version number as demonstrated here.
20240203
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
20231216
Notable changes
data-poster
can now be used on the embed script - https://docs.asciinema.org/manual/server/embedding/#poster- easier SMTP configuration, without namshi/smtp container - https://docs.asciinema.org/manual/server/self-hosting/configuration/#email
- added admin console endpoint in port 4002, with Phoenix LiveDashboard at
http://localhost:4002/dashboard
- setting
URL_SCHEME=https
now automatically infersURL_PORT=443
- https://docs.asciinema.org/manual/server/self-hosting/configuration/#base-url - default PostgreSQL connection pool size has been decreased from 20 to 10
- using object store (S3, R2, MinIO) for file storage is easier now - https://docs.asciinema.org/manual/server/self-hosting/configuration/#file-store
- added About page at
/about
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
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
.