All releases

v0.4.19

Signedpublished August 25, 2026

What changed

Fixed

  • A running script now shows its output while it runs. Until it finished, a script run reported nothing at all — a spinner, an empty pane, and no way to tell a slow step from a stuck one. Output is now recorded as it arrives, so the run history, the workspace's Execute scripts tab and the editor's test run all fill in as the script works. Injected secrets stay redacted throughout: the tail of each update is withheld until enough has arrived to match and scrub a value that lands across the boundary, so a secret can never assemble itself across successive updates.
  • The end of a long script's output is no longer the part that gets thrown away. Output over the 1 MiB cap used to keep the beginning and drop the rest, which for a chatty apt or npm step meant keeping the downloads and losing the error. It now keeps the end, where a failing script says why. Each step in a chain is still labelled with the script it came from.
  • "Run this again" in a workspace's run history no longer silently changes the run. It passed no parameters at all, so a script with parameters either ran with different values than the run it was repeating or failed outright. The control now loads that run's script and the values it was started with back into the form for you to check before running — API keys and secrets included, still as references rather than the secrets themselves.
  • Testing a script in a temporary container no longer gives up after three minutes. The editor stopped waiting long before the server does, destroyed the container out from under a script that was still working, and reported a perfectly good script as failed. It now waits out the server's own ten-minute limit, and shows elapsed time while it does.
  • Deleting a script now warns you what it will break. Scripts that include the one being deleted are named in the confirmation, an include whose script is gone is called out in the editor instead of showing a bare id, the preview shows where the chain breaks, and the error you get from running one now names the script that needs fixing rather than a bare id.
  • The workspace Scripts tab no longer re-fetches your scripts continuously while it is open.

Changed

  • The script editor highlights shell syntax and numbers its lines. Comments, strings, keywords and variables are coloured — in both light and dark — and the line numbers mean an error reported at "line 47" can be found by looking rather than by counting. Parameter and secret chips work exactly as before.

  • The dashboard now wears the same colours as devgrail.com. Navy, gold and warm off-white replace the old purple-on-white palette, and the DevGrail wordmark, logo tile and page-header icons match the ones on the website — so moving from the product page to your own install no longer feels like moving between two different products. Nothing moved and nothing was renamed; only the colours, corners and brand marks changed. The consent screen you see when connecting DevGrail to Claude.ai was restyled to match as well, and the installed-app splash colour now matches the dashboard instead of flashing black on launch. Status colours are untouched: running is still green, warnings amber, failures red.

Container images

registry build 24
amd64742 MB
sha256:4657a309f66b799f8da65119896ed7953bbb700f0a9f8ef974cf0d45740ed0cf
Download
arm64612 MB
sha256:016f34061e0dabe08d72b8017ca02322e2b1f4e51f6d50ad04ff3b56d33ac283
Download
registry build 30
amd6445 MB
sha256:1c2750048bca0083899485f4f821c4e95a611ae467694443a20af36d1440dd25
Download
arm6444 MB
sha256:e06cfe927c1ef016928a1465c24a71e7f7b6f3d92d55e21b4b502a94730e3fda
Download

Installer files

docker-compose.yml16 KBsha256:25d99bfe1eb947d9f3277067aa9fa776fb3da3b8896e5fcb8737a73e2582dc31
install.sh132 KBsha256:57a946382d304d2a1deb30cc7cf9ceb760f96bf78e190d7e7e13119518d397ac
traefik-dynamic-http.yml5 KBsha256:e344c8efd13c7d84996e2ebfbc75dcee2d995d8538c8a245c89c0e44fad0089b
traefik-dynamic.yml6 KBsha256:d18fa561b8eb7d53b015284e0246b2d05953bf281b65269c1fae3d6883530db6
uninstall.sh57 KBsha256:de144d9c73c97ee5739d6fc03f37081426b12a96b6791c7159b5438463e63b94

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.19 -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 24 amd64 4657a309f66b799f8da65119896ed7953bbb700f0a9f8ef974cf0d45740ed0cf' 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.19
asset docker-compose.yml 26 25d99bfe1eb947d9f3277067aa9fa776fb3da3b8896e5fcb8737a73e2582dc31
asset install.sh 26 57a946382d304d2a1deb30cc7cf9ceb760f96bf78e190d7e7e13119518d397ac
asset traefik-dynamic-http.yml 25 e344c8efd13c7d84996e2ebfbc75dcee2d995d8538c8a245c89c0e44fad0089b
asset traefik-dynamic.yml 26 d18fa561b8eb7d53b015284e0246b2d05953bf281b65269c1fae3d6883530db6
asset uninstall.sh 26 de144d9c73c97ee5739d6fc03f37081426b12a96b6791c7159b5438463e63b94
image devgrail-container 24 amd64 4657a309f66b799f8da65119896ed7953bbb700f0a9f8ef974cf0d45740ed0cf
image devgrail-container 24 arm64 016f34061e0dabe08d72b8017ca02322e2b1f4e51f6d50ad04ff3b56d33ac283
image devgrail-server 30 amd64 1c2750048bca0083899485f4f821c4e95a611ae467694443a20af36d1440dd25
image devgrail-server 30 arm64 e06cfe927c1ef016928a1465c24a71e7f7b6f3d92d55e21b4b502a94730e3fda