Commit Graph
2 Commits
Author SHA1 Message Date
jpmschweitzerandClaude Opus 4.7 7937da1734 panel-to-panel focus traversal via F6 / Shift+F6 (T-105)
Each SlotHost now owns a FocusScopeNode and registers it with
FocusTracker on mount. The render is wrapped in
FocusScope + FocusTraversalGroup so Tab stays within a panel and
slot-level focus is observable.

When a slot's scope gains focus, SlotHost pushes
(slot, activeContributionId) to FocusTracker — this collapses the
parallel-tracker model the consultant flagged. FocusTracker keeps
its setActive surface for explicit callers (palette, etc.) but
slot-scoped tab activation feeds it automatically.

Two new intents, two new bindings:
  FocusNextPanelIntent     → F6
  FocusPreviousPanelIntent → Shift+F6
(VS Code convention; preset YAML.)

The cycle skips slots without a registered scope, so a layout that
hides the context panel doesn't strand focus on a missing target.
Fewer than two registered → no-op.

SlotHost split into a stateful outer (scope + registry) and a
stateless `_SlotBody` (the existing slot-specific rendering),
keeping the build straightforward.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:56:35 +02:00
jpmschweitzerandClaude Opus 4.7 2d123681be test sweep: cover kernel Tier-0 service stubs (T-91)
test / unit + widget + golden + a11y (push) Failing after 30s
test / integration_test (xvfb) (push) Has been skipped
test / bundle smoke (xvfb 5s) (push) Has been skipped
test / daemon subprocess + web WASM smoke (push) Has been skipped
test / dart doc (lib API) (push) Failing after 1m1s
19 tests in test/kernel/src/services_stubs_test.dart covering six
small Tier-0 service classes: ClideClipboard (typed write + readAs,
bounded LIFO history, typed history miss, writePlain/readPlain via
mocked platform channel, write-with-toPlain OS sync, clear),
FocusTracker (setActive flip + same-value no-op + clear), NetworkStatus
(default + setState idempotency), SecretsVault (per-extension
isolation, read/write/delete/deleteAll), TrayRegistry (add/remove +
priority sort + unknown-id no-op), Notifications (info/warn/error/
success levels, dismiss + unknown-id no-op).

Coverage: kernel/src/clipboard.dart 1/23 -> 23/23; focus.dart 1/12
-> 12/12; net.dart 0/6 -> 6/6; secrets.dart 0/8 -> 8/8; tray.dart
0/7 -> 7/7; notify.dart 4/23 -> 23/23. All six files now at 100%.

Total coverage 80.81% -> 81.64%; floor bumped to 81.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 07:36:22 +02:00