Turret Download

Changelog

Every release of Turret, newest first. Turret updates itself, so on the stable channel the version at the top is the one you'll get.

0.62.4

Released on .

New

  • Offer Claude Code's suggested next message in the composer
  • Let the Level tab follow a pan or zoom with live frames from the game
  • Redesign the Game pane so a growing game fits
  • Ship the Game and VFX panes in the game engine
  • Move the Level tab's pan and zoom onto the compositor
  • Let a person turn a game's layers in the normal view
  • Tell the person to ask the session to load the game from the Level tab
  • Move the Level tab into the game engine package
  • Give the Level tab its own camera, and lay it out around the picture
  • Say the Level tab's load document starts the level
  • Level editor phase 10: describeDocument, and the feature closes
  • Level editor phase 9: palette, along and the property form
  • Level editor phase 8: reloadAssets
  • Level editor phase 7: watch, reconcile and undo
  • Level editor phase 5: the Level tab
  • Level editor phase 4: documents and the token writer
  • Level editor phase 3: the edit protocol in the engine
  • Level editor phase 2: the Game pane takes a pointer
  • Level editor phase 1: design the Level tab
  • Link objc on macOS in the game setup skill's CMake, for version 8's live play
  • Game mode phase 9b: the model view in the asset register
  • Game mode phase 7: live play in the game's own window, with the run coming back as steps
  • Game mode phase 8: run_scenario, and a shipped protocol client
  • Capture a step's sound to a WAV, name it in the answer and play it in the pane
  • Start a game's pictures in the view it declares, and keep the view a model chose
  • Game mode phase 3: load the everyday tools up front, and cut what they repeat
  • Game mode phase 2: load puts a held run back by default, and a build-and-reload button
  • Design the model view in the asset register
  • Game mode phase 4: harness protocol version 8, and the live-play decision
  • Game mode phase 1: entity diff and field lists, and the schema edges models hit
  • Report on 75 game mode sessions and plan the improvements they call for
  • Take the pane's picture on every game call, even with picture: false
  • Settle a turn once the Claude CLI says it is idle
  • Close a self-opened turn that follows a /clear
  • Put Codex's async questions on the question card
  • Draw Codex fileChange kinds as text instead of crashing the window
  • Codex: fail the session when the app-server exits between turns
  • Codex: open a new assistant message at a steer's echo, and suppress the unstable-features warning
  • Game prompt: carry every game code rule, and say what to do without the skill
  • Game tools: pointer input, where a hung game is stuck, and the setup skill's two rules
  • Game tools: leave out what the model was told, filter trace rows, measure drift
  • Let a game call leave out the game's own fields and its knobs' rows
  • Game engine updates: ship game mode's engine apart from Turret
  • Keep one resolution for a region drawn at no named size
  • Show a repository's own thumbnail from a .thumbnails folder beside an asset
  • Draw a still of each .glb in the Assets tab
  • Size game tool answers to what a model can use
  • Engine sign-in console: sign in to Claude Code and Codex from Turret (phases 1–5)
  • Draw the turn-activity dots as an animated PNG mask
  • Admit a Windows detached spawn that has to outlive its parent
  • Quality pass 2026-10-03: the report and the turret-quality-pass skill
  • Onboarding O1: engine sign-in research and decision, Claude Code sign-in check
  • Slack channels: start and steer sessions from Slack, Claude Tag style
  • Restart onto X11 by replacing the launch in place, so the new copy cannot be lost
  • Start on X11 when the Wayland compositor has no output, keep the AppImage relaunch's environment clean, and repoint launchers after an update
  • Tag a dev APK's draft release v<version>, the same name as the desktop dev version
  • Draw the repository list over the peer new-session dialog, and let the wheel scroll it
  • Let the Telegram guide's tick boxes be pressed, and pass Join requests for a private group
  • Split New session into New session and Resume session views, search every repository by typing, and widen the form
  • Keep the skill ledger's hashes across a squash, serve the catalogue's fixture routes, and measure the smoke build
  • Telegram deep link, picker detail and not-in-group line; keep the pairing PIN a person read
  • Fold case in rooted-path checks by platform, key a map's frame by its folder, type by the foreground layout, match Consolas to Segoe UI on Windows
  • Refuse a late reply to a closed channel question, one constant per Telegram sentence, and carry the host's Bypass default and gone folders on the wire
  • Report a multi-peer step's changed notes only, and name a desync's first tick
  • Computer use on Linux: a Go helper that drives GNOME on Wayland through Mutter and X11 through XTEST
  • Free a worktree's wt slot when Turret removes it, and fetch Electron's binary at install
  • Kill a timed-out CAD worker's whole tree on Windows, refuse a rooted runtime.entry, and name Linux x64 in the platform text
  • A File Viewer toggle beside Files, and Vendors and Services on one row when collapsed
  • Game mode follow-ups: serialised calls, sized results, step until, harness v3, and twin-stick netcode under Turret
  • The Files region in every mode: a tree that tucks away, ⌘P, and ⌘E to fold the transcript
  • Computer use: sessions can screenshot and drive the desktop on macOS and Windows
  • Show game mode the game's output and crashes, and resume a rebuilt binary
  • Remove an idle-archived automation run's worktree, and finish its run on any archive
  • Telegram home group: one private group with topics, hand-added members, and sessions that always ask first
  • Make design_render's pictures read clearly: colours, cuts, edges, shapes and sheets
  • See Telegram threaded mode switched on without restarting Turret
  • Make design_render's pictures match the design, and keep the user's view across a rebuild
  • Give each checkout its own electron-packager temp dir
  • Make design_render's crop, cutaway, section and viewer kinds draw what they claim
  • Add get_automation and set_automation so an automation can improve its own prompt
  • Give Node connections 2 s per address so Telegram is reachable over slow links
  • Show paired machines as connecting after a launch, not disconnected
  • Remove print-pipeline: CAD mode builds and reads designs from the repository
  • Codex questions: request_user_input reaches the person on every client
  • Manage every setting on a paired machine's settings page
  • Keep the composer placeholder and the sidebar out of drag selections
  • Offer only GPT-6-and-later Codex models, the newest of each family
  • Close inherited descriptors when an AppImage update relaunches
  • Drop the remote-child paragraph from the orchestrate skill
  • Board listbox, file-tree hover contrast, themed scrollbars with a check that keeps them
  • Offer Update for an older shipped skill copy, and let a modified one be replaced
  • Double the title band into two tiers and make New the workspace's filled action
  • Open a machine's session from a compressed snapshot rather than the stream's replay
  • Turn the pairing panel over when its expiry timer fires a millisecond early
  • Sidebar footer as icon tiles, and themed scrollbars on New session

