Repository navigation
[KS][KEY] Flows: shortcut scoping, global shortcuts, customization #80
Copy link
Copy link
Open
Labels
area:inputKeyboard, pointer, text inputKeyboard, pointer, text inputkind:flowsYAML verification flows + kitchen-sink screensYAML verification flows + kitchen-sink screenskitchen-sinkKitchen Sink verification appKitchen Sink verification apppriority:p0Gate MVPGate MVPrelease-gateBlocks releases until verifiedBlocks releases until verifiedsparkLegend Spark desktop frameworkLegend Spark desktop frameworktype:taskAgent-sized unit of workAgent-sized unit of work
Description
Part of #15 · Umbrella #9 · Task key KEY.shortcuts
Goal
Verify with YAML flows: shortcut scoping, global shortcuts, customization.
Scope
Every line becomes ≥1 check ID in the registry and is covered by ≥1 YAML flow.
- App/window/view scope priority + consumption
- Global: register/unregister/conflict/survive sleep-wake/release on quit
- Customization persisted, conflicts reported
- Listeners removed when their window closes
Deliverables
- Flows in
e2e/flows/keyboard/(format: see INFRA schema task) - Check IDs
KEY-…registered ine2e/checks/keyboard.yaml(only edit your area's file) - Kitchen Sink screen(s) under
examples/kitchen-sink/screens/keyboard/exercising every scope item, testIDskeyboard-<screen>-<element>
Acceptance
- Platforms: macOS + Windows
- All flows pass on the release build (signed, installed), matrix light/dark × en-US/ar (+ reduceMotion where motion is involved)
- 10/10 consecutive local passes; zero retries
- Unsupported platform → flow asserts typed
SparkError+ truthfulget*Availability() manualSteps only where automation is impossible, each with evidence- Windows half runs once [KS][INFRA] Windows black-box backend (UI Automation + SendInput) and OS-state commands #51 lands; keep this issue open until both platforms pass or Windows is explicitly typed-unsupported
Blocked by
- [KS][KEY] API: user-customizable shortcut map with persistence & conflict reporting #79 — API: user-customizable shortcut map with persistence & conflict reporting
- [KS][INFRA] macOS black-box backend (AX API + CGEvent) and OS-state commands #50 — macOS black-box backend (AX API + CGEvent) and OS-state commands
- [KS][INFRA] Kitchen Sink app shell: catalog, deep links, testID convention, merge legend-apps screens #56 — Kitchen Sink app shell: catalog, deep links, testID convention, merge legend-apps screens
Agent rules
- Claim: assign yourself before starting; one PR per task with
Closes #<this>; branchseth/ks-<issue>-<slug> - Touch only your area's flows/checks/screens/goldens; shared tooling changes go through INFRA tasks
- Missing Spark API? Do not stub or add fallbacks. Open a
kind:apitask under the same epic, mark it as blocking this one, and stop
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:inputKeyboard, pointer, text inputKeyboard, pointer, text inputkind:flowsYAML verification flows + kitchen-sink screensYAML verification flows + kitchen-sink screenskitchen-sinkKitchen Sink verification appKitchen Sink verification apppriority:p0Gate MVPGate MVPrelease-gateBlocks releases until verifiedBlocks releases until verifiedsparkLegend Spark desktop frameworkLegend Spark desktop frameworktype:taskAgent-sized unit of workAgent-sized unit of work
Activity