All releases

v0.4.41

Signedpublished September 16, 2026

What changed

  • The beta terminal is now the standard terminal. All terminal panes and full-screen sessions use it, with reconnect, text selection, and mobile input controls. The old terminal and beta switch have been removed.

  • The dashboard has a new colour scheme. Gold and navy are gone; the whole interface is now warm charcoal, ivory and a soft lime, in both the light and the dark palette. The lime is spent where it means something — the primary button on a page, the navigation row you are on, a link, the focus outline, the logo — and nowhere else, so ordinary capacity bars are a neutral warm grey rather than four green bars competing with each other for your attention. Running/stopped/failed still read green, amber and red, and code in the script editor keeps its own colours.

    Several things are easier to see than they were. Links, the selected navigation row and the focus outline are all darkened in light mode instead of being the pale lime they would otherwise be; input borders are a step stronger; the on/off switch's knob now shows against a switched-on track; and the terminal's chrome, its input bar and the container log viewer are warm charcoal like everything else instead of the cool grey they used to be. The colour the browser paints its own chrome with follows the palette too.

    Nothing moved, and nothing changed what it does. If your dashboard is installed as an app, it picks the new palette up the next time it updates.

  • DevGrail has a new icon. The gold-and-navy grail has been replaced by an angular soft lime DG monogram — in the browser tab, in the sidebar beside the wordmark, and on the home screen if you have installed the dashboard as an app. It is drawn on a transparent background, so it takes the colour of whatever it sits on. Nothing but the artwork changed; an installed dashboard picks the new one up the next time it updates.

  • The terminal tab now shows your running sessions instead of hiding them. They used to be small grey chips at the end of the toolbar, next to the buttons they looked exactly like — easy to miss entirely, and easy to think a session you had left running was gone. With no terminal open, the panel now lists every session in full, each with a dot showing whether something is attached to it, and opens one on click. As soon as a terminal is open that space goes back to the terminal: up to three remaining sessions ride along as chips beside the toolbar buttons, and beyond that — or on a phone — the whole set folds into one "N sessions not open" button that expands to a single row when you want it. Every session in the list can also be killed from where it sits, so clearing out one you are done with no longer means opening a terminal onto it first. It still asks before destroying anything.

  • A session no longer claims something is attached to it after you have left. The dashboard asked the workspace for its sessions when the tab opened and then only when you pressed Refresh, so a session you had just closed a terminal on — a pane, or a full-screen tab — kept the "attached" mark it had at that moment, sometimes for as long as the page stayed open. The list now re-reads itself while it is on screen, when you come back to the window, and shortly after a pane closes, so what it shows is what the workspace currently reports.

Container images

registry build 32
amd64812 MB
sha256:d6790d94e449088d214e6416d586cf88b94847632c9f20f964bfcbbd93fea612
Download
arm64678 MB
sha256:848718e58c4824bb6e56b062bd8b204ad373997145565e129f5c104b7e443e11
Download
registry build 61
amd6446 MB
sha256:aa567bf61fbf58c16c599ec55957e3cee4362979f04a5423e8ed74439d2a8067
Download
arm6444 MB
sha256:c8a05ce39b8d0dd6e837e885ada48cc7478d0575f9b0a76854bb86c20df6251d
Download

Installer files

docker-compose.yml21 KBsha256:24e32d13fc76c78de5495f59636f1bf4c651692761d4c575c09776f27cb5a029
install.sh176 KBsha256:ee5052c1552dd5c34c2d33716aa92f6384ca7464b59ff224785ab986a102f466
traefik-dynamic-http.yml5 KBsha256:e344c8efd13c7d84996e2ebfbc75dcee2d995d8538c8a245c89c0e44fad0089b
traefik-dynamic.yml6 KBsha256:d18fa561b8eb7d53b015284e0246b2d05953bf281b65269c1fae3d6883530db6
uninstall.sh57 KBsha256:abe80c2eaab7a8dd0c23073939f58487a4a0bca5a6aef303e489b2ecb2ceca40

Signature

ecdsa-p256-sha256key f1f1eaf642454d65

One signature covers every artifact above. It is made off this host, and neither this site nor the registry behind it can check it — that is the point, and it is why verifying it catches things a checksum from the same server cannot. How to verify it.

Verify devgrail-container (amd64)
curl -fsSL https://web-dev.trixibot.com/api/registry/releases/v0.4.41 -o release.json

# -j, not -r: -r appends a newline the signer never saw, and the check fails.
jq -j '.signature.payload'   release.json > payload
jq -r '.signature.signature' release.json | base64 -d > payload.sig

openssl dgst -sha256 -verify devgrail-release.pem -signature payload.sig payload
# -> Verified OK

# The payload must name this release, so an older signed one cannot be replayed.
head -2 payload

# ...and it must name this exact file. -qxF: whole line, literal.
grep -qxF 'image devgrail-container 32 amd64 d6790d94e449088d214e6416d586cf88b94847632c9f20f964bfcbbd93fea612' payload && echo "digest is covered by the signature"
The signed payload — shown for reading, not for verifying

Copy this from the manifest with jq -j, never from this page: the signature covers exact bytes, and rendering here drops the trailing newline the signer included.

devgrail-release-signature-v1
release v0.4.41
asset docker-compose.yml 49 24e32d13fc76c78de5495f59636f1bf4c651692761d4c575c09776f27cb5a029
asset install.sh 49 ee5052c1552dd5c34c2d33716aa92f6384ca7464b59ff224785ab986a102f466
asset traefik-dynamic-http.yml 48 e344c8efd13c7d84996e2ebfbc75dcee2d995d8538c8a245c89c0e44fad0089b
asset traefik-dynamic.yml 49 d18fa561b8eb7d53b015284e0246b2d05953bf281b65269c1fae3d6883530db6
asset uninstall.sh 49 abe80c2eaab7a8dd0c23073939f58487a4a0bca5a6aef303e489b2ecb2ceca40
image devgrail-container 32 amd64 d6790d94e449088d214e6416d586cf88b94847632c9f20f964bfcbbd93fea612
image devgrail-container 32 arm64 848718e58c4824bb6e56b062bd8b204ad373997145565e129f5c104b7e443e11
image devgrail-server 61 amd64 aa567bf61fbf58c16c599ec55957e3cee4362979f04a5423e8ed74439d2a8067
image devgrail-server 61 arm64 c8a05ce39b8d0dd6e837e885ada48cc7478d0575f9b0a76854bb86c20df6251d