chore(board): drop stalled filter + board-local density selector #1089

Merged
reviewer merged 1 commit from chore/board-drop-stalled-and-density-controls into main 2026-05-10 23:01:35 +00:00
Collaborator

Summary

  • Drop the Stalled (N) filter chip from the board toolbar (incl. ?stalled=true URL param and only_stalled filter wiring).
  • Drop the board-local 3-tier density segmented control. Card density now follows the global density preference in the app shell (comfortable → default, compact → compact).
  • Remove now-unused countStalledCards / isCardStalled helpers and the board.density localStorage key.

Test plan

  • /board toolbar shows only the milestone + label comboboxes — no Stalled chip, no density toggle.
  • Toggling the global density toggle in the app shell still tightens board card spacing.
  • Visiting /board?stalled=true silently strips the param (no filter applied).
  • bun run typecheck + bun x vitest run green for apps/web.
## Summary - Drop the `Stalled (N)` filter chip from the board toolbar (incl. `?stalled=true` URL param and `only_stalled` filter wiring). - Drop the board-local 3-tier density segmented control. Card density now follows the global density preference in the app shell (`comfortable → default`, `compact → compact`). - Remove now-unused `countStalledCards` / `isCardStalled` helpers and the `board.density` localStorage key. ## Test plan - [ ] `/board` toolbar shows only the milestone + label comboboxes — no Stalled chip, no density toggle. - [ ] Toggling the global density toggle in the app shell still tightens board card spacing. - [ ] Visiting `/board?stalled=true` silently strips the param (no filter applied). - [ ] `bun run typecheck` + `bun x vitest run` green for `apps/web`.
chore(board): drop stalled filter + board-local density selector
All checks were successful
qa / i18n-string-check (pull_request) Successful in 15s
qa / dockerfile (pull_request) Successful in 15s
qa / db-schema (pull_request) Successful in 18s
qa / sql-layer-check (pull_request) Successful in 10s
qa / qa-1 (pull_request) Successful in 4m4s
qa / qa (pull_request) Successful in 0s
89025fa87c
Stalled filter chip + 3-tier density toggle removed from the board
toolbar. Card density now follows the global density preference
(comfortable -> default, compact -> compact).

- Strip `only_stalled` from `BoardFilterState` + `?stalled=true` URL param.
- Remove `countStalledCards` / `isCardStalled` helpers (no other callers).
- Remove `board.density` localStorage key + the in-component toggle.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
reviewer approved these changes 2026-05-10 23:01:25 +00:00
reviewer left a comment

APPROVED — clean removal, CI green

Reviewed the full diff across all 6 changed files. Everything is internally consistent and the removal is complete.

What I verified

Stalled filteronly_stalled is gone end-to-end:

  • Dropped from BoardFilterState interface
  • applyBoardFilters no longer branches on it
  • isCardStalled / countStalledCards helpers removed from filter-logic.ts
  • The double-pass useMemo (filteredForCount + full filter) collapsed to a single-pass — correct
  • ?stalled=true URL param removed from BoardSearch and validateSearch, so old deep-links silently strip it rather than crashing
  • The _s void discard and onlyStalled computation in the URL-update handler are both gone — no orphaned stalled key can sneak back into the URL
  • All 5 stalled-chip tests + isCardStalled/countStalledCards unit tests removed

Board-local density — removed cleanly:

  • DENSITY_KEY / readDensity / writeDensity / handleDensityChange all gone
  • Replaced with useDensity() from @/lib/density — hook confirmed present in main
  • boardDensityFromGlobal is a pure two-liner; the intentional drop of detailed is consistent with the PR description ("comfortable → default, compact → compact")
  • No density / onDensityChange props left on <BoardFilters />

Layout — the inner row's responsive classes (sm:flex-row sm:flex-wrap sm:items-end) were promoted to the <section> directly, which makes sense now that the section holds only the two comboboxes with no second row beneath them.

useDensity import — not added by this PR because it already lives in apps/web/src/lib/density.ts. The shape ({ density: DensityMode; setDensity; toggleDensity }) is correct for what board.tsx consumes.

Nit (non-blocking)

STALL_THRESHOLD_MS exported from board-card.tsx is now dead code — its only consumer was filter-logic.ts, which no longer imports it. Worth a follow-up cleanup but absolutely not a blocker here.

CI

All checks green on 89025fa.

## ✅ APPROVED — clean removal, CI green Reviewed the full diff across all 6 changed files. Everything is internally consistent and the removal is complete. ### What I verified **Stalled filter** — `only_stalled` is gone end-to-end: - Dropped from `BoardFilterState` interface - `applyBoardFilters` no longer branches on it - `isCardStalled` / `countStalledCards` helpers removed from `filter-logic.ts` - The double-pass `useMemo` (filteredForCount + full filter) collapsed to a single-pass — correct - `?stalled=true` URL param removed from `BoardSearch` and `validateSearch`, so old deep-links silently strip it rather than crashing - The `_s` void discard and `onlyStalled` computation in the URL-update handler are both gone — no orphaned `stalled` key can sneak back into the URL - All 5 stalled-chip tests + `isCardStalled`/`countStalledCards` unit tests removed **Board-local density** — removed cleanly: - `DENSITY_KEY` / `readDensity` / `writeDensity` / `handleDensityChange` all gone - Replaced with `useDensity()` from `@/lib/density` — hook confirmed present in main - `boardDensityFromGlobal` is a pure two-liner; the intentional drop of `detailed` is consistent with the PR description ("comfortable → default, compact → compact") - No `density` / `onDensityChange` props left on `<BoardFilters />` **Layout** — the inner row's responsive classes (`sm:flex-row sm:flex-wrap sm:items-end`) were promoted to the `<section>` directly, which makes sense now that the section holds only the two comboboxes with no second row beneath them. **`useDensity` import** — not added by this PR because it already lives in `apps/web/src/lib/density.ts`. The shape (`{ density: DensityMode; setDensity; toggleDensity }`) is correct for what `board.tsx` consumes. ### Nit (non-blocking) `STALL_THRESHOLD_MS` exported from `board-card.tsx` is now dead code — its only consumer was `filter-logic.ts`, which no longer imports it. Worth a follow-up cleanup but absolutely not a blocker here. ### CI All checks green on `89025fa`.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks!1089
No description provided.