Skip to content

feat: goal 0015 remainder — frecency, pending-review, Configure jump rows - #18

Merged
alicoding merged 1 commit into
mainfrom
goal/0015-summon-remainder
Aug 12, 2026
Merged

feat: goal 0015 remainder — frecency, pending-review, Configure jump rows#18
alicoding merged 1 commit into
mainfrom
goal/0015-summon-remainder

Conversation

@alicoding

Copy link
Copy Markdown
Owner

Summary

  • Quick Panel (ADR-0033) now sorts workflows by frecency (frequency-only, off goal 0014's HomeMetrics.mostUsed), surfaces its own live pending-review count (own window, can't share App.tsx's), and renders connector/List/MCP-Server rows that jump the main window to the right Configure tab.
  • Pins/favorites and a ⌘?/⌘/ multi-binding keybinding alias are named out of scope, recorded as BACKLOG.md tech-debt lines (no schema/registry infra exists for either yet); the ⌘K palette's own inline-hotkey-per-row detail stays a named, untouched gap. Goal 0015's file stays open (not archived) until those land.
  • Also fixes a real, CI-blocking bug found live this session: formatUpdated silently ignored the now override formatLastChecked already threaded through it, using the real wall clock instead — staleness.test.ts's hardcoded anchor caught this once the real clock crossed a day boundary past it mid-session.

Test plan

  • npm run test (vitest, 207/207) — includes new workflowFrecency.test.ts and the fixed staleness.test.ts
  • npm run lint / npm run boundaries / tsc --noEmit / scripts/check-loc.sh
  • go build/go vet/go test ./internal/... (no Go files changed, verified regardless)
  • frontend/e2e/quick-panel.spec.ts (5/5, including 3 new e2e cases: Configure-entity jump, live frecency ordering, live pending-review badge via a real parked MCP write)
  • mcp-write-approval.spec.ts, realtime-cross-surface.spec.ts, configure-lists.spec.ts, command-palette.spec.ts re-run clean (no regressions from the View/ConfigureView changes)
  • Full lefthook run pre-commit green

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh

…rows (Quick Panel)

Three of the four DoR-met remaining items land into the Quick Panel
(ADR-0033), not the ⌘K palette:

- Frecency sort (frequency-only): QuickPanel's workflow list ranks by
  ExecutionService.HomeMetrics' mostUsed -- goal 0014's own value-mirror
  substrate, reused rather than reinvented (app/workflowFrecency.ts,
  unit-tested + proven live via e2e). Pins stayed out: no pin/favorite
  concept exists anywhere in Mill (grepped first) -- recorded as its own
  BACKLOG.md tech-debt line instead of inventing schema under this goal.
- Pending-review count: the Quick Panel is its own Wails window and
  can't share App.tsx's reviewPendingCount effect -- a second,
  independent read of ListRuns/PendingMCPWrites + the same two live
  events, display-only (doesn't duplicate the main window's
  SetPendingBadge/NotifyPendingApproval side effects). Proven e2e with
  a real parked MCP write, asserting the badge updates live with no
  reload.
- Configure entities: connectors/Lists/MCP Servers now render as
  searchable/jumpable rows, landing the main window on the right
  Configure tab via a new 'configure:<tab>' mill-navigate target
  (app/useMillNavigate.ts, extracted out of App.tsx to stay under the
  500-line convention; ConfigureView gained an initialTab prop).

Out of scope, recorded honestly rather than silently dropped: a
⌘?/⌘/ multi-binding keybinding alias (needs the 1:1 command↔binding
registry to become multi-binding) and pins/favorites (needs its own
schema decision) both get BACKLOG.md tech-debt lines; the ⌘K palette's
own inline-hotkey-per-row detail stays a named, untouched gap. Goal
0015's file stays open (not archived) until those land.

Also fixes a real, CI-blocking bug found live this session:
formatUpdated (shared/inventorySort.ts) silently ignored the `now`
override formatLastChecked (shared/staleness.ts) already threaded
through it, using the real wall clock instead -- staleness.test.ts's
hardcoded NOW anchor caught this for real once the actual clock
crossed a day boundary past it mid-session, flipping a "9 minutes ago"
expectation to "yesterday". now is threaded through properly now.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh
@alicoding
alicoding enabled auto-merge (squash) August 12, 2026 12:16
@alicoding
alicoding merged commit 4abcf04 into main Aug 12, 2026
16 checks passed
alicoding added a commit that referenced this pull request Aug 15, 2026
…rows (Quick Panel) (#18)

Three of the four DoR-met remaining items land into the Quick Panel
(ADR-0033), not the ⌘K palette:

- Frecency sort (frequency-only): QuickPanel's workflow list ranks by
  ExecutionService.HomeMetrics' mostUsed -- goal 0014's own value-mirror
  substrate, reused rather than reinvented (app/workflowFrecency.ts,
  unit-tested + proven live via e2e). Pins stayed out: no pin/favorite
  concept exists anywhere in Mill (grepped first) -- recorded as its own
  BACKLOG.md tech-debt line instead of inventing schema under this goal.
- Pending-review count: the Quick Panel is its own Wails window and
  can't share App.tsx's reviewPendingCount effect -- a second,
  independent read of ListRuns/PendingMCPWrites + the same two live
  events, display-only (doesn't duplicate the main window's
  SetPendingBadge/NotifyPendingApproval side effects). Proven e2e with
  a real parked MCP write, asserting the badge updates live with no
  reload.
- Configure entities: connectors/Lists/MCP Servers now render as
  searchable/jumpable rows, landing the main window on the right
  Configure tab via a new 'configure:<tab>' mill-navigate target
  (app/useMillNavigate.ts, extracted out of App.tsx to stay under the
  500-line convention; ConfigureView gained an initialTab prop).

Out of scope, recorded honestly rather than silently dropped: a
⌘?/⌘/ multi-binding keybinding alias (needs the 1:1 command↔binding
registry to become multi-binding) and pins/favorites (needs its own
schema decision) both get BACKLOG.md tech-debt lines; the ⌘K palette's
own inline-hotkey-per-row detail stays a named, untouched gap. Goal
0015's file stays open (not archived) until those land.

Also fixes a real, CI-blocking bug found live this session:
formatUpdated (shared/inventorySort.ts) silently ignored the `now`
override formatLastChecked (shared/staleness.ts) already threaded
through it, using the real wall clock instead -- staleness.test.ts's
hardcoded NOW anchor caught this for real once the actual clock
crossed a day boundary past it mid-session, flipping a "9 minutes ago"
expectation to "yesterday". now is threaded through properly now.


Claude-Session: https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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.

1 participant