Skip to content

[KS][KEY] Flows: shortcut scoping, global shortcuts, customization #80

Open

Description

@sethwebster

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 in e2e/checks/keyboard.yaml (only edit your area's file)
  • Kitchen Sink screen(s) under examples/kitchen-sink/screens/keyboard/ exercising every scope item, testIDs keyboard-<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 + truthful get*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

Agent rules

  • Claim: assign yourself before starting; one PR per task with Closes #<this>; branch seth/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:api task under the same epic, mark it as blocking this one, and stop

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:inputKeyboard, pointer, text inputkind:flowsYAML verification flows + kitchen-sink screenskitchen-sinkKitchen Sink verification apppriority:p0Gate MVPrelease-gateBlocks releases until verifiedsparkLegend Spark desktop frameworktype:taskAgent-sized unit of work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions