docs: redesign v0.1 screen as side panel + writing column

Replace the header/status-bar layout with a full-height writing column
plus an always-visible side panel holding all metadata. Canonicalize the
new region vocabulary in CONTEXT.md (Writing column, Side panel) and retire
header / status line / edit area as terms-to-avoid.

Consequent sweeps: rewrite the Error UX section in side-panel terms and
give keyboard-disconnect a home (⌨ ✗, disconnect-only); drop the "line N"
readout; reconcile the render module ops and region shadow; sweep the
status-line/edit-area wording across the technical, roadmap, qfd, notes,
README, and ADR-003 docs (incl. the ~11→~13 line-count figure).
This commit is contained in:
Julien Calixte
2026-07-05 17:27:25 +02:00
parent d3fd6f6ed1
commit a848c05afa
8 changed files with 100 additions and 61 deletions

View File

@@ -135,9 +135,11 @@ Custom widget layer on `embedded-graphics` —
Owns the top-ranked engineering functions (latency, refresh-region area)
in [qfd.md §3](qfd.md#3-house-of-quality--whats--hows).
- A render request is a `RenderOp { Lines(range) | Status(text) | FullRefresh }`.
- A render request is a `RenderOp { Lines(range) | Panel(field, text) | FullRefresh }`.
The **side panel** is multi-field (Spike 8), so the old single `Status(text)`
op becomes a per-field write; the exact field enum is what Spike 8 decides.
- The render thread maintains a shadow of the current screen contents per
region (header / edit area lines / status).
region (**writing-column** lines / **side-panel** fields).
- For `Lines(range)`: clear the region's bounding box, draw glyphs, partial
refresh that rect.
- Glyph cache: rasterised mono font kept in PSRAM; one entry per (codepoint).
@@ -165,7 +167,7 @@ Storage split rationale:
[qfd.md H13](qfd.md#6-critical-performance-budget).
- **Bring-up on `Ctrl-G`.** `wifi_task` transitions `Off → Associating →
Connected`. Association timeout: 10 s. If association fails, the local
commit is preserved and the status line shows ``; no background retry.
commit is preserved and the side panel's Wi-Fi field shows ``; no background retry.
- **Grace window** of ~90 s after a Publish completes. A `Ctrl-G` inside
the window reuses the connection (no second association cost). If no
Publish fires before the window expires, the radio tears down.
@@ -202,8 +204,8 @@ PSRAM heap during push is a top-3 watched metric — see
prefix; the timestamp _is_ the message)
- push HEAD to `origin/<current branch>`
- on push failure: `git pull --no-edit` (merge), then retry the push once.
Only surface failure to the status line if the pull conflicts or the
second push also fails.
Only surface failure to the side panel's publish-state field if the pull
conflicts or the second push also fails.
- The PAT is loaded into the Authorization header per request; never logged.
- The whole sequence is atomic from the user's view — see
[`CONTEXT.md` → Publish](../CONTEXT.md#user-facing-actions).