StorageScope v0.5.1 — Post-release UX polish
v0.5.1 — Post-release UX polish
Targeted fixes for issues raised during the v0.5.0 UI tour: Folder Tree expand behavior, persistent-header context-sensitivity, sparse-result view layout, and Keeper badge explainability. No API or scan-pipeline changes; safe drop-in upgrade over v0.5.0.
Folder Tree
- Disclosure triangle is its own toggle. Previously the whole row mutated both selection and expand state on click, and double-clicking a folder opened it in Finder instead of drilling in-app. The chevron is now a dedicated
Button; the row body only selects. Deprecated the double-click-to-Finder shortcut on tree rows (Reveal/Open remain in the row's context menu). - Empty-tree accessibility hint clarified: rows that can expand say "Click the disclosure triangle to expand or collapse"; leaf rows still say "Selects this item."
Context-sensitive header
- FilterBar removed from Overview / File Types / Cleanup Review. The Display + Scan Options strip was ~120pt of dead chrome on views that don't use it. The bar now appears only when the active view actually consumes the size or sort picker.
- Size picker gated per-view. Hidden on Overview / File Types / Cleanup Review where the threshold aggregates nothing.
- Sort picker gated per-view. Tree is hierarchical; Overview / File Types / Cleanup Review have no column sort the user can flip from the bar.
- Removed Scan Options group from the filter bar. "Old after N days" and "Hidden" were already covered by Settings → Scan Options; their presence in the bar was redundant. The Old-after stepper was re-added only on Old Large Files, since the threshold directly drives that view.
Old Large Files
- Threshold hint card when results are sparse. A new
OldLargeFilesThresholdHintinline card surfaces when 1–5 files qualify: copy acknowledges the small set, secondary line guides the user to lower the size filter or "Old after N days" then Rescan, and a Rescan button is wired up for one-tap action. - List minHeight scales with content. The scroll area no longer reserves 420pt when only a handful of rows exist — drops to ~220pt for ≤5 items so the empty canvas below sparse results is gone.
Duplicate Review
- Keeper badge tooltip. The green "Keeper" capsule now carries a help-tag explaining what keeper means and how to reassign it (right-click another copy → "Set as Keeper"). Row accessibility now appends ", keeper" to the row label and the hint explains the swap path.
Validation
swift test— 90 tests across 10 suites pass./script/public_upload_audit.sh— passesbash ./script/build_and_run.sh --verify— bundle launches cleanly- DMG:
exports/StorageScope-0.5.1.dmg, SHA2560d6feb5b62f3c4444dbccb3c796a1baf425b7809017a22940ea570907a58b807—hdiutil verifyconfirmed
Why v0.5.1 (not v0.5.0.1)
UX-only fixes plus docs version bump; the v0.5.x series is already a feature-bearing minor track. Patch version under v0.5 is appropriate since no scan pipeline / public API changed.
Deferred (carried from v0.5.0)
- Tier 3 SelectionState / Tier 4 TrashReviewState extractions — still pending; same lazy-var + closure-injection template.
- Tier 5
@Observablemacro migration — still blocked bydidSetobservers on tracked properties. - Sparkle 2.x auto-update — still gated on notarization.