Fixed

  • Fix turret_client.py on Windows: _winapi has no PIPE_TYPE_BYTE
  • Game tools: report missing pictures, fix stale knobs, add input scripts
  • Game mode: fixes from the twin-stick review
  • Quality fix pass 2026-10-03: the Windows editor bug, ten killed mutants, dead code, a sleep ratchet
  • Fix eight defects a hands-on review of the CAD design tools found

0.62.3

Released on .

New

  • Update the Agent SDK to 0.3.284 and open Claude API sessions on Sonnet 5.5
  • Desktop design language: direction A (Tidy), a component kit, every desktop screen restyled, and a literal check in the gate
  • Child sessions on a paired machine (remote-children)
  • Sync useWorkspaceWatch's callback ref in a layout effect, not during render
  • Close an open turn on graceful teardown, checkpoint a database's WAL before autosync, and show Drive's free space
  • Split notarization submit from its wait, and redact notarytool's argv on failure
  • Sort a lookup column by its value, anchor a refresh by key, and remember a database viewer's place
  • Tell an outdated shipped skill from one ahead of this build
  • Say a paired machine needs a newer Turret on desktop, not that it is unreachable
  • Encode a Telegram multi-select answer the way the desktop does, and prove multi-select
  • Send the 'make me an admin' notice only to a group where the bot is not an admin
  • Refuse and hide a channel-initiated session's background-task Stop
  • /session: open no topic for a folder that has gone, and explain a failed start in the topic
  • Draw a channel-initiated session's workbook and database panes read-only
  • Move the quiet-machine check into run-timings, and keep polling loops out of --category
  • Channels: talk to a session from Telegram
  • Warn when a Codex session runs an older Codex, and offer codex update
  • Say why an ad-hoc signed Mac build cannot update, before downloading
  • Track each platform's published version and commit centrally on R2
  • Limit autosync's fetch and push by silence instead of a total
  • Tell agent-harness sessions about their environment and the local time
  • Unpack the Windows ripgrep zip with unzip when syncing on Linux
  • Loosen the feature skills' how-to guidance, and have the orchestrator do rebases
  • Add new_conversation, and rename make_self_for_reaper to mark_self_for_reaper
  • Count only live events toward a subscriber queue's capacity
  • Design and plan paging a machine session's transcript (peer-transcript-paging phase 1)
  • Correct the fixture README on how subagent frames reach their turn
  • Keep the file tree mounted across width breakpoints, and bound the remote transcript's height
  • Select one sidebar row at a time across local and peer sessions
  • Cut steady-state tailnet identity-probe traffic to known peers
  • Say a paired machine needs a newer Turret, not that it is unreachable
  • SQLite databases in Productivity mode (productivity-databases, phases 1–10)
  • Run a message sent during the idle teardown, and keep its turn first
  • Strip a replayed turn close for a paired machine, and correct two stale peer docs
  • Delete stale Cloudflare rows, collapse sudo's per-retry prompts, drop wt-install's dead seed
  • The Productivity panel for a session on a paired machine
  • Fetch back an elided tool result on a paired machine's session
  • Draw galleries and widgets in a paired machine's sessions, and steady three gate failures
  • Keep Cancel and Create on screen in a short window
  • Open text files up to 100 MB in the Productivity panel, and draw old German umlauts
  • Stop the composer scrolling when the pane is narrow
  • Let the map tile cache's disk allowance be set on every Settings surface
  • Point cutting a release at the tailnet sidecar prerequisite
  • Cache peer conversations so switching between them is instant on a slow link
  • Warn when a session runs an older Claude Code, and offer claude update
  • Build the release APK on Windows
  • Move the agent SDK to 0.3.280 and keep game mode's tools listable

