Mockup, do not merge: links to missing notes, tag picker, contrast (#448, #449, #450) #453

Closed
kayg wants to merge 2 commits from issue/448-links-mockup into dev
Owner

Mockup, do not merge. Nothing here goes into the app until kayg approves the mockup on #448, #449 and #450.

One preview page, https://preview.calternal.cloud/links.html, with switchable variants on the Mockup pill and in the URL. It follows kayg's answers (L1–L6, T1–T3, C1–C3).

  • #448, links to missing notes. A click (or ⌘↵ inside the link) on a note that was never written makes it at the link's path and opens it, with "Made '…' · Undo". A note in the Trash opens a card with Restore and Open (read-only, in place). A note deleted for good opens a card with Create a new note and Remove link (the words stay). A file moved outside the app is found by its id, and its link is quietly updated ("Link updated"). Every link starts with a kind icon (note, day, photo, file). Switches: missing=icondim|icon|fade|dim and trash=replace|beside. No underlines.
  • #449, tag picker. Typing # gets the same glass picker as [[ / @. It shows prefix matches first, then fuzzy ones, completes one level at a time, and shows counts. Enter and Tab accept, Space keeps typing, Esc closes. Switches: trigger=after1|immediate and tagrow=count|plain.
  • #450, contrast. Switches: chip=icon-accent|icon-ink|neutral|current (the pill appears only on hover or with the caret inside), handle=ink|white|current (ink sits on #319's dense glass, copied until it lands), and over=paper|photo. scripts/links-contrast.mjs measures every look against what is really behind it and writes the table that the Mockup pill shows.

Code: apps/mockup/src/links/ (small files), plus hooks in the mockup's Editor, md reader and route. packages/ui/src/lib/dom.ts now keeps [[Title]] as it was written. Tests: apps/mockup/tests/links.spec.ts, flows and screenshots at 320/360/375/390/900/1440, light and dark, in Chromium and WebKit.

🤖 Generated with Claude Code

https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T

**Mockup, do not merge.** Nothing here goes into the app until kayg approves the mockup on #448, #449 and #450. One preview page, https://preview.calternal.cloud/links.html, with switchable variants on the Mockup pill and in the URL. It follows kayg's answers (L1–L6, T1–T3, C1–C3). - **#448, links to missing notes.** A click (or ⌘↵ inside the link) on a note that was never written makes it at the link's path and opens it, with "Made '…' · Undo". A note in the Trash opens a card with Restore and Open (read-only, in place). A note deleted for good opens a card with Create a new note and Remove link (the words stay). A file moved outside the app is found by its id, and its link is quietly updated ("Link updated"). Every link starts with a kind icon (note, day, photo, file). Switches: `missing=icondim|icon|fade|dim` and `trash=replace|beside`. No underlines. - **#449, tag picker.** Typing `#` gets the same glass picker as `[[` / `@`. It shows prefix matches first, then fuzzy ones, completes one level at a time, and shows counts. Enter and Tab accept, Space keeps typing, Esc closes. Switches: `trigger=after1|immediate` and `tagrow=count|plain`. - **#450, contrast.** Switches: `chip=icon-accent|icon-ink|neutral|current` (the pill appears only on hover or with the caret inside), `handle=ink|white|current` (ink sits on #319's dense glass, copied until it lands), and `over=paper|photo`. `scripts/links-contrast.mjs` measures every look against what is really behind it and writes the table that the Mockup pill shows. Code: `apps/mockup/src/links/` (small files), plus hooks in the mockup's Editor, md reader and route. `packages/ui/src/lib/dom.ts` now keeps `[[Title]]` as it was written. Tests: `apps/mockup/tests/links.spec.ts`, flows and screenshots at 320/360/375/390/900/1440, light and dark, in Chromium and WebKit. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Mockup only, do not merge. One page with switchable variants:
- #448: a link to a never-written note makes it at the link's path and opens it
  (Made "…" · Undo); Trash card (Restore, Open read-only in place); deleted-for-good
  card (Create a new note, Remove link); a file moved outside the app is found by id
  and its link quietly updated; ⌘↵ in a link does what a click does. Every link leads
  with a kind icon (note, day, photo, file); missing=icondim|icon|fade|dim,
  trash=replace|beside. No underlines.
- #449: `#` opens the same glass picker as `[[`/`@`: prefix then fuzzy, one level at a
  time, counts; Enter/Tab accept, Space keeps typing, Esc closes; trigger=after1|immediate,
  tagrow=count|plain.
- #450: chip=icon-accent|icon-ink|neutral|current (pill only on hover or caret),
  handle=ink|white|current on #319's dense glass, over=paper|photo; contrast measured
  by scripts/links-contrast.mjs and shown in the Mockup pill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Mockup links.html: picked links get their kind icon; no ring on the note text (#448, #449)
Some checks failed
CI / server (pull_request) Successful in 59s
CI / rust (pull_request) Successful in 2m30s
CI / web (pull_request) Failing after 47m17s
e51083b921
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Author
Owner

Replaced by #457 (the approval round needed new commits, and the forge ignores pushes to an open PR).

Replaced by #457 (the approval round needed new commits, and the forge ignores pushes to an open PR).
kayg closed this pull request 2026-10-15 20:29:46 +00:00
Some checks failed
CI / server (pull_request) Successful in 59s
CI / rust (pull_request) Successful in 2m30s
CI / web (pull_request) Failing after 47m17s

Pull request closed

Sign in to join this conversation.
No reviewers
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!453
No description provided.