Releases

Latest release: v0.3.4 · 2026-08-30. These links always point at the newest build.

macOS

Linux (x64)

Windows (x64) beta

Early support: the installer is unsigned (SmartScreen will ask — "More info → Run anyway"), updates are manual, and session continuity across restarts is still landing. Please report what breaks.

Version history

v0.3.4 2026-08-30

Changes since v0.3.3

  • fix(main): handle child-stdin EPIPE as the async error event it is
  • fix(editor): adapt Monaco worker imports to the 0.56 exports map
  • chore(deps): bump the production-minor-patch group across 1 directory with 3 updates
  • feat(canvas-control): a help verb, answered by the shim itself
  • feat(canvas-control): --model on the open verbs, per-role model in spawn-team
  • feat(trigger): shared schema + strict validation + machine-local arm store (#493 phase 1)
  • feat(md-ux): one-shot force-ON migration for openMarkdownPreview
  • fix(kanban): filter disabled agents in New session menu
  • feat(md-ux): default openMarkdownPreview to ON (follow-up to #496)
  • chore(deps-dev): bump the dev-dependencies group across 1 directory with 3 updates
  • feat(canvas): per-burst wheel-zoom cap + zoom speed setting
  • docs: fix dictation shortcut in alt text and remove duplicated feature bullet

node-terminal_0.3.4_amd64.deb (134 MB) · nodeterm-0.3.4-arm64.dmg (160 MB) · nodeterm-0.3.4.AppImage (175 MB) · nodeterm-0.3.4.dmg (166 MB) · nodeterm-Setup-0.3.4.exe (137 MB)

v0.3.3 2026-08-28

Changes since v0.3.2

  • feat(md-ux): open Markdown in preview (opt-in) + one-shot Explorer pin hint
  • fix(messaging): one-round-trip SSH pane probe + honest targetPaneUnreadable refusal
  • fix(terminal): flag a warm-reattached session whose cwd was deleted, with an explicit restart
  • fix(hooks): self-heal stale hook endpoints for canvas-control and context-link (#445)
  • fix(messaging): deliver the envelope via paste-buffer -p — tmux >= 3.7 mangles a JS-composed frame
  • fix(canvas): resolve node creation against the live active project, not a render closure (#443)
  • feat(projects): say what closing a project parks, offer to end its sessions (#442)
  • fix(ssh): resolve remote tmux beyond the exec channel's PATH, degrade readably when absent
  • ci(release): ship Windows as an unsigned beta on every version tag (#454)
  • fix(canvas): keep browser/web node pages alive across project switches
  • test: fresh mkdtemp userDataDir in the two fakes that still used a /tmp literal
  • feat(server): managed Claude accounts on the Server Edition
  • feat(tmux): opt-in lead-pane width for Claude Code agent teams (#119)
  • fix(accounts): stop the shared tmux server leaking a managed account into other sessions
  • fix(ssh): honor IdentityAgent SSH_AUTH_SOCK despite the app-private agent (#427)
  • feat(settings): UI scale for high-DPI displays (#299)
  • feat: add uninstall script for a clean trial/removal (#347)
  • feat(usage): Switch account action in the usage popover (issue #420)
  • fix(relay): honest pty.kill errors + a real pty.destroy so the phone can end a session
  • fix(terminal): cut propagation on suppressed middle clicks — preventDefault had nothing to cancel
  • fix(kanban): make OSC 8 + URL links clickable in the card modal
  • feat: configure terminal word separators
  • feat(terminal): open OSC 8 hyperlinks with Cmd/Ctrl+click
  • fix(renderer): survive a method-less localStorage global
  • feat(window): reflect the active session in the native window title (opt-in)
  • ci: retrigger (windows remote-atomic-write real-shell timeout flake)
  • chore(repo): pin the Node version for contributors with .nvmrc
  • fix(hooks): perm-wait branch is claude-only at build time, not env-gated
  • feat(agents): codex subagent visualization via native SubagentStart/Stop hooks
  • feat(canvas): snap nodes into layout zones — v1 of #394 (keyboard + menu)
  • fix(canvas): keep subagent cards across a parent unmount (project switch)
  • feat(keybindings): node.maximize command — Cmd+Shift+Enter maximize/restore
  • refactor(canvas): move the maximize toggle into the right-hand header group
  • feat(canvas): maximize a node to fill the viewport (resize + reflow)
  • fix(hooks): one token resolver for every sh client, so a pinned endpoint stops stranding a node
  • feat(kanban): resizable + maximizable card modal that remembers its size (#389) (#392)
  • fix(log): survive a revoked stdout/stderr instead of crashing the main process
  • fix(projects): let an explicit "Open folder…" recover an unavailable project
  • feat(settings): opt-in toggle for the resume card (default off)
  • fix(relay): surface the phone's approval prompt again — no device could ever be pinned (#372)
  • docs(hooks): scope the #195 claim to a defense-in-depth follow-up
  • fix(packaging): hand-pack the macOS .icns — wrong-sized frames painted rainbow noise in the app launcher
  • debug(glyphgrid): make an atlas reset reproducible on demand
  • fix(glyphgrid): snap cell origins to whole device pixels
  • fix(keybindings): off-mac Ctrl+W reaches the shell while a terminal has focus (#383)
  • fix(breadcrumbs): close the review findings — one framing implementation, honest Dock arrows, wiring pins
  • fix(terminal): registry chords xterm would consume now bubble to the dispatcher
  • feat(keybindings): migrate the focus-mode chord to the registry (view.focusMode)
  • test(macos): make the entitlement guard an allowlist, not a snapshot
  • fix(macos): drop allow-dyld-environment-variables from production entitlements
  • test: pin the directional-focus guards by mutation
  • feat(keybindings): directional node focus with Cmd+Arrow
  • fix: address final review findings — commitActiveToStore, armForColdOpen, target permission mode, testable reopen planner, ShortcutsSection filter
  • feat: wire Cmd+Shift+T to reopen the last closed project/node batch
  • feat: register app.reopenLastClosed (Cmd+Shift+T)
  • feat: add node snapshot/recreate for reopen-last-closed
  • docs(agents): teach the codex-sandbox transport error in both agent-facing bodies
  • feat(hooks): hook server listens on a unix domain socket beside loopback TCP
  • fix(shims): under a sandboxed Codex, name the sandbox instead of "nodeterm unreachable"
  • feat: add in-memory reopen-history stack
  • …and 240 more commits

node-terminal_0.3.3_amd64.deb (133 MB) · nodeterm-0.3.3-arm64.dmg (158 MB) · nodeterm-0.3.3.AppImage (173 MB) · nodeterm-0.3.3.dmg (163 MB) · nodeterm-Setup-0.3.3.exe (133 MB)

v0.3.2 2026-08-17

Changes since v0.3.0

  • ci(release): caffeinate npm ci and the tmux build on the mac runner
  • feat(canvas): tidy-canvas action to grid-pack all top-level nodes
  • fix(pairing): make the revoke copy true, and say when the phone loses Pro
  • fix(license): time out a reply whose BODY never arrives
  • fix(license): tell the user what the RELEASE did, and nothing false about the license
  • docs(CLAUDE): reconcile with current code — ~30 stale claims from the line-by-line audit
  • fix(pairing): revoke a legacy device's row too, and stop claiming it cannot exist
  • fix(pairing): removing a device now revokes its Pro, and admits when it cannot
  • docs(CLAUDE): keep the canvas-control skill text in sync with behaviour, same PR
  • feat(pairing): remember the phone's relay device id so a removal can name it
  • docs(agents): the send verb's help says a busy target is QUEUED, not refused
  • feat(settings): show the license key, the device count and a release action
  • fix(license): a 2xx we could not read is an error, never "0 devices"
  • test(license): pin the release merge — counts move, key and source do not
  • feat(license): token-authorized detail + release-others across the bridge
  • fix(notch): the panel ranks sessions, it does not race them
  • docs(css): the polish header carries the terminal-ancestor animation rule
  • fix(logs): renderer field traces keep their own [tag] — triage by chip, not by grep
  • fix(inbox): retain newest per-node done + unresolved ask past the 50-event cap (P2-7)
  • feat(ui): polish pass — enter animations for every shared shell + quiet scrollbars
  • feat(settings): live debug log panel — a redacted in-memory ring behind a toggle
  • feat(canvas): user-facing "Spawn a team…" — a conductor node, not new model plumbing
  • fix(hooks): the fallback walks past dead sibling tunnels to a live local endpoint
  • fix(usage): keep the phone's usage mirror fresh on a backgrounded desktop
  • fix(push): a paired phone no longer silences every SSH-only one, and ts says ms
  • fix(sticky): harden the verb against the review's confirmed findings
  • fix(hooks): move the hook payload off curl's argv (temp file, not --data-urlencode "payload=$payload")
  • feat(canvas): sticky verb — agents write into notes, notes render markdown
  • fix(notch): the capsule grows left-only — no more covering menu-bar status items
  • fix(usage): one threshold function + the percent-mode setting reaches every context surface
  • fix(terminal): truecolor end-to-end — COLORTERM + tmux RGB terminal-features
  • test: kill the parallel-execution flake at its mechanism, not its symptom
  • fix(window): leave fullscreen before hide-on-close — no more stranded black Space
  • feat(browser): load local file:// pages instead of googling them
  • feat(usage): switch the project's default Claude account from the usage pill
  • fix(sidebar): move keyboard focus into a session's terminal on go-to-node
  • feat(speech): dictation is optional — an explicit None state, nothing downloads unasked
  • fix(agent-hooks): gate before sourcing, drain stdin on bail, swallow sourced stdout
  • feat(sidebar): replace the Project/Status pill with text tabs
  • fix(menu): restore Reload (⌘R) and Enter Full Screen to the View menu
  • feat(sidebar): add an Unread status section, ordered attention → unread → running → idle → unknown
  • test(agents): derive the builtin list from BUILTIN_AGENT_IDS (copilot broke #245's hardcoded list)
  • test(messaging): the fake agent is cat, not an interactive bash — fixes #241
  • fix(terminal): rebuild the renderer when the browser restores a WebGL context
  • fix(agents): disable 'Restart agent and shell' on relay sessions with a reason (#223)
  • fix(review): worktree root guard, snap-grid bugs, dup Terminal, copilot icon, misc
  • fix(agents): custom agents can be the default — and a disabled claude stays un-defaulted
  • feat(agents): per-agent launch command override — run claude through your own wrapper
  • fix(sidebar): keep 'done' its own status, not attention (#230, user decision)
  • fix(models): gate PID termination on agent identity + add SIGTERM grace (#226)
  • fix(messaging): wire the sender-facing expiry channel, and drop the unwired forget()
  • revert(terminal): restore char-size-quantize (undo 8ea89aaf)
  • fix(security): deliver gateway/custom env off-argv via tmux update-environment
  • test(messaging): a phone-spawned session is a valid message target, end to end
  • fix(security): close the env-oracle IPC pair and quote env expansion by construction
  • docs(messaging): record the residual risks in the code, not only in the design
  • feat(messaging): deliver-on-idle — a bounded queue with a TTL, and never a silent drop
  • feat(terminal): a bounded input buffer during wake — nothing splices into the resume line
  • fix(agents): thread pane ownership through the kanban modal + pin the fresh-gate
  • fix(agents): prove pane ownership at runtime — a project's grant cannot reach a pane it did not spawn
  • …and 195 more commits

node-terminal_0.3.2_amd64.deb (115 MB) · nodeterm-0.3.2-arm64.dmg (141 MB) · nodeterm-0.3.2.AppImage (148 MB) · nodeterm-0.3.2.dmg (146 MB)

v0.3.0 2026-08-12

Changes since v0.2.47

  • feat(tmux): build the bundled tmux with utf8proc (correct emoji widths)
  • feat(tmux): bundle a static tmux in the macOS app as the last-resort fallback

node-terminal_0.3.0_amd64.deb (116 MB) · nodeterm-0.3.0-arm64.dmg (141 MB) · nodeterm-0.3.0.AppImage (148 MB) · nodeterm-0.3.0.dmg (146 MB)

v0.2.47 2026-08-12

Changes since v0.2.46

  • fix(core): the panel reads phys_footprint on macOS, not ps's rss
  • fix(terminal): age the working park snapshot; correct the relay claim (#126)
  • docs(session-memory): §10 — record the second-device measurements (items 5 partial, 6 re-verified)
  • fix(terminal): snapshot agent state at park time; review fixes (#126)
  • test(core): darwin-gated behavioural guard — the default reader may never reap on bytes
  • fix(terminal): gate the offscreen release on live work too (#126)
  • fix(terminal): never park-kill a working agent on a plain shell (#126)

node-terminal_0.2.47_amd64.deb (116 MB) · nodeterm-0.2.47-arm64.dmg (140 MB) · nodeterm-0.2.47.AppImage (148 MB) · nodeterm-0.2.47.dmg (145 MB)

v0.2.46 2026-08-12

Changes since v0.2.45

  • fix(core): the reaper must not cull on a byte watermark on macOS either
  • docs: parseVmStat verified on a real Mac; sharpen why darwin stays silent
  • fix(core): a failed vm_stat is no signal, not a fall back to os.freemem()
  • fix(core): read macOS memory from vm_stat — os.freemem() reads ~0 there
  • fix(pairing): record hostDeviceId on entitled relay mints too
  • fix(ui): restore the usage pill — the shell is SHARED, not the resource pill's
  • fix(ui): the resource pill is an icon at rest, and sits left of usage
  • docs: renumber the checklist, widen two claims, and file the sidebar gap
  • test(core): the service's remote fixtures carry a socket fence
  • fix(ui): the panel says whose memory it is, and the confirm says the node goes too
  • test(canvas): pin the fit-view chrome opt-in and the panel's socket fan-out
  • fix(kill): the both-sockets fan-out is the panel's, not everyone's
  • fix(core): the SSH sweep must tell a broken tmux from an idle host
  • docs: say what the kill actually covers, and correct three overstatements
  • test(ssh): pin that killSessions runs every socket, every id, best-effort
  • fix(core): a kill by NAME must try every socket that name could be on
  • docs: session memory pill + panel
  • fix(ui): the panel's kill must reach the machine it is showing
  • fix(ui): dismiss the session-memory panel on an outside click
  • feat(ui): session memory panel with travel and kill
  • test(ui): pin that the pill never runs the full sweep; one obstacle rect
  • feat(ui): system-resource pill beside the usage pill
  • feat(renderer): session-memory store, polled locally and on demand over SSH
  • feat(renderer): resolve session rows to titles, projects and orphans
  • feat(bridge): real sessionMemory namespace for the Server Edition
  • test(server): pin the SSH refusal end to end, and the index load it needs
  • fix(core): pin the coalescing key, and refuse SSH scopes on the server too
  • fix(core): an SSH project is a remote scope while DISCONNECTED too
  • feat(core): session-memory RPC, booted by both shells
  • test(core): do not assert /proc/meminfo exists on the test host
  • fix(core): check marker ORDER in the remote session-memory parse
  • feat(core): SSH leg for session memory, one sh round trip
  • fix(core): anchor the no-server discriminator to tmux's own connect message
  • fix(core): read VmRSS, route ps through the seam, fail when no socket answered
  • feat(core): assemble the local session-memory report
  • feat(core): process-table reader and per-pane tree rollup

node-terminal_0.2.46_amd64.deb (116 MB) · nodeterm-0.2.46-arm64.dmg (140 MB) · nodeterm-0.2.46.AppImage (148 MB) · nodeterm-0.2.46.dmg (145 MB)

v0.2.45 2026-08-11

Changes since v0.2.44

  • fix(pty): patch node-pty's darwin fd leak locally (microsoft/node-pty#950)

node-terminal_0.2.45_amd64.deb (116 MB) · nodeterm-0.2.45-arm64.dmg (140 MB) · nodeterm-0.2.45.AppImage (148 MB) · nodeterm-0.2.45.dmg (145 MB)

v0.2.44 2026-08-11

Changes since v0.2.43

  • fix(pty): run the device pre-flight before the shadow swap-out, and pin its tests
  • feat(pairing): relay the phone's priorDeviceToken into the relay-device mint
  • docs(pty): record why the fail-fast needs no retry backoff
  • fix(pty): refuse spawns at the device ceiling before node-pty leaks another
  • fix(pty): review fixes — real sweep allowance, safer fix handler, honest dismissal
  • fix(push): a Live Activity can no longer be left stuck on "Working"
  • feat(pty): warn before kern.tty.ptmx_max, and offer to raise it
  • fix(renderer): never defer a viewer release for a node that cannot hibernate yet
  • fix(renderer): final wave — one watched predicate, remote at plan time, hibernate before release
  • fix(relay): pty.attach says whether it had to CREATE the session
  • fix(remote,pty): pin kill→dropStream adjacency; correct the %output-drop comments
  • fix(renderer): a SessionStart disproves the hibernated flag
  • fix(renderer): hibernation review round 1 — the second dismiss path, stale verdicts, self-heal
  • test(pty): pin the shared client's attach log and the relay-path premise
  • feat(renderer): opt-in agent hibernation — exit idle offscreen CLIs, resume on view
  • feat(pty): ptyShadowClients kill switch + swap logging
  • refactor(renderer): hibernate registry beside the restart one
  • fix(renderer): refuse a non-positive hibernation idle window
  • feat(renderer): hibernation policy + eco settings + status flags
  • feat(pty): background writes into released sessions, no painter respawn
  • refactor(renderer): split agent restart into exit + resume phases (behavior pinned)
  • fix(pty): subtract a shadow from tmux's client COUNT, never force detached
  • fix(pty): keep shadowed sessions cullable, and refuse what a shadow cannot reach
  • feat(pty): control-mode shadows for released sessions
  • fix(core): silence the host memory leg on darwin (freemem lies there)
  • fix(pty): refuse multi-line control-mode commands
  • fix(webgl): queue the pressure lever's releases through the drain
  • feat(pty): control-mode client over pipes — zero pty devices
  • fix(pty): only close a control-mode block on its own ts+num
  • feat: memory-pressure responder chain (webgl + parks + early reaper sweep)
  • feat(pty): tmux control-mode protocol codec
  • docs: tmux control-mode shadow-clients plan
  • fix(workspace): tmp hygiene parity — cleanup-on-failure + stale-tmp sweep
  • feat(core): two-signal memory-pressure monitor
  • docs(renderer): record collapsed-node and respawn semantics of offscreen dispose
  • fix(renderer): ask the SESSION whether a node's core is remote, not the node
  • fix(stores): unique per-call tmp names for atomic writers (#107)
  • fix(renderer): make the offscreen visibility observer outlive the dispose it reverses
  • feat(pty): idle-reap the client PTYs of sessions nobody is attached to
  • feat(renderer): dispose offscreen terminals in place after 10 min; reattach on approach
  • fix(pairing): serialize agent.json and authorized_keys mutations (#106)
  • fix(pty): name the machine pty-device limit in the spawn failure
  • feat(renderer): offscreen-dispose policy + offscreenTerminalMinutes setting
  • fix(pairing): warn beside the QR when a dev build makes it LAN-only
  • fix(renderer): identify the restore echo by URL, not by a flag against a moving target
  • fix(renderer): never discard an audible page; keep a reveal from dirtying the workspace
  • refactor(renderer): one shared hidden-discard hook, with its own coverage
  • feat(renderer): browser Memory Saver — discard hidden webviews, restore from URL

node-terminal_0.2.44_amd64.deb (116 MB) · nodeterm-0.2.44-arm64.dmg (140 MB) · nodeterm-0.2.44.AppImage (148 MB) · nodeterm-0.2.44.dmg (145 MB)

v0.2.43 2026-08-10

Changes since v0.2.42

  • fix(glyphgrid): do not revive a context another handler has already disposed
  • fix(glyphgrid): notice when the atlas page dies with the GPU
  • fix(glyphgrid): re-arm the drift rebuild on every fresh cell epoch
  • fix(glyphgrid): read the context back after a reconcile that may have disposed it
  • fix(glyphgrid): clamp the shared camera, so a stored zoom of 0 cannot blank the board
  • fix(canvas-control): answer an agent from ITS project's canvas, not the active one
  • fix(speech): free whisper before quit — an in-flight transcribe was aborting the app
  • fix(workspace-store): cache the raw project.json bytes for self-write detection
  • fix(canvas): never mark edits clean that raced an in-flight save
  • fix(canvas): make in-place project reload actually reload
  • feat(workspace): tell the user when a corrupt index was backed up
  • fix(canvas): never commit one project's canvas under another project's id
  • fix(main): auto-reload the window after a renderer crash
  • fix(main): cap remote subagent-tail reads at 1MB per tick, byte-safe via base64
  • fix(renderer): evict parks after the flush, not mid-switch
  • feat(claude): mint a node's session id instead of only learning it
  • feat(renderer): LRU count cap (12) on parked terminals
  • fix(core): cap subagent-tail reads at 1MB per tick, matching context-tail

node-terminal_0.2.43_amd64.deb (116 MB) · nodeterm-0.2.43-arm64.dmg (140 MB) · nodeterm-0.2.43.AppImage (148 MB) · nodeterm-0.2.43.dmg (145 MB)

v0.2.42 2026-08-10

Changes since v0.2.41

  • fix(workspace): serialize saves, unique tmp files, and empty-write guards
  • fix(pairing): report 'dev' relay status — an unpackaged build is not 'off'
  • feat(phone): advertise relay identity for late adoption; surface pairing relay result
  • feat(phone): default phoneAccessEnabled on
  • fix(pairing): LAN-only pairings say so — QR hint, toggle-flip regeneration
  • feat(terminal): no copy pill for an agent that reports its own copies
  • refactor(terminal): float the copy pill over the terminal, not in the header
  • debug(glyphgrid): actually call the cell readout
  • debug(glyphgrid): make the cell readout answer instead of throwing
  • debug(glyphgrid): expose the cells a grid is actually drawn with
  • fix(glyphgrid): rebuild the atlas when its cell disagrees with a terminal's
  • docs(agents): correct four false claims, and retire the gemini "resume replay" story
  • fix(agents): read the brand-logo map through Object.hasOwn, and correct two stale comments
  • fix(agents): pin the claude-transcript gates, and stop the tooltip promising a search that is off
  • chore(fixtures): reduce the captured codex and gemini transcripts to what the tests read
  • fix(gemini): stop the default permission mode auto-approving gemini's edits
  • feat(push): read SSH-possession push grants off the connected hosts
  • fix(hooks): let a session self-heal onto the live SSH endpoint file
  • fix(terminal): count the copied body, not the newline stripped from it
  • docs(gemini): the gemini integration, its hook set, and the codex approval mapping
  • feat(agents): gemini and opencode pulse their brand mark while working
  • fix(agents): make codex's "ask each time" actually ask
  • feat(agents): start gemini and codex sessions in the chosen permission mode
  • fix(agents): make the session-name sweep's read gate core's own default
  • docs(ssh): record that the resync does not repair across an app restart
  • fix(agents): a rescue done that moved no badge fires no completion alert either
  • perf(ssh): skip the host session listing when nothing is working, and ask decideFromPane directly
  • fix(ssh): the reconnect resync reads a 64 KB transcript tail, not 5 MB
  • feat(gemini): adopt gemini's own session title, and split reading a title from renaming one
  • feat(canvas): "Zoom to 100%" in the command palette
  • docs(ssh): design + plan for reconnect agent-state resync
  • fix(kanban): flip the "+ New session" menu up when it would fall off-screen (#100)
  • fix(ssh): fire the tunnel-verified hook after the entry is written, so the resync has a remote $HOME
  • fix(ssh): resync nodes the host is running, not only the ones still attached
  • fix(agents): stop the codex/gemini meter and find bar reading claude's transcript
  • fix(glyphgrid): stop mip-blurring text at a zoom that is barely under 1
  • feat(ssh): ask the host which nodeterm tmux sessions it runs
  • feat(kanban): copy receipt + selection hint in the card modal terminal
  • feat(agents): fill the context meter for codex and gemini from their own transcripts
  • fix(glyphgrid): the font-weight setting reaches the shared renderer
  • feat(terminal): copy receipt + one-time selection hint on the canvas node
  • fix(terminal): suppress the Copied pill when the clipboard toast fired first
  • feat(terminal): useCopyFeedback hook (drag + OSC 52 signals)
  • feat(terminal): pure copy-feedback decision module
  • fix(ssh): a throwing tunnel-verified hook can no longer fail the connect
  • feat(ssh): resync working agents when a reconnect re-verifies the hook tunnel
  • fix(ssh): one node's failure is undecided for that node, not a project-wide abort
  • docs(gemini): correct the comments the restart-target change made stale
  • feat(ssh): resync a project's working agents against the host
  • feat(mirror): expose the currently-working nodes for the reconnect resync
  • feat(gemini): allow the in-place restart-and-resume for gemini nodes
  • fix(ssh): an untrackable tool_use must not read as a finished turn
  • feat(ssh): pure decision for whether a remote node is still working
  • refactor(agents): move isShellCommand into shared so main can ask the same question
  • fix(gemini): a node waiting for permission no longer shows RUNNING
  • feat(grok): the RUNNING indicator is the brand mark breathing, not a critter
  • fix(grok): ship the official mark, inlined so it follows the theme
  • fix(lib): write the NUL separators as escapes, not raw bytes
  • feat(server): make Context Link work in the Server Edition (#93)
  • docs(grok): record the awaitingInput question main's codex fix raises
  • …and 26 more commits

node-terminal_0.2.42_amd64.deb (116 MB) · nodeterm-0.2.42-arm64.dmg (140 MB) · nodeterm-0.2.42.AppImage (148 MB) · nodeterm-0.2.42.dmg (145 MB)

Older versions and full details live on GitHub Releases .