RELEASES
What's new in Codron
Every released version, with the changes that shipped in it. Already on Codron? Auto-update brings new versions in for you.
EARLIER · page 3 of 7
v0.13.3Jul 9, 2026Session history is reopenable now, so closing a tab isn't a delete, and the empty pane doubles as your recent-sessions landing
- · Closing a session (the ✕ on its tab) no longer wipes it. Sessions with real chat content are preserved on disk (`.codron/sessions/`) and surface in a new 'recently closed' menu next to the + tab, plus a list on the empty pane itself. Pick one to reopen it as a full tab; hover for the X to permanently delete. The empty pane also does a disk scan on project open, so past chats from before this change (anything the old code hadn't already deleted) show up too. Only untouched seed tabs get fully discarded on close, so history stays uncluttered.
- · The 'session 1' auto-seed that used to spawn whenever you closed everything is gone. Zero sessions is a valid resting state now: the pane shows your recent closed sessions on top and a '+ new session' button below, so you can pick up where you left off or start fresh, instead of typing into a phantom tab you didn't ask for. In split mode, reopening from a non-primary pane lands the session in that pane instead of getting silently rehomed to pane 0, fixing the 'tab in one pane, view in another' split.
- · Preview blank-pane after switching from api → preview (or a dev-server restart) is fixed. Reload now re-seats the WebContents view so a stuck surface actually recovers, instead of repainting into the same dead compositor surface no matter how many times you clicked. Chromium's internal error page also no longer fires a phantom 'load succeeded' right after a real ERR_CONNECTION_REFUSED, which used to silently clear your error UI and burn through the retry budget.
- · Terminology and UI polish across the composer and the topbar. The composer's 'queue' language is now 'order' everywhere (the pending-orders queue, the +order button, the confirmation toast) so the same word covers the whole flow. Preview's pick-mode highlight persists after you click, so you can inspect a picked element without it flashing away. Topbar goes flush-left window chrome; the project switcher and the + new button share a borderless silhouette (the create button picks up a live accent instead of an outlined pill) so the strip reads as one clean zone.
- · The reset button moved from the pending-orders row to the idle status bar. It always acted on project state (clears stuck escalation / decision handoffs and parks the project), not the orders queue, so 'looks like it clears pending orders' was a misread. The AUTO auto-authorize chip becomes a proper on/off toggle (track and thumb), so the mode reads at a glance instead of looking identical to the engage button next to it.
v0.13.2Jul 9, 2026Field reports read like reports, not raw dumps: each engagement opens with what changed and how it was verified, and the leftover 'Cycle' label is gone
- · Every engagement's field report used to dump its raw markdown behind a giant 'Cycle <id>' heading, a filename-shaped title that duplicated the card's own 'engagement #14' label and pushed the real content down. That heading is gone and the report now opens straight into the work. The cleanup happens at render time, so it also tidies the reports already in your feed, not just new ones.
- · The report body is now three scannable sections in your own language (요약 / 한 일 / 검증, i.e. Summary / Did / Verified). The one-line summary rides up as the card title and the auto-commit subject, so it is no longer repeated inside, and each Verified line carries a green check when a check passed or an amber warning when it was blocked, so 'did it actually work' reads at a glance.
- · The agent is now prompted to write the work as one idea per bullet naming the file it touched, instead of stitching four actions into a single run-on sentence, so 'what did my agent just do' is answerable in seconds. The unit of work is also called an engagement everywhere you see it now; the stray 'Cycle' wording in reports and the git auto-commit trailer (now Codron-Engagement) is retired.
v0.13.1Jul 8, 2026Multi-machine follow-up fixes: project rows label every machine they live on, and the AUTO toggle stays in sync across surfaces
- · Project rows on the overview now label every machine the project is checked out on, not just the one that last ran a cycle. Under the presence model a project on two machines shows under both filter chips, but the row still said only the last-run machine, so filtering by your work machine could show a project labeled with your home machine and it read as misfiled. The last-run machine leads and the rest render as 'name +N' so the label always agrees with the chip you filtered by.
- · The machine filter defaults to All and the All chip moved to the leftmost slot. It used to auto-focus the machine you were sitting at, which made the overview open mysteriously short with every other machine's projects hidden behind a chip click; the overview is the whole-fleet surface, so narrowing to one host is now your explicit act.
- · The AUTO toggle (auto-authorize) stays in sync between the engage bar chip and the project Settings checkbox. Each surface used to hold its own copy of the flag, so flipping one left the other showing the opposite state until a reload. The flag now rides the same live subscription project status uses, so a toggle on either side lands on the other instantly.
v0.13.0Jul 8, 2026Projects follow git, not a machine lock: cloned on two machines it shows on both, and the confusing 'another machine touched this' banner is gone
- · Multi-machine projects stop pretending to be single-machine. Codron lives on top of git now instead of re-implementing it: a project cloned on two machines is simply present on both, exactly like any repo you git clone twice. The old model bound each project to one 'owning' machine, so working on your laptop and then opening the same project on your desktop threw up an 'ANOTHER MACHINE TOUCHED THIS LAST, pull to switch back' banner with a button that quietly stole the project from the other machine. That banner and the whole ownership lock are gone. Code sync is git's job (push on one machine, pull on the other, like you always have); a real conflict is a git conflict, not a Codron popup.
- · The overview's machine filter now groups by where a project is actually checked out, not by which machine last ran a cycle. A project you have on both your work and home machines shows under both chips instead of vanishing from one. This is backed by a new presence table the agent reports into on every attach, so the chips reflect reality across the fleet rather than a single last-synced stamp.
- · Engage now runs on the machine you pressed it from. Each project carries a stable id stamped into .codron/project.json (identity that survives folder renames and name collisions), and an engage from the desktop targets that machine specifically; other machines' agents ignore the pulse and claim it atomically, so one press can never fan out into duplicate cycles on several machines at once. Pressing engage from the web or phone routes to the machine that last ran the project.
- · Auto-authorize mode: a project can resolve its own routine escalations unattended. Turn it on per project (Pending Orders view) and the agent approves default-choice decisions after the cycle settles, so an overnight run doesn't park on a yes/no it could have answered itself. Deliberately conservative: anything that needs a real input (env vars, files), asks for terminal-command permission, wants a written note, or is destructive still waits for you. Cards already pending when you flip it on are never silently answered.
- · The left panel gets real file-type icons and readable docs and source lists, and a subprocess exit that isn't a cycle failure now reads calmly instead of alarming red. Preview overlays also stay above the native preview pane instead of hiding behind it.
v0.12.2Jul 8, 2026Variables tab discovers .env under any subfolder, preview gets a fullscreen toggle, and the api tab links out to auto-generated docs when it finds them
- · The Variables tab now discovers .env files across the project tree instead of only reading root/.env. Real repos put env in more than one place: a monorepo with backend/ and frontend/ splits its keys across both, a FastAPI plus React app keeps values under backend/ while the client has its own .env.local. Before this change an imported project that clearly had env locally would show 'No keys yet' at the tab. The desktop bridge now walks the project (up to five levels deep, twenty groups max, skipping node_modules, dist, venv, .codron, and hidden dot-dirs) and returns one editor per directory that carries an .env or .env.example. Each card writes back to its own file on save; nothing here leaves the machine.
- · The preview and api tabs get a fullscreen toggle that collapses both side panels so the pane fills the app window. The button lives next to the external-open shortcut in the dev-server card, ESC exits, and switching to a non-preview/api tab auto-drops fullscreen so the side panels come back for feed and session. On the api tab, if the console detects an OpenAPI spec (FastAPI's /openapi.json, Swagger's /swagger.json, Spring's /v3/api-docs) it also probes /docs, /redoc, and /swagger-ui for a live docs UI, and adds a docs shortcut next to the local URL when it finds one.
- · A cycle that ends accomplished now auto-continues when orders were queued into the composer while it was running. Before, those orders sat unconsumed until you noticed the DONE badge and hit engage manually (an eight-cycle mission drove to done last week while an extra idea was being typed into the composer, and it needed a manual nudge to pick that up). The scheduler now checks the pending-orders queue on the accomplished branch: if unconsumed operator messages exist, it flips back to engaged with scope=order (errand loop, drains the order then parks again, does NOT resume the mission's reassess loop) and kicks the next cycle. Orders queued while already parked still wait for the explicit engage press, unchanged.
- · Project status now reads from its own live subscription instead of the page-level Realtime pipeline. When that pipeline stalled silently (dead channel, throttled poll timer) the whole status surface froze: a recent field report had the DB at engaged for nine minutes while the UI still showed NEEDS INPUT, the right panel said IDLE with engage disabled, and broadcast tool events kept streaming in around it. The right panel, top-bar switcher chip, feed placeholder, and banners now share a client-owned status source seeded from SSR and kept fresh by its own postgres_changes subscription plus focus, visibility, and online refetch, matching the defense the DevServerCard already used. Switching projects reseeds instead of flashing the previous project's status.
v0.12.1Jul 7, 2026Promoting a scratch waits out the briefing draft instead of killing it after 3 minutes, plus dashboard and scratch polish
- · Promoting a scratch no longer wall-clock-kills the briefing draft. 0.11.2 bumped the ceiling from 90s to 180s, but real drafts on long transcripts still tipped over the edge and came back as 'draft timed out after 180s'. The ceiling is gone now: the draft runs as long as claude -p needs, matching the idle-based philosophy the engines moved to in 0.12.0. The two coupled ceilings (the server-side coalesce window that deduplicates a double-click, and the /new form's unlock timer that lets you fall back to manual entry) both move to 10 minutes, so they act as crash-recovery ceilings for a genuinely dead agent process, not caps on a live draft.
- · The scratch assistant now points at the actual promote button. The button used to live in the top bar and moved into the composer next to send; the assistant was still telling you to 'hit the promote button at the top' when the conversation was ready to become a project. It now says 'the promote button next to send, in the composer below the chat' so the hand-off matches the UI.
- · The Projects list on the overview drops the per-project lifetime tokens column. Codron's pricing is flat, the number only grew with time, and status plus latest-task plus updated already carry the triage signal, so the column was decoration. Dropping it also lets the dashboard skip a full-table engagements scan on every render. Per-project token totals still live on the mission card inside a project, where they actually inform a decision.
v0.12.0Jul 7, 2026A per-machine keyring for shared secrets, so OPENAI_API_KEY and friends seed once and every project on that box inherits them, plus a cross-machine view of which keys are set where
- · Per-machine keyring is the batch's centerpiece. Store shared secrets (OPENAI_API_KEY, DATABASE_URL, STRIPE_SECRET_KEY, and so on) once in ~/.codron/keyring.env on each box, and every project on that machine inherits them automatically. Values never leave the machine; only key names round-trip through Supabase so the dashboard can render a cross-machine coverage matrix that shows which keys are set on which host (mac-studio has OPENAI_API_KEY, hetzner-eu is missing it, and so on). A per-key 'local only' toggle keeps sensitive names out of the sync entirely. Settings gets a new Variables tab for CRUD on this machine's keyring plus the coverage view.
- · The new-project form gets an EXISTING KEYS chip strip. Green chips are keys already on this machine (click seeds name and value into the project's .env), yellow chips are keys known from another host (declares into .env.example so the schema is right, value stays empty until you fill it), muted chips are keys already in the project. The project Variables tab gets the same picker under a '+ from keyring' button, so importing a shared key mid-project takes one click instead of an editor round-trip.
- · Engagement timeout is now idle-based instead of a hard wall clock. Claude Code was getting killed at exactly 10 minutes on long-running tool calls; the timer now resets on every stdout chunk, so an active stream runs as long as it needs and only silent processes get killed. The scheduler watchdog remains as the real 45-minute total cap.
- · Stuck projects surface their reason and a way out. A pinned or stuck project shows a banner above the shell with a plain-English reason (translated from the raw engine error) and a re-engage button. The pending-orders view treats pinned like paused so the button is reachable even without a queued order. Resolved AUTHORIZATION tags now read AUTHORIZED past-tense, and a claude subprocess exit that isn't a cycle failure reads 'subprocess ended, exit N' in amber instead of the alarming red 'claude exit=N'.
- · env_request and file_request cards get a third action, 'reconsider approach'. Opens a required note editor; when you resolve with it, the engine drops its plan, treats your note as a hard constraint, and re-designs from there instead of waiting for the value you were originally asked for. For the times when the ask itself is wrong.
- · Polish. The session composer's +order button is disabled while a reply is streaming (an order distills the discussion, and mid-turn there's nothing to distill yet). Every operator-facing string had its em-dashes removed and the agent prompt now hard-bans them going forward. codron.app also gets a full /docs walkthrough (ten sections, interactive demos) replacing the old four-step setup guide.
v0.11.3Jul 7, 2026Scratches follow you between machines, and the overview loses noise around the section headers
- · Scratches now follow you between machines. Before, a scratch was pinned to the machine you started it on: opening the same scratch from a second machine locked the composer with an 'origin machine is offline' banner and nothing you typed would reach the agent. The composer is now always open, and sending a message rebinds the scratch to whichever machine you're currently on so the local agent on that host picks it up. The machine chip on the scratch row updates to show where you last used it, not where it started.
- · Scratch rows show the last-message time on the right, next to the machine chip, matching the way project rows show their own last-updated time. Previously the timestamp lived as a small subtitle under the title and was easy to miss; now it lines up in a column with the projects list below, so scanning down for 'what did I touch recently' works across both sections.
- · The overview loses two noisy counts in the section headers. The 'pre-project thinking · N' tag on SCRATCHES and the 'N/M machines online' tag on PROJECTS were adding chrome without helping triage. The section titles now stand alone.
- · The sidebar project switcher swaps the 'today's cost' chip under each project name for a 'Xh ago' last-update time. The cost number was often just 'no spend today' during quiet stretches, and when it did show a value it wasn't the signal you wanted mid-switch. Last-update matches what the main list shows, so the two panels now say the same thing.
v0.11.2Jul 6, 2026Promoting a scratch to a project fills in the briefing reliably instead of stalling out
- · Promoting a scratch no longer times out on legitimate drafts. The agent's ceiling for drafting a briefing from the scratch conversation was 90 seconds, but real drafts routinely landed in the 60 to 85 second range, so a normal run could tip over the edge and come back empty. The ceiling is now 180 seconds, so genuine drafts have room to finish.
- · The /new form's ceiling was also 60 seconds, well under the agent's own, so you would see a scary "taking a while" banner before the briefing had a chance to land. The form now waits past the agent's ceiling before falling back to manual entry.
- · When the draft does finish (or does actually fail), the real result now replaces that fallback banner instead of hiding behind it. If the agent reported a specific reason for a failure, you now see it.
v0.11.1Jul 6, 2026Preview stops flashing the previous project on switch, off dev servers stop showing a stale error log, and the session composer disables order on an empty thread and dismisses the doc picker cleanly
- · Preview no longer flashes the wrong project. Switching projects (or running a second one on port 3001 while the first holds 3000) used to show the previous project's page for a beat before the right URL loaded. The pane now goes blank first, so you only ever see the correct project.
- · A dev server that ran fine and then went away now reads as stopped, not errored. Before, a server that reached ready and later exited (you closed it, it crashed, the app restarted) got stuck showing an ERRORED badge over a perfectly healthy startup log on a project you'd already moved on from. Errored is now reserved for servers that actually failed to start, where the log is worth reading.
- · The session composer's order button is disabled until the session has a conversation. You draft an order from the discussion, so on an empty thread there was nothing to draft from.
- · The @ document picker dismisses when you click away. Typing @ and then switching to another session or pane without picking a doc used to leave the picker floating on screen.
- · Non-Korean projects no longer get Korean leaking into their plan. The cycle already matched your language for its writing, but a few pieces (the discovery plan.md section headers, some internal instructions) were hardcoded Korean and showed up even in English projects. They now follow the language of your briefing.
UPDATE INFO
Codron auto-updates from download.codron.app. A new version triggers a Restart-to-apply toast in the running app. You can also re-download the installer from the download page at any time.