Commit graph

5 commits

Author SHA1 Message Date
51f5947716 refactor(classifier): dedupe seltable CSS + tidy From-a-list scratch edges
- #7 seltable CSS: the classifier carried its own copy of the base seltable
  rules (diverged from shared/seltable.css — a stale sticky offset + a dead
  .seltable__filter). Bundle shared/seltable.css and keep only the
  classifier-specific catalog bits (.seltable__extra, .mdl-rev__input,
  .fromlist-*, .src-badge, #mdlTree). One source of truth, shared with tables.
- #9 Clear list now confirms when it would strand files that still need a
  revision (on a "pending" leaf) — they stay assigned under By tracking number,
  but the row to finish them here is going away, so warn first.
- #10 serialize() strips the transient row→keys hint (`placed`) — it's rebuilt
  as drops happen and was needlessly bloating every workspace autosave.

(#8, renaming the internal mdl* identifiers to match "From a list", is left as
deliberate churn-avoidance — purely cosmetic, spans template/css/js/tests/DOM
ids, and the user-facing strings already read "From a list".)

Full suite 340 passed / 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 12:16:58 -05:00
93ed0d361f feat(classifier): "By existing" tab + multi-select directory picker
Reshape the catalog from a button+overlay into a proper tab and let the user
choose which directories feed it.

- Tabs: the Catalog button becomes a third tab "By existing", grouped with "By
  tracking number" (both assign a tracking number) and visually separated from
  "By transmittal" (which assigns the path). A brief goal line above the tabs
  states the workflow. The overlay #mdlPanel becomes a normal in-flow tab panel.
- Load: instead of auto-scanning a whole project, "Load…" opens a lazy,
  multi-select (checkbox) directory tree (new classifier/js/dir-picker.js).
  Ticking a directory includes its whole subtree; confirm resolves the topmost
  ticked handles. Scope follows where the classifier is served: /_apps/… → all
  accessible projects, under <project>/… → that one project, file:// → a picked
  folder. The picker is handle-agnostic (HttpDirectoryHandle or native FS).
- Rows: every ticked directory is walked recursively into the union of existing
  files (zddc.parseFilename) and MDL deliverables (mdl/*.yaml → inMdl + title),
  deduped to one row per tracking number. The "Archive revs" (all) column
  becomes a single informational "Latest rev" computed via zddc.compareRevisions.
  Drop still assigns the tracking number only; the Revision cell stays blank.
- classify.js is unchanged — the mdl axis model and row shape are reused as-is
  (Latest rev derives from the preserved archiveRevisions).
- Tests: the catalog test now asserts latest-rev; new unit tests cover
  walkDirInto union/dedupe-to-latest, _latestRevOf draft/modifier ordering,
  _detectScope routing, and the dir-picker topmost-ticked resolution. 61 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 19:39:55 -05:00
6c3c58bc70 refactor(classifier): drop "MDL from archive" — it lives in the tables tool now
Instantiating deliverable yamls from existing archive files is an MDL-side
workflow (assigning files to deliverables stays here; registering tracking
numbers belongs with the MDL). It moved to the tables tool's project MDL
rollup in the prior commit, so remove the classifier copy:

- delete classifier/js/mdl-instantiate.js + its build entry
- remove the ⊞ MDL from archive header button + its app.js wiring
- drop the two mdl-instantiate unit tests (the equivalents now live in
  tests/tables-mdl.spec.js)

The read-only Catalog button (MDL ∪ archive, drop-to-assign) is unaffected.
Classifier + classify suites: 58 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 15:50:16 -05:00
93f1eb8d63 refactor(seltable): promote to shared/ with per-column autofilters
Move classifier/js/seltable.js → shared/seltable.js so both the classifier and
the tables tool can use it (the MDL realignment splits work across both). Adds
per-column autofilter inputs (one per column, AND-combined) on top of the
programmatic global filter; selection + select-filtered + ctrl-Enter unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 14:40:56 -05:00
Me Here
2bc582fd9e ZDDC: document-control tools + zddc-server 2026-06-11 13:32:31 -05:00