Skip to content

feat(ui): list-controls framework — type-to-filter + sort for all list views (epic) #194

Description

@thewrz

Why

Two foundational UX behaviors users expect from modern list interfaces, built once as reusable modules (src/ui/list_controls/) and wired into any current or future view:

  1. Type-to-filter — on enabled views, simply typing immediately filters the list (by tag/folder, file name, customized tile name) without clicking the search box first. Click-to-focus always keeps working.
  2. Sorting — a chip with the active sort key + asc/desc chevron, and an options menu (name, date, length, …), persisted per view (filter text never persists — views start unfiltered on launch).

Grouping is deliberately out of scope for v1 (favorites #14 + folder categories already cover it); the sort menu keeps a group-by seam for when user-assignable tags land.

Full design spec: docs/superpowers/specs/2026-07-06-list-controls-design.md (committed 1a2cdb5).

Wiring matrix

View Filter Type-to-activate Sort (default)
Main tiles migrated onto FilterState ✅ (+ click stays) SoundSortKey (Name ↑)
Slots SlotSortKey (SlotNumber ↑)
Shortcut assignment SlotSortKey (SlotNumber ↑)
Macros (#168) MacroSortKey (Name ↑)
Settings staged Discord-style search ❌ click-only none

Children (dependency order)

#168 (macros view) consumes the framework — amended by comment there.

Related prior art: #8 (search bar), #87 (Escape/focus staging), #14 (favorites), #16 (bulk-import review screen — future consumer).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requeststateConfig, library, persistenceuiIced GUI, theme, widgets

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions