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 6 of 7
v0.7.1Jun 19, 2026Preview lands clean on the first load: agent probes the dev-server socket before declaring ready
- · Preview no longer flashes a connection-refused error on the first frame. Dev servers (Next, Vite, Django, uvicorn, ...) print "Local: http://..." the instant they pick a port, typically a beat before the OS finishes binding the socket. Codron used to treat that log line as "ready", so the dashboard's first iframe load raced the bind, hit ERR_CONNECTION_RESET, and auto-retried while the operator saw an error page flash. The fix moves the wait to the source: the agent (and the local desktop supervisor) now opens a TCP connect against the printed host:port with exponential backoff (50 → 100 → ... capped at 1s, 10s ceiling) and only emits "ready" after the socket actually answers. Typical wait is 50-300ms; the renderer-side retry budget stays as a safety net but almost never fires now, and a pathological server that never accepts on the printed port surfaces ready after the 10s ceiling with a warning line in the log tail.
- · Marketing site /releases page folds older entries by default and paginates 10 per page. The latest release stays expanded at the top; everything below lands as one-line rows (chevron + version + date + highlight, right edge fades out instead of a bare ellipsis) you click to open. Two pages already at 19 historical entries; the page stops being a giant scroll dump as the changelog grows.
- · Env-vars-needed card no longer paints the entire howto in link color. The previous prefix-only regex wrapped the whole string in an <a> when it merely started with https://, so a howto like "https://platform.openai.com/... 에서 키 발급 후 .env 교체" rendered the Korean prose in link color and stuffed trailing text into the href. Only the URL portion is the link now; the rest is plain prose.
- · SHARE row in the preview panel sits at one weight. The localhost hint and the share button used to render 1px bigger than the adjacent SHARE chip, so the row read as visually mismatched. Both drop to 11px now, matching the chip.
- · Chat input no longer fires Send when you hit Enter to confirm an IME (Korean / Japanese / Chinese) composition. Composition-in-progress Enter is treated as IME commit, not message submit.
v0.7.0Jun 19, 2026The operator model: a multi-session workspace per project, and any session becomes the next engagement order
- · A project now opens as a multi-session workspace, not a single chat. Open as many sessions as you want as tabs, and split the surface into 1, 2, or 4 panes to think in parallel: compare two lines of attack side by side, drag a session from one pane to another, close a pane and the layout collapses back on its own. A session is your director's desk for one train of thought, not a transcript of the agent's work.
- · Session chat is local-only now. The conversation runs straight from the Codron desktop app against your project on your machine (read-only: it reads files to ground its answers but never edits, runs Bash, or changes anything), and the thread lives on your machine, not in the cloud. Nothing you think out loud in a session rides the database. Only the feed (engagements and field reports, the permanent record) stays synced. Thinking is local and ephemeral; the record is shared. As a bonus, chat keeps working even while the engagement agent is restarting, and a session survives quitting and reopening Codron.
- · + order turns a session into the next engagement. When a thread lands on what to do, hit + order: Codron reads the whole conversation and drafts a clean engagement order (an intent line plus concrete action items, written in the language you were thinking in) that you edit inline and drop into the queue. It flows into the next engagement cycle exactly like a typed order. The bridge from 'figure out what to build' to 'go build it' is now one button.
- · Bring context into a session. Attach images (paste or pick) and they open as a popup lightbox rather than taking over the whole window; @-mention a project doc (briefing, plan, skill, or reference) to pull it into the conversation so the session reasons against what's actually written down, not a paraphrase.
- · Source pane goes quiet on success. Pull and push no longer dump a wall of git output when they work; the synced chip is the signal. Output only surfaces when something actually needs your eyes.
- · Streaming and chrome polish across sessions: replies paint in a few sizeable chunks instead of a character-by-character trickle, per-message 'now' timestamps are gone (they were noise and made an in-flight reply look finished), Ctrl/Cmd+R reloads the window, and pending-order rows in the right panel are trimmed to a single line of intent: no icon, source tag, or timestamp.
v0.6.3Jun 17, 2026Mission card opens folder and repo, and the four signature workflows land on the site
- · Two new icon buttons on every mission card's status row: open folder (desktop-only, scoped to the host machine because the stamped projectPath won't resolve on the wrong OS) and open repository (visible whenever git_remote is stamped; SSH remotes like git@github.com:org/repo.git get normalized to https so the link just works in a browser, unrecognized forms hide the button instead of producing a broken URL). Even when the daily flow is hands-off the code, you still need to know where it lives.
- · Settings → Notifications shed the three checkboxes (Escalations / Long cooldown / Auth failures) that gated each Telegram event kind separately. The master Telegram toggle plus the per-project mute already cover quiet this channel and quiet this project; the per-category dimension was UI without a real use case. Cleaner card, less to read on first visit, and the agent no longer carries a per-project NotificationPrefs cache.
- · Fix: /decisions and /projects on Telegram no longer sometimes render twice after an unrelated settings save. The poll loop's getUpdates offset lived inside startLoop, so every user_settings restart reset it to undefined and the new loop asked Telegram for everything since the last confirmed offset, replaying the buffered command. The offset now lives on a ref in the outer scope and the settings notifier only fires when (enabled, botToken, chatId) actually moved. While here, slimmed /projects from a two-surface view (prose + buttons saying the same thing) to a one-line header with a status mix (e.g. `Projects (3) · 2▶ 1⏸`) and one button per project.
- · The pending-decision machine chip was a faint 11px tag, easy to miss which host you were about to authorize from. Promotes the chip to match the filter-chip styling (online dot, stronger contrast) and, when the desktop bridge sees the operator on a different host than the decision targets, flips it amber + adds a remote marker. Cross-host authorization still works as before; the chip just disambiguates the target before you click.
- · Fix: the Contact support modal opened snapped to the top of the window instead of centered. TopBar's backdrop-blur made the 40px header strip the containing block for any position:fixed descendant inside it, and SupportDialog renders through ProfileMenu which lives in the header. Now portals through document.body, same pattern the MissionCard modals already use.
- · Marketing site: the four conversion cards in WHY CODRON now carry the named workflows the site uses everywhere else: OvernightOps, Pocket Approvals, The Triage, Snap to Source. A new WORKFLOWS IN MOTION section between WhyCodron and BUILT-IN TOOLING animates the first three as DOM-driven mini-demos with a single shared 100ms tick (Snap to Source already animates as the preview-snap panel one section below). Storyboards for all four also landed under docs/marketing/storyboards/ so the same scripts can feed YouTube shorts and cold-email assets when those go out.
v0.6.2Jun 17, 2026Chat replies actually stream now: token-by-token typewriter, scrollbar polish
- · Chat streaming is genuinely live. v0.6.0 advertised streaming but it didn't actually arrive end-to-end: claude -p in its default text mode buffers stdout to process exit, so the dashboard saw the whole reply as one blob at the end. We now spawn claude with --output-format stream-json --include-partial-messages and accumulate the text_delta events, so the chat bubble fills in as the model generates, both the project intel chat and the scratch chat.
- · And smoothed it out. The agent flushes the pending row every ~80 ms (was 200 ms) and the dashboard adds a small typewriter that paces incoming text at ~280 chars/s with requestAnimationFrame between server updates, then snaps to the full body the moment status flips to 'ok'. Result: continuous typing instead of visible chunks.
- · Fix: stray hair-thin scrollbar at the right edge of the window on scratch + project detail pages. The TopBar's outer header carried a 1 px border-b but no explicit height, so the bar measured 41 px while <main> assumed 40 px, 1 px of body overflow, just enough for the OS to draw a faint document scrollbar. h-10 on the outer header lets box-border consume the border into the 40 px total and the page sits flush again.
- · The chat list's right-aligned bubbles + timestamps no longer touch the inner scrollbar; added ~16 px of breathing room on the right side of the scroll container for both project and scratch chats.
- · Home page trimmed a hair vertically (py-8 → py-6, safe-area pb-2rem → pb-1rem) so the Overview fits in a typical Electron window after v0.6.0's SCRATCHES section landed.
v0.6.1Jun 16, 2026Machine chip selection no longer snaps back on multi-machine accounts
- · Fix: the PROJECTS machine-chip filter on the home page now respects your click. On accounts with two or more machines, picking a different machine's chip used to 'snap back' to the local machine within a few seconds, making it hard to browse another host's projects. The dashboard refreshes every 5s to stay current with realtime, and the auto-focus effect was re-running on every refresh and stomping the selection; now it runs once on load and leaves your pick alone afterward.
v0.6.0Jun 16, 2026Scratches: chat your way into a project before committing to a briefing
- · New Scratches surface: project-less chat with the local Claude for the 'what should I even build' phase, before you've decided on a folder. Each scratch runs in a per-scratch sandbox dir with Edit/Write/Bash enabled (unlike the project chat, which is read-only) so you can prototype freely. When you're ready, hit Promote: the agent reads the whole conversation and drafts a { projectName, briefing, firstRole } that pre-fills the New project form; you pick the machine and engine and submit. The scratch deletes itself once the project is created.
- · Chat replies stream in real time on both the scratch chat and the project intel chat. Previously each reply popped in as one block when claude exited; now stdout streams into the pending row character-by-character with a small pulsing cursor at the end, matching the Claude Code extension feel.
- · + new scratch and + new briefing on the dashboard header are now a single + new menu, same vocabulary as the profile dropdown, scratch vs briefing branches one click deeper.
- · Overview decision triage collapses when several decisions stack. A single pending decision stays expanded (the common case); two or more land as collapsed cards with a chevron to expand individually, so usage and project rows aren't pushed off-screen by a wall of markdown.
- · Fix: a project synced from multiple machines no longer offers a needs-clone banner on a machine that already has the checkout. The shell now checks local disk first and offers a 'pull and switch to this machine' flow instead, which runs git pull and re-claims the row for this machine on the next sync. Previously clicking clone hit the agent's 'clone target exists' guard and stalled.
- · Fix: macOS auto-update no longer dead-ends on 'Code signature did not pass validation'. Squirrel.Mac refuses to install unsigned bundles (we ship unsigned today; see RELEASING.md), so on macOS the updater now skips downloadUpdate() and surfaces a Download .dmg button plus the one-shot xattr -cr command to run after replacing the app. Windows keeps its current auto-install flow.
- · Visual polish: unicode arrows (→ ← ↑ ↓ ▶) across decision / engagement / activity / source / scratch surfaces are replaced with lucide ArrowRight / ArrowLeft / ArrowUp / ArrowDown / Play icons so weight and stroke stay consistent at every size.
- · Marketing site: landing reordered into a funnel, the WHY CODRON section now argues conversion instead of teaching the concept, every page has its own canonical URL so Google indexes them separately, and the auth pages use noindex meta tags instead of a robots.txt block (which was hiding them from Search Console too).
v0.5.1Jun 11, 2026Telegram alerts stay in sync with the dashboard
- · Answering a decision on the dashboard now updates its Telegram alert too: the option buttons disappear and the message flips to the same '✓ resolved' state you'd see after tapping a button in the chat, tagged '(from dashboard)'. Previously the phone kept showing a live-looking decision card for something you'd already handled at your desk. It's an in-place edit, not a new message; no extra ping for a choice you just made yourself.
v0.5.0Jun 11, 2026Google Antigravity engine support
- · Google Antigravity (agy) joins Claude Code and OpenAI Codex as a third engine. Pick it as a project's master (or reviewer) from Settings → Engines or the per-project ENGINE card; cycles run through agy's headless mode with file tools enabled. Install via Google's official installer (the Engines row links the docs), sign in once by running agy in a terminal, and you're set. Timely if you're on Gemini CLI: it reaches end-of-life June 18 and agy is its successor.
- · Antigravity model picks carry the reasoning tier in the name (e.g. 'gemini 3.1 pro · high'), exactly as agy exposes them, including the Claude and GPT-OSS models agy can route to. Heads-up on what this engine can't report yet: agy's print mode has no usage envelope, so these cycles show no token/cost figures and no live activity stream; the field report, diff chip, and confidence gate all work normally.
- · The engagement/intel mode chip moved from its own header strip into the input rows (next to attach in the composer, next to send in intel) so the mode is visible exactly where you type, Claude Code style. The freed header row goes back to the activity stream.
- · For followers: release notes now ship over RSS at codron.app/releases/feed.xml.
v0.4.0Jun 11, 2026Cross-project decision triage + one-click retry
- · The home overview now leads with a NEEDS YOUR CALL section: every pending decision across all your projects, oldest first, answerable right there: option buttons, notes, and the multi-question form included. No more opening each project and scrolling its feed to find the amber card. Env-var requests link into the project instead, since those need the Variables tab filled before approving.
- · One-click retry on a failed engagement. When the latest cycle fails, its card grows a retry button that re-queues the exact orders that cycle consumed and re-engages, replacing the old re-type → queue → engage three-step. Only the newest failure gets the button, so a retry can't replay stale orders over newer work.
- · Engagement cards now show what actually changed: a diff chip on the meta line (e.g. '5 files +214 −18'), measured against the repo state before the cycle started. Works with auto-commit on or off; non-git projects simply don't show it.
- · The empty feed finally tells you what to do: instead of 'no engagements yet' regardless of context, the copy now follows the project's state: wait (still scaffolding, ~1-3 min, updates live), watch (first cycle already running), or act (queue an order and press engage).
- · Onboarding dead ends got exits. A failed engine install shows the exact manual npm command to run plus re-check; sign-in failures list concrete recovery steps; and the engine step explains why Continue is disabled instead of leaving a dead button.
- · Billing hardening: if a card payment fails, the dashboard shows a fix-your-card banner (previously the first signal was a silent downgrade weeks later), and the plan flip after checkout now retries on transient errors so a paid account can't get stuck on Free.
- · Dashboard worst-case staleness dropped from 20s to 5s when the realtime socket silently dies; a new escalation can't sit unseen.
- · Fair-play note: the Free plan's 1-active-machine limit is now actually enforced at registration (it was UI-only before). Replacing a laptop still works; a machine that stops reporting frees its slot after 7 days.
v0.3.0Jun 10, 2026In-app git: a Source tab in the left panel
- · New Source tab in the left panel (next to Timeline): see your project's git at a glance: current branch, ahead/behind the remote, the working-tree changes, and a commit-history rail that flags any commits not yet pushed. Pull / push / refresh are right there, with a 'pull before you push' nudge when the remote is ahead. Tuned for Codron's auto-commit model: it's view-and-sync, not a full SCM (no staging or commit UI; the agent owns commits). Desktop only; everything runs locally and nothing leaves your machine.
- · The right panel's engagement / intel split is now a single mode chip (like Claude Code's mode picker) instead of two tabs: pick the mode, same two surfaces underneath, drafts preserved.
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.