Skip to content

v1.22.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 00:21
· 347 commits to main since this release

Changed

  • Stream parsing retains only text-bearing fields for deferred classification,
    reducing allocations for metadata-heavy output without changing text or usage.

Fixed

  • Empty SUBJECT: and PATH: fields no longer consume the following output
    line as a commit subject or file note.
  • Run-end summaries report the loops the run completed instead of always zero.
  • Agent configuration rejects case-variant duplicate fields, including nested
    usage fields, instead of silently letting JSON key order override settings.
  • Release concurrency is scoped per tag so unrelated tag pushes cannot cancel
    queued releases. Runs for the same tag remain serialized.
  • Launcher help exposes the focused control's full name, state, value, and
    description in scrollable text when terminal panes clip them.
  • Stream lines, prompt descriptions, and PR summaries truncate at whole grapheme
    boundaries within their rune budgets, preserving combining accents and flags.
  • Changelog validation accepts SemVer prerelease and build-metadata headings,
    so the release checks no longer block release candidates before publication.
    Versions sort by SemVer precedence, and negative version components are refused.
  • Narrow launcher panes retain concurrency and selected option values instead
    of hiding them. Panel titles stay within their assigned width so long titles
    cannot push adjacent panels past the terminal edge.
  • Deterministic-simulation guidance preserves cryptographic randomness in
    production and confines seeded substitutes to tests or simulation mode.
  • Launcher help calls the existing state-summary helper instead of an undefined
    method, restoring compilation.
  • Directory lock files keep their inode after release, preventing overlapping
    starts from acquiring separate locks for the same tree. Release clears the
    holder note instead of removing the file.
  • Reported subjects and file notes truncate at whole grapheme boundaries within
    their rune limits, preserving combining accents, flags, and variation selectors.
  • Release tags with a prerelease suffix are published as GitHub prereleases,
    including when retrying a draft, so stable installs and self-updates do not
    select release candidates. Build metadata alone does not mark a prerelease.
  • Run summaries retain interrupted review counts, including summaries rebuilt
    from journal events, instead of dropping that outcome from the status totals.
  • Build recipes pin GOAMD64=v1 and GOARM64=v8.0, preventing ambient CPU
    settings from producing binaries that require newer processors.
  • Recovered run listings retain the original start time when hot reload or
    multiple directories produce repeated run-start events.
  • Persistent review lanes discard staged and unstaged edits when advancing,
    so failed attempts cannot carry tracked changes into the next review.
  • Stream parsing no longer treats tool-payload and user-turn text as assistant
    output, so report lines and usage inside a tool result cannot replace the
    run's own subject, file notes, or counters.
  • Version output exits with a failure and reports errors on stderr when stdout
    or the --log destination cannot be written.
  • Output rate limiting starts its first window at the first line, including
    when an injected clock starts near zero time.
  • Failed attempts stop retrying or falling back to another agent once the
    runtime budget is exhausted, including when it expires during backoff.
  • Seeded review schedules retain their logical loop number after hot reload,
    so subsequent shuffles and --max-reviews selections match uninterrupted runs.
  • Hot reload counts a sequential loop completed during its final review, so
    the successor does not repeat finished work or exceed --max-loops.
  • --show-prompt exits with a failure and reports output errors on stderr
    when the prompt cannot be written, including partial output.
  • Build and test recipes export GOWORK=off, so a go.work above the
    checkout can no longer add workspace modules or replace directives to the
    build; the dependency set is go.mod's and go.sum's alone.
  • Clearing a kept review search in the launcher moves the selection onto the
    first visible review instead of leaving it stranded off the restored list.
  • --log tightens a pre-existing log file to owner-only permissions before
    writing, instead of leaving permissions from an earlier looser creation.
  • make fmt handles Go formatter paths containing spaces, matching make check.
  • Commit steps retain their five-minute timeout when --timeout 0 leaves
    reviews unlimited, rather than allowing a stalled commit to block the run.
  • Custom agent files reject duplicate agent names and configuration keys instead
    of silently replacing earlier values.
  • Recovered run listings count completed loops across directories and hot reloads,
    without counting an interrupted loop as finished.
  • Git status parsing preserves Unicode whitespace in filenames instead of
    stripping it and reporting a different path.
  • The completed dashboard freezes elapsed time, budget consumption, and activity
    history while it remains open for inspection.
  • Dashboard throughput sums lanes in stable order so replayed usage events
    produce identical rates, counting repeated configured lanes only once.
  • Usage probes kill remaining process-group members on every exit, preventing
    background helpers from accumulating between reviews.
  • The help overlays on the dashboard and launcher scroll when the terminal is
    too short for them, so every instruction stays reachable by keyboard, and
    wrap long lines instead of clipping them at the pane edge.
  • Suggestion parsing rejects malformed names instead of scheduling a review
    whose name matches only a prefix of the response.
  • runs exits with a failure and reports output errors on stderr when its
    listing cannot be written, including empty history and partial output.
  • Release builds stop when any binary's module inventory cannot be read,
    instead of reporting success with an incomplete sbom.txt.
  • Database checks use saved query plans instead of connecting to existing
    databases or executing statements through EXPLAIN ANALYZE.
  • URL credential redaction handles apostrophes and embedded @ characters
    without mistaking query or fragment text for credentials.
  • Token usage parsing ignores fractional and exponential counts instead of
    recording their leading digits as whole-token counts.
  • Custom agent files reject a top-level null instead of silently starting
    with built-in definitions; use {} for an empty configuration.
  • The launcher no longer blocks stacked PRs on a dirty checkout because of a
    saved concurrency setting that stack mode ignores. Leaving stack mode restores
    the setting and its clean-tree requirement.
  • make vuln scans the selected build tags, including the sqlite driver in
    the default CI scan, instead of silently scanning only the untagged build.
  • Custom agent files report validation errors in name order, so identical
    definitions produce the same startup diagnostic across runs.
  • Timeout and cancellation kill remaining subprocess-group members even when
    the leader exits before children that ignore SIGTERM.
  • show exits with a failure when replay output cannot be written, rather
    than reporting success for a partial or missing replay.
  • Prompt discovery excludes --prompt-dir when a symlink gives the same
    directory a different path, including macOS /var and /private/var aliases.
  • Recovering the run index no longer appends a reconstructed row for a run
    that already Closed: when runs close out of start order (a long run still
    going when a short later one finishes), the duplicate row could replace the
    completed summary in runs listings, losing args, exit code, and measured
    elapsed.
  • In-place retries and agent fallback stop when the starting tree could not
    be snapshotted, preventing repeated writes on top of a failed attempt.
  • Releases reject whitespace-only and heading-only changelog sections instead
    of publishing without release notes.
  • The launcher preserves all explicitly selected reviews when suggestions are
    enabled, instead of silently running only the suggested subset.
  • make check analyzes all three shipped build modes even when TAGS is
    overridden, keeping local checks aligned with CI.
  • show preserves exact JSON numbers, including 64-bit RNG seeds, so a
    seed copied from a recorded run replays the original schedule.
  • A resumed run whose handoff was written before the wall clock was set
    back no longer resumes in the future with extra runtime.