Release notes
v0.41.22026-10-18
Internal improvements only.
v0.41.12026-10-18
Medium Intake and Wayfinder now run on Jira Projects.
New
- A Jira Project publishes Specs and Wayfinder Maps as parent issues of a picked Spec Issue Type, with children, Blocks links, Spec Branches, Spec Pull Requests, and Spec Groups working as they do on GitHub.
- Registering an Atlassian Project picks the Publish Issue Type and component from the Jira project itself, and the Jira scope can be edited after registration from the Project's menu.
- The Intake Planning panel streams the planning Run's activity and shows a live count of planned Issues instead of raw text.
Fixed
- The Dashboard label filter chips apply to Jira Issues, and a Jira narrowing label is accepted as given rather than rejected as unknown.
- Bitbucket Projects are picked for Dispatch again, and the Bitbucket scope guidance names the pull request read scope that listing them needs.
- Registering a repository with no commits is refused with a message that says to push a first commit, instead of reporting a missing Base Branch.
- The Runtime login Credential kind is hidden on Stacks that cannot use it.
Changed
- Tracker setup moves to one Add a Tracker panel on the Credentials page, with health, validation, replacement, and removal in a separate Trackers list, and the Jira site is entered as its site name rather than a full URL.
v0.41.02026-10-17
A Project belongs to one Platform, GitHub or Atlassian, and Atlassian needs one Credential.
New
- An Atlassian Platform Credential is one record (an account email, a Bitbucket token bound to one workspace, and a Jira token bound to one site) saved on one form and shown on one card with a health reading per token; Setup offers GitHub or Atlassian as a tile, and GitHub repositories with Jira issues are no longer offered.
- Jira now accepts scoped Atlassian API tokens, and the Jira and Bitbucket panels link to Atlassian's token page and list the scopes to pick.
- The add-Project form can create a new private repository on Bitbucket, optionally under a Bitbucket project, and the Bitbucket panel names the extra scope that needs.
- A GitHub or Atlassian Credential can be removed from the Credentials page, refused with the list of Projects that still depend on it.
Fixed
- The Intake start sheet fits a phone screen in every mode, with the Start button kept in view, and tall Project dialogs scroll inside the viewport.
- A Dashboard Run stream that goes silent or never starts reconnects on its own instead of freezing the live view, most visibly on phones.
- Steer delivery notices come from the Thread's own state across Intake, Clarification, and Wayfinder views, and the mobile Intake composer stays visible while one shows.
v0.40.112026-10-16
Internal improvements only.
v0.40.102026-10-15
Projects can now live on Atlassian: Jira Cloud as the tracker and Bitbucket Cloud as the Code Host.
New
- A Project can take its Issues from a Jira Cloud project, narrowed by component or labels, so Jira Issues labelled
ready-for-agentare dispatched, their Pull Requests name the Jira key, and the Issue moves to Done when the work lands. - A Project can keep its repository on Bitbucket Cloud, with Pull Requests, build statuses, squash merges, and Landing Repair evidence all read from Bitbucket.
- A Spec Branch is refreshed from its Base Branch while the Spec is in flight, and a Spec Pull Request that conflicts or fails checks gets a Landing Repair Run like any other Pull Request.
- A Jira tracker binding crosses an Onramp as a Credential Placeholder, so Setup on the hosted Stack asks for the Jira token under the same name instead of dropping the binding.
Fixed
- A Landing no longer reuses a stale local branch when the Pull Request's head was pushed from outside Zozo.
v0.40.92026-10-13
New
- The Dashboard has a light mode, switched at the top right on desktop and in the mobile menu; dark stays the default and the choice is remembered per browser.
Fixed
- Ctrl+C reliably stops a Windows Local Stack.
- A missing GitHub CLI is reported as a prerequisite instead of marking a GitHub token invalid.
Changed
- Start an Intake from a Project carries that Project into the start form instead of defaulting to the first Project.
v0.40.82026-10-12
New
- A Local Stack runs natively on Windows:
npx zozohq@latest upfrom PowerShell or Windows Terminal starts the Stack, opens the Dashboard, finds your existing Claude Code login, and runs Agents as you, with Codex listed as not yet supported on Windows.
v0.40.72026-10-12
Changed
- A Spec Group ready to land shows a Land Spec button, and its Spec Pull Request link opens in a new tab.
- The Local Stack quickstart is listed in the documentation's task guides now that Zozo can be installed on your own machine.
v0.40.62026-10-10
Changed
- On phones the closed Guide sits as a fixed tab on the right edge above the bottom bar, with a status bar showing whether it is idle, has an unread reply, or is working; tapping it opens the Guide as before.
v0.40.52026-10-10
New
- A Project has its own Spec Defaults for the Spec Branch and Auto-land, applied to new Specs from Intake and changeable in the Project's settings.
- Specs created outside Intake, including Wayfinder Maps and Specs authored by hand, are set up with their Spec Branch before their sub-issues are dispatched.
Fixed
- An Issue carrying a Classification Label for a kind that is never fleet work (a Map, a Spec, or a research, grilling, or prototype Ticket) is no longer picked for Dispatch even when it carries
ready-for-agent. - Close Spec refuses with the specific reason that stops it rather than a generic message.
- Spec setup recovers from failures, pauses, and two Publishes at once instead of leaving a Spec half configured.
v0.40.42026-10-10
Spec Landings can be started, stopped, and retried from the Dashboard.
New
- A Spec whose sub-issues are done can have its Landing started by hand, and a Spec waiting to land stays visible in its Spec Group.
- Stop landing and Retry landing work on a Spec Landing even though a Spec has no Thread of its own.
Fixed
- A Spec Landing is blocked when one of its sub-issues reopens, and a Spec whose Spec Pull Request is closed or that has no work to land says so instead of offering controls that do nothing.
- The Landing stage bar never moves backwards within one Landing attempt.
Changed
- Once a Spec is published its Spec Branch is shown as fixed, and choosing automatic Landing locks Auto-land on.
- Each In progress Spec Group names its Project once beneath the header, and the live Landing stage segment uses the same in-progress treatment as the Spec Group meter.
v0.40.32026-10-10
New
- A completed Spec with no Spec Branch shows as a Done Spec Group with a Close Spec action for a person to take.
Fixed
- A failed GitHub Credential check shows GitHub's own message instead of a request trace ahead of it.
Changed
- Spec Groups use a tinted box with a compact progress meter beside the counts in both Dashboard panels.
v0.40.22026-10-10
Specs appear as Spec Groups in the Dashboard.
New
- The In progress panel and the Project panel group a Spec's open sub-issues into one Spec Group, keeping their true Queue Position.
- A Spec Group's header carries the Spec's completion, its Spec Branch, the Auto-land setting, its Spec Pull Request, and whether its Landing is blocked.
Changed
- Publish returns you to the Dashboard, and the Spec progress panel on the published Intake Session is retired in favour of Spec Groups.
- The Spec Branch and Auto-land options on the Intake Confirm step have clearer labels and descriptions, with Auto-land shown beneath the Spec Branch choice that reveals it.
v0.40.12026-10-09
The In progress panel now shows each Issue's Landing as stages you can act on.
New
- The In progress panel lists one row per Issue with a Stage column, sorted so the Issue closest to landing comes first, and its header counts Issues, running Runs, and Landings.
- Expanding a Landing row shows a compact Landing History with how long each phase took, blocked and waiting Landings open expanded, and the expansion survives the panel's refreshes.
- Each Landing row offers Stop landing, Open Thread, and Retry landing.
- An Agent working a sub-issue receives its parent Spec as context in its Dispatch prompt.
Fixed
- A Clarification resolves on the Agent's declared understanding of your answer rather than waiting for a Confirm click, and the Clarification view returns to the Thread when the session ends, whoever ends it.
- Thread detail shows the Run that resumes after a needs-info answer, and a resume that fails comes back as needs-info instead of disappearing.
- Push notifications open the Dashboard surface where the item is resolved instead of the GitHub issue.
- Editing an Issue Plan during Intake no longer loses the Doc Delta's base commit, and landing a Spec Pull Request no longer loops forever on a Stack running the container Executor.
v0.40.02026-10-09
Specs published from Intake now carry their sub-issues on a dedicated Spec Branch and land through one Spec Pull Request.
New
- Publishing a Medium Intake Session creates a Spec whose sub-issues are native sub-issues of the Spec, and each sub-issue's work targets and lands on the Spec's own Spec Branch when you enable one on the Confirm step.
- When every sub-issue of a Spec closes, one Spec Pull Request opens from the Spec Branch to the Base Branch, and the Auto-land toggle (changeable after Publish) decides whether it lands on its own.
- The Dashboard shows Spec progress on the published Intake Session and as a chip on the Spec's Thread rows, and tells you how far a Spec Branch is behind its Base Branch.
- Closing a Spec as not planned stops Dispatch of its remaining sub-issues and closes their open Pull Requests.
- The fine-grained GitHub token link on the Credentials page and in Setup pre-fills the token name and the permissions Zozo needs.
Fixed
- Needs attention no longer keeps listing an Unshipped attempt after its Pull Request has opened, and a parked Clarification keeps its Workspace until the session ends.
- Intake replies show only the latest Draft fragment while the Agent writes, and the finished reply reads as Narration instead of repeating itself.
Changed
- The first run of
zozo uppresents Setup as a structured, styled terminal, and its questions stay on screen while you type the answer.
v0.39.32026-10-04
New
- A Cell joins your tailnet before the Runtime starts when its Project pins an Environment with a Tailnet Key; a failed join fails the Run rather than running without reach.
- Each Run records its tailnet join, and the Environment and its Projects show join health so a dead key is visible before it fails every Dispatch.
- A Run on the host Executor discloses an unused Tailnet Key instead of refusing, and a new guide explains how to let Runs reach your tailnet.
- The Landing Queue worker reports each Landing Phase, and the Dashboard keeps a Landing History instead of guessing the phase from queue position.
v0.39.22026-10-04
New
- An Environment can carry a Tailnet Key, set, replaced, or removed from the Environment editor and never read back.
Fixed
- A Landing waiting for capacity is reconsidered as soon as capacity frees instead of being starved behind the rest of the queue, and Retry landing no longer silently does nothing mid-tick.
- Landing Repair Runs take the next free slot ahead of fresh Dispatch and run alongside the Landing Queue worker, so finished work lands before new work starts.
- A new Workspace is laid down from a freshly fetched Project Checkout, so an attempt no longer branches from a stale Base Branch.
- "Active on add" is honoured when a Project is added by clone.
v0.39.12026-10-04
Fixes from a live pass on a Local Stack.
New
- Adding a Project shows Build command and Test command fields, prefilled from the repository, and the Projects page lets you edit them; an empty field means the Project has no configured check, so repositories without build or test scripts no longer stall their first Run.
Fixed
- Ship reports a refusal or failure under Needs attention and on the Thread, refuses an attempt whose latest Run ended in a Clarification, and no longer fails on a wrong branch for a parked or renamed Issue.
- A Doc Delta is validated during Grilling and the error is fed back to the Agent, and the plan confidence banner is hidden when Planning failed.
- The Clarification view is fully reachable on phones and short viewports.
- A moved Guide bubble no longer blocks Dashboard links, and the first click on Send reply in an Intake Session registers.
- Setup's Project step sends Credential Routes so Watch Project succeeds, and Runtime logins detected by
zozo upare validated so Setup opens past the Runtime step. - Credential Route pickers label a Runtime login as "Runtime login" instead of "API key".
zozo upno longer echoes a pasted GitHub token and keeps GitHub usage telemetry behind--verbose, and a Stack with a custom home directory keeps its Project Checkouts and state there.
v0.39.02026-10-04
Ship, live Drafts, Observed Checks, and paid hosted signup.
New
- Ship: an Unshipped attempt offers Ship and Resume in the Dashboard; Ship pushes the branch and opens the Pull Request without starting a Run, and stranded recovery Ships a finished attempt instead of resuming it.
- Drafts: Intake Sessions and the Run stream show an Agent's reply as it is written, and indicate whether the Agent is thinking or writing while no text is arriving.
- Observed Checks: the Dispatcher reads a Run's build and test results from its own journal, and the Pull Request reports each configured check as observed or as a Verification Gap.
- Choose any Stack Plan at first Checkout, with a Plan-aware Capacity Gate and Waitlist, and redeem a Promotion Code on the Checkout page; the Auto-dispatch interval now steps by one minute, down to one minute.
Fixed
- Runs under a restricted Permission Policy can no longer bypass it on newer Claude Code releases.
- Local Stack: the Dashboard lands on Setup instead of showing raw errors, the one-time URL survives a reload,
zozo uprefuses a contradictory setting before prompting and only announces an update that is newer than what is installed, and a Workspace whose state cannot be read is raised under Needs attention instead of hiding every Unshipped attempt.
Changed
- Hosted signup has no trial: Checkout charges immediately with a 14-day money-back period, and the Local Stack is the free way to try Zozo.
- Workspaces are laid down from the Stack's own Project Checkout instead of cloning from GitHub, so Intake Sessions and Dispatches start several seconds sooner;
zozo upprints only its own curated lines by default with--verbosefor the Server and Dispatcher logs; and Cells run current Claude Code, Codex, and OpenCode releases.
v0.38.112026-09-28
Fixed
- Upgraded Stacks no longer report a stale backup when their nightly backups are succeeding.
- The Backups panel distinguishes a configured backup that has not run yet from one that is not configured.
Changed
- The mobile Home feed pages its fleet bucket; the needs-you and running buckets still show every row.
v0.38.102026-09-27
Fixed
- Codex Runs inside a Cell start in the Workspace instead of having to find it, so a Run no longer declares its Workspace missing.
- A new hosted Stack no longer reports degraded health until its first backup.
- An Onramp carries a Credential Placeholder only for Credentials a Credential Route or the Guide Credential names, never archived ones, and the Onramp review lists them by name.
- The Guide Credential survives an Onramp and waits for its placeholder to be provisioned instead of being cleared.
- The hosted Stack's unlock prompt links back to the source Stack's Settings even when the source Stack has no configured Dashboard address.
v0.38.92026-09-27
Fixed
- A Run whose Completion Declaration carried a malformed field no longer crashes the Dispatcher; it is disclosed as a Verification Gap.
- After an Onramp, Setup advances past the Runtime step once the last placeholder Credential Route is provisioned.
v0.38.82026-09-27
New
- Every commit a Stack makes, by an Agent or by the Dispatcher, is attributed to the Stack's own identity rather than whatever identity the Run invented.
- Settings can clear a completed Onramp, and unlocking Onramp Environments is a step in the hosted Stack's Setup wizard.
Fixed
- An Issue stays In Progress from Dispatch through to its Pull Request opening instead of briefly dropping to untriaged, and the Landing Queue reflects a newly opened or merged Pull Request immediately.
- The first Intake Session on a freshly onramped Stack no longer fails on a missing checkout, and a Project whose checkout is missing and cannot be re-cloned reports a clear error.
- The Onramp Environment key stays visible on the source Stack until the hosted Stack unseals its Environments, the hosted unlock form disappears once the key is accepted, and opening the hosted Stack from the Tenant App handoff lands in Setup with the key applied.
- A replaced hosted Stack is served at its own domain again after a host replacement.
Changed
- The Credentials table is more compact: archived rows sit in the main table with an "archived" pill and a Restore action, and the consent timestamp is gone.
- Stack MCP is available only on a Self-hosted Stack; hosted Stacks hide the panel.
v0.38.72026-09-26
Fixed
- An Agent bundle the hosted Stack cannot install no longer aborts the whole Onramp; everything else applies, Setup lists the skipped bundle, and the Onramp offer says up front which bundles will not carry across.
- A failed Onramp apply now reaches the hosted Stack's Setup notice and the Onramp's status instead of leaving a blank Stack and a pending Onramp.
- A new hosted Stack applies its Onramp Bundle with the release it was onboarded on, so it no longer comes up empty when that release is newer than the base image.
v0.38.62026-09-26
Fixed
- Fresh Dispatches were refused with "a fresh Issue Attempt is in flight" after v0.38.5; they dispatch again.
- A failed attempt leaves another attempt's Workspace in place instead of removing it.
v0.38.52026-09-26
Follow-ups to the Onramp, plus fixes for a Dispatch race.
New
- A signed-in Tenant who opens an Onramp link now Accepts it and is guided to add the Stack, and the Tenant App's Onramp card offers one button, "Continue Onramp with GitHub", whether or not you already have an account.
zozo onrampsubmits the Onramp Bundle itself, prints the Onramp URL, and can seal chosen Environments with--environment.- While an Onramp is pending, Settings shows a "Continue in the Tenant App" link, and the Guide can report whether your Stack is self-hosted or hosted and the state of its Onramp.
Fixed
- Two fleet workers can no longer pick the same Issue at once and destroy each other's Workspaces, and a "Dispatch failed" comment on an Issue names the underlying git error instead of the command line.
- An Onramp that never reports an outcome now ends in a visible failure in Settings after fifteen minutes instead of pending forever, and adding a Stack is refused with a clear reason when the hosted release cannot yet apply the Onramp.
- An Onramp Bundle with fields the hosted Stack does not understand still applies, and Setup lists what was skipped.
- The Tenant App's All Stacks page shows every Stack's real status and keeps updating until the Stack is live, instead of showing "Unknown".
- Dashboard links use the Dashboard's link colour instead of the browser default.
v0.38.42026-09-26
This release introduces the Onramp and the Local Stack.
New
- Onramp: a Self-hosted Stack can create a hosted Stack and carry its settings, Projects, Credential Routes, Agent bundle names, and chosen Environments across, from Dashboard Settings or with
zozo onramp. - Opening an Onramp link in the Tenant App starts signup without an Invite Code and builds the new Stack from the Onramp at first boot; the hosted Stack's Setup then asks you to provision or discard each placeholder Credential Route.
zozo upstarts a Local Stack on your own machine: it supervises the Server and Dispatcher, detects your Claude and Codex logins on first run, offers to import your GitHub login, and opens the Dashboard on a one-time URL.- Ambient Credentials let a Local Stack use the Runtime logins already on your machine in place, without copying them.
- The Guide panel has a New control that starts a fresh Guide Session.
Fixed
- Collapsing the Guide after moving it keeps the bubble where the panel's bottom-left corner was instead of jumping to the top.
Changed
- The Credential usage tile on Settings now reads "Approximated cost" and explains that the figure is what the agent Runtimes report, not a Zozo charge.
- The Guide launcher is a compact rounded-square icon.
v0.38.32026-09-19
Changed
- The Dispatcher asks GitHub far less often while idle, so a Stack spends much less of its GitHub rate limit between dispatches.
- A Project's behind-by count refreshes the moment a Landing moves its default branch instead of waiting for the next periodic read.
v0.38.22026-09-19
Changed
- The Guide opens straight to its conversation, with the compact state and history menu removed, and when no Guide Credential is chosen it shows setup steps with a link to Credentials instead of failing.
v0.38.12026-09-19
Fixed
- Guide Sessions no longer fail on a Stack with recorded usage.
- The Guide dock renders with opaque surfaces in both themes and expands to show the transcript when you send a prompt.
- Guide replies stream into the conversation as they arrive, and the transcript scrolls to a newly sent turn.
- A Proposal card shows the value the Stack will hold after apply with the changed keys highlighted, instead of the whole current config beside a bare patch.
v0.38.02026-09-19
The Guide arrives: ask how Zozo works and how your Stack is configured from any Dashboard page.
New
- Ask the Guide from any Dashboard page: a Guide Session answers from documentation matching your Stack's version and a read-only snapshot of the Stack (settings, Credential health, health status, Attention Items, usage, and recent Threads), and knows which page you are looking at.
- Choose a Stack-level Guide Credential on the Credentials page, with its own model and effort under the guide activity; it clears itself with a visible reason when it becomes unusable, never substituting another Credential.
- The Guide raises Proposals: a card shows the change to a setting (dispatch capacity, Auto-dispatch, fleet suspend, default stop conditions, a Project's config and Credential Routes, a Credential's Runtime Profile, notification preferences, or a non-secret Environment Variable) for you to apply or dismiss, apply refuses if the value has drifted, and a pending Proposal is an Attention Item.
- The Guide overlay has bubble, compact, and expanded states with a keyboard shortcut, a bottom sheet on phones, an unread dot, and a history of past sessions.
- Stack MCP on a self-hosted Stack: mint and revoke read-only tokens on the Dashboard so an external agent can read the same documentation and snapshot and raise Proposals.
Changed
- The Thread usage sidebar panel is gone; the Run header carries the usage figures.
v0.37.32026-09-19
Fixed
- Codex Runs no longer fail within a second of starting, a regression in v0.37.2, and a Codex Run that does fail reports the exit as its reason rather than a stray Runtime warning.
v0.37.22026-09-19
Internal improvements only.
v0.37.12026-09-13
Live usage while a Run executes, Narration in session chats, and Landings that survive trouble.
New
- Thread detail shows live Token Consumption, Context Usage, and Reported Cost while a Run executes on Claude, Codex, or OpenCode, with Thread totals and a current-Run breakdown.
- Session chats show Narration live: the Agent's notes as it works appear as muted bubbles, and once the turn completes they collapse behind a "What the agent did" disclosure above the reply; Intake grilling narrates during its survey instead of showing a throbber.
- Mobile Home shows active and blocked auto-merge Landings, including after the attempt Thread was reaped.
Fixed
- A Landing repair continues through the Project's configured fallback Credential, waits visibly when no Credential or capacity is available, recovers after its Run or Thread was deleted, and recognizes an already-completed repair before spending another Run; Stop, Retry landing, and repair budgets persist across restarts.
- Publishing from an Intake Session shows the new Issues on the Dashboard immediately.
Changed
- The Thread composer's delivery details sit behind an info icon beside the send controls.
v0.37.02026-09-13
Thread detail becomes a cockpit, and dispatched Agents verify with purpose.
New
- Thread detail on desktop is a three-pane cockpit: a Run timeline rail on the left, the Event stream in the centre, and a sidebar with the Steer composer pinned at the bottom, under a header carrying the Thread id, its status, and the Thread actions.
- Keyboard shortcuts in Thread detail: j and k switch Runs, and / focuses the Steer composer.
- The Event stream shows Events, Tokens, Cost, and Elapsed tiles with a tail latency chip, and a tail bar that reads Live tail or Journal replay and counts new Events while you are scrolled up.
- A submitted Steer appears immediately as Pending delivery until the Runtime confirms it.
Changed
- A dispatched Agent ends a Run with a compact Completion Declaration (completed, incomplete, or blocked, the checks it ran, and any Verification Gaps) instead of a per-criterion report; a missing or malformed declaration no longer costs another Run, and gaps are disclosed on the Pull Request.
- A dispatched Agent repeats a passing check only when new edits, a failure, or a concrete concern justify it, instead of extra verification or review passes for reassurance.
- Continuation of incomplete work is bounded by committed progress since the previous Run.
- Landing Repair Runs honour the Issue's configured Stop Conditions and remaining allowance.
v0.36.12026-09-12
Intake publishes in one step, and Prototyping Sessions get their polish.
New
- The Dashboard shows a Landing in its fixing checks phase, and a Landing blocked with checks-unfixed, with Retry landing still offered.
- Acceptance criteria an Agent cannot check inside its Cell no longer park finished work for a human: the Pull Request lists them under "Unverified acceptance criteria", and a dispatch that fails before a Thread exists reports the error on the Issue.
Fixed
- An expired usage-cap pause on a Credential now recovers, so Dispatch is no longer stuck once the cap has reset.
- The Prototype preview shows an empty state with a Reload action when the Prototype's server is not up, instead of raw error text, and a Handoff whose Prototype left no tracked changes refuses with a clear reason.
- An Intake Session transcript shows a failed turn's reason inline with a Retry, and the thinking indicator clears when a turn fails.
- Frontier label updates no longer stall behind a costly background GitHub query, and a deferred label write no longer reads as a Credential problem on the Dashboard.
Changed
- Accepting an Intake Session's plan publishes the Issues directly, with no Confirm step, and returns to the Dashboard.
- The Prototyping dock is a pill when collapsed and a card with status, Variant field, and actions when open.
v0.36.02026-09-12
Prototyping Sessions arrive, and the Landing Queue starts repairing failing checks.
New
- Start a Prototyping Session from the Prototype card on the start form: describe a change to a screen, optionally with an image, and revise the live Prototype by prompt, one Revision per Run, in a view where the Prototype fills the page with a draggable dock and a slide-in conversation rail; the user guide documents it.
- Hand off a Prototyping Session with "Plan the implementation": a Small or Medium Intake Session starts with the original brief, a digest of the Revisions, a screenshot of the final Prototype, and a pointer to its source, and the published tracer Issue carries a Prototype section.
- The Prototype preview shows the Prototype Fidelity the Agent reports (In-App or Standalone) and opens at its reported Preview Path.
- A Prototyping Session waiting on you is an Attention Item on the Attention page and the mobile Home feed.
- The Landing Queue repairs a failing Checks Verdict with a bounded Landing Repair Run on the attempt's own Thread, blocks with a checks-unfixed reason after two attempts, and Retry landing grants fresh attempts.
Fixed
- Replacing a GitHub Credential no longer leaves the Dashboard showing the previous account's repositories or stale GitHub data.
- Early Prototyping Session problems: the preview renders inside the Dashboard instead of staying blank, a start-form image reaches the Agent's first turn, a start or Revision waiting for an admission slot shows as queued instead of hanging on "Starting", and Handoff works on a Project whose intake route names no Credential by using the session's own.
- On a Local Stack, Intake and Prototyping Sessions no longer hang on "Starting" because the Cell Runtime was wrongly reported unavailable.
v0.35.02026-09-09
Pull Requests become visible facts on a Thread.
New
- Thread detail shows a Pull Request line, recorded when the Thread's Pull Request opens and when it closes.
- On a Project that only opens Pull Requests, an open Pull Request waiting on review appears as an awaiting-review Attention Item.
- Every Outstanding Pull Request shows its Checks Verdict, and the landing-blocked Attention card shows the Checks Verdict and conflict chips.
v0.34.02026-09-08
Landing blocks name their reason more precisely, and a stored Credential can be re-checked in place.
New
- Validate a stored Credential from the Credentials page to re-probe it without re-entering the secret.
- Sign out of a hosted Dashboard from the top bar on desktop or the menu drawer on mobile.
- A dispatched Thread row's #N title prefix links to its Issue on GitHub.
Fixed
- A Landing blocked on checks now says whether the checks failed, never ran, or are still pending, and when the Project has no checks the Issue comment, the Attention card, and the guide point toward Unverified Landing, with a link to the Projects page.
- An auto-selected Provider now resolves to a real Credential, so a Provider whose Credential is not named after it no longer reads as having no healthy Credential.
- Thread detail refreshes the Steer delivery panel while a Run streams.
- Context Usage reported from a Claude Run now reflects the context window's occupancy rather than cumulative usage.
Changed
- Thread detail fills the viewport on desktop.
v0.33.92026-09-07
Fixed
- Completion reports are matched to acceptance criteria by meaning rather than exact wording, a criterion the report leaves out counts as incomplete, and a completed objective needs to cite at least one configured check rather than every one.
v0.33.82026-09-07
Fixed
- Acceptance criteria in a completion report match the Issue's criteria regardless of markdown markers, punctuation, or capitalization, so a completed Run is not sent into a needless continuation.
v0.33.72026-09-07
Fixed
- A Steer that a Claude agent takes up mid-turn is now acknowledged as delivered, and a Steer sent just as the turn ends is marked uncertain after a short grace period so the Run still completes.
v0.33.62026-09-07
Fixed
- A Thread's "Last activity" now follows its newest Event instead of lagging until the Run ends.
- The Steer delivery panel on Thread Detail lays out each Steer's order, text, state, and note with proper spacing, with delivered and uncertain states colored.
v0.33.52026-09-07
Fixed
- A Steer sent to a Claude agent during a long stretch of work is no longer marked uncertain after a timeout; it is delivered once the agent finishes its current stretch, and the Dashboard says so.
- Opening a hosted Stack's Dashboard without a valid session sends you to that Stack's page on the Tenant App to sign in, instead of a raw error page.
v0.33.42026-09-07
Fixed
- A complete, evidenced completion report is accepted even when it cites commands other than the Project's configured build and test commands, so finished work ships instead of starting a needless continuation Run.
- The agent is told which commands count as check evidence, and a continuation after an unevidenced completion says so instead of claiming the previous Run was interrupted.
v0.33.32026-09-07
Fixed
- Sending a Steer while a Claude agent is in a tool call no longer freezes the Run; the Steer is queued and taken up at the next boundary.
v0.33.22026-09-07
Fixed
- Claude Runs complete after their final message again instead of staying "running" and holding a work slot.
v0.33.12026-09-07
Fixed
- Thread Detail opens for an issue attempt whose latest Run is still running instead of staying on "Loading thread" indefinitely.
v0.33.02026-09-06
Steer now preserves the attempt's objective, completion requires evidence, and Credentials can be archived and restored.
New
- On Claude, a Steer is delivered after in-flight actions finish and before the next action; on OpenCode it becomes the next Run's prompt once the current turn ends; the Dashboard shows each Steer as pending until the Runtime acknowledges it, and several Steers keep their order.
- Codex and other Providers without a verified safe boundary offer Interrupt and continue, which interrupts the Run immediately and hands a successor your message together with the accepted objective, recorded progress, and remaining allowance.
- A dispatched attempt pins the Issue's title, body, and acceptance criteria when it starts; Thread Detail shows the active objective revision and its history, a Steer that conflicts with the objective asks for clarification, and adopting a later Issue edit requires your explicit confirmation.
- Evidenced Completion: a Run must account for every acceptance criterion with a changed artifact or a configured build or test result before a Pull Request is created; unfinished work continues automatically, and after three Runs without progress the Issue appears in Needs Attention.
- An objective's consumed allowance carries across Steers and continuation Runs, and the Dashboard explains exhaustion and lets you raise the allowance explicitly.
- Archive a Credential to stop future Runs on it while keeping its history, usage, and costs, and restore it later from the archived section on the Credentials page; Add a Credential now presents Provider tiles and Kind cards.
Changed
- Removing a Credential asks for confirmation and is blocked, with the reason shown, while a Project references it or a Run is using it; removal keeps historical Threads and Runs.
- A redirect sent to an Intake, Clarification, or Wayfinder Ticket session is handled and then stops at the next human checkpoint, so it never counts as approval to publish or advance.
v0.32.02026-09-06
New
- Thread Detail has a sidebar with the Thread's details and its Run history, and you can select any Run to view it in place.
- Registering an Observed Project checks for missing Control Labels and offers a one-time creation, registration without them, or cancel, with the Project staying Observed.
- The Codex Credential form warns against sharing an auth file with a local Codex session and links to a new guide for creating a login dedicated to Zozo.
Fixed
- A Codex Credential whose refresh is definitively rejected is now marked invalid, so you see that it needs reconnecting instead of repeated failing Runs.
Changed
- Project controls stay within the Project panel, and Label Authority moved into the Project's actions.
v0.31.62026-09-05
Fixed
- OpenCode Runtime startup checks back off after a connection reset instead of repeatedly hitting a Runtime that is still starting.
- The Backups section on Settings lines up with the usage gauges beside it.
v0.31.52026-09-05
New
- Settings shows usage per named Credential, so two Credentials on the same Provider get separate summaries and stacked daily token bars, with 7, 10, and 30 day ranges, hover and tap breakdowns, and an expandable daily table; removed Credentials stay visible in history, and Reported Cost says when it is partial or unavailable.
Changed
- Dashboard confirmations use a styled dialog with explicit action labels and danger styling for destructive actions instead of the browser's OK/Cancel pop-up.
v0.31.42026-09-05
Fixed
- OpenCode Credential validation works on hosted Stacks again; the bundled OpenCode Runtime was too old for the checks Zozo makes.
- An OpenCode key that is rejected, out of credit, or rate limited is now reported as invalid, usage capped, or rate limited respectively, both at validation and during a Run.
v0.31.32026-09-05
Fixed
- OpenCode Credential validation allows more time for the Runtime to start and for its test turn, and a timeout message now says which of the two phases ran out and how long each took.
v0.31.22026-09-05
Fixed
- Validating an OpenCode Credential on a hosted Stack waits long enough for the OpenCode Runtime to start inside its Cell instead of giving up after a few seconds.
- Adding an OpenCode Credential on a Stack where the OpenCode Runtime is missing or too old reports that the Runtime is not available, instead of a misleading connectivity error or a "bad gateway" page.
- A Runtime that fails to launch no longer takes the whole Server down; the failure is reported on that one validation or Run.
v0.31.12026-09-05
Internal improvements only.
v0.31.02026-09-05
Steer a running agent, give Projects their own Environments, and let capped Issues continue on a fallback Credential.
New
- Steer lets you send a correction or question to a running issue attempt from the Thread Detail view, or from an Intake, Clarification, or Wayfinder Ticket session while a turn is running: the current turn is interrupted, the agent continues on the same Thread with your message, and the Steer appears in the Human input section of the Issue and its Pull Request.
- Environments: create named sets of plain and secret Variables in Settings, pin one to a Project, and every Run on that Project receives them; the agent is told which Variable names exist, secret values never show in the Dashboard, and a Run whose pinned Environment is missing fails with a named reason that links to the Project settings.
- Fallback Continuation: when a dispatched Issue is interrupted by a usage cap, Resume (or Auto-dispatch, ahead of fresh work) continues its existing work and history on an eligible Fallback Credential, recovers again if the fallback also becomes unusable, and honors a removed Credential Route before the next Run.
- A newly created hosted Stack starts on the latest completed Release instead of lagging behind the fleet.
Fixed
- Secret Variable and Credential values that an agent prints are redacted from the Event journal before they are stored.
- The Projects list no longer asks GitHub for branch information on every refresh, so the Dashboard stops using up your GitHub request allowance.
- Once a quota fault's advertised reset time has passed, its chip explains that it clears on the next clean scan and names the Projects it is waiting on.
v0.30.12026-09-04
Fixed
- An OpenCode Credential is checked with a short Runtime turn when it is provisioned, so an invalid key is caught immediately; a stored Credential that has not yet been validated shows a "Not validated" badge and is disabled, not hidden, in pickers.
- With a Dashboard tab open, an Issue created or labeled directly on GitHub appears within about thirty seconds instead of up to five minutes, and the open tab no longer floods the Dispatcher's GitHub request queue.
v0.30.02026-09-03
OpenCode joins Claude and Codex as a Provider.
New
- An OpenCode Credential, holding an OpenRouter API key, can be added on the Credentials page or during Setup and used for any Thread, giving access to models beyond Anthropic and OpenAI; it runs inside a Cell, delivers image Attachments, and is documented in the guide.
- Runtime tuning for an OpenCode Credential offers a shortlist of inexpensive coding models, accepts any OpenRouter model id, and takes effort as low, medium, or high.
- The Dashboard's usage panel shows daily tokens and Reported Cost per Provider, and a day whose cost the Runtime cannot price reads as unknown rather than zero.
- Mobile Project cards show the Dispatch and Intake Credential Routes and let you edit them with the same editor as desktop.
v0.29.32026-08-31
Fixed
- The Add a Project repository picker renders as cards on phones, so the Add action is reachable without rotating the screen.
v0.29.22026-08-30
Fixed
- A Project whose GitHub credential can read but not write its repository no longer causes endless label-write retries; Zozo parks label maintenance for that Project and says so on its panel.
- A stale rate-limit reading could trigger a phantom quota wait on an idle Stack; only fresh readings count now.
- Background reads of open Issues, resolved labels, and Map overviews are merged, so each pass costs fewer GitHub calls.
v0.29.12026-08-30
Fixed
- A landing blocked by failing checks no longer retries every thirty seconds, re-applying its label and posting a duplicate comment each time until GitHub's hourly limit ran out.
Changed
- Signup offers the EU Home Region only; Stacks are hosted in Germany or Finland for now, and an existing US Stack is unaffected.
v0.29.02026-08-30
A Small Intake Mode and a clearer In progress panel.
New
- Intake offers a Small mode, "Decide for me": the Agent surveys the codebase, makes every design decision itself, and presents its decisions, touchpoints, and assumptions for review, with no questions asked; you reply with overrides or move to Planning.
- The In progress panel renders one card per Issue, with its live attempts listed underneath, instead of a flat table.
- The documentation explains the Small, Medium, and Large Intake Modes and the two Grilling Styles.
Fixed
- Starting an Intake Session or Wayfinder Charting from the Dashboard with a Credential selected was refused; it works again.
- The Credentials column of a Project row shows the Dispatch and Intake Credential Routes the Dispatcher actually uses, with fallbacks and missing Credentials marked, instead of a stale per-Provider summary.
- The Add a Project dialog stays frozen while its request is in flight, so a Project cannot be submitted twice.
Changed
- The subscription consent checkbox now reads as a vendor-terms disclosure and links to the documentation explaining what Zozo does if a vendor's terms change.
- On a hosted Stack, subscription Credentials for one vendor can be paused by policy; the Credentials page labels such a pause distinctly and asks for an API key instead.
v0.28.02026-08-29
Fixed
- The Dispatcher makes about half as many background GitHub calls on an idle Stack, so GitHub's hourly limit is reached far less often and quota waits are rarer.
v0.27.12026-08-29
Fixed
- Workspaces on a Project with a Base Branch could fail to check out the branch and were then refused by the Landing Queue on every pass; they check out correctly now.
v0.27.02026-08-29
Fixed
- On a Project whose Base Branch is not the repository default, Pull Requests are now recognised by the Landing Queue and the other surfaces that read them, and a successful Landing closes the Issue with a comment naming the branch it landed on.
v0.26.12026-08-29
Internal improvements only.
v0.26.02026-08-29
The label vocabulary is declared once and documented.
New
- Applying needs-triage holds an Issue out of dispatch while it is still being drafted; a targeted Dispatch aimed at it refuses with a clear message.
- Every Control Label is created on an Owned Project at startup and at registration, so a label meant for a human to apply, such as not-for-agent, can be picked in GitHub; a Project where this fails shows an indicator on its panel.
- The documentation gains a label reference listing every Control and Classification Label, what it means, and whether it stops or orders a pick.
Changed
- The ready-for-human label is retired in favour of not-for-agent, and needs-info now means only that an attempt stopped and a human must re-tag the Issue.
v0.25.02026-08-29
Projects gain a Base Branch and a Label Authority, and model and effort move onto each Credential.
New
- A Project can declare a Base Branch, set from the Project row menu or the CLI, so attempts are cut from it, Pull Requests open against it, and Landings merge into it; the Projects page shows how far that branch has fallen behind the repository default, and an in-progress Issue heading for a non-default branch carries a chip naming it.
- Each Credential now carries its own model and effort for Intake and Dispatch, edited in a Runtime tuning panel on the Credentials page; Credential pickers show the tuning each option brings, and a fallback substitution names the model and effort it switched to.
- A Project declares a Label Authority, visible and editable on the Dashboard: an Owned Project has its Control Labels maintained by Zozo, while an Observed Project's labels are left to humans and the Project panel says so.
- A new not-for-agent label keeps an Issue out of dispatch, promotion, Needs Attention, and the Project panel entirely.
- The Home view shows a quota wait, with the time GitHub's hourly limit resets, instead of reporting a dispatch fault when the limit is reached.
Fixed
- Discarding an Intake Session takes effect on the first click and the view shows the Discarded state immediately.
- The Projects table and the Runtime tuning inputs no longer overflow their columns, and the Home dispatch header wraps on narrow screens.
Changed
- The runtime routing editors on the Settings and Projects pages are gone; model and effort are set only on the Credentials page.
v0.24.02026-08-27
Fixed
- A dispatch whose push was rejected because an earlier closed Pull Request left its branch behind no longer retries every few seconds for hours; it stops at the retry cap, and a re-dispatch after a closed Pull Request starts from a fresh branch.
- An attempt with an open Pull Request whose Workspace was lost (for example after host maintenance) continues on the Pull Request's existing branch instead of diverging from it.
- A Codex Credential refresh that cannot reach its sign-in service is treated as the Runtime being unavailable and retried, instead of spending the Issue's attempts and marking it needs-info.
- The Fleet Fault chip in the Dashboard links to the Issue and Thread it concerns.
v0.23.22026-08-26
Fixed
- A dispatch on a Codex Credential no longer fails with "Not initialized" while the Credential refreshes its expired access token.
v0.23.12026-08-26
Fixed
- A Codex Credential whose access token had expired could not refresh it, so every dispatch on that Credential failed; the refresh now reaches the Runtime's sign-in service.
v0.23.02026-08-26
Internal improvements only.
v0.22.12026-08-26
Internal improvements only.
v0.22.02026-08-26
Explicit Credential Routes per Project, and parked Clarifications surfaced in the Dashboard.
New
- Each Project now names a Primary Credential and an optional Fallback Credential for Dispatch and for Intake separately, in an Edit Credentials matrix; the Fallback may be a second Credential on the same Provider, so a paused or unhealthy Primary falls through to it.
- Intake and Wayfinder sessions follow the same ordered Credential Routes, while a Credential you pick by hand on the start form is used strictly with no substitution.
- A Clarification waiting on you now appears in its Project panel behind a new awaiting-answers filter chip, whose count is always visible, with an Answer questions link straight to the conversation.
- The Clarification session page collapses the original dispatch prompt and older turns, and places Confirm and implement where it is reachable without scrolling.
Fixed
- A Run whose agent stays silent for a long time (for example during a long test suite) is no longer abandoned and re-selected; it keeps its claim and its result is processed when it finishes.
- A Plus or Pro Stack is rebuilt at its own Plan's size during host maintenance instead of the Standard size.
- The Stack Plan cards in the Tenant App align their actions and clearly disable the current Plan.
Changed
- Deleting a Credential is refused while a Project route names it, listing the Projects involved; deleting one that only past Threads used asks for confirmation and says how many Threads become non-resumable, and a Credential's Provider can no longer change when it is re-provisioned under the same name.
v0.21.02026-08-25
Added Stacks wait for capacity, and a usage cap pauses a Credential instead of failing its Issue.
New
- Adding a Stack when your Home Region has no capacity now creates a Queued Stack instead of a failed purchase: it is not billed while it waits, it retries automatically across your Home Region, and you can cancel it or reconfirm it on a different Plan from the Tenant App.
- Email notices follow an added Stack's lifecycle: when it waits for capacity, when provisioning starts and billing begins, and when it is live.
- When a Runtime reports a usage cap, the Run ends and the Credential enters a Credential Pause until the reported reset; Credential status shows when it will retry, and a single Run probes it at that time.
- Auto-dispatch keeps the fleet busy on other Credentials while one is paused, and resumes the paused Issue on its existing Thread once the Credential is eligible again, without spending its retry attempts or marking it needs-info.
- The Tenant App's signed-in pages were redesigned: the Stack page leads with opening your Dashboard, the account home lists Stacks at full width, and the sign-in card and the Add a Stack form follow the same layout.
Fixed
- An added Stack that is not live within an hour of billing starting has its subscription line removed and is unwound, so you are not billed for a Stack you cannot use.
- Dashboard repairs: wide tables scroll sideways instead of being clipped, the maintenance banner is styled, mobile Home uses the same switch control as the desktop Dashboard and shows Thread titles rather than raw ids, and several borders and colours that silently failed to render now appear.
v0.20.12026-08-23
Fixed
- The per-Stack page in the Tenant App rendered blank; it loads again.
v0.20.02026-08-23
Fixed
- Wayfinder Ticket-resolution notifications are no longer replayed after a Map could not be read for a moment or after a Dispatcher restart, and notifications about Intake turns and dispatch outcomes are no longer resent in bulk after a restart.
Changed
- A new Intake Session defaults to the multi-question Grilling Style; a Wayfinder grilling Ticket still defaults to single-question.
v0.19.02026-08-23
One account can now run several Stacks, and Intake gains a Grilling Style.
New
- Your account can hold more than one Stack: the Tenant App account home lists every Stack with its health, Plan, and region, and each Stack has its own page with its settings, its Plan Change card, and a button into that Stack's Dashboard.
- Add a Stack from the account home: pick a Stack Slug and a Plan, review the prorated quote, confirm, and watch it provision until it is live; each Stack is billed as its own line on your one subscription.
- A trialing account that wants a second Stack can end the trial and start paying right away, then continue straight into adding the Stack.
- Delete a Stack from its page by typing its Stack Slug; the Stack is deprovisioned, its subscription line is removed for a prorated credit, and deleting your last Stack is refused in favour of cancelling through the Billing Portal.
- A Medium Intake Session has a Grilling Style: choose single-question or multi-question (numbered rounds with a recommendation per question) on the start form, and flip it mid-session to take effect on the next turn; Wayfinder grilling Tickets offer the same choice.
Fixed
- The Runtime routing dropdowns in Settings no longer overlap, and show a dropdown affordance.
v0.18.02026-08-20
Home Regions for every account, and Plan Changes that wait for capacity instead of being refused.
New
- Signup now asks you to choose a Home Region (EU or US) before Checkout; the choice is permanent for your account, and your Stack is always placed in a location within that region, including the capacity check before Checkout and the Capacity Waitlist.
- A Plan Change that finds no capacity now waits as a Queued Plan Change instead of being refused: it starts automatically when capacity appears anywhere in your Home Region, you can cancel it or replace it with a different target Plan while it waits, it expires with an email after seven days without capacity, and it never waits for a maintenance window.
- When maintenance moves your Stack to a different location within your Home Region, you receive an email naming the new location and noting that the Stack's IP address changed.
- Model fields in Settings and in per-Project overrides now suggest the models each Provider is known to accept, and show the real model name behind "Agent default".
Fixed
- Plan Changes that were refused at admission because the subscription's renewal date could not be read now go through.
- Plan Changes and host replacements for a Stack on the previous release no longer stall at the backup step.
Changed
- Adding a Project now requires naming a Primary Credential; a Project no longer inherits a default Credential.
- Customer emails (Plan Change results, maintenance notices, and others) were rewritten in one consistent style without internal jargon.
v0.17.02026-08-16
Stack Plans arrive, and the questions a person answers during a dispatch now travel with the work.
New
- Stacks are enrolled in a Stack Plan (Standard, Plus, or Pro); new signups start on Standard, and the Tenant App shows your current Plan and when a Plan Change becomes available.
- A tenant administrator can preview a Plan Change with a Stripe-backed estimate of the next invoice, start it from the Tenant App, follow its progress, and cancel while it is still waiting for active work; every Plan Change leaves a history with its outcome and final billing adjustment, and the administrator is emailed once on completion or rollback.
- Moving to a lower Plan checks that your Stack's durable state fits the smaller Stack before anything starts, credits the difference on your next invoice, and applies the lower caps only once the move commits.
- Clarification questions and answers, and answers given to a
needs-infoIssue, are recorded as Human Input and carried onto the Issue and the resulting Pull Request under a Human input section; oversized records are shortened with links back to the full Thread. - Answering an answerable
needs-infoIssue from the Dashboard resumes the same attempt and moves the Issue toagent-in-progress, rather than sending it back to the queue for a fresh pick.
Fixed
- When the Stack's Cell Runtime is down, new Runs wait in the queue and start once it recovers, instead of failing within seconds while the Stack reported itself healthy.
- A blocked Issue is marked stale-blocked only once every recorded blocker has resolved, so an Issue with one closed and one open blocker no longer appears as an Attention Item.
Changed
- A Landing at the head of the queue whose Pull Request conflicts with the base branch now shows the phase "resolving conflict" instead of "checks queued".
v0.16.42026-08-15
Faster Dashboard loads and a Stack that keeps dispatching after host maintenance.
Fixed
- The Dashboard loads much faster: it no longer fires duplicate requests for the same data, and its GitHub-backed views are served from recently fetched results instead of waiting on the live GitHub request budget.
- After a Host Replacement, the first dispatch on a Project re-clones its missing Workspace on its own instead of failing until an operator re-added the Project.
- A Landing whose worktree cleanup raced a late fetch no longer leaves behind a stub that broke the unshipped-work view and kept the Stack degraded.
v0.16.32026-08-15
Internal improvements only.
v0.16.22026-08-15
Internal improvements only.
v0.16.12026-08-15
Fixed
- Credentials carried across a Host Replacement keep the health they had before, instead of all showing as invalid on the new Stack Instance.
v0.16.02026-08-15
Internal improvements only.
v0.15.82026-08-14
Internal improvements only.
v0.15.72026-08-14
Fixed
- Turning a Project's Active switch off on the Dashboard now takes effect on the very next dispatch pick, instead of letting the fleet keep picking up that Project's ready Issues until the current sweep ran out of work.
v0.15.62026-08-12
Internal improvements only.
v0.15.52026-08-12
Internal improvements only.
v0.15.42026-08-12
Internal improvements only.
v0.15.32026-08-12
Internal improvements only.
v0.15.22026-08-12
Internal improvements only.
v0.15.12026-08-12
Fixed
- A Landing that stopped with a block reason now records that reason, so the Dashboard's Attention Item shows why the Landing is blocked instead of leaving it unexplained.
v0.15.02026-08-12
New
- A blocked Landing appears as an Attention Item carrying the Issue title, a Landing Block Reason, and a link to the Pull Request, and a new push notification category tells you whether a retry is worth trying.
Fixed
- A Pull Request closed without merging no longer notifies as shipped; it reports that it was closed unmerged.
- Long-running commands inside a Cell no longer time out early and strand uncommitted work.
v0.14.02026-08-10
Fixed
- The Frontier reconciler makes far fewer GitHub requests, so a large backlog no longer exhausts the GitHub quota and stalls selection.
Changed
- Every Wayfinder session now runs on the Intake Runtime profile, so the Credential, model, and effort you configure for Intake also apply to Charting and Tickets; the setting is labelled Intake + Wayfinder.
- The documentation site no longer publishes an ADR index, and the Watch a Project, Quickstart, and core guides are rewritten around Pace, Dispatch, and toolchain setup.
v0.13.02026-08-09
Issue work is called Dispatch everywhere.
New
- The Dashboard names who holds each concurrency slot, so a busy count can always be traced to a Run, Thread, or Issue.
- Maps expose a Ticket Claim Mode, Manual or Automatic, for claiming eligible unattended Tickets.
Fixed
- An Issue already awaiting Landing is no longer dispatched a second time.
- Dashboard reads of Issues no longer queue behind background GitHub work.
Changed
- Draining is renamed Dispatch: targeted Dispatch, fleet Dispatch, and Auto-dispatch replace the old names across the Dashboard, settings, and documentation, and Runtime routing profiles are now Intake and Dispatch.
- Turning a confirmed Intake or Wayfinder plan into Issues is now called Publish.
- The Dashboard keeps one retained Issue Snapshot per Project, so Issue lists stay visible while a refresh is in flight and one Project's failure does not blank the others.
v0.12.12026-08-08
Internal improvements only.
v0.12.02026-08-08
A guided Setup takes a new Stack from first Credential to Auto-dispatch.
New
- A new Stack opens with Setup: add a Credential, connect GitHub, pick a repository and its Pace, and hand off to Auto-dispatch, with a clear confirmation after each step.
- Adding a Project opens a Pace picker, and the Projects table shows inline Pacing and merge switches, with card layout on mobile.
- Settings gains a single save bar, a signal strip with the usage and backup gauges, and info popovers that explain each control.
Fixed
- Saving a Credential during Setup shows a success state naming what was saved, instead of an empty form that looked like a failure.
- Concurrency steppers no longer clamp your intended value to the plan cap.
Changed
- Intake Session and Wayfinder credential pickers list your named Credentials rather than bare Provider names, and the chosen Credential is pinned before the first turn.
- Settings uses a single-column layout on mobile.
v0.11.22026-08-07
New
- Settings and each Project configure separate Runtime profiles for Intake and Dispatch: a primary Provider plus a model and effort per Provider, with inherited values distinguished from Project overrides.
Fixed
- Codex Runs no longer fail when the Credential's login token is refreshed mid-flight; refreshes are coordinated across Runs and a failed Run reports its actual root cause.
Changed
- An Intake Session pins its Provider, Credential, model, and effort at creation, so a configuration change between turns never retunes it.
v0.11.12026-08-05
The Corpus Map becomes the Glossary Map, and it produces only a glossary.
New
- A research Ticket on a Glossary Map hands you its Observations, findings that are not vocabulary, to review alongside the vocabulary batch.
- When the Map's Spec is confirmed you can author the one-paragraph preamble that sits above the glossary.
Fixed
- Starting a Charting session against a repository with Issues disabled is refused up front, instead of failing at the first write after a full session.
- A failed action in a Charting, Intake, Ticketing, or Ticket session keeps its error visible until you try again.
Changed
- Corpus Map is renamed Glossary Map; it produces a glossary file in your repository and nothing else, and Attestations and Candidate Constraints are retired.
- A Glossary Map admits only read-only Tickets, and no Ticket on it may propose another Ticket.
v0.11.02026-08-04
A Corpus Map now authors its corpus one Subsystem at a time, in your own words.
New
- When a Subsystem's research resolves, the Corpus Map mints a Corpus Task that drafts that Subsystem's corpus from the human's attested words, running unattended when it is read-only.
Changed
- A Corpus Map refuses proposed
taskandprototypeTickets, and its endgame waits until every Subsystem has delivered its corpus. - Research and grilling Tickets on a Corpus Map no longer compose corpus prose themselves.
v0.10.02026-08-03
New
- Each Project card gains a Wayfinder section listing its open Maps, with Ticket Threads nested under their Map and named with clickable rows.
Changed
- Wayfinder Maps and Tickets leave the Project card's Issue list, and a Charting session sits in the Wayfinder section until it creates its Map, then nests under it.
v0.9.02026-08-03
Pacing: one Issue at a time now means one open Pull Request at a time.
New
- A Project with an Outstanding Pull Request is Paced: no fresh Issue is picked for it until that Pull Request merges or closes, and the fleet header names which Pull Requests are holding it.
- Starting a Paced Issue explains why it is held and offers a deliberate start-anyway, which is recorded by name.
- Each Project has its own Pacing toggle.
Fixed
- A Clarification waiting on your answer no longer has its Workspace reaped, so the answer can be delivered.
- A Clarification reply whose Run fails immediately shows the failure instead of spinning forever.
- Creating a Map in a repository that has never hosted one no longer fails on missing labels.
- The action buttons on the Projects table are no longer clipped off the right edge.
- Auto-dispatch picks up the next Issue as soon as a Landing concludes.
v0.8.02026-08-03
A Thread survives losing its Runtime session, and Wayfinder can bootstrap a repository's corpus.
New
- Activating a Project offers to start a Corpus Map, a Wayfinder Map that charts the repository by subsystem and lands a starting glossary and ADRs as an ordinary dispatched Issue.
- The Intake transcript shows the image an Agent was given for each turn, so you can compare it against the Agent's reading.
- Runs report the Token Consumption and Reported Cost the Runtime supplies.
Fixed
- A conversation whose Runtime session was lost is rebuilt from the journal instead of the Agent going blank, and the transcript marks where that happened and what was dropped.
- An idle Intake Session is no longer reaped between turns; you can take an hour to reply without losing fidelity.
- The Intake image picker works again, and a failed local pre-check now advises rather than refusing a valid image.
- The Dashboard no longer offers Wayfinder for a moment before learning it is switched off.
Changed
- Wayfinder is on by default for every Stack.
v0.7.02026-08-01
New
- Add Project can create a new private GitHub repository for you and watch it right away, as an alternative to picking an existing one.
v0.6.12026-08-01
New
- On mobile, the Dashboard gains an overflow menu holding Projects, Settings, Credentials, Docs, and your GitHub profile.
Fixed
- The Intake Agent no longer narrates an image on turns where none was attached.
v0.6.02026-08-01
Credentials become named, first-class objects you manage from the Dashboard.
New
- The Credentials page lists every Credential by name with its Provider, kind, and health, and you can add a bring-your-own API key as a Credential alongside subscription logins.
- A Project pins one Credential per Provider, picked in the Dashboard, and the Credential a Project actually resolves to is always shown, with inherited defaults marked; re-authentication alerts name the specific Credential.
- An Issue the fleet keeps skipping because its Workspace holds unshipped work appears as an Attention Item instead of silently waiting.
- Account and billing is reachable from the signed-in account pages, so self-serve cancellation works as the terms describe.
Fixed
- An Issue is no longer dispatched a second time while its first Pull Request is landing: a Workspace admits one attempt at a time, awaiting Landing holds the Issue off the Frontier, and a Landing never removes a Workspace another attempt is using.
- A Run whose Workspace has disappeared now says so instead of failing obscurely.
- Auto-dispatch no longer goes deaf after reaching capacity; the next tick picks up newly ready Issues again.
Changed
- A Thread keeps the Credential it was created with for its whole life.
v0.5.02026-07-30
Images arrive in Intake.
New
- Attach an image to a new Intake Session or to any later turn, on either Provider, and the grilling Agent reads it back so you can check what it saw.
- A Docs link in the Dashboard topbar opens the documentation.
Fixed
- Open Issues with no dependencies are no longer promoted to
ready-for-agenton their own; only a publisher or a person puts an Issue on the Frontier.
v0.4.02026-07-30
The Dashboard's Project panels become a readable queue, and blocked Issues move on and off the Frontier on their own.
New
- Project panels filter by label, with
ready-for-agentandblockedshown by default and an always-counteduntriagedchip for Issues that carry no known label. - Each queued Issue in a Project panel shows its Queue Position, so you can see when Dispatch will reach it.
- Issue labels render as chips that tell Control Labels, Classification Labels, and Inert Labels apart.
- A Run provisions the toolchains the repository declares before the Agent starts, and fails loudly when it cannot.
Fixed
- Codex Runs on hosted Stacks no longer fail at the gate with a false "not authenticated" error; the Run gate reads the recorded Credential health instead.
- A Codex Credential that stops working is now marked invalid after a Run, instead of staying healthy forever.
Changed
- Native dependency links and
## Blocked byreferences now mean the same thing, and one continuous reconciler moves an Issue betweenblockedandready-for-agentas its blockers close.
v0.3.42026-07-29
Codex becomes a full peer of Claude, and a Project chooses its Provider.
New
- A Project can pin a Provider, with an optional fallback Provider used when the pin is unavailable; the Projects page gains a Provider column and an edit form for the pair, and a Thread served by the fallback says so.
- Intake Sessions, Charting, Ticket sessions, and Ticketing sessions can run on Codex: Codex now honours the read-only, workspace-write, and workspace-write-with-network confinement tiers, and session start forms offer every Provider that honours the tier a session needs instead of a Claude-only list.
- Model and effort settings are kept per Provider, dispatcher-wide and per Project, so a Run always receives the model string of the Provider actually serving it.
- A Codex Credential is probed for real at provisioning instead of being assumed valid until its first Run.
- A new "Choose a Provider" guide explains pins, fallback, and which tiers each Provider honours.
v0.3.32026-07-28
A more legible transcript, a sturdier Dashboard, and redesigned tenant mail.
New
- Tool activity settles into a receipt on the message it produced, and the transcript throbs at its tail from the moment you submit a turn until the Run finishes.
- Tenant emails (break-glass consent requests, credential re-authentication, and capacity notices) arrive as readable HTML on a dark Zozo shell, with a plain-text alternative; a forced-access disclosure now names the Stack and when access closes.
- Checkout asks for explicit consent to the Terms of Service before a subscription starts.
Fixed
- A background failure, including a Landing Queue listing error, can no longer crash the Dashboard.
- Runs no longer starve the Dashboard, the Server, or SSH of CPU on a busy Stack.
- GitHub credential health distinguishes an unreachable GitHub from a rejected token, so a momentary outage no longer triggers a re-authentication email for a healthy credential.
Changed
- The Landing chip drops its "landing" prefix so its phase fits in two words.
v0.3.22026-07-28
Changed
- "Needs attention" is one flat queue of cards, most recent first, and the mobile Home feed shows the same card.
- A long captured question is trimmed with an explicit expand, and answering a needs-info item opens its form in place.
- An Issue's number in a Project panel is a link, matching the "In progress" panel.
Fixed
- An Interactive Turn that gave up while queued for a slot no longer keeps that slot, so the fleet cannot be slowly starved by abandoned turns.
v0.3.12026-07-27
Fixed
- A tracker error during fleet selection no longer wedges the fleet: the failure is isolated to its Project, the slot is returned, and the Dashboard shows a Fleet Fault naming the Project instead of silently reading "Watching".
- A fleet whose slots are held by nothing for longer than one Auto-dispatch interval is reported as a Fleet Fault ("Slots held by nothing") rather than looking busy.
- A Pull Request that fell behind main lands again; the Dispatcher's own merge commits were missing a committer identity, which blocked every such Landing.
- Changes to Projects and settings take effect on the next selection pass while Auto-dispatch is running, instead of waiting for a restart.
v0.3.02026-07-27
Auto-dispatch becomes a standing mode, sessions tell you when it is your turn, and Landing explains itself.
New
- Auto-dispatch is now a standing mode: the fleet keeps watching for eligible Issues and picks up new work as soon as it appears or a slot frees, the status reads "Watching" when there is nothing to do, and turning it off stops in-flight pickup.
- An Intake Session, a Wayfinder Map session, or a Ticket session that is waiting on you reads "your turn" and appears on the Attention page and the mobile "Needs you" feed.
- The "In progress" panel is a flat table with an Elapsed column and a Step chip, and a Project panel heading counts its in-progress Issues so a busy Project never reads as idle.
- The Landing chip says why a Pull Request is waiting, with its checks verdict and its place in the queue; an Issue awaiting Landing stays in "In progress" instead of looking done, and a landing-blocked Issue stays visible in red with a "Retry landing" action.
- You can authorize an Unverified Landing per Project from the Projects table for when checks cannot run at all; each use is recorded as a comment on the Issue.
- A tripped fleet breaker is shown on the Dashboard instead of failing silently.
- Numeric settings (General concurrency, Interactive reserve, Priority, Max turns, Max tokens, Max cost, Timeout, and the Auto-dispatch interval) use a shared stepper with sensible increments and floors, on desktop and mobile.
Fixed
- A plain reload of the Dashboard now shows the newly deployed build instead of a cached one.
v0.2.42026-07-26
Fixed
- Landing waits briefly for checks to appear after a push instead of refusing a Pull Request whose checks simply have not started yet.
- Times in the Dashboard, including transcript turns, Event rows, and Thread created and last-activity cells, now render in your own timezone rather than the server's clock.
- An Issue with a live Run appears once, in the "In progress" panel, instead of being shown twice.
v0.2.32026-07-26
Fixed
- A Pull Request whose branch had fallen behind main can land again; bringing it up to date used to fail, and that one failure could take the Dashboard down with it. A Landing that fails is now skipped until the next pass and the Dashboard stays up.
v0.2.22026-07-26
Internal improvements only.
v0.2.12026-07-26
Internal improvements only.
v0.2.02026-07-26
Internal improvements only.
v0.1.12026-07-25
Safer Landing of Pull Requests, plan-aware concurrency settings, and a quieter break-glass banner.
New
- Pull Requests opened by Dispatch now land through a Landing Queue, one at a time: a branch that has fallen behind main is brought up to date and re-verified first, and a merge conflict is handed back to the attempt's own Thread for the agent to resolve before the Issue is marked landing-blocked.
- No Pull Request lands unverified: Landing refuses to merge when checks are failing or when no checks reported at all, and says which.
- The Concurrency section of Settings shows the limits your plan allows, refuses a value above them before it is saved, and explains when the limits are still being determined.
- Break-glass access inverts: an operator files a request with a reason and duration, and you grant or deny it from the Dashboard banner, which now renders nothing when no request or window is live.
- Hosted signup is capacity-aware: Checkout is refused instead of charged when no Stack can be placed, you are emailed when capacity returns, the trial clock starts when the Stack goes live, and a stalled Stack tells you why and for how long.
Fixed
- The Dashboard's "In progress" panel holds its rows still, ordered by Issue number, instead of reshuffling on every poll.
- Intake and Wayfinder "ready to continue" banners appear even when the agent adds a remark after signalling, and the mobile Grilling view always shows a Move to Planning control.
- On a hosted Stack, a restart no longer signs you out, and an expired session returns you to sign-in instead of a dead-end token prompt.
v0.1.02026-07-22
The initial release of Zozo: a harness that drives Claude Code and Codex on their own subscriptions, with a Server, a CLI, a Dispatcher that turns a Project's Issues into Threads, Runs, and Pull Requests, and a Dashboard for watching and steering that work. It also ships the first hosted Stack tooling, including operator commands for break-glass access and invite codes.