Skip to content

feat: overlay sniff, quota pause, inbox digits, and issue worktrees - #142

Merged
cmj0121 merged 12 commits into
mainfrom
feat/overlay-quota-worktree
Oct 12, 2026
Merged

cmj0121 merged 12 commits into
mainfrom
feat/overlay-quota-worktree

Conversation

@cmj0121

@cmj0121 cmj0121 commented Oct 12, 2026

Copy link
Copy Markdown
Owner

Why

Five gaps that show up in a real fleet, each small enough to land together:

  • A permission overlay missed on the quiet tick becomes stuck, and the inbox cannot answer it without typing.
  • AutoChain treated a pull request's own number as the issue it closes.
  • A vendor that is out of quota still drains the queue and still spawns.
  • An issue card cannot open the worktree it will be built on, or bind that tree.

What

  • On the tick that would promote a panel to stuck, the shared permission-overlay matcher is read once. A match stays attention. A bare ? still loses to the timer. Already stuck is not re-read. resolve suppresses the same screen.
  • AutoChain is bind, then Closes[0], then the branch number. A pull request with no Closes does not chain to its own number.
  • usage.pause-below is a remaining fraction in (0, 1]. 0 is off. Claude pauses on the minimum of its 5h and 7d. Grok pauses only on its own 7d reading. A held agent is skipped and does not spawn a replacement; another vendor still drains and still spawns. Human create, a conductor spawn, and a turn already in flight keep going. The line reloads with the queue caps.
  • Inbox 1 / 2 / 3 sends that digit and a newline when the row is attention, has no declared reason, and the cached tail is the overlay. Otherwise it does not send.
  • Issue detail w asks for a branch, prefilled feat/<number>, and sends a targetless worktree-add with the fleet default agent and that issue. After the agent starts, the new tree is bound. No GitHub remote skips the bind and keeps the tree. The board's w does not open the prompt. T is unchanged.

Not in this change

Phrase-table growth, a hard token stop, Codex or Gemini usage readers, conductor fences, and a version bump.

The tick that would move a panel to stuck reads the existing overlay
phrases once more. A match stays or becomes attention. A trailing
question mark is still a guess and still loses. A panel already stuck
is not reopened, and a resolve still suppresses the re-read.
…oes not

The promotion tick reads the shared overlay matcher. A trailing question
mark still settles to stuck, a resolve suppresses the re-read, and a
panel that is already stuck stays stuck.
AutoChain stops after Closes. A pull request that names no issue falls
through to the branch number, so PR #130 cannot take the place of issue
130. Which column a card sits in is still Classify.
A branch with no issue digits and a pull request that closes nothing
chains to zero. feat/127-docs still chains to 127 when that pull request
is open.
usage.pause-below is a remaining fraction in (0, 1]. Zero and anything
outside that range stay off, so an existing fleet does not change. Claude
pauses on the minimum of its 5h and 7d readings. Grok pauses only on the
7d window of its own reading. A held standing agent is skipped, and a
held spawn stays queued; another vendor still drains and still spawns.
Human panel.create, a conductor spawn, and a turn already in flight are
not pulled back. The line reloads with the queue caps.
Claude holds on the tighter of 5h and 7d, and a window that lands exactly
on the line still drains. Opus and sonnet ceilings, a spend window, and
another vendor's 7d figure do not pause. A held spawn does not start, a
different vendor still does, and a turn already in flight is left alone.
The digit and a newline go to the panel, and the row clears on the same
ack path as a typed reply. It fires only for an attention row with no
declared reason whose cached tail is the shared permission overlay. A
stuck row, a declared reason, a question mark, and an empty tail stay.
A tail that has not arrived yet is not guessed. Digits typed into the
composer stay text. The verb line names 1/2/3 and still wraps so esc
remains visible.
A matching attention tail sends the digit and a newline and acknowledges
the row. Stuck, a declared reason, a question mark, and an empty tail do
not. A tail that is not loaded yet says so. A digit in the composer stays
text. The legend names 1/2/3 in English and zh-TW.
w on an issue card asks for a branch, prefilled feat/<number>, and sends
the targetless worktree-add with the fleet default agent and that issue.
The board's w does not. An empty name reopens the field, and the overlay
stays open. After the agent starts, the daemon binds the new tree to the
issue. No GitHub remote skips the bind and keeps the tree. The detail
legend names w and still shows dispatch and esc.
The board's w does not open the field. The detail card prefills
feat/<number>, sends a targetless worktree-add for the fleet default,
and stays on the card. An empty name reopens the field. A missing
working directory does not ask. The bind keys the new tree, skips a
repo with no GitHub remote, and never calls gh.
A permission overlay on the promotion tick stays attention; a question
mark still loses to stuck, and resolve suppresses the re-read. Inbox
1/2/3 answers that overlay. usage.pause-below pauses one vendor's queue
and reloads; the other usage settings still need a restart. Issue
detail w opens a worktree and binds it.
The verb line now names the permission-overlay answer. The frame is
the record of that legend.
@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 91.49798% with 21 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.39%. Comparing base (eadcb8f) to head (e33bcea).

Files with missing lines Patch % Lines
internal/tui/issueboard.go 75.00% 6 Missing and 3 partials ⚠️
internal/server/quota.go 92.22% 5 Missing and 2 partials ⚠️
internal/tui/inbox.go 80.00% 3 Missing and 2 partials ⚠️
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #142      +/-   ##
==========================================
+ Coverage   88.36%   88.39%   +0.02%     
==========================================
  Files         149      151       +2     
  Lines       23266    23462     +196     
==========================================
+ Hits        20559    20739     +180     
- Misses       1913     1926      +13     
- Partials      794      797       +3     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@cmj0121
cmj0121 merged commit 7f53a27 into main Oct 12, 2026
2 checks passed
@cmj0121
cmj0121 deleted the feat/overlay-quota-worktree branch October 12, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants