This release is quite packed, with a new admin panel, safer account/CLI flows, recording storage improvements, and lots of rendering and performance work.
Highlights
- replaced the old admin panel with a new one, including dashboard, users, recordings, streams, saved queries, and a compact query language
- added admin actions for editing users/recordings/streams, merging users, managing recording visibility/featured/archive state, and disconnecting streams
- admin panel can now be served at
/adminon the main endpoint for admin users, opt-in viaADMIN_PANEL_ON_MAIN_ENDPOINT - the first registered user on a fresh instance is now granted admin access automatically
- sign-up now asks for username during account creation
- added confirmation pages for login, sign-up, CLI linking, and email changes
- improved CLI linking flow with a preview/confirmation page before claiming an unregistered CLI
- uploaded asciicast files are now stored zstd-compressed, with existing recordings compressed by a background job
.cast,.svg, and.txtresponses can now be served with zstd/gzip encoding when supported by the client- added a more robust file cache for generated/downloaded files, with better timeout and crash handling
- added “Adaptive palette” option for terminal rendering
- improved SVG/PNG preview rendering for Nerd Font symbols, Powerline symbols, blocks, quadrants, sextants, cursor colors, and original-theme recordings
- significantly reduced memory usage of snapshot/SVG rendering and improved PNG/SVG rendering performance
- upload API now accepts title, description, visibility, and audio URL parameters
- added clearer API auth errors, including
account_required, and optional upload limits for unregistered CLIs viaUNREGISTERED_UPLOAD_COUNT_LIMIT - added optional pagination limits for guests/authenticated users
- improved search/query performance with new indexes and configurable
SEARCH_WORK_MEM - upgraded asciinema player and runtime/dependency stack, including Erlang/OTP 28 and Elixir 1.19
- removed the default demo recording from new installs
- lots of new unit, controller, socket, feature, SVG, PNG, gzip/zstd, and admin tests
New admin panel
The admin panel has been rebuilt from scratch. It now includes a dashboard with activity summaries, searchable/sortable index pages, saved queries, richer show pages, and direct admin actions such as user merge, stream disconnect, recording archive/unarchive, visibility changes, and featured toggles.
The panel can still run on the admin endpoint (port 4002), and can also be exposed at /admin on the main endpoint by setting ADMIN_PANEL_ON_MAIN_ENDPOINT=true.
Recording storage and generated media
Uploaded asciicast files are now stored compressed with zstd. Existing recordings are queued for compression during migration, and generated/downloaded .cast, .svg, .txt, and .png files now use the new file cache.
Clients that advertise zstd or gzip support can receive compressed responses directly, while clients without compression support continue to receive plain responses.
Account and CLI flows
Login, sign-up, CLI linking, and email changes now require an explicit confirmation step. Sign-up also collects the username up front.
CLI linking now shows a preview page before completing the link. This makes the existing unregistered-CLI claim flow explicit before recordings, streams, and CLI identities are moved to the signed-in account.
Upgrading
No manual changes needed other than bumping the container image version number as shown here.
Database migrations will enqueue background jobs to compress existing recordings. Large instances may see extra maintenance queue activity after deploy.
If you previously used the admin_add / admin_rm release tasks, note that they have been removed. Admin access is now managed through the admin panel, and fresh instances grant admin access to the first registered user automatically.