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.

LATESTv0.12.1Jul 7, 2026
Download

Promoting 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.

PREVIOUS

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. v0.11.0Jul 4, 2026New Device tab runs your mobile app on a real iOS Simulator or Android emulator, booted from the Run button and tiled beside Codron
    • · Mobile projects (Expo, Flutter, React Native) get a Web | Device toggle on the preview tab. Device drives the real, interactive simulator or emulator instead of a screenshot: you tap and type on the actual device. Hit run and Codron builds, installs, and launches your app on it (flutter run, expo run, or react-native run), streaming the build log.
    • · Run boots the device for you. The picker lists both running devices and bootable ones (installed iOS simulators, your Android AVDs), tagged by state; pick any and Codron boots it (simctl boot or emulator) before building, so you never have to pre-launch anything.
    • · Arrange tiles the two windows: the real device window on the left, Codron on the right, snapped to the device's actual size the moment it appears (it keeps trying through the boot instead of waiting for the whole build). On macOS this needs a one-time Accessibility grant to move the device window.
    • · iOS and Android live in one picker. Booted simulators plus the newest iPhones, running emulators plus your AVDs, all in the same dropdown; switch platforms there. Codron runs one app at a time, and closing the simulator or emulator yourself flips the button from stop back to run.
    • · This replaces the earlier preview-as-web trick for these stacks (0.10.11 steered you toward React Native for exactly that reason). Flutter and native emulator work now runs directly, launched and arranged by Codron.
  6. v0.10.13Jul 2, 2026Reset powers down clean instead of auto-running, Claude sign-out clears the token for real, and the left DOCS panel becomes one reading list for every project document
    • · The left DOCS panel is now one reading list for the whole project: briefing, plan, the architecture diagram, artifacts Codron made, and references you added, all as uniform read-only rows sharing one preview. The center references tab goes back to being just the file manager (upload and delete).
    • · Reset now lands a stuck project in standby instead of auto-engaging. Nothing runs and no tokens burn until you press engage; engage is the explicit restart.
    • · Claude sign-out actually clears the token now, and the agent restarts on sign-in and sign-out, so a new or cleared token takes effect without relaunching Codron. Previously sign-out left a stale token that 401'd every engagement.
    • · Project settings wait for the real config to load before rendering, instead of briefly showing defaults you could correct against and accidentally save. A failed load shows an error with retry.
    • · Smaller fixes: the decision-needed notification opens the Overview triage instead of a removed route, /new seeds the engine picker from your saved global default, project delete rides out a transient Windows file lock, unset projects no longer run a higher Claude effort than the picker showed, and a copy pass finishes the cycle-to-engagement wording and humanizes the remaining status labels.
  7. v0.10.12Jul 2, 2026One-click architecture diagrams, Claude Sonnet 5 and Fable 5 in the model picker, and bounded orders no longer roll into the mission loop
    • · New Architecture row in the docs list generates a proper drawio flow diagram of your app in one click, running a background drawio-skill session; preview inline, stop mid-run, regenerate when the shape changes. Sits alongside briefing and plan in the docs list, with the open-in-drawio action tucked inside the viewer so the row itself stays clean.
    • · Model picker updates: Claude Sonnet 5 is in and Sonnet 4.6 is out; Claude Fable 5 is also available as an opt-in (Opus 4.8 stays the default).
    • · Order scope: a bounded, imperative order (e.g. 'add X, then stop') now runs a single cycle and hands back to standby, instead of rolling straight into the ambition-tier mission loop and picking up its own next thing. Broader 'ship this feature' orders still flow through the mission loop as before.
    • · The /new page shows the briefing-draft progress live while a scratch is being promoted, instead of leaving you staring at a frozen scratch until the draft lands.
  8. v0.10.11Jun 29, 2026Disengage and quit now actually kill the agent and its dev servers on Windows, a Reset button unsticks parked loops, and mobile-app projects preview in-app
    • · Disengage now actually stops the agent on Windows. Codron runs the engine CLI through a shell so the claude.cmd / codex.cmd shims resolve on PATH, which left the real claude.exe orphaned when you paused: output kept streaming and the project sat half-alive until the 15-minute watchdog. Disengage, cycle abort, and timeouts now kill the whole process tree (taskkill /T /F on Windows), so a pause takes effect right away.
    • · Quitting Codron no longer leaves dev servers running on Windows. The desktop app now asks the agent to shut down over IPC before it force-kills it, so the agent gets a chance to stop every dev server it started, exit ngrok tunnels, and mark its dev_sessions rows stopped. Previously those servers kept holding their ports and came back as errored on the next launch.
    • · New Reset button for cycles stuck in a run-stop-run-stop loop. When a cycle parks on a wedged escalation or a stale resume session, disengage then re-engage just fed the same broken state back in. Reset (next to engage and disengage) aborts any in-flight cycle, clears the on-disk escalation and decision handoff plus the stuck session id, and flips the project back to engaged, without touching your plan.md, memory.md, or source code. A confirm guards it so a stray click cannot wipe the handoff.
    • · The reset confirmation uses Codron's own dialog instead of the bare OS popup, and every button now acknowledges a press. The native confirm painted jarring white Windows chrome; it now uses the in-app dialog with a danger style. Separately, a single global rule gives every button a slight darken-and-shrink on click, so presses across the dashboard no longer look inert.
    • · Mobile-app projects now preview in-app, no emulator needed. When the agent builds a React Native or Expo app, the preview pane runs it as web and defaults to a phone-width frame, so you see the real mobile layout each cycle. The agent is also steered to choose React Native plus Expo for mobile work (which previews inside Codron) over Flutter or native iOS/Android, which need an emulator you would launch yourself.
    • · First-run onboarding now checks for Git, not just Node. A clean machine (especially a fresh Windows install) often has no Git, and the wizard used to finish anyway, then every engagement failed the instant the agent tried to scaffold, clone, commit, or sync, all of which call git. Git now sits beside Node as a prerequisite with one-click install (winget on Windows, brew on Mac, with a download fallback), and the Welcome step lays out the three setup moments up front. The download page also flags that Linux is unsupported and the macOS build is Apple Silicon only.
    • · The Free plan now includes GitHub push. Agents on Free can commit and open pull requests, so you can run the whole delegate-overnight, wake-up-to-a-PR loop without upgrading; that was previously walled behind Pro. Pro now centers on scale and shipping live products: unlimited projects and machines plus the deploy and cloud tools (Vercel, gcloud, Supabase, ngrok). The Settings Integrations tab reflects the line, those tools prompt to upgrade on Free while GitHub stays available.
    • · The project status pill is less likely to get stuck after a cycle. The end-of-cycle status write was fire-and-forget, so a transient Supabase blip or an abort could leave the row stuck on engaged with nothing to correct it. That write is now awaited and retried once, with a second resync after the cycle slot frees as a backstop, covering the abort and watchdog paths too.
  9. v0.10.10Jun 29, 2026Order draft survives stray clicks, the engagement status pill holds until the cycle really ends, and today's cost stops drifting
    • · The session 'order' modal no longer dismisses on a click outside the dialog. That click used to fire Cancel, which also aborts the in-flight draft stream, so a stray click on the page mid-generation threw the draft away (and the draft is the operator's only copy). The backdrop is no longer a dismiss target; the Cancel button (and Escape on the underlying form) are the only ways to close.
    • · The project status pill stops flipping early at the end of a cycle. The agent writes state.json mid-cycle to mark itself standby/accomplished/pinned, and the file watcher used to push that straight to the cloud, so the top-bar chip flipped to STANDBY while the activity panel was still streaming the last few tool calls. The watcher now skips the status field while a cycle is in flight; the runner's explicit end-of-cycle sync commits the final status once the engine subprocess actually exits, so the chip and the activity stream agree.
    • · The sidebar's '$X today' chip now agrees with the Usage strip. The chip was reading a stored running tally that a separate runner bug had stuck on the latest cycle's cost only (sidebar showed $19, Usage strip showed $72 on the same day). It now queries the engagements table over the same browser-local-midnight window the Usage strip uses, so the two panels can no longer drift; KST operators no longer see the 0-9am UTC vs local mismatch either.
    • · The scratch view freezes while a briefing draft is being generated. The textarea, send, title rename, and delete all disable so a chat sent mid-draft can't race the agent's transcript read. The promote button is also gated on streaming, so the last assistant reply isn't dropped from the transcript a draft is built from. On draft failure, the agent's real error is forwarded into /new instead of a generic blank-form message.
    • · Briefing drafts pull more out of a long scratch. Pasted specs, design docs, and API materials are lifted out into named .codron/references/*.md entries instead of being inlined into the briefing. The transcript is now synthesized recent-turns-verbatim plus a folded head so the opening 'what we want to build' framing survives long conversations, with a hard char cap so a giant pasted spec can't time the draft out.
    • · Reload in the preview tab gives a visible press and a busy spin. The button had only hover styles and fired an async call with no progress signal, so a click looked like a no-op. It now darkens momentarily on press and spins the icon with a 400ms floor so even instant resolves register.
    • · Memory.md now holds the open frontier too. The separate 'backlog' doc kind was used about 0.07x per cycle vs reports at 1x, so it's folded into memory.md as one place with two shapes: '- [ ]' bullets for what's still pending, prose for accumulated learnings. Existing backlogs were appended into memory at migration time; on-disk .codron/backlog.md files are left alone and quietly skipped from sync.
  10. v0.10.9Jun 27, 2026Activity and feed fixes for cycle handoffs, plus mobile-viewport preview and env_request key prefill
    • · The activity pane no longer gets stuck on 'engaging, waiting for the first step' when a new cycle starts right after the previous one ends. The first broadcast events of the new cycle could land before the project's status flipped to engaged through Realtime, and the old code wiped the list on that status flip. Events are now partitioned by engagement id, so the new cycle's events render the moment they arrive instead of waiting on a status round-trip.
    • · Filled in the awkward gap between back-to-back cycles. The pane used to flash empty for a couple of seconds while the agent was writing its feed doc and syncing status. It now holds a green-tinted 'debriefing' state for ~3.5s after a cycle ends (auto-canceled if the next cycle starts inside that window) and keeps the prior event tail visible until something new lands. The status vocabulary was retuned to match: 'working' is now 'on task' / 'filing report' / 'debriefing' alongside the existing engaged/standby/stood-down words.
    • · A failed cycle no longer carries a red border in the feed once a newer cycle has run past it. The HALT chip and the red engagement number still mark the failure, but the border (which is the cue to act on it) drops away once the failure is history. The retry button already worked this way.
    • · Custom machine names survive agent restarts. The agent was re-stamping display_name to os.hostname() on every boot when it found an existing row, so any rename you did from the dashboard reset to the bare hostname on the next restart, upgrade, or reinstall. The hostname is now only used to seed the very first insert; once the row exists, your rename is the source of truth.
    • · Replaced the 'preview on your phone' QR code with a desktop letterbox toggle that crops the preview to a phone-class width (390px). The QR flow only worked when the dev server happened to bind past loopback, which Vite and Flutter Web do not by default, so for most stacks the button silently produced an unreachable URL. The letterbox exercises the same width-based responsive breakpoints on any dev server, no LAN reachability required.
    • · Variables tab now prefills the keys an agent asks for. When the agent posts an env_request card with the keys it needs, the 'Fill in the Variables tab' button opens the tab with those keys already laid out as empty rows, so you only have to type values. A key you delete stays deleted (the seeding does not fight you).
    • · MCP settings no longer look empty on the first visit to a project's Settings tab. The MCP section was reading its initial enabled/specific values once at mount, which on the first render was before the project data had arrived; later fetches were silently ignored. It now remounts once the project data lands, so the saved MCP config shows up as saved.
    • · Fresh repos show the real branch name in the Source tab. The 'No commits yet on <branch>' status line that git prints on an empty repo was being captured whole as the branch name. The pre-commit chrome is also lighter on a brand-new repo (no upstream-sync ops, less spam about the all-staged initial commit).
    • · The SIGN IN button on the ngrok onboarding card actually opens the authtoken dashboard now. The old check used ngrok's own config-check command, which exits non-zero whenever ngrok.yml does not exist, which is exactly the first-run state the button is meant to resolve. Token paste still lives in the same Settings card after you copy from the dashboard.
    • · Swept the remaining em-dashes out of user-visible strings (toasts, tooltips, helper text, the onboarding retry message, the Telegram divider) and updated the order-draft system prompt so the model stops mirroring them back. Code comments are left alone.

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.

Releases · Codron