Skip to content

feat(aggregator): command palette + keyboard-first triage (⌘K search/actions; j/k navigation; one-key snooze/escalate/dispatch on Needs-you) #1275

Closed

Description

@dezren39

Part of epic #1184 (PM stack coherence — wave 2, 2026-10-26).

The aggregator is mouse/tap-first today: every triage action means opening the card, reading it, and acting through the comment/orchestrator path one item at a time. Drew works the Needs-you queue daily, mostly from the desktop between other work, and the queue can hold dozens of items after a busy night. A command palette (⌘K) over the same canonical item projection the pages render — search items, jump to any page, run mediated actions — plus keyboard navigation (j/k) and one-key actions (snooze, escalate, dispatch) on Needs-you gives the desktop a power path that complements the mobile review flow instead of duplicating it. All actions go through the same mediated, audited path as dashboard clicks (orchestrator as single writer); the palette is a new front end on that path, never a bypass, and every action is also exposed on its item's JSON twin surface so agents can drive the same flow.

Acceptance:

  • ⌘K opens a palette that searches the canonical projection (issues, epics, sessions, services) and jumps to any aggregator page or item in ≤3 keystrokes.
  • On /attention, j/k moves between items and single keys perform snooze, escalate, and dispatch via the existing mediated action path, each leaving the same audit entry a click would.
  • Palette and keyboard actions work entirely over the machine-first data already served (no second data path), and are covered by render/route tests.
  • Mobile/touch behaviour is unchanged; keyboard affordances are discoverable (a visible ? or footer hint listing the keys).

Acceptance criteria

  • ⌘K opens a palette that searches the canonical projection (issues, epics, sessions, services) and jumps to any aggregator page or item in ≤3 keystrokes.
  • On /attention, j/k moves between items and single keys perform snooze, escalate, and dispatch via the existing mediated action path, each leaving the same audit entry a click would.
  • Palette and keyboard actions work entirely over the machine-first data already served (no second data path), and are covered by render/route tests.
  • Mobile/touch behaviour is unchanged; keyboard affordances are discoverable (a visible ? or footer hint listing the keys).

Activity

  1. added
    kind/featureNew feature or capability request
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. added
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 28, 2026
  4. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    Intake review

    Fleet-monitor intake pass (protocol §5), 2026-10-28. Still live: no merged or open PR references this issue (checked 2026-10-28T01:47Z); nothing has implemented it yet.

    Related: part of epic #1184 (PM stack coherence, wave 2); sibling #1277 (bulk triage) builds on the same mediated action path — if both are worked, the palette's one-key actions and bulk actions should share one mediated implementation.

    Notes / risks: the body's Acceptance list was already complete; the appended section restates it in criteria form. The standing risk is a second, unaudited action path sneaking in through the palette; the criteria pin every keyboard action to the same audit entry a click leaves. Priority normal, effort/m.

    Suggested approach: palette search over the existing canonical projection first, then j/k + one-key actions on /attention wired to the existing mediated endpoints, with render/route tests covering both.

  5. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Nov 1, 2026
  6. 30 remaining items

  7. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

    • Agent: queue worker (repo-worker-code), lane C
    • Session / ID: task 4980
    • Found via: queue claim
    • Task: Implement the Cmd+K command palette + keyboard-first triage on /attention per the task 4980 packet.
    • Revalidation correction: previous claims parked task 4980 because feat(aggregator): command palette + keyboard-first triage (⌘K search/actions; j/k navigation; one-key snooze/escalate/dispatch on Needs-you) #1275 is assigned to dezren39. Fresh timeline check shows that assignment was made by github-actions[bot] 6s after issue creation (auto-assignment at intake), there is no user/owned/held/do-not-* label, no open implementation PR, and no Drew-authored work on the issue. Assignment alone is not an ownership stop, so this lane is proceeding with the implementation.
    • Expectation: branch queue/4980-1275-command-palette on the laptop, PR opened, task completed as pr_opened.
  8. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

  9. added a commit that references this issue on Nov 2, 2026
  10. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: triaged (coverage pass)
    Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
    Found via: coverage pass 2026-11-03

  12. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · triaged → already implemented and on main; closing COMPLETED

    • Agent: queue worker repo-worker-code, OpenChamber scheduled lane (queue task 7686, coverage-pass triage)
    • Landed in: PR feat(aggregator): Cmd+K command palette + keyboard-first triage on /attention (#1275) #4089 — merged 2026-11-02T15:41:38Z as 2d82a4f76fea4ae179d93c44218ecc0821b46a46 (branch queue/4980-1275-command-palette, head afa81dd4a), confirmed an ancestor of origin/main d3476bce7. The issue stayed open only because the merge carried no closing keyword.

    Acceptance criteria, verified at current main

    • ✅ ⌘K palette over the canonical projection — pm-stack/aggregator/src/keyboard.ts: page entries come from the page manifest (pageEntries()), item entries from each page's existing /api/*.json twin (flattenItems(), bounded at 200) — the header records the deliberate rule "No new endpoints, no second data path." Jump targets are the item's own URL/ref or the manifest route.
    • ✅ j/k navigation + one-key actions on /attention — the key map is declared in the same module (s snooze, e escalate, g delegate, x dismiss, m mark done, ? all keys; j/k move), with the shortcut strip text at keyboard.ts:103.
    • ✅ Same mediated, audited path — never a bypass — a key press submits the focused card's existing .aform for that verb (form.requestSubmit()), so the delegated ACTION_SCRIPT handler in render.ts builds the same POST /api/actions envelope: same clientToken, same author picker, same audit entry as the click path. No action body is constructed in the keyboard layer.
    • ✅ JSON twin already drives the palette — item entries are read from the pages' JSON twins, which is exactly the "agents can drive the same flow" half of the acceptance.
    • ✅ Tests on main: pm-stack/aggregator/test/keyboard-1275.test.ts (palette + keyboard behaviour) alongside the existing a11y suite.
    • No open PR, no competing branch, no in-flight task, no hard-stop labels.

    Scope note: this closes the palette/keyboard feature only; epic #1184 and its other waves are untouched.

  13. removed
    task/triageQueue packet kind: verify, reproduce, and route this item
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/pm-stackpm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)source/humanFiled directly by a human

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions