Skip to content

v0.81.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 10:06
· 8 commits to main since this release

Added

  • On-demand MR rework past the automatic cap, with optional guidance (#1202).
    An owner can start one rework cycle on a completed run whose MR is open even after the automatic cap, from the run page's Rework now control, uzi run rework <run-id> [-m <guidance>], or POST /api/runs/{id}/rework. It bypasses the cap, debounce, staleness and green-pipeline gates while keeping the branch, one-active-rework, kill-switch, token and open-MR guards. The cycle never counts against the automatic cap and atomically advances the consumed high-water so the watcher does not repeat those comments. The cap halt comment and notification now point at this action.

  • The Judge page's group expander now shows the newest occurrence's full rationale, and gains a select-all checkbox (#1183, #1211).
    Expanding a group fetches and renders the newest open occurrence's complete rationale above its occurrence list, in place of the clamped preview shown before you expand; a "Select all N shown" checkbox above the group list ticks every group currently on screen, for a bulk Mark done or Dismiss in one pass.

  • uzi findings stats and uzi findings undo <id> join the findings CLI, and list/review backlog catch up on rendering (#1183, #1212).
    uzi findings stats prints your Findings triage totals across every repo you own (or one, narrowed with --repo), the same number the web nav badge and tabs show; uzi findings undo <id> reverses a dismissal, keyed on the coordinate's disposition_id, which only --json surfaces (the human list view still prints the finding_id that file/dismiss use); uzi findings list --bucket now also accepts done, and a dismissed row prints its reason while a done row prints "Done via #N"; uzi review backlog's group line now reads "N open of M runs" (or "M runs, all settled") in place of a flat seen-in-N-runs count.

Changed

  • Judge and the run page's judge panel now share one triage row and one vocabulary (#1183, #1211).
    Every open recommendation, on /judge and on the run page, now shows File issue · Mark done · Dismiss ▾ at equal weight in one row, replacing the run page's lone File issue button on its own line and /judge's per-run File issue buried inside the occurrence expander; the open state reads "To triage" everywhere it appears, the tab, the chip, the strip, and the status line, and a filed recommendation reads "Filed #N" in the same slot. On /judge, File issue no longer needs the expander open, it drafts straight from the group's newest open occurrence, the most recently judged run still open, tracked by a new judged_at field on the judge backlog occurrence API, while the group's other open runs stay open until you mark the whole group done.
  • The Findings backlog now matches Judge's triage page, including a filed finding turning Done when its issue closes on the forge (#1183, #1212).
    Findings gains five counted tabs (To triage, Filed, Done, Dismissed, and a returning All), each coordinate can show its evidence and the runs it was seen in behind a row expander, a Dismiss ▾ menu offers Won't do and Not an issue with multi-select bulk dismiss and Undo from a toast, and once the issue you filed from a finding is closed on the forge uzi marks it Done by itself (labelled "Done via #N"), reopening it if the same bug reappears in a later run.
  • Appearance and Demo mode moved to their own Settings › Appearance tab (#1208).
    The theme / mode / typeface controls and the per-device Demo mode toggle now live on a dedicated Appearance tab, second after Account & tokens, instead of as cards buried inside the Account & tokens tab. The controls behave exactly as before (only their home changed), and Account & tokens no longer lists appearance in its description.
  • The board search and toolbar are left-anchored on their own row (#1208).
    On a wide viewport the board's search and controls no longer fling to the far-right edge with a dead gap after the title: they render as their own full-width row beneath the board title, left-aligned at every width, so search stays top-left and a wide window matches the normal-width layout. Sticky positioning, the /-to-focus shortcut, and Esc-to-clear are unchanged.
  • Boards open with empty columns hidden by default (#1208).
    The Hide empty toggle now defaults on, so a board you have never configured opens without its empty label lanes. The choice is still remembered per board, so a board you explicitly set to show empty columns keeps showing them.
  • A worker follows a symlinked root instruction file in a cloned repo safely, and reads an untracked one (#1219).
    The agent now loads a repo's root instruction file (CLAUDE.md / AGENTS.md) when it is a symlink, but only when the link resolves to a regular file inside the repo and outside .git; unsafe, broken, looping, escaping, non-file, and .git-targeting symlinks are ignored. An untracked or generated root instruction file is now picked up too, so the file is read before dependency install as before.

Fixed

  • Resumed and recovering runs keep their approved plan and survive an empty SDK turn instead of failing terminally (#1197, #1213).
    Autopilot now persists the approved plan before implementation, so a run resumed on another worker uses that plan rather than silently re-planning; it retries a positively empty SDK turn with bounded, budget-accounted backoff rather than failing the run, while still honoring real timeout, pause and cancellation outcomes; and it adds an automatic recovery_wait with server-owned capped backoff that requires a verified local checkpoint before a promotable park, so a failed capture retains and retries its source clone instead of reseeding destructively. Duplicate claims serialize through cleanup, and park/cancellation reports retry instead of abandoning a live claim.
  • The sweeper logs a pass that only promotes a run out of limit_wait or recovery_wait (#1218).
    A tick whose only effect was releasing a rate-limit-held or recovery-held run left no log line, resuming the run invisibly; both promotions now count toward the "pass did something" total, so the sweeper pass line reports them.