~ $ trau changelog

Changelog

Every published release of trau, mirrored from GitHub. The buffalo is young — the trail starts here.

  1. v2.21.0

    LATEST

    Trau reaches past GitHub and Linear: pull requests can now land on Bitbucket Cloud, and every tracker lets you say which of its own statuses mean what. You can also skip parts of the pipeline for a single run.

    • addedBitbucket Cloud is now a delivery target. Trau opens, updates and merges pull requests there the way it does on GitHub, reads the repository’s bitbucket-pipelines.yml to know whether a pull request will actually get a build, and waits for that build before merging. Credentials live beside the existing ones in Settings under Git & merge, with the API token held as a write-only secret
    • addedStatus mapping: a tracker’s own statuses are yours to map. A new editor in Settings puts your tracker’s real statuses on one side and trau’s planned/ready/in-progress/done groups on the other, so a board with columns like “Ready for dev” or “In review” is understood as you mean it rather than guessed from a category. Available for Linear, Jira and Azure DevOps, and offered as an optional step in the onboarding wizard
    • addedPer-run pipeline skips: when you launch a task you can choose what to leave out — lint fixing, cleanup, verification, CI waiting or merging. The choice is recorded on the run, so resuming it skips the same steps, and an epic passes its skips down to every slice. Queued items carry their skips too, shown as a badge on the row, and what was skipped is stated plainly in the pull request body and the ticket’s QA note
    • addedAzure DevOps now groups the backlog by your board’s own Kanban columns, orders it by the board’s Stack Rank so trau picks the same top row you see, and writes real formatting — acceptance criteria round-trip into their own field instead of being flattened into the description
    • addedA babysitter prompt on the Loop screen: once a drain is armed, the card hands you a copy-paste prompt for a terminal agent that watches the queue and fixes trivial faults, so an unattended run has someone keeping an eye on it
    • fixedThe Resume button is back for interviews that stall. Resuming now re-poses whatever the session was waiting on — the unanswered questions of an open round, or a nudge — without adding anything to the transcript or asking you to start over
    • fixedThe inbox activity feed no longer empties itself mid-turn: reconnecting replays the recent activity instead of showing a blank feed. Lines are also more useful — longer detail, long paths cut in the middle so the filename survives, the full text on hover, and the expanded/collapsed choice remembered across items and tabs
    • fixedAn epic whose branch had drifted from the remote could sync into a broken state. Epic base sync is now transactional: it heals what is safe to heal and stops with a clear reason otherwise, instead of proceeding on a divergent base
    • fixedA prompt containing a NUL byte no longer bricks a run. Composed prompts are scrubbed before the agent is spawned, and the spawn failure that used to be retried forever is now recognised and failed fast
    • fixedOnboarding no longer keeps a stored team your credentials cannot actually see. When a connection test succeeds but the team is missing from what the key can reach, the selection is cleared and a callout names it — for Linear, pointing out that the API key may be restricted to specific teams
    • changedThe inbox interview’s top row is decluttered: the model switch, auto-accept, activity toggle, Start over and Delete moved into a ⋯ overflow menu, each keeping its confirmation
  2. v2.20.0

    Trau gets a look of your own — one theme format for the terminal and the web, five bundled themes and an editor to make your own — and interviews stop asking one question at a time.

    • addedThemes now cover the whole product. A theme is one document describing both light and dark, and the theme you pick restyles the terminal and the web UI together instead of the terminal alone. Five come bundled — trau, Catppuccin, Dracula, Gruvbox and Nord — and Settings gains an Appearance area that shows each as a swatch card and repaints the running UI the moment you click one
    • addedA theme editor built into the app: adjust the colours with the live UI as your preview, save the result as a theme on this machine, or export it as JSON to keep or share. Hand-written theme files dropped into your trau home are picked up too, and one that no longer parses is skipped rather than stopping the hub from starting
    • changedInterviews now ask in rounds. Instead of one question at a time, trau maps what it still needs to know and asks the whole answerable set at once as a single numbered form, recomputing the next round from your answers — so a session that used to be twenty round-trips is now a handful. Questions where trau already has a recommendation are settled before they reach you, and nothing you have answered is asked twice
    • changedInterviews also stopped forcing genuinely codebase-wide mechanical work into artificial vertical slices — a rename or a migration that touches everything can now be planned as one expand-migrate-contract sequence
    • addedOpt-in stacked pull requests for epics (EPIC_STACKED_PRS, off by default): an epic’s slices chain as a native GitHub stack, each built on the one below it, with no epic branch and no epic pull request to merge at the end. The classic epic flow is untouched unless you turn it on and your remote actually supports it. Separately, auto-merge now recognises a stacked pull request and hands it back to you with a clear reason instead of merging it out of order
    • addedOn Chromium browsers the web UI now offers to install trau as an app. Dismiss it and it stays dismissed — across tabs, and for good
    • addedA queued batch now shows what is in it: expand the card to see every member with its own status, before anything starts running
    • changedThe tracker step in onboarding replaces the grid of provider cards with a compact picker that tells you which providers already have credentials on this machine and which config file they came from
    • fixedJira dependencies were written backwards: every blocker and blocked link trau created landed in the swapped slot, so the graph said the opposite of what was intended. Fixed, with the Linear and Azure DevOps writers confirmed correct
    • fixedWhen an agent mistypes the name of a skill, it is now told to retry with the name exactly as given, and the rejected attempt is recorded as a failure in the run’s activity feed instead of being counted as a skill that loaded
  3. v2.19.0

    Trau catches more of its own mistakes before it calls a slice done: the build phase works to a checklist of the defects that keep coming back, changed tests have to actually pass before verification starts, and what a slice learns is passed to its siblings.

    • addedBetween building and verifying, trau now runs the tests itself: the tests a slice promised have to exist, and the ones it touched have to pass under the race detector. A slice that fails goes straight back to repair with the failure output in hand, instead of spending a full verification pass discovering it
    • addedThe build phase now works to a checklist of the six defects that came back most often — errors that never surface to the user, stale state left on screen, races from a double click or a second tab, tests that only pass without the race detector, half-matched ticket ids, and keyboard and overlay handling — so they get caught while the code is being written
    • addedWhen trau drives your app in a browser, the screenshots it takes are now kept and attached to the run even when the agent saved them without a manifest — previously that evidence was quietly dropped and the run finished with nothing to show
    • addedA slice now inherits what its sibling slices in the same epic just learned, whether or not their titles have any words in common, so a lesson learned on one part of an epic is not re-learned the hard way on the next
    • changedHub machinery — updates, push notifications and external agents (MCP) — moved off Settings onto its own Hub page, so Settings opens straight into your configuration. Links that used to point into Settings, including the version chip and the check-for-updates action, now land on Hub
    • removedThe floating interview dock is gone. Questions from an interview now arrive as an ordinary notification and are answered on the Inbox or Research page, and clicking the notification takes you to that exact conversation — switching repository first if the question came from another one. A question whose conversation is already open on screen stays silent, as before
  4. v2.18.0

    Trau writes its QA findings back onto the ticket, research becomes a real document you can approve and export, and a failed run can be handed straight to an interview that proposes the fix.

    • addedAt the end of a run, trau posts a QA report as a comment on the ticket itself — what it checked, what it found, and screenshots of the result — so the evidence sits where the next person looks instead of only in the run log. Works on Linear, Jira, Azure DevOps and GitHub, and stays off until you turn it on
    • addedA failed run can be handed to the Interview Inbox with one click: the interview opens already knowing what went wrong, works the problem with you, and when you accept the outcome the ticket is requeued from the receipt — no retyping the context, no trip to the command line
    • addedResearch reports are now documents rather than a wall of chat: a real title, structured sources listed at the end, and export by copy, Markdown download or PDF. A research run proposes its plan first and waits for your approval before it goes and reads the web
    • addedResearch anchored to a ticket now shows up on the Research page instead of being lost, and a report you have kept can be renamed or deleted
    • addedEvery agent at work is now visible from anywhere in the app — loops, interviews, research and the pre-grill pass alike. The repo switcher marks a repository that has something running, and the Research and Inbox items in the sidebar light up while their agent is working
    • addedThe interview and research feed shows tool calls as they resolve, summarises what each one was given, and streams the agent’s thinking as it arrives, so a long turn reads as progress rather than silence
    • addedApplying a grill outcome is now unmistakable while it runs, and the hub refuses a second apply on top of one already in flight
    • added`trau hub start` starts the hub from the command line, and the web page you land on when the hub is unreachable now hands you that exact command to copy
    • changedSearch puts the ticket you typed at the top: an exact or prefix match on a ticket id ranks first, and finished work is pushed down
    • changedThe app URL workspace field suggests names taken from what the repository actually runs, instead of asking you to remember them
    • fixedChecks no longer go red at random — a background task left running after an apply was racing the test logger
  5. v2.17.0

    Queue work as named batches, stop and steer a grill session mid-thought, and let a new version announce itself instead of shipping in silence.

    • addedQueue batches — select several queued tickets, give the group a name, and start it as one unit. The batch runs to the end and then stops, so you can hand trau an evening’s work without it rolling on into whatever else is waiting
    • addedGrill sessions gained a Stop button that kills the turn already in flight and parks it as “stopped by you”, rather than leaving you to wait out an answer you no longer want
    • addedYou can now type while the agent is still thinking — what you write is queued and delivered at the next turn boundary, so a correction no longer has to wait for the agent to finish being wrong
    • addedNew versions announce themselves: a toast when an update is available, a badge that stays in the sidebar until you deal with it, and the release notes readable in the app instead of only on GitHub. After upgrading, a “What’s new” recap shows what the version you just installed actually changed
    • addedCmd+P opens a repo picker that replaces the old sidebar popover. Projects holding several repositories collapse into one expandable row, so a long list stays readable
    • addedA quarantined ticket can be requeued from the web UI — editing its labels never brought one back, and until now the only way out was the command line
    • addedSlices now get their own CI gate: when a slice’s checks go red, a bounded repair loop works the failure before the merge is attempted, instead of carrying a red branch forward
    • addedExisting projects are editable from the web — rename a project, or move a repository between projects, without hand-editing configuration
    • changedA repository now reports itself honestly: which forge it is on, its real default branch, and the per-child base a stacked run builds from
    • fixedA draining queue could stall silently — in one case for five and a half hours — while a pending item sat there unblocked and runnable
    • fixedOn a tracker shared with other people, trau’s queue labels no longer fight the other machines watching the same board: it strips its own stale labels instead of forcing its local queue onto everyone
    • fixedStarting a batch drain no longer hides the rest of the queue — items outside the batch stay visible
    • fixedSwitching the hub to the dev channel could take trau down entirely; the duplicate that caused it is gone
    • fixedRemoving a repository reported success but left its row on screen when the stored path had drifted
    • fixedThrowaway QA clones are no longer adopted permanently — the hub used to mint a project for a temporary clone and then sync it against the real tracker, and same-named repositories rendered as a single wedged row
    • fixedOnboarding asked you to set FORGE without offering anywhere to set it
    • fixedAzure DevOps board columns are grouped from the categories the API reports rather than matched by name, so a renamed workflow state lands in the right column
    • fixedDiagnostic log lines are written under a lock, closing a data race between concurrent writers
  6. v2.16.0

    Run a whole folder of repositories as one project, an epic’s merge to main becomes a visible phase of its own, and interviews show what the agent is doing while you wait.

    • addedFolder repos — register a folder that holds many git repositories and it behaves as one project: one board, one queue and one run ledger for everything inside, instead of registering and switching between each repo on its own
    • addedA ticket can now run across the folder: the agent may touch several of its repos in one run, and each repo that actually changed gets its own branch and pull request, merged together only once every one of them is green. Repos the run was told to leave alone are guarded — a change landing in one aborts the run instead of shipping by accident
    • addedAn epic’s own merge to main is now a durable, visible Releasing phase: it shows up in the run view and ledger, survives the process dying, and re-arms itself a bounded number of times. When only a human can finish the merge — unresolvable drift, a gate that never goes green — trau notifies you with the pull request and parks the queue item as awaiting merge instead of quietly calling it done
    • addedInterview and research sessions show a live line of what the agent is doing right now — the files it is reading, the commands it is running — so a long think no longer looks like a hang
    • addedOnboarding several repositories into one project got smoother: each repo keeps its own base branch, and the essentials you fill in once are seeded across every repo in the flow
    • addedA PR-base gate checks that the remote base branch carries the run’s fork point before a pull request opens, so a PR can never present a diff built on commits its base does not have
    • addedAzure DevOps boards now show each work item’s own type — Epic, Feature, User Story, Bug, Task, or whatever your process renamed them to — read from the project’s backlog configuration rather than matched by name
    • addedtrau now respects the Azure DevOps hierarchy: a Feature nobody has broken down is no longer mistaken for runnable work, new issues file at the level your process expects with slices as tasks beneath them, and creating or editing issues from the Inbox works on Azure repos
    • addedThe Inbox review card’s Create button became a split button — Create and queue files the issue and puts it straight into the run queue in one click
    • changedOn ultrawide monitors the web app caps its content at a readable width and centers it, instead of stretching edge to edge
  7. v2.15.0

    App URLs become real records with their own QA accounts, Cmd+K turns into the place you drive trau from, and loop control comes down to three verbs.

    • addedApp URLs are now records the hub keeps for a repo rather than a config string — add as many as you need, label them, and browser verify picks the one whose workspace holds the slice. The old APP_URL and APP_URLS settings still work as a fallback, and the onboarding wizard gained a step for setting them up
    • addedQA accounts attach to a specific app URL, so a monorepo whose apps have separate logins hands each verifier only the credentials that work on the app it is actually driving
    • addedCmd+K became the place you drive trau from: a bigger palette that searches issues, runs and settings keys at once, lands you on the right settings row with the key highlighted, and searches every repo at the same time under "All projects"
    • addedThe palette runs things too — start and stop the loop, kick off a run, sync the backlog, or queue and archive an individual ticket from its result row, without leaving the keyboard
    • addedtrau stop stops the hub from the command line and leaves it stopped, blocking until the port is free. It refuses while a loop is live and names what is running; --force parks those runs at their checkpoints first
    • addedDELIVERED_STATE names where a merged ticket parks for workflows where merging is not the end of the line — point it at your QA column and the loop stops trying to move work past it, while the epic gate goes on trusting its own merge record
    • addedAZURE_TEAMS scopes an Azure DevOps sync by team: trau reads each team’s own board settings and mirrors exactly the areas that board covers, so two repos on one team project each see their own team’s work instead of all of it
    • changedLoop control is now three verbs — Start, Stop and per-item Remove. Shut down is gone, and so are the Reset, Clear and Reconcile checkpoint controls: Stop parks the run where it is and Start picks it back up, while Remove ejects a single item and wipes its run state
    • changedAzure DevOps work items are addressed by their bare number everywhere — on the board, as trau 6694 on the command line, and in the branch name — because work items are numbered across the whole organisation and never carried a per-project key
    • changedCreating a project is one flow: the repo switcher offers a single "New project…" action into the onboarding wizard, which now asks for the project name once two or more repos are in the flow
    • changedA manual backlog sync now joins a pull already in flight instead of duplicating it, and the Sync button reflects only the sync you pressed rather than every sync running on the repo
    • fixedAn epic resolving a conflict against main now says so — the Loop card and run view show an explicit "Syncing epic with main" state instead of looking like a run that has hung
    • fixedFinishing an epic no longer closes it while its pull request is still unmerged, and the self-heal that restores a child ticket only moves one that fell behind the delivered state, so work a human moved forward is left alone
    • fixedThe Loop’s remaining-work list tints the header of the epic currently being drained, making it clear which epic the running ticket belongs to
  8. v2.14.0

    Whole folders of repos behind one Azure DevOps project, status transitions that match your tracker, and a loop that puts your checkout back.

    • addedFolder-scoped projects — point trau at a folder, bind it to one Azure DevOps project, and every repo inside it syncs from that project and runs from the same board, instead of registering and wiring each checkout on its own
    • addedAzure DevOps is now a first-class choice in the web onboarding wizard — pick it, enter the organisation URL and token, and finish, with the same guided path Linear and Jira already had
    • addedRemove a whole folder or project from the hub in one action, rather than forgetting its repos one at a time
    • addedtrau --requeue <ID> recovers a quarantined ticket in one command — it restores the ticket to a runnable state without a tracker round trip, and refuses outright when the work already merged
    • addedInternal issues gained a relation-aware create and edit surface: blocked-by and blocks links, priority and a due date, with blocking edges written in the same step that files the issue and unknown targets refused by name. A blocked internal issue stays out of the pick until its blocker settles
    • addedThe repo switcher handles large sets — a scrollable list, folder groups you can collapse, and a filter box
    • addeddoctor now checks that the Claude CLI is past its first-run onboarding and logged in before a run starts, so an unfinished setup fails with the reason instead of stalling mid-phase
    • changedStatus transitions are resolved against the workflow your tracker actually reports rather than hardcoded status names — trau names a stage (todo, in progress, in review, done) and Jira, Linear and Azure DevOps each map it onto their own workflow, so a project whose review column is READY FOR QA lands there instead of failing the transition on every ticket
    • changedThe CI merge gate tells "no checks are configured" apart from "CI is not green". REQUIRE_CI becomes a three-way auto|1|0 setting, and after a short grace window a PR that has received no check at all is resolved against the repo's workflow scan — under auto, a branch no pull-request workflow targets merges with a prominent warning instead of running out the full CI timeout
    • changedEvery surface now calls only the tracker its repo resolves to. The backlog, issue reads, queue labels, the sync worker and doctor agree on one provider, and the Jira and Azure DevOps clients pace themselves against rate limits the way the Linear client does
    • changedA repo whose sync has failed shows an un-dismissable health gate over the page instead of letting you act on a board the tracker no longer backs
    • changedRe-running an Interview can now land on a different ticket type than the one it started on — the session detaches from its original anchor and applies internally, and warnings raised while applying an outcome are kept and shown instead of vanishing with the request
    • fixedA run now restores the checkout it started from and clears partial state on every exit path, including the ones that end early, so an interrupted run no longer leaves your repository parked on its feature branch
    • fixedEpic runs no longer cut the epic branch from a stale local main: the base comes from the fetched remote, a child PR only opens once the remote epic branch provably carries the commit the run was cut from, and auto-merge is refused for a PR whose commits or diff size do not match what the run actually pushed
    • fixedLinear sync no longer burns through the shared API-key rate budget — a 429 or rate-limited response is recognised and honoured, every reader and writer paces through one budget shared per API key, and a refusal parks that budget until the window rolls over
    • fixedAn epic drain now builds a blocked child after its blocker: the Jira blocks-link direction was read from the wrong end, which made a blocked child look free and its blocker look blocked
    • fixedPaused items no longer vanish into FINISHED in the queue while the drain still treats them as runnable
    • fixedA confirm dialog with a long description no longer grows past the viewport with nothing to scroll — the question and the buttons stay put and the description scrolls on its own
  9. v2.13.0

    Azure DevOps joins the trackers, deeper ticket hierarchies, and phase routing you can actually read.

    • addedAzure DevOps Boards as a tracker — set TRACKER_PROVIDER=azure with AZURE_ORG_URL and AZURE_PAT, and work items run through the loop like any other ticket. Work item 1234 is addressed as TRAU-1234 throughout trau, and states are read through a process-agnostic category, so Agile, Scrum, CMMI and Basic projects all work without naming their own state strings
    • addedA Jira Task that has sub-tasks now behaves like an epic: it shows up as a parent on the backlog, expands in place to whatever depth the tracker actually has, and archiving or starting it carries through the whole subtree instead of only the first level
    • changedPhase routing no longer says “inherit”. Every phase in the settings matrix and the TUI picker shows the concrete model and effort it will run at, and each one now has its own opinionated default — the heavy phases stay on the strong model while pick, cleanup, commit, handoff and lintfix run on cheaper tiers, so a fresh install spends less without being tuned
    • changedCLAUDE_MODEL and CODEX_MODEL now steer only grilling sessions and the hub helper agent, not the pipeline phases. An existing config that relied on them is migrated once on startup: whatever each phase was already running at is written out as an explicit per-phase key, so nothing changes tier behind your back
    • changedResearch lives on the Research page alone — the Inbox and the issue drawer no longer offer it, and the mode suggestion that used to guess between interview and research is gone
    • fixedA research report approved without filing an issue now stays listed instead of being pruned away
  10. v2.12.0

    A dedicated Research page, and a pipeline that defends its branch.

    • addedA Research page at /research — start, run and read research sessions in one place, with the same rail-plus-conversation layout as the Inbox, a provider and model picker on the start composer, and the shared outcome review
    • fixedA run whose repository was switched to another branch mid-flight — a second terminal, a stray git switch — no longer commits and pushes its work wherever HEAD happens to point: the pipeline reclaims the run’s own branch before committing, refuses with the work preserved when it cannot, and always pushes the branch it recorded
  11. v2.11.0

    Point the hub at your own build, and back again.

    • addedA build channel switch in Settings → Updates — move the hub onto a registered checkout’s own build without touching a terminal. Trau builds that repo exactly as it stands, proves the result runs, and only then restarts onto it; a build that fails leaves the hub you were using untouched and hands back its output
    • addedSwitch to release puts the machine back on its installed trau, and Rebuild & restart repeats the current build in place. A machine with no installed trau to return to has the action disabled with that reason, rather than a restart that quietly goes nowhere
    • changedA hub kept alive by the macOS launch agent keeps its channel across respawns: the agent is pointed at the chosen build before the restart, so the next respawn cannot snap back to the previous one
    • changedA newer published release no longer shows up as an available update while the hub is running a working-tree build — the comparison would be meaningless, so it is offered once you switch back to the release channel
  12. v2.10.0

    Sync the backlog on demand, and see where it stands.

    • addedA Sync control on the backlog header for repos backed by an external tracker — pull the tracker on demand and refresh the board, with a status line that shows a sync in progress, the last sync error, what the pull brought in, or how long ago the repo last synced
    • changedA manual sync now also sweeps tickets that were deleted, archived or moved out of the tracker, so they leave the board straight away instead of waiting for a background pass — and a sweep that fails now fails the sync outright rather than reporting a half-done pull as a success
  13. v2.9.0

    A calmer dark canvas and clearer forms.

    • changedDark mode trades the diagonal stripe and noise layers for two soft corner glows, leaving every page calmer and easier to scan
    • changedInputs, textareas and selects now use consistent opaque surfaces across the Inbox, settings, run controls, dialogs and onboarding, with clearer contrast against the page behind them
  14. v2.8.0

    Projects become real groups, and interviews keep moving.

    • addedLogical projects — group several repos under one named Project, configure the tracker once at project level, and let member repos inherit it. Project create, rename and delete are first-class hub operations rather than aliases for a checkout
    • addedA server-backed folder picker replaces hand-typed onboarding paths, discovers child repos, and can add several in one pass. When a ticket belongs to a multi-repo Project, Run next asks which member repo owns it before any work starts
    • addedAuto-accept recommendations for Interviews — turn it on when starting or mid-conversation and the agent applies its own recommendation whenever the question is judgement-free. Ask ahead can now carry an unattended Interview all the way to a proposed outcome and stops only when human taste is genuinely required
    • changedOne-click Homebrew updates refresh tap metadata before upgrading and fail plainly when the tap still lacks the release, instead of reporting success while leaving the old binary installed
    • fixedNative Windows provider launches now resolve claude, codex and kimi through PATH before opening ConPTY. PowerShell builds stamp the real git version and notice changed web sources, and the Windows test seams use the same process-control contracts as production
    • fixedUnattended runs no longer wedge on a provider question nobody can answer. Blocking selection dialogs pause with an actionable reason, and doctor catches Claude Code’s one-time bypass-permissions acknowledgement before the run begins
    • fixedLinear epic apply creates blocking relations again after its stricter GraphQL enum validation rejected the old mutation declaration
  15. v2.7.0

    Native Windows joins the herd.

    • addedNative Windows builds for amd64 and arm64 — GoReleaser ships zip archives, Scoop publishes from RomkaLTU/scoop-trau, and every release submits a Codesomelabs.trau manifest to Winget for Microsoft review. WSL2 remains the first-class sandboxed Windows path
    • addedLinux and WSL2 gain proper packages: amd64 and arm64 .deb and .rpm assets ship beside the archives, while the Homebrew cask now selects native macOS or Linux binaries from one install command
    • addedResearch Interviews — external unknowns become a distinct research lane with stored findings and an explicit review disposition. Research can be selected directly or inferred visibly from the focus note, with web search enabled only on providers that support it
    • changedThe live run surface gets compact headers and fixed one-click Terminal and Diff links, so the work itself starts at the top of the page. The Interview dock collapses out of the Inbox composer’s way
    • fixedProject and repo registration controls work again, including unregister, and Jira Test connection distinguishes an invalid token from a mismatched account email
  16. v2.6.0

    The hub goes in your pocket — and other agents can drive it.

    • addedInstall the hub as an app — a web manifest, icons and a build-keyed service worker make it installable on a phone or a dock like anything native. When it cannot reach your machine it falls back to a branded offline shell that retries on its own, instead of a browser error page
    • addedWeb Push for the things that actually need you — VAPID keys, subscriptions and a sender land in the hub, and the needs-attention set is pushed with a deep link straight to the run or ticket, without double-notifying what you are already looking at
    • addedExternal agents can drive trau — the hub speaks MCP at /api/v1/mcp, so Claude Code, Codex or Cursor can file tickets, arm the queue, read the backlog and live runs, steer a running agent, and reach the destructive actions too: dequeue, shutdown, ticket edit and delete. Settings → External agents carries copy-paste setup for each client with the endpoint already resolved
    • addedTeam sync — an opt-in git-ref transport shares lessons, run history and skills across a team without a server. Teammates’ runs appear in the ledger with their cost, and a skills drift check in doctor and the web shows what your checkout is missing, with one-gesture install
    • addedVerify proves it with pictures — the verify phase captures browser-harness screenshots by default and persists them to the hub, the run page grows a proofs gallery, the delivered pull request embeds them from a trau-proofs orphan branch, and a condensed video renders on demand. Retention prunes local traces and that branch after N runs
    • addedThe interview dock — answer an interviewer question from any screen. A bottom-right dock lists every awaiting session on the machine with a count badge and a session switcher, replaces the old in-app toasts, keeps a page-aware tab when minimised, and drives from the keyboard behind a global i shortcut. Sessions retire themselves when their issue closes, and any ticket can be interviewed straight from the backlog drawer with an optional note on what to clarify
    • addedInterviews run on codex and kimi — a session carries its own provider, a codex adapter drives grilling through codex exec, and GRILL_PROVIDER sets the default for new ones
    • addedThe diff, properly — a GitHub-style file-tree sidebar with a filter, open-in-editor buttons for the repo root and every file, and a Transcript ↔ Diff toggle that shows the work taking shape while the agent is still running
    • addedRun one ticket now — a play button on a queue row or in the issue drawer runs that single item, enqueuing it first if it was not already there, without draining the rest of the queue
    • addedYour tracker shows what is planned — QUEUED_LABEL mirrors the hub queue onto the tracker, applied and removed across the queue lifecycle and reconciled against real queue membership on every sync
    • addedTEST_EFFORT (off / low / medium / high) constrains how many tests a run is asked to write, and Settings now warns out loud that BROWSER_VERIFY=never can ship broken UI
    • addedRepos with no origin remote just work — the loop skips push, pull request and CI and finishes on the local branch instead of failing at the first git push
    • addedThe hub upgrades itself — with HUB_SELF_RELOAD set, work trau develops on its own codebase rebuilds and reloads the hub gracefully once it lands on main
    • changedCrash-resilient orchestration — the queue reconciles on boot and settles parked items whose checkpoint proves the work already landed, and trau hub supervise hands the hub to launchd so a crashed or killed one comes back on its own
    • changedQueue guards that match what you meant — Start is refused when nothing is runnable, adding a child of an already-queued epic no longer duplicates the work, a running item can be removed from the queue without deleting its run, and Run next force-promotes a remaining item mid-drain
    • changedSkill delivery gets provider-aware defaults (codex and kimi inject, claude keeps its own loader), an optional SKILLS_MENU backstop naming the rest of the installed set, and live capture that snaps PTY-mangled skill names back to the real ones. Subagent spend is accounted for separately, and runs now forecast an approximate time left per stage
    • changedModel references move to Opus 5. The older Opus 4.x and Sonnet 4.6 rate rows stay, because they price calls already recorded in your ledger
    • fixedA queue-started ticket is no longer hijacked by a stale parked branch — resume refuses to adopt a branch whose pull request already merged, an explicit single-ticket run scans only that ticket, and the pause banner can no longer name a different ticket than the queue item it stopped on
    • fixedRe-attempting an epic finalize after its pull request already shipped adopts the merged PR instead of wedging the queue on GitHub’s “No commits between”
    • fixedJira onboarding’s Test connection no longer fails with an HTTP 400 unbounded-JQL error
    • fixedA running queue can be stopped again, the diff view renders correctly on repos where it looked scrambled, and a verify phase that synthesizes a failure verdict now emits an event saying so instead of failing silently
  17. v2.5.0

    Steer a running agent, and pick who drives.

    • addedSteer notes — type a prompt into any running agent mid-run without stopping it. Queue a note from the live agent view, the run detail page, or trau steer on the command line, and it is injected into the current phase; claude, codex, and kimi all drive interactively so the steer lands while the phase is still running
    • addedSkills v2 — the hub computes a per-run skill set from the phase plus the slice’s diff and ticket, with a never-empty fallback so no run is left skill-less. A rebuilt Skills page adds a per-skill scope editor and a per-phase plan preview, SKILLS_MODE=inject renders the resolved set straight into each phase prompt, and Skill usage is captured live from the session stream instead of guessed after the fact
    • addedPer-issue provider pin — choose which agent provider runs a ticket from the issue drawer, and epic slices without a pin inherit the epic’s provider
    • addedManual-merge mode — set AUTO_MERGE=0 and the loop waits for you to merge the pull request yourself: it polls the PR, marks the ticket Done on merge and quarantines it if the PR is closed, applies the same wait to epic release PRs, and surfaces live PR status as a badge on runs and backlog rows
    • changedEpic finalize is visible and safe — the loop page shows a “Finalizing epic” row while the drain child runs, finalize honors the tracker’s checkpoint-aware terminality, and a declined finalize pauses the queue item instead of faulting the run
    • changedThe backlog board shows a “Queued” badge on items that were queued and have already settled, plus layout polish that tightens the main container width and the elapsed-time display
    • fixedA hub or loop launched from inside a Claude Code session no longer leaks its session markers into the agents it spawns — those markers had made every claude child think it was a nested subagent and silently stop saving its transcript, blinding the activity view and breaking resume
  18. v2.4.0

    The loop tells the truth — and cleans up after itself.

    • addedAssign issues to teammates — the issue drawer grows an assignee picker, grill apply can set an assignee on the issues it creates, and a hub assign / assignable-users API backs both, reflecting who owns what straight from your tracker
    • addedQA accounts — trau can log in as a real user to verify work. The verify agent discovers a repo’s working credentials and the loop persists them; verify-time injection is observable as a log line and a run event; and repo Settings shows each account with masked secrets, notes, and a “Captured by agent” provenance badge
    • addedHard-delete an issue from the inbox — a Delete action on inbox conversations and the backlog drawer purges every local trace and leaves a tombstone, and also tears down the ticket’s git footprint: its feature branch, local and remote
    • addedChoose where grilling lands — the outcome review now lets you file a result to your external tracker or internally in the hub’s own issue store, with blocked-by relations preserved for internal issues
    • addedConfig experiment ledger — measure what a configuration change costs. Each phase records its effort, duration, and a routing-config fingerprint; a new panel compares cost and speed across config cohorts so you can see the before-and-after of a change
    • addedInterview prompts are now editable — they join the hub prompt catalog alongside every other phase prompt, tunable globally or per repo with one-click reset to default
    • changedTruthful PR bodies — the pull-request description is built from the run’s real results and is tracker-aware, instead of a templated guess about what happened
    • changedStopping a run is never a fault — a deliberate stop or takeover is classified as “stopped” and rendered honestly across the web and hub, and mutating run actions are held back while a takeover terminal owns the working tree. trau takeover resumes on the ticket’s recorded branch and says so; on hand-back you choose to re-run the interrupted phase or mark it done
    • changedGit hygiene around every interruption — a stop preserves and cleans the working tree, the next run sweeps orphaned work-in-progress left behind by a kill or crash, and the loop pauses cleanly instead of fighting when another worktree already holds the base branch
    • changedBrowser verification is enforced and accounted for — the verify verdict carries a browser field behind a deterministic gate, so “verified in the browser” has to be backed by an actual check
    • changeddoctor warns when a config layer masks a provider or routing key with a blank value, catching the empty-override that silently changes which model runs
    • fixedJira sync binding — repos on legacy configs bind correctly, a force resync recovers from a stale cached binding, and an empty Jira project key reports itself plainly instead of masquerading as a credentials error
    • fixedPasted interview images reach the agent as real attachments instead of a dead URL
    • fixedThe loop page keeps its historical pause banner after a healthy Resume, and the inbox pins an open interview conversation through re-sorts so it no longer jumps away mid-conversation
    • fixedAn agent quoting a login string no longer trips a false “authentication required” pause — auth walls are confirmed only after a quiet window
  19. v2.3.0

    Stop the loop in one gesture — and Jira finally does what it says.

    • addedLoop shutdown — one gesture stops the running session, empties the queue, and tears the loop down in a single atomic step. Supervisor stop escalates from SIGTERM to a process-group SIGKILL, a hub Queue.Clear + shutdown endpoint clears everything at once, and the web Loop card grows a Shut down control
    • addedPer-workspace config scoping for monorepos — each workspace can carry its own scoped configuration instead of sharing one repo-wide config
    • fixedCreating issues on Jira works for the first time — createmeta was decoded under the wrong JSON key, so every Jira create (grill Create, epic and split sub-issues, PRD publish, and FileBug) silently died on a fall-through error that blamed your project config, with FileBug swallowing it entirely
    • fixedJira issue descriptions render their markdown instead of shipping as flat, literal paragraphs
    • fixedOnboarding a new project against a Jira tracker now works end to end
  20. v2.2.0

    Show the agent what you mean.

    • addedIssue attachments & images — images and files on a ticket now travel the whole way: synced from Linear and Jira during ingestion, uploaded by paste, drop, or insert in trau-native editors, rendered inline on the issue, and materialized into runs and grill sessions so the agent sees exactly what you see
    • addedAttachment retention, quotas, and cleanup — the store keeps itself in budget instead of growing without bound
    • addedHub updates — trau notices when a newer release exists by comparing the running binary against what is on disk and against the latest GitHub release, and shows it as a version badge in the sidebar and an Updates section in Settings
    • addedOne-click update — apply a new version from the web UI, which runs brew upgrade --cask trau for you
    • addedHub restart from web or CLI — a POST /hub/restart endpoint and a trau hub restart verb, so a stuck hub no longer needs a manual kill
    • changedNew interview sessions no longer ask for a provider and model up front — they start on the configured default and stay switchable per conversation
  21. v2.1.0

    Take the wheel.

    • addedOpen in terminal — hand a running session to your own terminal. trau records each phase’s claude session id in the ticket checkpoint, stops the run and waits for the loop to release the working tree, then resumes that session in front of you; also available as trau takeover <ID>
    • addedConfigurable prompts — every phase prompt is now a named template you can edit from the hub, globally or per repo, with fail-closed validation and one-click reset to default
    • added⌘K command palette — Spotlight-style project switching and navigation, with recent locations, route-aware suggestions, and jump targets for active runs
    • addedHub-first startup — trau brings the web hub up before it resolves the repo, waits for it to be healthy, and fails loudly instead of running blind; hub status shows in the TUI header, W opens it, and doctor checks hub reachability and version
    • addedA markdown description editor for internal tickets in the Loop add-ticket modal
    • fixedan accepted Create outcome in the Inbox now confirms itself with a created-issue toast
    • fixedclicking a notification opens the Inbox of the active project instead of dropping the repo scope
    • fixedneeds-attention toasts grow to their title’s full width instead of truncating
  22. v2.0.0

    The hub becomes the product.

    • addedThe hub SQLite database — run history, repo registrations, and issues now live in a durable machine-local DB behind trau serve
    • addedAll projects scope — an all-repos view in the switcher, and the Overview rebuilt as a scope-aware repo board
    • addedInbox + Interview — question-at-a-time agent triage that turns raw ideas into ready tickets, with Drafts, Ask ahead, Start over, and per-conversation provider/model switching
    • addedOne Loop queue — backlog and queue screens fold into a single ordered queue with Run next, reorder, skip, and a ticket-level Loop timeline
    • addedRun ledger — every tracked run newest-first in needs-attention / active / stopped / merged buckets, with a redesigned live run view
    • addedBacklog board — epic → sub-issue nesting, Archive, read-only assignee filters (Me / Unassigned), in-queue indicators, and openable "Done today"
    • addedAtlas — agent-generated architecture Views per repo (Data model, App flows) with staleness detection and one-click regenerate
    • addedNotification center + needs-attention toasts
    • addedWeb onboarding wizard — Add a project: register a repo, wire the tracker, seed the board
    • addedSettings redesign — catalog-driven sections over the layered config, with explicit write targets
    • addedInternal issue store — author and run tickets on repos with no external tracker
    • addedMonorepo support — APP_URLS maps each workspace to its own URL; workspace-aware project detection; commits and PR titles conform to repo conventions
    • addedLight mode, dynamic titles, full-width layout, and web + CLI versions in the sidebar
    • addedDrain reports on pause or fault, on-fault skip policy, and queue dedup
    • changedrepo .trau.ini now overrides the home config (ADR 0016)
    • changedCodex provider defaults to GPT-5.6 Sol from a single model catalog
    • removedthe PRD planning module and New-issue authoring (web + CLI) — replaced by the Inbox
    • removedthe separate Run once and Queue web screens — folded into Loop
  23. v1.10.0

    Stuck tickets get handles.

    • addedstuck-ticket handling surfaced in the TUI, with resume from the web panel
  24. v1.9.4

    The hub starts itself.

    • addedthe web hub autostarts on the first TUI session
  25. v1.9.3

    Launch forms say which repo they'll hit.

    • addedlaunch forms show the scoped target repo
  26. v1.9.2

    The hub grows a backlog board and a queue.

    • addeda backlog board for the active repo, with issue creation and PRD publishing
    • addeda per-repo queue — register tickets and epics, drain with a start/pause control, outcome-based drain policy
    • addedredesigned repo switcher with icon rows; every screen scoped to one active repo
    • addedrepo (un)registration gated behind SERVE_ALLOW_REGISTER
    • addedcontextual y/Y copy keys across TUI logs, dashboard, and recap
  27. v1.9.1

    Picks get deterministic.

    • fixeddeterministic epic-scoped picks, tolerant pick parsing, unparseable picks surfaced
  28. v1.9.0

    The web hub adopts the trau.sh design language.

    • addedconfirm guards for stopping a run and starting the ready queue
    • addedevery TUI screen marked with the repo it drives (◆ repo)
    • changedweb UI restyled to the trau.sh design language, with CLI parity as the yardstick
  29. v1.8.1

    A branch-reuse fix.

    • fixedadopt only OPEN PRs when reusing a branch's PR
  30. v1.8.0

    Curated skills.

    • addedcurated skill installs and a post-build skill-usage warning
  31. v1.7.0

    WIP-friendly picks.

    • addedAUTO_STASH — stash WIP on a fresh pick instead of aborting, restore it at session end
    • addedonboarding auto-detects the CI merge gate from GitHub
    • fixedtickets deliberately reopened in the tracker get rebuilt
  32. v1.6.0

    trau serve: the hub is born.

    • addedtrau serve — an HTTP hub with an embedded web app
    • addedloop instances self-register in a machine-local registry; supervisor seam to start/stop loops from the API
    • addedlive PTY transcripts and repo events streamed over SSE
    • addedboard UI with a repos/runs checkpoint API; run detail with a per-phase token/cost table
    • addedcosts page with daily / per-repo / per-phase rollups; lessons memory browser; layered config viewer/editor
    • addedPRD drafting UI with Linear/Jira publish
    • addedbearer-token auth enforced on non-loopback binds
    • addedaway recap and browser notifications for lifecycle events
  33. v1.5.0

    No dead ends on the Plan screen.

    • addedcopy and publish feedback on the Plan screen
    • fixedan approved PRD resumes by retrying the publish
  34. v1.4.0

    Planning module: raw idea → interactive PRD → tracker issues.

    • addedthe planning module (Plan + Slice)
    • fixedrecover unmergeable PRs and branch children off a fresh epic
  35. v1.3.0

    Wrong-repo tickets get refused.

    • addeddoctor warns when PROJECT is unset on a multi-project team
    • addedthe pipeline refuses wrong-repository tickets at build time
    • fixedstale FAILURE_REASON cleared once a ticket succeeds; session summary scoped to this session's spend
  36. v1.2.0

    Copy from the log inspector.

    • addedcopy the selected run's log with y in the log inspector
    • fixednever rebuild an already-merged ticket after a bad pick
  37. v1.1.0

    Feed-first dashboard.

    • addedfeed-first TUI dashboard, full-width attach, wider peek, ctrl+t discoverability
  38. v1.0.0

    The first stable release — the TUI rebuilt from the ground up on Bubble Tea v2.

    • addedSpan-based pipeline pane — every phase is a live span with elapsed time, an inline log tail, and repair sub-spans nested under the phase that spawned them. (#76)
    • addedAttention-sorted queue rail — tickets that need a human (faulted, paused, quarantined) float to the top, each with its recovery verb ready. (#77)
    • addedCommand palette (ctrl+p or :) with fuzzy-matched actions and per-ticket verbs. (#75)
    • addedGlobal searchable help overlay on ? — every key on every screen, in one place. (#74)
    • addedVerbosity ladder — v cycles the main pane through spans / activity feed / raw output, and / filters it. (#78)
    • addedPeek and attach on queue rows — inspect any running ticket’s live output without leaving the dashboard. (#79)
    • addedMouse baseline — click targets across the TUI, a ctrl+t mouse-off toggle for native text selection, and y to copy via OSC52. (#80)
    • addedAmbient signals — terminal-title progress, opt-in desktop notifications (NOTIFY=1), and an away-recap of what happened while you were gone. (#81)
    • addedAdaptive semantic theming — THEME presets (catppuccin, dracula, gruvbox, nord) plus per-role THEME_<ROLE> hex overrides. (#70)
    • addedRicher run header — a CI-colored PR badge, ticket n/N progress, and a visible CI-poll wait. (#72)
    • changedThe whole TUI migrated to Bubble Tea v2 on a shared component kit, and the onboarding wizard was rebuilt on huh v2 forms. (#67, #71, #82)
    • changedTall card screens scroll instead of clipping. (#73)
    • fixedOne consistent esc/q/enter contract across screens, resize events routed to every screen, and the settings-card flicker gone. (#69, #68, #83)
  39. v0.20.1

    Fewer false alarms on long builds and strict hooks.

    • fixedDefault AGENT_TIMEOUT raised from 900s to 3600s — big build phases no longer look “stuck” and burn retries against a too-tight ceiling. (#64)
    • fixedA pre-push hook rejection (husky, PHPStan, Pest…) now routes to repair instead of faulting the session. (#65)
    • fixedRaw subprocess output is folded to one line before it reaches the feed and state file, so multi-line errors can’t break the layout. (#66)
  40. v0.20.0

    Claude 5 arrives in the picker.

    • addedThe claude provider picker now offers the Claude 5 family — Fable 5 and Sonnet 5 — alongside Opus, Sonnet, and Haiku, routable per phase like any other model. (#63)
  41. v0.19.0

    One less gate.

    • removedThe pre-flight ticket size judge is gone — its verdicts weren’t reliable enough to gate builds on. Cost anomalies are still flagged after the run. (#62)
  42. v0.18.2

    Jira tickets flow into the build.

    • addedREST-fetched ticket content (description, criteria, comments) is injected straight into the build and handoff prompts. (#61)
    • fixedThe onboarding labels step is tracker-aware instead of assuming Linear. (#60)
  43. v0.18.1

    Jira goes direct — a full REST adapter, no MCP required.

    • addedDirect Jira REST adapter: single-issue reads with an ADF-to-text walker, Pick / ListEligible / SubIssues via JQL search, and project listing. (#52, #53, #54, #57)
    • addedThe Jira write set — labels, comments, FileBug, and two-step status transitions with an ADF document builder. (#55, #56)
    • addedREST resilience: retry/backoff, token rotation, and MCP fallback when no token is configured. (#58)
    • addedActivity-feed agent rows relabeled with the model and elapsed time instead of a bare provider name. (#51)
    • fixedOnboarding detects Jira projects as the REST identity you entered, not whatever account MCP happens to be logged into. (#59)
  44. v0.18.0

    Cleaner diffs, cheaper mechanical phases.

    • addedA pre-verify cleanup stage strips AI-slop — unnecessary comments, dead code, over-defensive scaffolding — from the diff before verify grades it; tiny diffs skip it. (#43, #49)
    • addedLint autofix runs before verify — deterministic via LINT_FIX_CMD, or a cheap agent that detects the project’s fixers. (#41)
    • changedMechanical phases got cheap by default: cleanup, lintfix, commit, and handoff route to smaller Claude models, with trimmed prompts to cut output tokens. (#46, #47, #48)
    • addedBuild prompts steer agents toward human-like, comment-lean code in the first place. (#42)
    • addedPost-run cost-anomaly detection flags tickets whose spend didn’t match their size. (#50)
    • addedToggle the provider straight from the Run once screen, and codex/kimi output tees to a live file for the activity view. (#44, #38)
    • fixedA build that leaves the managed repo unchanged now faults instead of shipping a hollow handoff. (#39)
  45. v0.17.0

    Watch the agent work, live.

    • addedLive agent view — press w in the TUI to tail the running agent’s actual terminal, rendered through a virtual terminal. (#33, #35)
    • addedtrau watch — the headless counterpart, tailing a running loop’s agent activity from any shell. (#36)
    • addedAgent PTY geometry is sized and recorded (AGENT_COLS/AGENT_ROWS) so the live view reconstructs faithfully. (#37)
  46. v0.16.0

    Repos without PR CI stop getting quarantined for it.

    • addedREQUIRE_CI=0 opts a repo out of the CI merge gate, and onboarding auto-detects whether your workflows actually run on pull requests. (#32)
  47. v0.15.0

    Run artifacts move out of your way.

    • changedRun artifacts now live under .trau/runs (auto-gitignored); legacy runs/ directories migrate automatically on startup. (#29, #30)
    • addedDirectly-run children stack onto their parent epic’s branch, resolved deterministically by ID. (#31)
    • addedOpt-in, dev-flow-compatible time tracking — a per-ticket effort log written after merge (TIMELOG_ENABLED=1, off by default). (#27)
  48. v0.14.0

    Smarter picking on nested backlogs.

    • addedNested epics are skipped when picking buildable leaf issues.
    • fixedFalls back to MCP when the Linear API is not enabled.
  49. v0.13.0

    Epics finish themselves.

    • addedThe epic branch continuously syncs with main and auto-merges to main on green CI once its children land — drift conflicts get an agent resolution pass, gated by AUTO_MERGE. (#26)
    • fixedA provider auth/login wall now pauses the run blamelessly (“claude needs re-authentication”) instead of faulting the ticket. (#25)
  50. v0.12.0

    Epic preview, ordered and honest.

    • addedThe epic preview marks already-done sub-issues and sorts by run order. (#24)
  51. v0.11.1

    Config survives a failed ticket.

    • fixedQuarantine and fault-recovery no longer delete an untracked .trau.ini (or trau.ini / .trau/), so first-run onboarding doesn’t restart after a failed ticket.
  52. v0.11.0

    Epics, run logs, and resilient phases.

    • addedEpic finalization — epics are finalized automatically after their child issues close.
    • addedSaved run log inspector — browse past run logs from the TUI.
    • addedTransient-failure auto-recovery — agent steps retry and fall back to an alternate provider on transient errors. (#23)
    • changedUsage HUD wired to real provider rate-limit windows, so displayed usage reflects live limits. (#22)
  53. v0.10.0

    Runs scoped to your Linear project.

    • addedGuard runs by Linear project ownership — the loop only picks tickets from the project it owns. (#21)
  54. v0.9.0

    Checkpoint hygiene and resumable-ticket visibility.

    • addedClear and auto-reconcile stale local checkpoints from the CLI. (#19)
    • addedReconcile stale checkpoints on demand from the status screen. (#20)
    • addedSurface the resumable ticket by name in the menu and run screens. (#17)
    • fixedRetry transient gh operations and surface command stderr. (#18)
  55. v0.8.0

    Blameless fault recovery.

    • fixedRecover blamelessly from unexpected ticket errors — partial work is preserved and the ticket stays resumable. (#16)
  56. v0.7.0

    Durable lessons memory.

    • addedDurable lessons memory + repair-experiment ledger, so failed runs teach later runs. (#13)
    • fixedPropagate verify pause instead of cascading to quarantine. (#15)
  57. v0.6.0

    First-class acceptance rubric.

    • addedPer-ticket acceptance rubric artifact, graded by verify. (#12)
  58. v0.5.0

    The verify moat lands: cross-vendor panels, pluggable checks, and budget ceilings.

    • addedCross-vendor cold verify panel — verify as 2–3 fresh agents, optionally from different vendors, each grading the diff independently. Disagreement blocks the merge under a policy you set.
    • addedPluggable verify-check library — author named checks in .trau/checks with severity gating.
    • addedBudget ceilings — per-ticket and per-day caps that halt the run and quarantine the ticket on breach.
    • changedEpic descent across all run paths, with a deterministic Linear fast-path repair.
    • fixedRecover Kimi token usage and flag unmetered cost in the per-phase ledger.
  59. v0.4.1

    Reliability fix for interrupted phases.

    • fixedThe pipeline no longer advances the checkpoint when a phase times out or crashes without writing its result.
  60. v0.4.0

    Faster, deterministic Linear issue ops.

    • addedNative Linear API path for listing eligible issues and picking the next ticket — no LLM round-trip in the hot path.
  61. v0.3.0

    Troubleshooting UX.

    • addedtrau doctor, --verbose / --debug, and actionable error messages when setup or a run goes sideways.
  62. v0.2.0

    Per-provider execution tuning.

    • addedPer-provider execution-tuning settings, editable from the TUI.
  63. v0.1.0

    First public release of trau.

    • changeddocs(readme): trim to a bare-minimum quickstart.
  64. v0.1.0-rc.1

    PRERELEASE

    Initial public release candidate.

    • addedInitial public release.