ZDDC/classifier/css
ZDDC 1631e2b8ca feat(classifier): By-tracking as a merged-cell table (pattern config + sticky)
The nested tracking tree wasted huge vertical space showing the hierarchy by
indentation. Render it as a spreadsheet-style table instead: each configured
field is a column, ancestor cells span (rowspan) their descendants' rows, the
revision gets its own aligned column, and each placed file is a row. Far denser,
and the hierarchy reads left-to-right.

- classify.js: a per-workspace pattern config { trackingFields[{name,optional}],
  statuses, modifiers }, default ORIG·PROJ·DISC·TYPE·SEQ + optional SUFFIX,
  seeded statuses from the shared enum. Serialized with the workspace; reset
  keeps it (it's a setting, not data). getConfig/setConfig/getTrackingFields.
- target-tree.js: tree → flat rows → merged-cell <table>. A revision leaf is
  detected by its "(STATUS)" suffix, so SEQ "0001" and revision "A (IFR)" land
  in the right columns. Drop targets, CRUD, editable ZDDC name, validation,
  filter and cross-reveal all preserved on the cells.
- css: sticky header + sticky merged-cell values (the value stays pinned under
  the header while you scroll a tall group, so a span never reads blank).
- The original filename moves to a hover tooltip on the editable name.

Next: the revision context-menu (status / draft ~ / +Cn toggles + stepper) and
the settings UI to edit the pattern/status/modifier lists.

Tests: merged ancestors get the right rowspan; revisions align in one column;
the date revision stays intact (49 green).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 15:56:00 -05:00
..
base.css feat(shared): non-blocking toast helper available to every tool 2026-05-09 19:04:41 -05:00
layout.css feat(classifier): By-tracking as a merged-cell table (pattern config + sticky) 2026-06-10 15:56:00 -05:00
spreadsheet.css fix(classifier): rename inline tree-empty placeholder out of .empty-state 2026-05-10 14:22:50 -05:00