Repository navigation
feat: unify desktop selects through shared facade - #522
Conversation
PeterGuy326
left a comment
There was a problem hiding this comment.
Reviewed exact head da25e75.
Clean unification. What I checked:
- The design-system pin bump (9104569 -> 4a82fce across all five checkout steps) is the load-bearing change: the new pin supplies the shared Select this PR adopts. CI on this head runs against the new pin and is 11/11 green, so the pin and the component land together.
- ProjectBoard: all six native selects (card status, owner filter, status filter, priority filter, editor assignee/status/priority) move to the shared Select with typed generics and options derived from the same STATUSES/PRIORITIES arrays - no option content drifted. The editor selects also gain aria-labels they were missing.
- project-board.css: the hand-rolled native-select chrome (height/border/disabled opacity) is deleted rather than fighting the antd selector; the remaining rules are pure layout constraints (min/max-width) plus a 12px font override on .ant-select-selector. The accidentally-deleted :focus-visible grouping is correctly re-formed - the outline rule still applies to buttons.
- TurnThread: the approval scope select moves to the shared Select at size=small and gains the owb-turn__approval-scope hook.
- Tests: migrated to the antd interaction model (mouseDown + overlay option click via visibleSelectOptions) instead of fireEvent.change on a native select, and the inverted-date clamp case now pins the system time - that case was wall-clock sensitive.
No blocking findings. Approving.
da25e75 to
114263d
Compare
114263d to
b071b54
Compare
PeterGuy326
left a comment
There was a problem hiding this comment.
Requesting changes on head b071b547. The migration itself looks clean (native selects → shared Select facade, tests aligned, busy-state preserved), but the required Node 24 / macos-14 check fails deterministically — twice, including after a --failed rerun:
- Failing test:
renderer/test/App.test.tsx > App context navigation > consolidates the collaboration toolbar and places employee actions beside the tabs—Test timed out in 5000ms. - The same suite passes on
Node 24 / ubuntu-latest, so this is not a pure infra flake. The whole App suite is slow on macOS (collect 82.87s, tests 300.66s), and the toolbar/navigation test sits in the migrated area, which makes a facade-related async settle issue plausible.
Suggested next steps (author's call which fits):
- Reproduce locally on a mac if available, or add
--runscoping to run just this test on CI to iterate fast. - If the assertion is a
findBy*/waitForwaiting on facade-rendered controls under load, raise that specific timeout rather than the global one, and keep the 5s default for the rest. - Alternatively, if it turns out to be a pure macOS throughput issue, splitting
App.test.tsx(111 tests, ~300s) so the navigation group gets its own file/time budget would make the signal trustworthy again.
Two smaller notes, non-blocking:
- The pinned design-system ref
4a82fceis content-identical to the squash-mergeddb1bcbbd(feat: add shared select facade (#32)) on design-system main; pinning the merged main SHA instead would make the provenance easier to audit. import { Select } from "@fullstack-ai-infra/ui"matches current repo convention; once the@bytefolk/uirename (design-system#19) lands, this and the existing call sites will need a coordinated sweep.
Not product acceptance. Happy to re-review once the macOS run is green.
PeterGuy326
left a comment
There was a problem hiding this comment.
Approving on head 75c3d3c — withdrawing my earlier CHANGES_REQUESTED (b071b54). Its only blocker was the deterministic Node 24 / macos-14 timeout in the toolbar test, which #531 and #534 fixed with explicit 15s budgets. After syncing this branch with main (which now carries both fixes), every required check is green on the fresh head, so the migration itself stands as reviewed: clean facade, tests aligned, busy-state preserved.
Closes #521
Depends on bytefolk/design-system#32 for merge ordering. CI now pins the reviewed Select facade commit from that PR so validation can run before the dependency merge.
Summary
SelectfacadeValidation
npm run buildnpm run typecheck:renderernpm run test:renderer -- project-board.test.tsx TurnPanel.test.tsx(50 passing)After design-system PR #32 merges, this PR can merge in the normal dependency order.