riyadhafraa
9a8dc3175f
Task #512 : Per-recipient Delete in Notes Inbox
...
Adds a recipient-scoped delete that's distinct from Archive: a recipient
can remove a note from their own inbox without touching the underlying
note or other recipients' rows.
Backend (artifacts/api-server/src/routes/notes.ts):
- DELETE /notes/received/:id — recipient-only; 404 if no row.
- POST /notes/received/bulk-delete — body {ids:number[]}, max 500,
single SQL DELETE, returns {ok, notFound} for partial-success UI.
- Both registered before DELETE /notes/:id so Express matches /received
first.
Frontend (artifacts/tx-os):
- New hooks useDeleteReceivedNote / useBulkDeleteReceivedNotes in
src/lib/notes-api.ts; both invalidate notes + folders queries.
- Inbox bulk bar: Delete button (rose) next to Archive plus a confirm
AlertDialog with all/none/partial toasts.
- Inbox card: per-row Trash button next to the status badge with a
page-level confirm AlertDialog (testid inbox-row-delete-confirm).
- ThreadDialog: per-row Delete next to Archive plus a confirm dialog
that closes the thread on success.
- AR + EN locale strings added for all new copy.
Tests:
- artifacts/api-server/tests/notes-inbox-delete.test.mjs — recipient
delete, non-recipient/sender 404, bulk mix of valid+missing ids, and
DB-level checks that the note + other recipients survive.
- artifacts/tx-os/tests/notes-inbox-bulk-delete.spec.mjs — Playwright
flow seeds three received notes, bulk-deletes two from the inbox,
then deletes the third via the per-row card Delete button.
2026-05-12 11:18:00 +00:00
..
2026-05-11 18:30:03 +00:00
2026-04-22 10:53:54 +00:00
2026-05-03 19:01:50 +00:00
2026-04-27 11:46:39 +00:00
2026-05-01 18:57:48 +00:00
2026-05-04 06:13:12 +00:00
2026-04-21 17:37:46 +00:00
2026-04-21 17:50:23 +00:00
2026-04-21 18:00:59 +00:00
2026-04-21 18:00:59 +00:00
2026-04-21 18:02:45 +00:00
2026-04-22 06:42:23 +00:00
2026-04-22 10:57:10 +00:00
2026-04-27 09:06:23 +00:00
2026-04-27 11:11:43 +00:00
2026-04-27 11:28:14 +00:00
2026-04-28 08:02:41 +00:00
2026-04-28 09:03:59 +00:00
2026-04-28 20:58:08 +00:00
2026-04-28 21:03:02 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 07:09:50 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 12:22:40 +00:00
2026-04-29 12:22:40 +00:00
2026-04-29 13:24:16 +00:00
2026-04-29 14:52:25 +00:00
2026-04-29 17:36:32 +00:00
2026-04-29 17:36:32 +00:00
2026-04-29 18:22:49 +00:00
2026-04-29 18:35:49 +00:00
2026-04-29 18:51:11 +00:00
2026-04-29 18:57:26 +00:00
2026-04-29 19:13:34 +00:00
2026-04-29 19:13:34 +00:00
2026-04-29 19:28:13 +00:00
2026-04-30 05:52:39 +00:00
2026-04-30 06:39:45 +00:00
2026-04-30 07:25:15 +00:00
2026-04-30 09:28:56 +00:00
2026-04-30 09:57:18 +00:00
2026-04-30 11:20:30 +00:00
2026-04-30 12:20:50 +00:00
2026-04-30 12:47:50 +00:00
2026-04-30 12:47:50 +00:00
2026-04-30 18:07:52 +00:00
2026-04-30 18:07:52 +00:00
2026-04-30 18:29:42 +00:00
2026-05-01 07:43:38 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 09:01:21 +00:00
2026-05-01 13:12:00 +00:00
2026-05-01 14:23:01 +00:00
2026-05-01 15:03:18 +00:00
2026-05-01 15:03:18 +00:00
2026-05-01 15:24:59 +00:00
2026-05-01 15:24:59 +00:00
2026-05-01 18:00:00 +00:00
2026-05-01 18:23:29 +00:00
2026-05-01 18:37:16 +00:00
2026-05-01 18:46:35 +00:00
2026-05-01 18:57:48 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 21:30:16 +00:00
2026-05-01 21:30:16 +00:00
2026-05-02 08:39:00 +00:00
2026-05-02 09:03:03 +00:00
2026-05-02 09:34:57 +00:00
2026-05-02 10:32:39 +00:00
2026-05-03 06:22:54 +00:00
2026-05-03 08:01:55 +00:00
2026-05-03 09:35:43 +00:00
2026-05-03 09:35:43 +00:00
2026-05-03 09:47:11 +00:00
2026-05-03 10:00:45 +00:00
2026-05-03 10:06:28 +00:00
2026-05-03 10:09:29 +00:00
2026-05-03 10:51:13 +00:00
2026-05-03 10:51:13 +00:00
2026-05-03 11:19:56 +00:00
2026-05-03 11:33:43 +00:00
2026-05-03 11:49:10 +00:00
2026-05-03 11:49:10 +00:00
2026-05-03 11:53:52 +00:00
2026-05-03 12:05:52 +00:00
2026-05-03 12:05:52 +00:00
2026-05-03 12:05:55 +00:00
2026-05-03 12:39:01 +00:00
2026-05-03 12:39:01 +00:00
2026-05-03 12:48:03 +00:00
2026-05-03 12:48:03 +00:00
2026-05-03 12:49:15 +00:00
2026-05-03 12:49:59 +00:00
2026-05-03 12:59:13 +00:00
2026-05-03 13:54:24 +00:00
2026-05-03 14:34:29 +00:00
2026-05-03 15:06:14 +00:00
2026-05-03 15:26:38 +00:00
2026-05-03 15:26:38 +00:00
2026-05-03 15:55:29 +00:00
2026-05-03 15:55:29 +00:00
2026-05-03 16:02:10 +00:00
2026-05-03 17:43:07 +00:00
2026-05-03 17:43:07 +00:00
2026-05-03 18:37:48 +00:00
2026-05-03 19:17:44 +00:00
2026-05-03 19:27:11 +00:00
2026-05-03 19:38:33 +00:00
2026-05-04 06:34:58 +00:00
2026-05-04 06:44:02 +00:00
2026-05-04 07:03:37 +00:00
2026-05-04 07:15:12 +00:00
2026-05-04 07:50:43 +00:00
2026-05-04 08:09:03 +00:00
2026-05-04 10:59:48 +00:00
2026-05-04 11:57:42 +00:00
2026-05-04 13:02:49 +00:00
2026-05-04 13:06:45 +00:00
2026-05-04 13:22:13 +00:00
2026-05-04 13:22:13 +00:00
2026-05-04 14:06:03 +00:00
2026-05-04 14:20:12 +00:00
2026-05-04 15:57:11 +00:00
2026-05-04 16:01:59 +00:00
2026-05-04 16:04:55 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:15:49 +00:00
2026-05-04 16:22:41 +00:00
2026-05-04 17:50:11 +00:00
2026-05-04 17:55:36 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:27:21 +00:00
2026-05-05 07:35:42 +00:00
2026-05-05 07:35:42 +00:00
2026-05-05 07:41:57 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 09:47:06 +00:00
2026-05-05 13:25:49 +00:00
2026-05-05 14:18:33 +00:00
2026-05-05 14:25:31 +00:00
2026-05-06 07:08:39 +00:00
2026-05-06 08:48:23 +00:00
2026-05-06 09:25:10 +00:00
2026-05-06 10:19:47 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 08:39:14 +00:00
2026-05-07 08:55:19 +00:00
2026-05-07 09:13:11 +00:00
2026-05-07 10:09:56 +00:00
2026-05-07 10:09:56 +00:00
2026-05-07 15:04:10 +00:00
2026-05-07 15:10:51 +00:00
2026-05-09 10:40:30 +00:00
2026-05-10 07:23:51 +00:00
2026-05-10 07:23:51 +00:00
2026-05-10 07:33:02 +00:00
2026-05-10 08:55:52 +00:00
2026-05-10 09:28:51 +00:00
2026-05-10 09:42:53 +00:00
2026-05-10 11:07:15 +00:00
2026-05-10 13:46:22 +00:00
2026-05-10 13:59:26 +00:00
2026-05-10 13:59:26 +00:00
2026-05-10 14:05:06 +00:00
2026-05-10 14:11:23 +00:00
2026-05-10 14:11:23 +00:00
2026-05-10 14:19:56 +00:00
2026-05-10 14:39:35 +00:00
2026-05-10 15:22:45 +00:00
2026-05-10 15:27:40 +00:00
2026-05-10 15:33:55 +00:00
2026-05-10 15:33:55 +00:00
2026-05-10 16:00:33 +00:00
2026-05-11 07:56:19 +00:00
2026-05-11 07:56:19 +00:00
2026-05-11 07:56:19 +00:00
2026-05-11 07:59:41 +00:00
2026-05-11 10:23:45 +00:00
2026-05-11 10:23:45 +00:00
2026-05-11 14:06:04 +00:00
2026-05-11 14:35:19 +00:00
2026-05-11 14:35:19 +00:00
2026-05-11 15:02:35 +00:00
2026-05-11 15:31:39 +00:00
2026-05-11 15:47:37 +00:00
2026-05-11 18:30:03 +00:00
2026-05-12 08:45:58 +00:00
2026-05-12 09:00:51 +00:00
2026-05-12 09:05:51 +00:00
2026-05-12 09:15:17 +00:00
2026-05-12 09:27:57 +00:00
2026-05-12 09:33:57 +00:00
2026-05-12 09:47:05 +00:00
2026-05-12 10:22:30 +00:00
2026-05-12 10:29:59 +00:00
2026-05-12 10:51:31 +00:00
2026-05-12 11:18:00 +00:00
2026-05-01 14:58:31 +00:00
2026-05-01 22:03:02 +00:00
2026-05-01 11:18:40 +00:00
2026-04-27 11:46:39 +00:00
2026-05-05 14:31:00 +00:00
2026-05-04 11:12:09 +00:00
2026-05-04 09:40:36 +00:00
2026-05-04 09:40:36 +00:00
2026-05-04 09:59:03 +00:00
2026-05-04 08:22:32 +00:00
2026-05-04 09:24:37 +00:00
2026-04-21 18:17:39 +00:00
2026-04-22 08:13:45 +00:00
2026-05-03 14:19:06 +00:00
2026-05-03 19:11:49 +00:00
2026-05-04 07:29:50 +00:00
2026-05-05 07:41:57 +00:00
2026-04-27 11:46:39 +00:00