Add a Modules settings page for optional capabilities #29

Open
opened 2026-08-22 07:48:42 +00:00 by kayg · 0 comments
Owner

Goal

Expose the capability-plugin registry in Settings so users and testers can see which optional features are installed, enabled, disabled, or unavailable.

Scope

  • Only optional capability plugins appear; always-present Core modules do not.
  • Row: name, short purpose, state (enabled/disabled/unavailable), implementation source (built-in/platform adapter/future external), dependencies, unavailable reason.
  • Enable/disable when runtime-safe; restart-required label when hot removal unsafe.
  • Link to module-specific settings.
  • Registry injected at composition root; no global singleton.
  • Feature absent/disabled handled at one Seam, no scattered view feature flags.
  • Real/in-memory fake/omitted adapter states use the same Interface for tests.

Initial candidates: Search, action commands, Spotlight, App Intents, voice, attachments, model controls, iCloud sync.

Acceptance

  • Settings gets Modules tab/page.
  • State matches runtime registry.
  • Disable/re-enable tests for hot-safe plugin; unavailable reason accessible; VoiceOver labels; no restart where not needed.
  • No Core module listed.
  • Related to #14 (performance regression harness); not a blocker.
  • Related to #22 (action mode for settings and commands); not a blocker.
  • Related to #9 (native motion); not a blocker.
## Goal Expose the capability-plugin registry in Settings so users and testers can see which optional features are installed, enabled, disabled, or unavailable. ## Scope - Only optional capability plugins appear; always-present Core modules do not. - Row: name, short purpose, state (enabled/disabled/unavailable), implementation source (built-in/platform adapter/future external), dependencies, unavailable reason. - Enable/disable when runtime-safe; restart-required label when hot removal unsafe. - Link to module-specific settings. - Registry injected at composition root; no global singleton. - Feature absent/disabled handled at one Seam, no scattered view feature flags. - Real/in-memory fake/omitted adapter states use the same Interface for tests. Initial candidates: Search, action commands, Spotlight, App Intents, voice, attachments, model controls, iCloud sync. ## Acceptance - Settings gets Modules tab/page. - State matches runtime registry. - Disable/re-enable tests for hot-safe plugin; unavailable reason accessible; VoiceOver labels; no restart where not needed. - No Core module listed. ## Related - Related to #14 (performance regression harness); not a blocker. - Related to #22 (action mode for settings and commands); not a blocker. - Related to #9 (native motion); not a blocker.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/hermternal-apple#29
No description provided.