Fixed

  • Repair three Next-band issues: image pointer, peer link, machine header buttons
  • Measure where sessions spend time on heavy work, and add a skill that fixes the worst of it
  • Close the Claude API max_tokens failure, fixed in agent-harness 3c7f354
  • Fix what the first live Google Drive check found, and rename Repositories to Auto-Sync
  • Fix quit-flush mailbox replay, IPC destroyed-listener growth, disabled danger buttons
  • Fix the game fixture's macOS display probe to catch a sleeping display
  • Fix fs.rmSync's non-functional retry, the real Windows folder-EPERM cause
  • Fix three autosync follow-up gaps: folder-not-found, guard-trip kind, chat header chip

0.62.2

Released on .

0.62.1

Released on .

New

  • Keep the update notification after a tap
  • Pack underscore directories and dotfiles into the APK's assets
  • Draw the predictive-back scrim and edge hairline the design specifies
  • Tell the person when a lost Keystore key replaces their stored secrets
  • Per-repository settings and git autosync
  • Import render lazily in turret-map CLI so non-render commands work without Pillow
  • Add a Views menu to the map viewer
  • Hide the Peer Discovery row from the sidebar while discovery is off
  • Notice a silent peer stream and redial a peer the moment it reappears
  • Stop the source-tree walkers reading boundary-imports' transient fixtures
  • Re-pair a tailnet peer that has forgotten this machine
  • Accept the signed tailnet sidecar in a packaged macOS build
  • Download tailscale.com before reading its licence in the sidecar build
  • Reach every Turret instance over Tailscale
  • Drop the file tree's head and the file bar from the Productivity panel
  • Give the update check a deadline and say when a download is starting
  • Join the session header across the transcript and the pane
  • Duplicate and delete automations from a row's actions menu
  • Interactive maps in Productivity mode
  • Move Settings explanations behind ⓘ help popovers
  • Pop a session out into its own window, and back in
  • Stop pointing release and install-app at the removed restart_to_update tool
  • Design popping a session out into its own window
  • Ask about a filled-in or picked folder without the typing delay
  • Move a workbook's columns by dragging their headers, and store the order in view.toml
  • Resize a workbook's columns, and store the widths in view.toml
  • Remove restart_to_update, and turn the RunAsNode fuse on where sudo needs it
  • LLM-driven spreadsheets: the .sheet format, the sheets skill and a read-only viewer on three clients
  • Say linux in the dev cut's unsupported-platform message
  • Gather every outside account onto a Settings Accounts tab
  • Narrow the sudo escalation issue to the repeated prompts
  • Let a session's sudo use a password stored in Turret, behind a prompt
  • Stop the unit suite flaking: drain archive writes, await the repo combobox, refire the observer
  • Split a long HTML Telegram message without cutting a tag
  • Send to Telegram from any session through a built-in host server
  • Draw a turn's notices where they arrived instead of pinned below the turn
  • Put the sidebar's head in one title-band row and keep the top-left corner draggable
  • Collapse a disconnected peer's section and disable its heading buttons
  • Stop the sidebar's drag row swallowing clicks through full-page screens
  • Stop flagging a diagram as altered when only its comments were dropped
  • Play a notification sound on the machine that started a session
  • Archive the five finished plans, and say docs changes need no gate
  • Name a missing session_id instead of calling the target invisible
  • Remember where a Productivity session's files were left
  • Draw every top bar with one TitleBar component
  • Use the GitHub CLI's token where gh is signed in
  • Attach pictures from Google Photos in the composer
  • Add session rename, and stop a refused chat send from doubling up
  • Strip a Gemini snapshot's thought signature, and narrow effort per model
  • Make a failed clone's release own only the folder it made
  • Truncate a mirror batch that fails mid-write; make a spawn's registry row durable
  • Hand the session lifecycle the wrapping emitNotice, not the raw fanout one
  • Say plainly that the preflight can't help a host nobody can run commands on
  • Fail smoke.sh loudly on Linux when chrome-sandbox isn't setuid root
  • Compile the app's Kotlin in the gate
  • Keep the mermaid fence rule in one place
  • Zip the archive's transcripts and geometry
  • Retry a notarization upload that drops from a poor connection
  • Give an accepted security advisory a folder of its own
  • Accept the extract-zip Dependabot advisories, don't remediate
  • Draw the conversation's own predictive-back transition, and close the stopped-screen capture race
  • Read a session's files again when its worktree lands
  • Hold an unchecked release base to the same bar as one known to be behind
  • Keep a GitHub token GitHub has rejected out of new sessions
  • Open a session on another machine without a first message
  • Keep the peer session header clear of the Windows and Linux window buttons
  • Never auto-install a cut release locally
  • Share one interface tracker and mDNS socket pool across peer discovery
  • Peer sessions look and work exactly like local ones
  • Dial a peer at the address its advert came from
  • Allow electron-winstaller to run its install script
  • Base folder and GitHub repositories
  • Build the UI-only peer session gaps, and plan the rest
  • Leave a peer's chats out of its section in the Sessions list
  • Flash changed files and colour git status in the Productivity tree
  • Keep a peer machine's Updates section current after a manual check
  • Drop the harness sub-turn cap from Turret's wire types and translators
  • Cloudflare private route on loopback, at port 443
  • Show tool calls and turn errors in view_session's transcript excerpt
  • Draw full-window screens on one FullPage, and move notices out of the top row
  • Keep finding Codex and the user's PATH when the login shell is slow
  • Track how long the app takes to exit, and finish a quit started by SIGTERM on macOS
  • Steer a next-priority mid-turn send into a running Codex or Gemini turn
  • Steer a mid-turn send into a running DeepSeek response
  • Replan Cloudflare access as a private route with HTTPS and OAuth
  • Load the release .env from publish-update.mjs as well as release.mjs

