docs(roadmap): mark v0.2.5 + the v0.2 UTF-8 buffer done
International input is hardware-verified (dead-key composer, UTF-8-correct editor, physical Esc -> backtick/tilde). Records the editor's extraction into host-testable crates and the deliberately-dropped side-panel accent marker.
This commit is contained in:
@@ -5,13 +5,16 @@ This file holds the macro-plan (Macroplan block below) and the per-version
|
||||
scope. The user-facing requirements and engineering targets each release feeds
|
||||
into are tracked in [`qfd.md`](qfd.md).
|
||||
|
||||
## Status — synced 2026-07-07
|
||||
## Status — synced 2026-07-11
|
||||
|
||||
The editor **core** (`firmware/src/editor.rs`) has been built 2–3 versions
|
||||
ahead of the device **releases**. No release has shipped: v0.1's hardware gate
|
||||
(SD, splash, wiring the git/save path into the app binary) is still open, even
|
||||
though v0.2 navigation and most of v0.6 Markdown already run. Version numbers
|
||||
are unchanged — they track shippable device releases, not core progress.
|
||||
The editor **core** has been built 2–3 versions ahead of the device
|
||||
**releases**, and is now **extracted into a host-testable `editor` crate** (plus
|
||||
a `display` crate for the panel framebuffer) so `cargo test` exercises it off the
|
||||
xtensa target. No release has shipped: v0.1's hardware gate (SD, splash, wiring
|
||||
the git/save path into the app binary) is still open, even though v0.2
|
||||
navigation, **v0.2.5 international input (hardware-verified 2026-07-11)**, and
|
||||
most of v0.6 Markdown already run. Version numbers are unchanged — they track
|
||||
shippable device releases, not core progress.
|
||||
|
||||
Marks: `[x]` done in core · `[~]` partially done · `[ ]` not started. An
|
||||
inline `(✓)` marks the done half of a split item.
|
||||
@@ -43,6 +46,8 @@ note = "Core work landed early: motions and modes already run; gutter, Ctrl-d/u,
|
||||
name = "v0.2.5 international input"
|
||||
start = 2026-07-20
|
||||
original = 2026-08-03
|
||||
status = "on-track"
|
||||
note = "Done early + hardware-verified 2026-07-11: dead-key accent composer in the keymap crate, editor buffer made UTF-8-correct. Side-panel pending marker dropped by decision (stale before the ~630 ms panel repaint)."
|
||||
|
||||
[[feature]]
|
||||
name = "v0.3 editing"
|
||||
@@ -131,9 +136,10 @@ Out of scope: Vim, palette, multiple files, branches, conflict handling.
|
||||
|
||||
## v0.2 — Vim navigation — [~]
|
||||
|
||||
**Status:** navigation done in core; remaining = `Ctrl-d/u`, the line-number
|
||||
gutter, and the UTF-8 buffer. Shipped early beyond scope: a read-only **View**
|
||||
mode and the full `d`/`c` operator + text-object grammar (see v0.3 / v0.4).
|
||||
**Status:** navigation done in core; the **UTF-8-correct buffer landed
|
||||
2026-07-11** (hardware-verified). Remaining = `Ctrl-d/u` and the line-number
|
||||
gutter. Shipped early beyond scope: a read-only **View** mode and the full
|
||||
`d`/`c` operator + text-object grammar (see v0.3 / v0.4).
|
||||
|
||||
- [x] Mode state machine (Normal / Insert / View), mode indicator in the status strip
|
||||
- [~] Movement: `h j k l`, `w b e`, `0 $`, `gg G` (✓); `Ctrl-d Ctrl-u` remain
|
||||
@@ -141,30 +147,35 @@ mode and the full `d`/`c` operator + text-object grammar (see v0.3 / v0.4).
|
||||
- [x] `Esc` returns to Normal
|
||||
- [ ] Line numbers in the left gutter: relative in Normal mode (current line
|
||||
shown as its absolute number), absolute in Insert mode — Spike 13 first
|
||||
- [ ] Groundwork — UTF-8-correct buffer: caret motions and edits step by
|
||||
character, not byte (drop the ASCII == byte-offset assumption in
|
||||
`editor.rs`), so every motion added here and later stays correct once
|
||||
accented input lands. Done early so it isn't retrofitted across the whole
|
||||
motion/text-object surface. Render font is already ISO-8859-15 (Latin-9),
|
||||
so accented glyphs display.
|
||||
- [x] Groundwork — UTF-8-correct buffer: caret motions and edits step by
|
||||
character, not byte (dropped the ASCII == byte-offset assumption), so every
|
||||
motion stays correct with accented input. **Done 2026-07-11** alongside
|
||||
extracting the editor into a host-testable crate — char-step
|
||||
motions/deletes, byte-vs-char split in `layout`/`caret_rc`, `word_end`/`de`
|
||||
fixed; 15 host tests. Render font is ISO-8859-15 (Latin-9), so accented
|
||||
glyphs display.
|
||||
|
||||
## v0.2.5 — International input — [ ]
|
||||
## v0.2.5 — International input — [x]
|
||||
|
||||
**Status:** not started (depends on the v0.2 UTF-8-correct buffer).
|
||||
**Status:** DONE in core, **hardware-verified 2026-07-11** (typed ç é è ñ on the
|
||||
bench, no crash). US-International dead-key accent composition lives in the
|
||||
`keymap` crate — a `Composer` downstream of the decoder — wired into
|
||||
`usb_kbd.rs` so the editor still receives a single `Key::Char`. Builds on the
|
||||
v0.2 UTF-8-correct buffer and the ISO-8859-15 render font. Host-tested.
|
||||
|
||||
A small focused release between navigation and editing. US-International
|
||||
dead-key accent composition, resolved in the keyboard layer (`usb_kbd.rs`) so
|
||||
the editor still receives a single `Key::Char`. Builds on the v0.2
|
||||
UTF-8-correct buffer and the ISO-8859-15 render font.
|
||||
|
||||
- [ ] Dead keys — grave, acute, circumflex, diaeresis, tilde — compose with
|
||||
- [x] Dead keys — grave, acute, circumflex, diaeresis, tilde — compose with
|
||||
the next letter: à é ê ë ñ, ç (via `'`+c), both cases
|
||||
- [ ] `'`+space emits a literal apostrophe (the everyday apostrophe path); a
|
||||
- [x] `'`+space emits a literal apostrophe (the everyday apostrophe path); a
|
||||
dead key followed by a non-composing letter emits the accent then the
|
||||
letter
|
||||
- [ ] A non-character event (Enter, Backspace, arrows) flushes any pending
|
||||
- [x] A non-character event (Enter, Backspace, arrows) flushes any pending
|
||||
accent as its literal first
|
||||
- [ ] Pending-accent indicator in the side-panel status strip
|
||||
- [ ] ~~Pending-accent indicator in the side-panel status strip~~ — **DROPPED
|
||||
(2026-07-11 decision):** at typing speed it would be stale before the
|
||||
~630 ms panel repaint, so it conveys nothing. Left unbuilt on purpose.
|
||||
- [x] Bonus (2026-07-11): the physical **Esc key** (HID 0x29) now types
|
||||
`` ` ``/`~` — Esc comes from the Caps tap — so grave/tilde accents and
|
||||
Markdown code fences are reachable on a 60% board without a Fn layer.
|
||||
|
||||
## v0.3 — Vim editing — [~]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user