Skip to content

v2.23.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 11:50
· 277 commits to main since this release
bfec315

Changelog

Features

  • 54eba3f: feat: /terminal worktree selector, per-ticket phase list, and per-session live (#872) (@RomkaLTU)
  • d13bf5e: feat: QA Reject: notes drive a bounded auto fix round back to the gate (#850) (@RomkaLTU)
  • 4b1af95: feat: QA gate: awaiting-QA hold before merge, with Approve (#849) (@RomkaLTU)
  • a4af1fd: feat: UI-pick regenerate round: "none of these" with notes drives a bounded (#858) (@RomkaLTU)
  • 70a709d: feat: UIDOTSH_TOKEN secret setting and ui.sh API client with a hub list (#853) (@RomkaLTU)
  • 7803f8d: feat: WORKTREES=1: runs provision, use, and settle a per-ticket worktree (#843) (@RomkaLTU)
  • 8491ebc: feat: auto-detect code on paste in editors and round-answer textareas (#864) (@RomkaLTU)
  • c9b24c4: feat: auto-resolve generated internal/webserver/dist/** merge conflicts by (#880) (@RomkaLTU)
  • 916497e: feat: carry ticket identity through transcript storage, API, and the run page (#871) (@RomkaLTU)
  • adb45c4: feat: chat transcript: render fenced code blocks in bubbles, collapse long (#861) (@RomkaLTU)
  • e111c2e: feat: done-report document polish: text-xl title and a text-base reading scale (#866) (@RomkaLTU)
  • 0eace44: feat: editor: code-block toolbar toggle + in-editor syntax highlighting (#863) (@RomkaLTU)
  • 489ba80: feat: epics take one lane: children share the epic worktree, Releasing holds (#846) (@RomkaLTU)
  • 78b96c0: feat: force resync on an internal-provider repo drops the stale synced mirror (#825) (@RomkaLTU)
  • 496472f: feat: global focus visibility: :focus-visible base rule, skip-to-content link, (#828) (@RomkaLTU)
  • 2dbc39a: feat: global shortcut layer: "g then key" page jumps and a "?" shortcuts help (#831) (@RomkaLTU)
  • e399b80: feat: grill thread layout and plan-approval interaction polish (#870) (@RomkaLTU)
  • b0acc29: feat: inbox review stage: single-scroll document layout, no inner scrolls or (#874) (@RomkaLTU)
  • a9fea8f: feat: inbox: unify j/k selection with real DOM focus and scroll-follow (#834) (@RomkaLTU)
  • 7b637ec: feat: issue drawer Run gate is not lane-aware: any live loop disables Run even (#852) (@RomkaLTU)
  • f07e2ff: feat: live verification: switch save24 from Jira to internal end-to-end (#827) (@RomkaLTU)
  • 8098551: feat: loop screen: keyboard-first queue rows (select, reorder, run) and drawer (#833) (@RomkaLTU)
  • 465872f: feat: make every tablist, radiogroup, and switch keyboard-complete (#836) (@RomkaLTU)
  • 3d1b34f: feat: merge-sync gives up when the base moves during the conflict-resolve (#882) (@RomkaLTU)
  • 14e2f8d: feat: merge-sync reports success when the resolver agent destroys the merge (#881) (@RomkaLTU)
  • 6464405: feat: mid-run "awaiting UI pick" gate: park with the picker app served, resume (#857) (@RomkaLTU)
  • b1778d1: feat: new research start screen polish (#869) (@RomkaLTU)
  • 3332b5e: feat: parallel queue drain: up to WORKTREE_PARALLEL lanes per repo (#845) (@RomkaLTU)
  • f4f2591: feat: parallel worktree lanes: hub-spawned epic runs hijack live lanes' (#879) (@RomkaLTU)
  • cb75260: feat: per-worktree app serving: APP_START_CMD, port allocation, URL into (#847) (@RomkaLTU)
  • 4f443ea: feat: pipeline can run a ticket in an externally-given worktree (--worktree) (#842) (@RomkaLTU)
  • 8d28c13: feat: project settings: dedicated 'Switch to internal tracker' action (#824) (@RomkaLTU)
  • 22131b9: feat: queue target validation: reject external ids that no reader can resolve (#826) (@RomkaLTU)
  • 17ed24f: feat: render markdown in grill chat bubbles (all grill surfaces) and normalize (#865) (@RomkaLTU)
  • 240af09: feat: repo settings: confirmation dialog with synced-issue count before (#822) (@RomkaLTU)
  • e0fa952: feat: repo skills fail to load in worktree runs — mirror .claude/skills into (#875) (@RomkaLTU)
  • 9c3b4a4: feat: reports rail and session header polish on the Research page (#868) (@RomkaLTU)
  • d80674d: feat: research report: one-click "Draft an issue" action that opens a seeded (#838) (@RomkaLTU)
  • 1dbbd86: feat: route licensed user-scope skills through skills-rules, honoring rule (#856) (@RomkaLTU)
  • 62b054a: feat: run diff pane shows no live changes for worktree runs — compute the diff (#877) (@RomkaLTU)
  • b9a5ea3: feat: run now opens the full run-steps dialog instead of a bare confirm (#883) (@RomkaLTU)
  • feeb8c1: feat: run options disclosure: button-like trigger, separated from the action (#876) (@RomkaLTU)
  • e896c92: feat: running loop view: remaining rows need a lane-aware "Run now", promote (#851) (@RomkaLTU)
  • df94a22: feat: runs ledger: j/k and arrow-key row traversal (#835) (@RomkaLTU)
  • 5a2c5ab: feat: second opinion drafts: challengers propose alternative outcomes, (#839) (@RomkaLTU)
  • 6b25920: feat: server-side switch-to-internal hook: guarded mirror drop + issue_seq (#821) (@RomkaLTU)
  • 92907dc: feat: shared row-navigation primitive + keyboard-first Backlog rows (with (#832) (@RomkaLTU)
  • ce8d884: feat: sidebar: single Tab stop, arrow-key roving, aria-current, landmark label (#829) (@RomkaLTU)
  • 0475fa4: feat: skills page: browse, install, update, and remove ui.sh skills in user (#854) (@RomkaLTU)
  • b5a4e31: feat: syntax-highlighted code blocks with copy button in markdown views (#860) (@RomkaLTU)
  • 19d88fe: feat: timeline treats awaiting-qa / awaiting-pick as settled while the queue (#884) (@RomkaLTU)
  • dc21639: feat: worktree app controls and logs in the web UI (#848) (@RomkaLTU)
  • 817d9ea: feat: worktree lanes: a fresh ticket's phase agents spawn in the registered (#859) (@RomkaLTU)
  • 78fe59c: feat: worktree-aware babysitter prompt: inject worktree-mode guidance when the (#878) (@RomkaLTU)

Bug fixes

Others