Fixed

  • Fix the three Windows smoke failures, and stop the game harness crashing where no display is attached
  • Fix the userland extraction's tar -C path on macOS
  • Fix the git credential helper's Windows pipe bind and the self-updater's console flash
  • Add the Cloudflare settings reference, fix a stale mockup blurb, and let MarkdownEditor drop its chrome
  • Fix three unrelated issues: workspace read reason, agy/spawn guard gaps
  • Add the Cloudflare route help page, document Chat as a seventh mode, fix the ready mockup
  • Fix the composer's IME send, the permission card's engine name, and the resume-column squeeze
  • Fix three ways the skills registry reports a state that isn't on disk
  • Fix doubled tool args, sideways scroll, and a leaked Gemini signature in the transcript
  • Fix CAD service supervisor never retrying after a failed cycle
  • Fix Gemini in Productivity mode, and show a failed session's error
  • Fix the peer session UI defects catalogued in docs/reports/2026-09-15-peer-session-ui-gaps.md
  • Fix three Cloudflare route issues and report a session whose turns keep failing
  • Two Windows fixes found cutting 0.62.0: tar.exe by path, and the installer icon

0.62.0

Released on .

New

  • Give Codex a CLAUDE.md fallback when it has no AGENTS.md
  • Trace six recent regressions to their changes, sessions and models
  • Add TURRET_DISABLE_GPU escape valve for Linux GPU-process crashes
  • Never resolve the harness binary from PATH or ~/go/bin
  • Pick a peer address this machine can actually route to
  • Linux support: packaging, agent-harness, CAD runtime, self-update, and background auto-update
  • Advertise this machine's mDNS host with an explicit .local suffix
  • Mirror every transcript, and resume a session whose worktree is gone
  • Archive the Productivity mode and Skill Teleport plans
  • Catalog every response shape the conversation UI drops
  • Demand the whole staged set before packaging, not just what the manifest names
  • Stage the pinned ripgrep beside the harness binary, and pass it as -rg
  • Stop the prompts naming tools a harness engine was never given
  • Overlap a cut's checks with its package step, and upload the installer in parts
  • Assert the empty pane column by its own state, not by emptiness
  • Hide redacted thinking blocks instead of drawing a placeholder
  • Skill teleport: promote a repo skill to personal, push it to a paired machine
  • Give the empty pane column a draggable top bar
  • Find an engine installed under a Node version manager when the login shell cannot be probed
  • Hang settled thinking in the transcript's margin instead of on a line of its own
  • Draw the New Chat screen in the pane column rather than over the window
  • Make two path assertions hold on Windows as well as POSIX
  • Productivity mode: a file tree and an editor beside the transcript
  • New Chat: a chat mode, its create path, and the New Chat screen
  • Route deepseek-flash, drop the retired deepseek-v4-flash-vision-exp id
  • CAD inspection: frame on a detail, aim a section, and fork the CAD service
  • Give an agent-harness session the CLAUDE.md files its working directory carries
  • Report a Gemini thought step with no summary as redacted, not as blank
  • Prevent every before-quit pass until teardown has actually finished
  • Move Gemini back onto agent-harness, with a Google API key
  • Load every print-pipeline tool into a CAD session's prompt from the first turn
  • Stop seven console spawns opening a terminal window on Windows
  • Give an Antigravity session its mode's prompt, and say what agy actually reported
  • Give the warning bands and the vendor gate the title bar they sit in
  • Let a machine's session be stopped from the machine watching it
  • Let a session list the saved automations and run one
  • Let a session tag itself for cleanup, and draw the tag on its row
  • Let every engine take an attached image
  • Open the folder picker where the working-directory field points
  • Tell the person approving a peer session which vendor it will run on
  • Take the whole-window screens over the title bar
  • Report a machine's vendors, and let a spawn name vendor, model and thinking level
  • Write the polling-helper-deadline convention into docs/TESTING.md
  • Archive the stale Gemini agent-harness wire documents
  • Hydrate a machine's tool results, then elide and batch its transcript over the peer link
  • Refuse to start Turret in a worktree wt never finished attaching
  • Give DeepSeek a help page and correct the Gemini reference
  • Stop a successful create from re-arming Enter-to-create
  • Reject parked waiters in CodexEventQueue.fail() instead of resolving them clean
  • Drop tool-call-result duplication, and archive pictures inside structured
  • Follow agent-harness's own main rather than a pinned commit
  • Add .gitattributes for LF; eliminate the CRLF hypothesis for the game-fixture failure
  • Reserve room for Windows' title-bar overlay in the renderer's right-aligned controls
  • Step the infinite animations, and stop the CPU probe under-reporting
  • Render the CAD viewers on demand rather than every frame
  • Name what each header control opens, and give the sidebar its words back
  • Open the window with no session selected
  • Re-read the skill band while it is up, so a fresh worktree clears it
  • Don't detach a Windows child process, or it opens its own console window
  • Name the deadline every Bash row ran under, on the row and in the body
  • Move this repo's planning skills to the names it ships them under
  • Draw every top row to the title bar's height, and drag the window by their spare space
  • Cancel the skill offer band for a folder, not for a session
  • Archive the plans whose work has landed
  • Remove the three root CDP driver scripts
  • Reap orphaned processes, and stop creating them
  • Turret's own CAD render
  • Draw the title bar in the sidebar's own header row
  • Name the worktree in the title of a packaged build and a descriptor-less worktree
  • Welcome screen, onboarding skills and one skill registry
  • Hand files off the machine with an archive_files download card
  • Key CAD mode's geometry server `cad`, and plan Turret's own render
  • Offer only the effort levels each Antigravity model will take
  • Draw the input keys a tool renderer does not name
  • Load every part in the CAD viewer and hide the ones not asked for
  • Make Antigravity sessions work against a real agy binary
  • Check engine readiness once at app start, not on every screen
  • Write a speedscope profile for every design build
  • Regenerate stale help docs for the agy/DeepSeek rename
  • Catalogue TURRET_AGY_BINARY and correct the help coverage counts
  • Phase 10 spike: no per-session agy data dir found; recommend deferring
  • agy-and-deepseek phase 9: smoke, end-to-end and documentation
  • agy-and-deepseek phase 8: the settings surface follows the engines
  • agy-and-deepseek phase 7: gemini moves to agy
  • agy-and-deepseek phase 5b: the harness wire moves to the Responses vocabulary
  • agy-and-deepseek phase 5: split the model list, efforts per engine
  • agy-and-deepseek phase 4: the deepseek engine id and its surface
  • agy-and-deepseek phase 6: the agy backend and translator
  • agy-and-deepseek phase 1: rename the agent-harness stack to a provider-neutral home
  • agy-and-deepseek phase 2: the agy wire pin, client and fake agy
  • agy-and-deepseek phase 3: agy binary discovery

