Requires uteke: v0.16.0+ · Epic: #
What
Restructure SettingsModal into full-page Settings: Appearance (theme, density), Workspace (namespace read-only table with active/deprecated split; management actions present but disabled with honest tooltip — gated on uteke#1181 API via compat layer), Maintenance (Recycle Bin + restore, Duplicate Detector with threshold + preview-first flow, Run Cycle with confirmation dialog showing counts from /lifecycle/status + TTL countdown from /lifecycle/deprecated + last-cycle timestamp), Connections, About (version from package + uteke health).
Why
Lifecycle is rare-but-scary plumbing; at top level it causes daily loss-aversion noise (mobile proved the "Maintenance collapsed in Settings" pattern). Audit HIGHs: no TTL visibility, Run Cycle black box, tab/heading mismatch, no input validation, no unsaved guard.
Testing
- Vitest: settings store sections, validation (Max Results numeric 1–500).
- E2E: run-cycle confirm path shows counts; unsaved-changes guard fires; deprecated restore round-trip.
What
Restructure SettingsModal into full-page Settings: Appearance (theme, density), Workspace (namespace read-only table with active/deprecated split; management actions present but disabled with honest tooltip — gated on uteke#1181 API via compat layer), Maintenance (Recycle Bin + restore, Duplicate Detector with threshold + preview-first flow, Run Cycle with confirmation dialog showing counts from
/lifecycle/status+ TTL countdown from/lifecycle/deprecated+ last-cycle timestamp), Connections, About (version from package + uteke health).Why
Lifecycle is rare-but-scary plumbing; at top level it causes daily loss-aversion noise (mobile proved the "Maintenance collapsed in Settings" pattern). Audit HIGHs: no TTL visibility, Run Cycle black box, tab/heading mismatch, no input validation, no unsaved guard.
Testing