v0.4.53
Signedpublished October 2, 2026What changed
- Get back to your recent workspaces in one click. The sidebar lists the five workspaces you opened most recently under Workspaces, with a dot for each one's status. Click a name to open the workspace. The terminal icon beside it goes straight to its terminal. Opening a workspace's page, its full-screen terminal or its desktop window counts as using it. An agent working in it does not. The list is kept on the server, so it is the same on every device you sign in from.
- Jump to any workspace with Ctrl+K (⌘K on a Mac). Recent workspaces come first. Type to filter by name, use the arrow keys to move, and press Enter to open one. Shift+Enter opens its terminal and Alt+Enter its desktop. There is also a Find workspace button at the top of the sidebar, and a search button in the top bar on a phone. Ctrl+K typed in a terminal, the desktop or the file editor still goes to them.
- The browser's Back button works on a workspace's page. Switching tabs, opening a folder in the file explorer and opening a file each add a step to the browser history. Back retraces them: it closes a file preview, returns to the folder above, and goes to the tab you were on before. Before, it left the workspace. The folder and file you have open are part of the address, so a reload or a copied link opens the same place. The explorer also keeps your folder when you switch to another tab and come back.
- Deleting the last workspace in a project offers to delete the project. When you delete a workspace on the Workspaces page and its project has no workspaces left, you are asked whether to delete the empty project too. Cancel keeps it.
- Delete a project together with its workspaces. The delete dialog, on the
Projects page and on a project's own page, has a new option, off by default,
to also delete every workspace in the project. Only workspaces in that
project are deleted: the server checks each one as it removes it, so a
workspace moved to another project in the meantime is left alone. Their
volumes and snapshots are kept. If a workspace cannot be deleted, for
example because it is delete-locked, the project is kept with it. For API
callers,
DELETE /api/v1/workspaces/{id}takes a newproject_idparameter that refuses (409) to delete a workspace not filed under that project.
Container images
Installer files
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.53 -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 38 amd64 3efdedbd651827cd02b6ad603b528e52dca3b266a52767bd6541d53a20f4c50e' 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.53
asset docker-compose.yml 61 dee267b0c918e08a48a703deb8d1e8d8126f90499e9cb1a660aec872a3d8480c
asset install.sh 61 9f0f79f9d9edc36f38760d08fb742fc6bccce67bb048156cfb60f8a70faeb394
asset traefik-dynamic-http.yml 60 09d88c6184e1b46b8036d79a075df5c058c8a010bce486537398b5d4b6c2936e
asset traefik-dynamic.yml 61 54c85ea3c4bc1e73de71dac019e4242cdfe7320dcd1f1aa17a5d639e4dd325ac
asset uninstall.sh 61 c017513540a9601876951e3bb4aca3390596c9c9790b189d8ec7c4e35a16a373
image devgrail-container 38 amd64 3efdedbd651827cd02b6ad603b528e52dca3b266a52767bd6541d53a20f4c50e
image devgrail-container 38 arm64 59948f9272c2ae701a42791046ca928026c3bdd513c5c73b8fe1cedf83e19049
image devgrail-desktop 4 amd64 7c2be42bd266c45cad641fe0b8ddae710b1b026504211b7c0734fdd5b7602b40
image devgrail-server 77 amd64 2e3622b1c136b6ad21faa7798f4da4eb1f15c10c01d1e9687ce2426834844218
image devgrail-server 77 arm64 6951dacf4a1a0e9215c386734c1812d5d229102cc9e511673690d401972c4db9