diff --git a/web/src/lib/attachments/actions.ts b/web/src/lib/attachments/actions.ts index 3b7d7601..3ea8e4ca 100644 --- a/web/src/lib/attachments/actions.ts +++ b/web/src/lib/attachments/actions.ts @@ -1,11 +1,19 @@ /** - * Attachment actions — defined once, rendered twice (PLAN-2392 DR-5). + * Attachment actions — defined once, rendered by whoever needs them + * (PLAN-2392 DR-5). * * "The panel and the viewer share one action list" is a promise with no source * of truth unless the list IS the source of truth. So the actions live here as - * descriptors: the options panel draws them as a menu/sheet, the image viewer - * draws them as an inline toolbar, and neither owns the set. Adding an action - * means adding one descriptor here. + * descriptors: a surface renders them, none of them owns the set, and adding an + * action means adding one descriptor here. + * + * TODAY THERE IS ONE CONSUMER: the options panel, which draws them as a + * menu/sheet. The unified image viewer — the second renderer, an inline + * toolbar over the same list — arrives in phase 3a, which is also what will + * consume the `address` option now threaded onto the image NodeView. Stated + * plainly because "rendered twice" read as a description of the present and + * was not one; a list with a single consumer is a shape held open on purpose, + * and worth re-justifying if 3a ever stops coming. * * TWO DESCRIPTOR SHAPES, not one, because the ELEMENT is part of the contract * (DR-5, round 35/36): diff --git a/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte b/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte index 9dcae214..21034090 100644 --- a/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte +++ b/web/src/lib/components/attachments/AttachmentDeleteConfirm.svelte @@ -28,13 +28,18 @@ the app's existing behaviours on both surfaces rather than a second implementation. - The PROMPT TEXT is `attachmentDeletePrompt` below, shared for the same - reason the markup is: the hedged arm's honesty is the substance of DR-5, and - two copies of it drift. + The PROMPT TEXT lives in this module too, but note there are TWO builders, + not one: `attachmentDeletePrompt` for an item surface, which can check the + body it has and must hedge about the ones it cannot, and + `workspaceAttachmentDeletePrompt` for the workspace-wide storage list, where + a reference check would be meaningless and the honest thing to say is what + happens to the blob. Different questions, so different copy — deliberately. + What must not drift is that BOTH are written here, next to each other, where + a change to one is read alongside the other. -->