Fixed

  • Add scripts/check: a fixed menu of verification scripts
  • Reserve the window buttons' room only where they are, and fix four load-sensitive deadlines
  • Fix Codex reasoning summaries; surface non-blocking async questions
  • Fix the real race in harness-cold-resume: an event batch's [0] is not always the match
  • Give a CAD session a way to find out why its tools are missing, and a way to fix it
  • Fix a stale desktop-host.ts comment and file the Windows title-bar overlay bug it papered over
  • Fix the agy spawn flag that stopped every Antigravity session starting
  • agy-and-deepseek phase 9b: fix the agy post-restart stuck send

0.61.0

Released on .

New

  • Show a machine's version and run its updates from its Settings page
  • Show every paired machine, whether or not it is running anything
  • Let a remote spawn ask for a worktree, made by the machine that holds the repo
  • Name a Codex session's git directories, and recompute them when it moves onto a worktree
  • Start a session on another machine from its section in the sidebar
  • Show whether each vendor works, above Services in the sidebar
  • Draw the Resume list from the folder's last answer, and close the new session screen from its header
  • Gate Coding v2 behind an Experimental coding mode setting
  • Close the Automations screen when a job is run
  • Say how full each session's context window is when listing sessions
  • Take the title field off the new session screen
  • Say where a session sits on its sidebar row, with a glyph beside the name
  • Say who sent a message when one session messages another
  • Archive a paired machine's session from this one
  • Automations: a worktree tick box, and the recent-folders rail in the job editor
  • Draw Claude's engine mark as an asterisk
  • Place a transcript file reference against the session's file listing
  • Hold a message for a full machine, and say when macOS will interrupt a session
  • Coding v2: a mode that puts the agents' creed at the head of the system prompt
  • Machine settings: read and write a paired machine's settings from this one
  • Answer a machine's permission ask from the machine watching it
  • Spawn a worktree with a boolean, on peers as well as children
  • Hand a subagent the host's shell guidance on a SubagentStart hook
  • Give agents a creed, and point CLAUDE.md at it first
  • Add Assistant mode, which runs without Claude Code's own system prompt
  • Make a working directory that is not there yet from either new-session screen
  • Bound a background wait loop, and stop one that is not bounded
  • Pin agent-harness v0.51.0, which advertises every Gemini Flash model
  • Close the archive question once the archive goes through
  • Give each engine a mark, and pick one from cards
  • Package the agent-harness binary Gemini sessions spawn
  • Session runtime and transport facades
  • Give the Gemini fake the executable bit macOS spawns it by
  • Gemini sessions through agent-harness
  • Give a job its armed next fire and its repository name
  • Cap an automation job's run history at 200
  • Automations: scheduled and manual jobs that open sessions
  • Wrap long words in prose, and open a machine group by default
  • Catalogue the Claude Code, Codex and Gemini host surfaces
  • Line the session header up with the sidebar header
  • Find the git directory above a Codex session's cwd, not just at it
  • Give a Codex session on a worktree its git directory to write
  • Ask the archive question in the session row rather than over the window
  • Decode imageView file:// paths without the host's platform conventions
  • Let a person type into a session running on a paired machine
  • Show the Codex items the transcript was dropping, an image among them
  • End the Codex app-server when the prompt feed ends, so the thread can be resumed
  • Unlink a POSIX symlink where a Windows junction takes rmdir
  • Give a Codex session on Windows the sandbox it needs to run a command
  • Tell every session the orchestrator tools exist, so it stops reaching for ListAgents
  • Hold a Codex mid-turn send instead of steering it, so it shows queued
  • Read the last turn's token usage for a Codex context reading, not the session's running total
  • Log two Codex-engine defects: missing queued indicator and context percentage over 100%
  • docs: plan session runtime transport facades
  • Swallow the EPIPE from writing to an exited app-server's stdin
  • Refactor the main-process composition root into four kernels
  • Keep a turn that outran the event buffer drawn as still running
  • Fill the window with a picture the transcript draws
  • Choose an output style per engine, behind Claude and Codex tabs
  • Freeze a Codex session's archive transcript from the event store
  • Draw a Codex turn in the order it happened
  • Start a session on a paired machine by naming the repository
  • Resolve and spawn the codex binary the way Windows installs it
  • Shorten a Windows path in the transcript's tool rows
  • Separate the transport-neutral api layer from the Electron IPC adapters
  • Read the Resume list fresh, and across a repository's worktrees
  • Draw the transcript's scrollbar in the app's own colours
  • Draw the sidebar's new-session control as a New button beside the title
  • Verify the codex binary under the login shell's PATH
  • Let the game and VFX panes resize the picture they draw
  • Let set_state name the view its picture is drawn in
  • Stop the archive sink's capture window outliving the database it writes to
  • Name the report each comment points at, and raise the root cad scripts
  • Ask for a task in the empty composer
  • Draw the new session form as a screen rather than a dialog
  • Cap a delegation on live sessions, never on sessions created
  • Clean up code comments in main/orchestration, peers, db and top-level main
  • Clean up comments in src/renderer
  • Clean up comments in main-remainder, shared and preload
  • Clean up stale comments in main/game and main/modes
  • Clean up comments in src/main/agent
  • Drop pure section-label comments in main/events
  • Clean up comments in main/ipc A slice (src/main/ipc, 40 files)
  • Clean up comments in main/ipc B (35 files)
  • Say in CLAUDE.md what a code comment is for
  • Split CLAUDE.md into an architecture document and its own decisions
  • Resume an old session from the New Session screen
  • A Codex session reaches a tool that is not read-only
  • A Codex row is prepared before anything sends to it, and the Tools screen says it is Claude's
  • A Codex turn reads its own id, so Stop reaches the app-server
  • A running subagent gets a row in the session tree
  • A session runs on Codex as well as Claude, behind a SessionBackend seam
  • CLAUDE.md says no formatter runs over the TypeScript
  • A file reference in the transcript opens in your editor
  • A dot wave at the foot of the transcript says the model has the turn
  • The composer's placeholder reads as a hint, and the header sheds the session name
  • A peer is named by its machine name, not its numbered mDNS hostname
  • The slash menu opens on a draft that starts with whitespace
  • The header opens a session's folder in Finder and in an editor
  • The session header shows the session id, and copies it whole
  • The composer names its two menus in the empty box
  • A peer carries the operating system it runs
  • A header over the desktop transcript, and a thinner composer
  • The peer discovery toggle persists, and the Deny List takes entries
  • Correct the design documents against the code, and drop the frozen rule
  • Carry a refused picture's reason onto the event instead of dropping it
  • Publish commandInFlight so the game pane's strip disables for a model's call
  • A subject going gone or coming back notifies the panes showing it
  • Drop the two printer routes the vendored CAD service cannot serve
  • The electron-builder NSIS step retries a locked output file and stops losing its own error
  • Add a reference page for background auto-update
  • Game sessions forward the real log, closing the last gap in child-process quit handling
  • Type main/index.ts's ipcSeams literal Required<IpcSeams>
  • Carry a declaration file's problems to the pane that would have shown its contents
  • A spawned child's model lands on its registry row, so a restart keeps it
  • The CAD runtime pin hash covers interpreter.json as well as requirements.txt
  • A CAD service or game process that fails to spawn no longer crashes the app
  • Renderer shortcut hints name Ctrl on Windows instead of the Mac glyph
  • Split the four largest files in src/renderer
  • An asset library holds every file it names, and the repository names the grids
  • De-duplicate src/renderer: transport panes, skill banners, session row, palette, editors, tool renderers, cad fixtures
  • A peer keeps the id it was paired under, instead of minting a new one each launch
  • The new-session recents rail fills its column instead of stopping at five
  • Session media store: images held once on disk, fetched by digest
  • Name the machine in a remote session's state indicator, and resume its stream
  • Peer reach: cross-machine sessions over the LAN
  • acp-gemini: move the engine migration to 016
  • Undo the entities an agent escapes in a status or a spawn title
  • Let a new session be typed at while its worktree is made

