You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[ATT-05] Add the web and desktop attention inbox #7
Provide one web/desktop attention inbox and global badge using shared aggregate
state. Reuse upstream sidebar, command registry and environment/thread routes.
Upstream v0.0.42 already has browser/Electron badges for pending background
notifications. Those clear on focus and are not an authoritative open-attention
count or inbox. Reuse the presentation infrastructure where appropriate, keep
the two meanings explicit, and never run a second competing notification sink.
Acceptance criteria
Badge counts unique actionable threads; inbox lists individual requests.
Show loading, partial, stale/disconnected and empty states honestly.
Filters cover environment/project/kind/severity with stable keyboard and
screen-reader navigation. Virtualize large lists; do not load thread history
just to render the inbox.
Clicking a row navigates to the owning environment/thread, including duplicate
thread IDs across environments and unavailable environments.
Sidebar and command-palette entry points reach the same inbox. Any registered
keybinding delegates to that command rather than implementing another path.
Seen/acknowledged is device-local emphasis, not server resolution. Answering
routes to existing approval/input commands; no synthetic "resolve" button.
Desktop reuses web UI; no duplicated inbox implementation in Electron.
Tests cover routing, counts, disconnected state, filters and realistic large
lists. An integrated client pass requires permission.
Coverage and non-goals
Web local/hosted and desktop, every connected environment and provider. Mobile
foreground presentation is MOB-01, not claimed by this web slice. No browser/OS
delivery, relay mutation, TWS grouping or tags in this issue.
The /attention inbox and persistent sidebar badge use the existing single
client-runtime attention workspace. The badge counts actionable threads; rows
represent individual requests/failures. Live/stale counts, incomplete totals,
unsupported/unauthorized environments and empty/filter-empty states are explicit.
Environment, scoped project, kind and severity filters preserve canonical
ordering. LegendList virtualizes rows, with scoped stable keys, keyboard
Up/Down/Home/End/Enter navigation and mounted active-descendant accessibility.
Only visible rows read shell titles; thread detail is loaded only after opening
the owning scoped route. Respond through the existing thread approval/input UI;
there is no synthetic resolve command or duplicate response interface.
Current and legacy sidebars, Settings and the command palette reach the same
route action. attention.open is configurable through existing Keybindings
Settings with no default shortcut. Desktop reuses web UI; mobile UI remains #15.
Seen/unseen is device-local revision-based emphasis, capped at 2000 recent
marks. Opening marks seen, Mark unseen reverses it, and a changed revision is
unseen again. Counts do not change. Cleanup requires a complete live snapshot
or previously observed environment removal; an initially empty catalog during
startup is not evidence that persisted marks should be erased.
Evidence
192 tests passed across six focused inbox/palette/keybinding/notification-badge
files, including a 5000-item scope/count case and cold-catalog seen regression.
Web, contracts, server and mobile typechecks passed; new-code lint passed.
Pre-existing effect warnings in large integration components were unchanged.
Production web build passed; existing chunk-size/plugin timing warnings remain.
Approved integrated browser pass against a disposable server:
2402 items / 1200 threads, 14 rendered attention rows, exactly one attention.subscribe, no thread-detail subscription before navigation.
Real keyboard endpoints, scoped navigation, all four filters, reversible seen
marks, persistence after reload, current/legacy/Settings/palette/custom-binding
entry points, offline stale badge, reconnect and narrow layout passed.
The pass found and fixed a real reload race in seen cleanup. Earlier fixture
setup needed required model metadata; this was fixture-only. An unrelated
provider-update toast was dismissed, not treated as an inbox defect.
Six maintained tpatch roots verify; the DAG has zero violations.
The approved separate attention-inbox root retains its complete 16-path intent
from c87189e978856b8fd6043f42e296d2cf312cb6cc, with Foundation as hard parent
and session search as soft ordering. Parent canonical patches were not rewritten:
new documentation was moved outside their replay anchors so both still verify.
No OS notification coordination, relay mutation, native provider turn, live
database access, branch push or PR. The disposable browser and dev stack were
stopped; screenshots and sanitized traffic evidence remain session-local.
The prior packaged qualification still applies only to its frozen product SHA.
#8 is ready for canonical attention notification policy using the existing
notification coordinator; #9, #11 and #15 remain unblocked but queued.
Implemented with GPT-6 Astra through GitHub Copilot CLI; no delegated inference.
Activity
jdbencardinop commentedon Sep 29, 2026
ATT-05 completed locally
Implemented on
phase2/attention-inbox:baf051d9690fc377e641cbbe82cfbd25b12049b6.76ef157f4a18b4288665b98f4e43c4c9afa175df.33470ce56485904bc4c42b1ee73f17e7fcd05de4.d7d039d261191ecb035f2f0582d6dc4cdffe4422.Delivered behavior
The
/attentioninbox and persistent sidebar badge use the existing singleclient-runtime attention workspace. The badge counts actionable threads; rows
represent individual requests/failures. Live/stale counts, incomplete totals,
unsupported/unauthorized environments and empty/filter-empty states are explicit.
Environment, scoped project, kind and severity filters preserve canonical
ordering. LegendList virtualizes rows, with scoped stable keys, keyboard
Up/Down/Home/End/Enter navigation and mounted active-descendant accessibility.
Only visible rows read shell titles; thread detail is loaded only after opening
the owning scoped route. Respond through the existing thread approval/input UI;
there is no synthetic resolve command or duplicate response interface.
Current and legacy sidebars, Settings and the command palette reach the same
route action.
attention.openis configurable through existing KeybindingsSettings with no default shortcut. Desktop reuses web UI; mobile UI remains #15.
Seen/unseen is device-local revision-based emphasis, capped at 2000 recent
marks. Opening marks seen, Mark unseen reverses it, and a changed revision is
unseen again. Counts do not change. Cleanup requires a complete live snapshot
or previously observed environment removal; an initially empty catalog during
startup is not evidence that persisted marks should be erased.
Evidence
files, including a 5000-item scope/count case and cold-catalog seen regression.
Pre-existing effect warnings in large integration components were unchanged.
2402 items / 1200 threads, 14 rendered attention rows, exactly one
attention.subscribe, no thread-detail subscription before navigation.marks, persistence after reload, current/legacy/Settings/palette/custom-binding
entry points, offline stale badge, reconnect and narrow layout passed.
setup needed required model metadata; this was fixture-only. An unrelated
provider-update toast was dismissed, not treated as an inbox defect.
The approved separate
attention-inboxroot retains its complete 16-path intentfrom
c87189e978856b8fd6043f42e296d2cf312cb6cc, with Foundation as hard parentand session search as soft ordering. Parent canonical patches were not rewritten:
new documentation was moved outside their replay anchors so both still verify.
No OS notification coordination, relay mutation, native provider turn, live
database access, branch push or PR. The disposable browser and dev stack were
stopped; screenshots and sanitized traffic evidence remain session-local.
The prior packaged qualification still applies only to its frozen product SHA.
#8 is ready for canonical attention notification policy using the existing
notification coordinator; #9, #11 and #15 remain unblocked but queued.
Implemented with GPT-6 Astra through GitHub Copilot CLI; no delegated inference.