Skip to content

feat(ux): list density preference + select-value display labels - #123

Merged
os-zhuang merged 1 commit into
mainfrom
feat/ux-list-density-and-value-labels
Jun 11, 2026
Merged

feat(ux): list density preference + select-value display labels#123
os-zhuang merged 1 commit into
mainfrom
feat/ux-list-density-and-value-labels

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

UX-F (2/2) — List density + value labels

Two list/dashboard presentation improvements that share ListViewRenderer, so they ship together.

List density (this session)

  • A global "List density" preference (comfortable / compact) added to the Appearance screen, persisted via ui-store.
  • List views without an explicit rowHeight fall back to it, so a user can tighten every list at once; a view that sets its own density still wins.
  • DensitySelector mirrors ThemeSelector (theme-aware, haptic); appearance.{density,comfortable,compact} added in en/zh/ar.

Select-value display labels (parallel work)

Authored in a parallel session; included here because it touches buildListItems, which my density change also edits — they can't be split without a conflicting file.

  • List group-by headers and dashboard chart category buckets now render a select field's option label ("Completed") instead of the raw stored value ("completed").
  • buildListItems takes the field defs to resolve the label; the dashboard screen fetches each dataset object's fields once and threads them through resolveDatasetWidget.

Tests

tsc + lint clean. Full suite: 1328 passing — adds a ui-store density case plus the label feature's list + dashboard tests.

Verified

Browser (375dp, dark, zh): Appearance shows 列表密度 → 宽松 / 紧凑 under the theme picker.

Note

This closes UX-F. The one remaining walkthrough item — inline status-badge edit on the detail screen — is deferred (it needs a field-level mutation flow; larger and riskier than the rest of the polish pass).

🤖 Generated with Claude Code

Two list/dashboard presentation improvements that share the list renderer.

Density (UX-F):
- A global "List density" preference (comfortable / compact) in Appearance,
  persisted via ui-store. List views without an explicit `rowHeight` fall back
  to it, so users can tighten every list at once. New DensitySelector mirrors
  ThemeSelector; appearance.{density,comfortable,compact} added in en/zh/ar.

Display labels (parallel work, lands here because it touches buildListItems):
- List group-by headers and dashboard chart category buckets now render a
  select field's option *label* ("Completed") instead of the raw stored value
  ("completed"). buildListItems takes the field defs to resolve the label;
  the dashboard screen fetches each dataset object's fields once and threads
  them through resolveDatasetWidget.

tsc + lint clean; full suite 1328 passing (new ui-store density case + the
label feature's list/dashboard tests).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@os-zhuang
os-zhuang merged commit e378a5b into main Jun 11, 2026
4 checks passed
@os-zhuang
os-zhuang deleted the feat/ux-list-density-and-value-labels branch June 11, 2026 10:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant