Move each version's scope checklist and status out of the monolithic macroplan into a dedicated docs/vX.Y-<slug>.md page; macroplan keeps the source block, the rollup status, and a one-line summary + link per version. v0.1 reuses its existing product/technical pages. Also drop the "Optional column ruler at 80" requirement from v0.6.
2.3 KiB
2.3 KiB
v0.6 — Markdown affordances
Part of the Typoena macro plan. Requirements and targets: qfd.md. Load-bearing decisions: adr.md.
Status: render affordances done early; the snippet engine remains (snippets are net-new scope, added 2026-07-08).
- Heading lines bolded in render (faux-bold double-strike)
- List continuation on Enter inside
-/1.(with empty-item exit) - Soft-wrap at word boundaries
- Snippets — trigger-driven text expansion for Markdown authoring
(Zed-inspired, but no completion popup: e-ink's ~630 ms refresh rules out
a live filtering menu, and it fights the distraction-free premise). Shape,
mirroring the existing
list_markerinsert-transform:- Tab in Insert mode triggers expansion: if the word immediately before
the caret matches a snippet prefix, expand it; otherwise insert spaces
as today (
expand_snippet(word) -> Option<(body, stops)>, alongsidelist_marker). - A snippet body is literal text plus numbered empty tab stops
$1 … $nand a final$0. There is no placeholder text (${1:label}) — the editor has no selection/overtype model, so a placeholder would just be text to delete. There are no dynamic or computed values either (e.g. nodate— there's no RTC; the wall clock is valid only after Wi-Fi+SNTP, so it'd stamp 1970 on a cold boot). - After expansion the caret lands on
$1; Tab advances to the next stop, forward only (no Shift-Tab). Stored stop offsets shift with edits at the caret (all pending stops are always after it). The session auto-aborts on Esc, a mode change, or a motion that leaves the stops. - On a typing pause (same throttle as the insert cursor / word-count refresh — the panel never repaints per keystroke), if the word before the caret is a snippet prefix, the side panel shows the hint (the target expansion). Quiet while typing; the hint appears on pause.
- The snippet table is hard-coded in the binary to start; a git-syncable
file on SD (
/sd/repo/.snippets) is a later option, deferred while SD is still blocked. - Starter set: link
[$1]($2)$0, image$0, fenced code block, etc.
- Tab in Insert mode triggers expansion: if the word immediately before
the caret matches a snippet prefix, expand it; otherwise insert spaces
as today (