wrolpi/app/src/components/collections
Roland 4a51662714
review: the scan the first two commits needed
Five findings, all valid.  The substantive one: the video page's Download /
Delete / Refresh / AddToPlaylist strip was still four bare buttons in a `<p>` --
the direct analogue of the archive row this PR started with -- and the scan that
was supposed to catch exactly that reported the app clean.

It only ever saw `{fooButton}` interpolations, and most of the app writes its
buttons out in place.  Scanning for adjacent button ELEMENTS finds twelve more
rows in the same state: reorder icons in the playlist and field-schema tables,
both service tables on the controller page, its hotspot Save/QR pair and its
Restart/Shutdown pair, the downloads footer, the one-time pad's Generate/Cheat
Sheet, and the ration calculator's CSV/Print.  All rowed.

Two holes had to be closed before that scan could be trusted, because a scan
that reports noise is worse than one with a stated limit:

  - `tagsIn` never captured the tag NAME, so `ROW_COMPONENTS.has(undefined)` was
    false for every tag and the list of components that lay out their own
    children -- Group, ButtonGroup, Modal.Actions -- silently accepted none of
    them.  56 false positives, every modal footer in the app among them.
  - A row whose style is a const (`style={seasonRowStyle}`) says nothing in its
    own attributes.  Resolved now; the dates selector's seasons row is a
    four-column grid with a gap and was reported three times.

Also from review: the row body is found by walking to the MATCHING close rather
than the first `</div>`, which one nested div would have truncated -- and the
collection form now nests one, so this was about to matter.  Cancel and Save
travel together in a row of their own pushed to the end; `margin-left: auto` on
Save alone was right for a row that could not wrap, and would now drop Save onto
a second line by itself with Cancel left among the action buttons.  The doc
page's comment no longer implies the picker's 1em separation was not a change.

One more found on the way: the file browser's filter row is flex with no gap, and
its collapse-all button carried `margin-left: 0.5em` for it.  The gap is the
container's.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 18:05:53 -06:00
..
BatchReorganizeModal.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-08 18:04:01 -06:00
BatchReorganizeModal.test.js build: uninstall Semantic UI 2026-08-08 18:04:03 -06:00
CollectionEditForm.js review: the scan the first two commits needed 2026-08-08 18:05:53 -06:00
CollectionEditForm.test.js ui: a row of buttons is spaced by the row 2026-08-08 18:05:52 -06:00
CollectionReorganizeModal.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-08 18:04:01 -06:00
CollectionReorganizeModal.test.js build: uninstall Semantic UI 2026-08-08 18:04:03 -06:00
CollectionTable.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-08 18:04:01 -06:00
CollectionTable.test.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-08 18:04:01 -06:00
CollectionTagModal.js ui: only the top modal answers Escape, and the audited widths 2026-08-08 18:05:49 -06:00
CollectionTagModal.test.js ui: Common.js and thirteen more files off Semantic 2026-08-08 18:04:00 -06:00
ConflictResolutionModal.js ui: thirty-five files off Semantic, leaving fifteen 2026-08-08 18:04:01 -06:00
ConflictResolutionModal.test.js build: uninstall Semantic UI 2026-08-08 18:04:03 -06:00