Hotline Computer 0.10.0
Hotline Computer 0.10.0: a repository describes itself in a manifest, and its desktop app builds, launches and answers to an agent.
- Workspace manifests.
.hotline/manifest.jsonnames a project'spackages,platform,libraries,env,services,hooksandruns, and composes over the image's base.state manifestdrafts one from the repository's own lockfiles and build files, with a reason for each line;state preparetakes it, andshell run NAMEstarts a run in the prepared environment. A workspace keeps the base it was composed against untilprepareis givenupgrade: true. Services and start hooks come back after a restart. - Runs that answer when ready. A
desktoprun answers when its window is up and settled, with the window and a screenshot of it; awebrun gets$PORTand answers when it listens, over IPv4 or IPv6. A first prepare locks Nixpkgs from the image and fetches nothing from GitHub. - GUI platforms.
gl,gtk,gtk4,webkit,qt,native(X11, XKB and Vulkan for winit, wgpu, egui, iced, GLFW, SDL, Fyne, Gio),prebuilt(the manylinux library policy of PEP 600, for pip and uv wheels and downloaded binaries) andqt-wheel(what PySide6 and PyQt wheels load beyond it). Electron runs fromnode_modulesunsandboxed, as Chromium does. The image carries Noto CJK. - Driving apps.
typeandpastereturn once the focused field has taken every character, so a click that follows cannot overtake a slow webview.scrolltakesdirection.capturetakeswindoworregion, has animagemode, and says how image pixels map to the screen.- The accessibility tree leaves out hidden nodes and unnamed wrappers: the whole desktop with Chromium open went from over 25k tokens to 3.3 KB.
- Reading a Qt 6.8 app's tree no longer crashes it, and Qt trees now read.
- Calls and shell. No call waits longer than 50 s, so every answer beats a client's one-minute timeout;
execwaits up to 45 s.shell exectakes a whole command line incommand. - Links and the browser.
xdg-open,$BROWSERand the desktop's http and https handlers open addresses as tabs of the managed browser, where the person's sign-ins are. Navigating to a page that answers with an HTTP error status shows the page with a note instead of failing. - The bars. The desktop's bar and the viewer's control bar count a failure only while it is under an hour old and nothing has run the same command since; cancelled and restart-interrupted jobs never count. The image sets
SHELL=/bin/bash.
Known gaps:
- Drafts can miss what an app needs to launch. A Python project importing
tkinterisn't given Tk, and a Cargo workspace with no default binary is draftedcargo run. Correct the manifest'spackagesandruns. - egui, Dear ImGui, Tk and Fyne expose no accessibility tree; drive them from screenshots.
flakecannot yet be combined withplatformorservices.
Validation: the local release gate passed all 24 acceptance scenarios, including a native Hotline (Tauri) build and screens, Qt wheel, WebKitGTK typing and scrolling, and package workspaces. Unit, contract and image-identity checks passed. By hand, from their own repositories: Hotline, Dear ImGui (C++), CustomTkinter (Python), egui (Rust), Fyne, Electron, PySide6 6.8 and 6.11, pygame, and numpy with pandas. Evidence for each release candidate is in qa/0.10.0-rc.1 through qa/0.10.0-rc.5.
Native ARM64/x86_64 release gates passed all 24 scenarios per architecture, then image-identity checks and cold pulls.
Cold registry pulls: 22.65 s ARM64 / 25.53 s x86_64. Downloaded-image start-to-health: 0.286 s / 0.320 s. Compressed layers: 745,560,653 / 749,121,079 bytes, up from about 425 MB in 0.9.0, mostly the image's Nix substituter cache and Noto CJK. The combined image digest is sha256:7d8c5634a3c4f5ede8ccffc188e8f343fbb6e644e42886b6bdb60afd9549c5b3.
Existing computers keep their running version until updated from the teammate's pane; state info and state guide identify the attached computer.
Use ghcr.io/1broseidon/hotline-computer:0.10.0.