Fixed

  • Fix sync-agent-harness.mjs on Windows
  • Draw Mermaid in the transcript, and fix the Codex tool name that hid a diagram

0.60.0

Released on .

New

  • Ship peer discovery off by default
  • Compile the update feed's base URL into the app
  • Restore mainCheckoutRoot, and prove release.mjs's module body evaluates
  • Sign the macOS bundle inside out, fail when notarization does, and check credentials first
  • Read the update artifact's name from the manifest rather than predicting it
  • Take a dev cut's version from the channel, and find the credentials from a worktree
  • Advertise and browse on every interface, not the one the OS picks
  • Give the composer the whole column and its errors their own strip

0.59.0

Released on .

New

  • Windows and macOS auto-update via R2 and electron-updater
  • Peer discovery on the LAN
  • Stop a session reading idle while the CLI is still working
  • Archive a worktree session on Windows instead of half-removing it

0.58.2

Released on .

New

  • Wait for Windows to let go of the install before replacing it

0.58.1

Released on .

New

  • Run worktree hooks in a real shell on Windows

0.58.0

Released on .

New

  • Windows support: packaging, wt tooling, CAD runtime, game mode, self-update

0.57.0

Released on .

New

  • Name the repository and worktree under the composer
  • Make looksLikeGitCheckout run git, not just look for .git
  • Register CAD designs against the main checkout, build from the session's own
  • Draw a host notice where it happened, and let it reach the model
  • Let a spawned session read the scratch directories
  • Fold Settings into three tabs, and list the running services

0.56.0

Released on .

New

  • Give the effect host its own tools, and draw a game's knobs

0.55.0

Released on .

New

  • Put matplotlib and vtk back in the CAD runtime

0.54.0

Released on .

New

  • Put build123d in the CAD runtime, and install a changed pin set on its own

0.53.1

Released on .

New

  • Stop the CAD service supervisor mistaking a stranger's port for its own

0.53.0

Released on .

New

  • Read and write print-pipeline's own store
  • Ship a CAD design skill, and put a failed open in the conversation

0.52.1

Released on .

New

  • Reset the context meter when a conversation is cleared
  • CAD mode without print-pipeline

0.52.0

Released on .

New

  • Remember a folder's worktree answer, and widen the recent list

0.51.0

Released on .

New

  • Read a session's transcript off disk, and draw how full its context is
  • Build the game-mode fixture once per vitest run