Files
pad/web/e2e
xarmian a40049c214 fix(attachments): meet criteria 1, 3 and 5 as written
Final round, scoped to this phase's six acceptance criteria rather than
to whatever the diff suggested — the previous rounds had started finding
issues in adjacent surfaces, which is the signal that the core had
converged and the review was expanding.

Three of the six were not actually met:

3. Download returned `undefined` for a nameless row, which drops the
   attribute entirely and turns Download back into a navigation. The
   server sends an inline disposition for most types, so the file would
   have OPENED instead of saving — the precise regression this action
   exists to prevent, reachable whenever a chip's metadata is partial.
   The attribute is now always present; empty just lets the browser name
   the file.

5. "A peeked pane offers no delete" was implemented as a visible,
   disabled Delete row. The strip hides its delete control outright in
   the same state, so one object was offering two different affordances
   for one permission depending on which surface you met it through.
   Delete is absent now, with `enabled` and `run` still gating behind it.

   That change surfaced a conflation in the panel: its action context
   ANDed permission with `missing`, so once the descriptor used it to
   decide EXISTENCE, a gone row lost Delete while Open and Download
   stayed present-and-disabled beside it. Permission and reachability are
   separate questions again — the render site already disables every
   action while missing.

1. The editor-chip half of "the same panel wherever you meet an
   attachment" had no end-to-end coverage: the chip's tests mock the bus
   and the host's inject events directly, so nothing exercised a real
   NodeView reaching a real host. Covered now by a browser test that
   drops a text file and clicks the resulting chip.

make check exit 0, 745 unit tests, 6/6 e2e locally.
2026-08-04 21:26:37 +00:00
..