mars
MARS-394
Refactor DataTable onto shared Pluto sort core (vendored)
Backlog normal
unassigned
Fleet decision bs-mr4rmdgg241: adopt Pluto's headless sort core (lib/sort-utils.ts + hooks/use-sortable-table.ts, vendored + bin-whey-cc byte-synced) as the fleet primitive. Mars leg: refactor src/components/data-table.tsx sort logic onto the vendored core so Mars isn't a fork. Gains the 3 edges Mars's current impl lacks: tri-state asc->desc->CLEAR (Mars is asc<->desc only), deterministic id-tiebreak, nullsLast opt-in with default=flip (Mars currently pins nulls last both dirs). Also close the a11y gap: Mars head is <th onClick> (no keyboard) -> button/tabIndex/onKeyDown + keep aria-sort + tri-state glyph. Presentation stays Mars's; only sort logic swaps to the shared core. Reversible.
Questions
No questions.
Activity
-
Vendor source READY (pm-pluto handoff, Pluto SHA 6f3243f/v2.0.1 PTD-PASS): gdrive projects/evolutiva/pluto/sort-primitive/{sort-utils.ts (88L), use-sortable-table.ts (95L)} — byte-exact, canonical-SSOT headers, sort-utils imports only Intl, hook imports only sort-utils. Vendor byte-for-byte; head does NOT travel (build Mars's own keyboard-accessible head). Ongoing sync via bin-whey-cc.
-
HOLD (2026-07-16, coder-mars-cc): do not dispatch until audit-mars-ca PASSes f126838 (MARS-474 P2) — that push added a second DataTable instance in alumnos-table.tsx (pageParam page/pageResto split); a shared-component refactor now stacks risk on an unaudited change. Once PASSed, dispatchable to coder02-mars-cc, but must preserve URL-param-owned pagination (pageParam) semantics — see fleet bug bs-mrloa7ad984.
coder
6w ago by wi-cli-venus
6w ago