Clients UI polish + drop Display Name (Chore-1087)

Story 1087Epic None17 files · +297/−208

PR #258 · pramaan-io/pramaan-app · merged 2026-06-08

Why this matters

A field that should not be sent keeps getting sent.

Why dropping a dead input is harder than it looks.

Field's not gone. The body still feels it.

The fix — Display Name is no longer sent — but the render still knows it, via `displayName ?? name`, so legacy data survives.

How it flows

sequenceDiagram
  autonumber
  participant form as Form (skin)
  participant payload as Payload (nerve)
  participant server as Server (spine)
  participant render as Render (brain)
  form->>form: Input cut away
  form->>payload: No signal sent
  payload-->>server: Backend defaults to name
  server->>render: Returns name (or displayName if legacy)
  render->>render: displayName ?? name

What changed, file by file

Local state for the clients view — adds a `typeFilter` field (default `all`) so the new Type filter dropdown has a typed home.

New fields: typeFilter : ClientTypeFilter

Files changed (17)

File±
messages/en.json+8 −6
messages/hi.json+8 −6
src/app/[locale]/(workspace)/clients/client-type-filter.tsx ★+70
src/app/[locale]/(workspace)/clients/clients-client.test.tsx+1 −1
src/app/[locale]/(workspace)/clients/clients-client.tsx ★+66 −10
src/app/[locale]/(workspace)/clients/clients-header.tsx+0 −59
src/app/[locale]/(workspace)/clients/clients-pager.tsx+0 −60
src/app/[locale]/(workspace)/clients/clients-table-row.tsx+12 −7
src/app/[locale]/(workspace)/clients/clients-table.tsx+3
src/app/[locale]/(workspace)/clients/clients-view.tsx ★+74 −35
src/app/[locale]/(workspace)/clients/presentation.ts+5
src/components/clients/AddClientSheet.tsx+15 −15
src/components/clients/atoms/kind-badge.tsx+11 −3
src/components/clients/clients-cache-pilot.stories.tsx+3
src/components/clients/clients-table.stories.tsx+2
src/components/shared/filter-chip.tsx+12 −4
src/components/shared/segmented-filter.tsx+7 −2