Mockup blocks.html: block registry behind / and Insert, and embeds (#471) [mockup, do not merge] #491

Closed
kayg wants to merge 4 commits from issue/471-blocks-mockup-2 into dev
Owner

Mockup, do not merge. Nothing merges until kayg approves (#471).

One registry of block actions behind the / menu and the bottom bar's Insert sheet, and embeds of notes, parts of notes, photos and files. Live on preview: https://preview.calternal.cloud/blocks.html#/note/blocks-and-embeds?list=all

  • File form for embeds, as kayg decided: ![Title](<path.md>) and ![Title](<path.md#Heading>). Triggers: ![[, !@, ![](), /embed.
  • The shared inline picker has a Link | Embed switch (tap or Cmd/Ctrl+E); a link's menu offers "Show as embed", an embed's "Show as link".
  • Stacked on the links mockup commits (#448, #449, #450), which are the first three commits here.
  • Evidence, survey and questions are on #471.

🤖 Generated with Claude Code

https://claude.ai/code/session_019QGa6qjALuHyi8H1naGp6b

**Mockup, do not merge.** Nothing merges until kayg approves (#471). One registry of block actions behind the `/` menu and the bottom bar's Insert sheet, and embeds of notes, parts of notes, photos and files. Live on preview: https://preview.calternal.cloud/blocks.html#/note/blocks-and-embeds?list=all - File form for embeds, as kayg decided: `![Title](<path.md>)` and `![Title](<path.md#Heading>)`. Triggers: `![[`, `!@`, `![]()`, `/embed`. - The shared inline picker has a Link | Embed switch (tap or Cmd/Ctrl+E); a link's menu offers "Show as embed", an embed's "Show as link". - Stacked on the links mockup commits (#448, #449, #450), which are the first three commits here. - Evidence, survey and questions are on #471. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019QGa6qjALuHyi8H1naGp6b
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
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
- Links sit in the sentence like words: no gap before the punctuation after a link
  (the pill's room is cancelled by an equal negative margin, so hover and the caret
  still never move a word).
- No links summary above a note's title; "Linked here" stays at the end of the note.
- Safari's bars no longer change colour on page changes: one theme-color writer that
  copies the root's edge colour, data-edge on the phone stack, and the app's floor
  under the page, so the sky never shows below a note (keyboard, toolbar, slides).
- Pickers and cards close on navigation, on a click elsewhere and when the caret
  leaves the trigger.
- The Trash card shows the note itself (the approved peek); the plain card is a fallback.
- Cards, pickers and the ink handle and pill use the shared floating glass from #319
  (glass.css, Glass.svelte and its tokens, taken from origin/issue/319-one-glass).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Yyy8fQGxPLkLa8v8NXz7T
Mockup blocks.html: one registry of block actions behind / and Insert, and embeds (#471)
Some checks failed
CI / server (pull_request) Successful in 24s
CI / rust (pull_request) Successful in 1m56s
CI / web (pull_request) Failing after 57m30s
760ba47eeb
One list of block actions (headings, lists, task, quote, code, table, divider, note box,
embed a note, link to a note, photo or file, day link, tag, time-log line). Each is a plugin
file under src/blocks/plugins and has a label, icon, keywords, the markdown it writes and an
optional typed shortcut. The `/` menu (opens at the start of a block or after a space, never
inside "and/or") and the bottom bar's Insert sheet both read it.

Embeds: `![Title](<Note.md>)` and `![Title](<Note.md#Heading>)` render the note, or one part
of it, as a glass card with an open arrow. A note that was never written, is in the Trash or
was deleted for good reuses the links' looks (#448). Photos and files show as media cards.

The shared inline picker gets a Link | Embed switch (tap, or Cmd+E, no motion from the
keyboard). `[[` and `@` start a link; `![[`, `!@`, `![]()` and `/embed` start an embed. A
link's menu offers "Show as embed", an embed's "Show as link".

Also: the picker follows its line when the page scrolls or a picture loads, a space after a
picked link survives the next key in Chromium, `####`, `---` and a code fence work as
typed shortcuts, and an embed counts as a link in "Linked here".

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QGa6qjALuHyi8H1naGp6b
Author
Owner

Closing per #931: the block registry mockup was ported via #853.

Closing per #931: the block registry mockup was ported via #853.
kayg closed this pull request 2026-11-04 17:37:12 +00:00
Some checks failed
CI / server (pull_request) Successful in 24s
CI / rust (pull_request) Successful in 1m56s
CI / web (pull_request) Failing after 57m30s

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!491
No description provided.