M-2: Settings commands — setProvider/setTTSTier/setSTTBackend/setFeatureFlag/setHotkey/storeAPIKey #106

Open
opened 2026-05-12 19:36:55 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-12 19:36:55 +00:00 (Migrated from github.com)

Goal

Implement Settings commands: setProvider, setTTSTier, setSTTBackend, setFeatureFlag, setHotkey, storeAPIKey. Each emits settingsChanged with changed key paths.

Scope

  • 6 commands wired through SettingsAdapter
  • Each writes to ConfigStore, then emits settingsChanged
  • setHotkey collision detector emits bindFailed (G-005 harness-injectable)

Files

  • packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Settings+Adapter.swift

Acceptance

  • All 6 commands implemented and round-trip via getSettings
  • setHotkey collision returns bindFailed
  • storeAPIKey routes through Keychain (not plaintext)
  • settingsChanged emits exactly one event per command (no parallel emit)

Test

Scenarios S-SET-002..S-SET-007 cover each setter.

Parent epic

#6

Source

.planning/architecture/JARVIS-API-MIGRATION-PLAN.md §2.3 (M-2.2)
.planning/architecture/JARVIS-API-DESIGN-v0.2.md G-005 trigger annotations

## Goal Implement Settings commands: setProvider, setTTSTier, setSTTBackend, setFeatureFlag, setHotkey, storeAPIKey. Each emits settingsChanged with changed key paths. ## Scope - 6 commands wired through `SettingsAdapter` - Each writes to `ConfigStore`, then emits `settingsChanged` - `setHotkey` collision detector emits `bindFailed` (G-005 harness-injectable) ## Files - `packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Settings+Adapter.swift` ## Acceptance - [ ] All 6 commands implemented and round-trip via `getSettings` - [ ] `setHotkey` collision returns `bindFailed` - [ ] `storeAPIKey` routes through Keychain (not plaintext) - [ ] `settingsChanged` emits exactly one event per command (no parallel emit) ## Test Scenarios `S-SET-002..S-SET-007` cover each setter. ## Parent epic #6 ## Source `.planning/architecture/JARVIS-API-MIGRATION-PLAN.md` §2.3 (M-2.2) `.planning/architecture/JARVIS-API-DESIGN-v0.2.md` G-005 trigger annotations
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#106