Audit: deep links and Copy link coverage for every item type #861

Open
opened 2026-10-02 16:47:32 +00:00 by kayg · 3 comments
Owner

CLAUDE.md 'Deep links' and DESIGN §33: every part of the UI is deep-linkable and every item has Copy link (context menu, ⋯ menu, touch swipe, header copy button), using stable identities (calternal-id, item ID, block ID), never paths. Build a matrix: item type (modes, sub-views, days, weeks, log entries, notes, headings/blocks, files, folders, photos, albums, events, tasks, tags, saved searches, search queries, settings sections, admin pages, shares, mail messages, voice memos, money items) × (route exists, Copy link in context menu, ⋯ menu, swipe, header; link uses stable ID; opening restores the exact view). Known: folder IDs change on child writes (#627, job dirid-627). File one issue per gap group.

Read-only job (LIGHT class)

This job runs at the lowest CPU priority on a shared, overloaded build host. Do not build or test: no cargo build/test/clippy/check, no bun install/build/test/run check, no servers, no browsers. Use rg, sed, git, scripts/fj, and reading. Write findings to audit-findings.md at the worktree root as you go (append per finding) and commit it on your branch. For each real defect: search existing issues first (scripts/fj --host https://git.kayg.org issue search --repo kayg/calternal "<terms>"), then either add evidence to the existing issue or create one self-contained issue (title, evidence with file:line, owner rule or DESIGN section, expected behaviour, test idea) that a later build job can own. Group findings that share one fix into one issue (one owner per shared fix). No product code changes. Post a summary with the list of issues on your own issue. Docs use ASD-STE100 Simplified Technical English.

CLAUDE.md 'Deep links' and DESIGN §33: every part of the UI is deep-linkable and every item has Copy link (context menu, ⋯ menu, touch swipe, header copy button), using stable identities (calternal-id, item ID, block ID), never paths. Build a matrix: item type (modes, sub-views, days, weeks, log entries, notes, headings/blocks, files, folders, photos, albums, events, tasks, tags, saved searches, search queries, settings sections, admin pages, shares, mail messages, voice memos, money items) × (route exists, Copy link in context menu, ⋯ menu, swipe, header; link uses stable ID; opening restores the exact view). Known: folder IDs change on child writes (#627, job dirid-627). File one issue per gap group. ## Read-only job (LIGHT class) This job runs at the lowest CPU priority on a shared, overloaded build host. **Do not build or test**: no `cargo build/test/clippy/check`, no `bun install/build/test/run check`, no servers, no browsers. Use `rg`, `sed`, `git`, `scripts/fj`, and reading. Write findings to `audit-findings.md` at the worktree root as you go (append per finding) and commit it on your branch. For each real defect: search existing issues first (`scripts/fj --host https://git.kayg.org issue search --repo kayg/calternal "<terms>"`), then either add evidence to the existing issue or create one self-contained issue (title, evidence with file:line, owner rule or DESIGN section, expected behaviour, test idea) that a later build job can own. Group findings that share one fix into one issue (one owner per shared fix). No product code changes. Post a summary with the list of issues on your own issue. Docs use ASD-STE100 Simplified Technical English.
Author
Owner

Starting the read-only deep link audit on branch job/deeplink-audit2, based on origin/dev at 440e19dce23040ac8ebaae88f0469b6535b1afcb. I will record file and line evidence in audit-findings.md. I will not build or test.

Starting the read-only deep link audit on branch `job/deeplink-audit2`, based on origin/dev at `440e19dce23040ac8ebaae88f0469b6535b1afcb`. I will record file and line evidence in `audit-findings.md`. I will not build or test.
Author
Owner

Coverage evidence from the #865 audit: the /tags index has no E2E user-flow check. apps/web/src/routes/tags/+page.svelte:37-42 shows tag rows as links and Copy link actions. The current tests open detail routes directly (apps/web/e2e/shell.mjs:591-597, apps/web/e2e/deeplinks.mjs:554-559); the accessibility sweep uses /tags/a11y (apps/web/e2e/a11y.mjs:19). No test visits the index, selects a row and checks the destination or copies that row's link.

Test idea: create a real tagged Note or Log through the app, open /tags, activate its row with pointer and keyboard, check the resulting tag items, and copy the row link. This is a coverage gap related to the tag route and Copy link matrix in this issue, not a report of a product defect.

Coverage evidence from the #865 audit: the `/tags` index has no E2E user-flow check. `apps/web/src/routes/tags/+page.svelte:37-42` shows tag rows as links and Copy link actions. The current tests open detail routes directly (`apps/web/e2e/shell.mjs:591-597`, `apps/web/e2e/deeplinks.mjs:554-559`); the accessibility sweep uses `/tags/a11y` (`apps/web/e2e/a11y.mjs:19`). No test visits the index, selects a row and checks the destination or copies that row's link. Test idea: create a real tagged Note or Log through the app, open `/tags`, activate its row with pointer and keyboard, check the resulting tag items, and copy the row link. This is a coverage gap related to the tag route and Copy link matrix in this issue, not a report of a product defect.
Author
Owner

Read-only deep-link audit complete.

Branch: job/deeplink-audit2
Base: 440e19dce23040ac8ebaae88f0469b6535b1afcb
Head: d7ca097d67d97835796f096afff4cc438ebfa713
Report: audit-findings.md

The coverage matrix includes every requested item type and separates route, context menu, ⋯, touch swipe, header, stable identity and exact-view restore. It records six focused gaps:

  • #878 — direct current-view Copy link is missing from several view headers.
  • #879 — Calendar attachment cards cannot copy a link to the attached File, Note or voice memo.
  • #880 — internal Share grants and the Share manager lack their own Copy link actions.
  • #881 — heading links change when heading text changes.
  • #882 — File links do not restore the Inspector open state.
  • #884 — plugin, admin User and open Invitation rows have no item links.

I added source evidence to existing issues #55 (Task IDs), #592 (Albums), #627 (folder IDs), #773 (Search same-route state), and #863 (stale saved-search route comment). I also posted a cross-reference summary to #167. #878 and #879 include coordination notes for #581 and #427/#620.

UX gaps closed: none; this was a read-only audit.
UX gaps left: #878, #879, #880, #881, #882, #884, plus existing #55, #592, #627 and #773.

Gate output (verbatim status): NOT RUN — read-only job prohibits builds and tests.
No build, test, server, browser or screenshot run. No product files were changed.

Decisions: I left DESIGN §33's heading-slug grammar unchanged despite its conflict with the stable-link rule; #881 records the owner decision needed. I filed Inspector URL state in #882 because the current inventory treats it as a browser preference while DESIGN §33 requires exact-view restore. Albums and a standalone Tasks Tab are not built; I did not report either as a broken existing route.

Read-only deep-link audit complete. Branch: `job/deeplink-audit2` Base: `440e19dce23040ac8ebaae88f0469b6535b1afcb` Head: `d7ca097d67d97835796f096afff4cc438ebfa713` Report: `audit-findings.md` The coverage matrix includes every requested item type and separates route, context menu, `⋯`, touch swipe, header, stable identity and exact-view restore. It records six focused gaps: - #878 — direct current-view Copy link is missing from several view headers. - #879 — Calendar attachment cards cannot copy a link to the attached File, Note or voice memo. - #880 — internal Share grants and the Share manager lack their own Copy link actions. - #881 — heading links change when heading text changes. - #882 — File links do not restore the Inspector open state. - #884 — plugin, admin User and open Invitation rows have no item links. I added source evidence to existing issues #55 (Task IDs), #592 (Albums), #627 (folder IDs), #773 (Search same-route state), and #863 (stale saved-search route comment). I also posted a cross-reference summary to #167. #878 and #879 include coordination notes for #581 and #427/#620. UX gaps closed: none; this was a read-only audit. UX gaps left: #878, #879, #880, #881, #882, #884, plus existing #55, #592, #627 and #773. Gate output (verbatim status): `NOT RUN — read-only job prohibits builds and tests.` No build, test, server, browser or screenshot run. No product files were changed. Decisions: I left DESIGN §33's heading-slug grammar unchanged despite its conflict with the stable-link rule; #881 records the owner decision needed. I filed Inspector URL state in #882 because the current inventory treats it as a browser preference while DESIGN §33 requires exact-view restore. Albums and a standalone Tasks Tab are not built; I did not report either as a broken existing route.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#861
No description provided.