docs(roadmap): replace the mermaid Gantt with Macroplan TOML
The macroplan app parses this source directly; the baseline originals stay fixed and v0.1's slip is expressed as an at-risk status instead of a re-drawn bar.
This commit is contained in:
24
README.md
24
README.md
@@ -57,17 +57,17 @@ each decision is weighted against the user-facing requirements lives in
|
||||
[`docs/qfd.md`](docs/qfd.md); the ontology those docs use is defined in
|
||||
[`GLOSSARY.md`](GLOSSARY.md).
|
||||
|
||||
| Layer | Choice | Notes |
|
||||
| ------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| HAL / runtime | `esp-idf-svc`, `esp-idf-hal` | std build: heap, threads, VFS, mbedtls, Wi-Fi stack. |
|
||||
| Display | Custom SSD1683 driver (`src/epd.rs`) + `embedded-graphics` | Dual-controller 792×272 panel; dirty-rect partial refresh (~630 ms measured). |
|
||||
| UI layer | Custom thin widget layer | Ratatui's API _shape_ without its char-grid terminal model ([ADR-002](docs/adr.md#adr-002-ui-strategy--custom-widgets-on-embedded-graphics-not-ratatui)). |
|
||||
| Editor core | Custom, in-tree (`src/editor.rs`) | Modal (Normal / Insert / View / Command), motions, operators + text objects. Plain-ASCII buffer until the v0.2 UTF-8 work. |
|
||||
| USB host | `esp-idf` TinyUSB bindings | Boot-protocol HID; verified on hardware (Spike 4). |
|
||||
| Git | **libgit2 via `git2`**, built as an esp-idf component with mbedTLS (`firmware/components/libgit2/`) | `gix` was the original pick but can't push over HTTPS — the [ADR-004](docs/adr.md#adr-004-git-implementation--gitoxide-gix) kill-switch fired ([postmortem](docs/postmortems/2026-07-05-spike7-gix-https-push.md)). On-device add → commit → push verified. |
|
||||
| TLS | `mbedtls` via `esp-idf` | GitHub HTTPS with the chain checked against embedded roots; ≈35 KB heap measured during handshake (Spike 6). |
|
||||
| Auth | HTTPS + GitHub PAT | v0.1 bakes credentials in at build time via `TW_*` env vars; provisioning + at-rest protection is [ADR-011](docs/adr.md#adr-011-credential-provisioning--how-the-pat-reaches-the-device-and-is-protected-at-rest) (open), on-device settings land in v0.9. |
|
||||
| Filesystem | FAT on SD (`esp_vfs_fat`) | Working copy lives here. Internal LittleFS holds config. |
|
||||
| Layer | Choice | Notes |
|
||||
| ------------- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| HAL / runtime | `esp-idf-svc`, `esp-idf-hal` | std build: heap, threads, VFS, mbedtls, Wi-Fi stack. |
|
||||
| Display | Custom SSD1683 driver (`src/epd.rs`) + `embedded-graphics` | Dual-controller 792×272 panel; dirty-rect partial refresh (~630 ms measured). |
|
||||
| UI layer | Custom thin widget layer | Ratatui's API _shape_ without its char-grid terminal model ([ADR-002](docs/adr.md#adr-002-ui-strategy--custom-widgets-on-embedded-graphics-not-ratatui)). |
|
||||
| Editor core | Custom, in-tree (`src/editor.rs`) | Modal (Normal / Insert / View / Command), motions, operators + text objects. Plain-ASCII buffer until the v0.2 UTF-8 work. |
|
||||
| USB host | `esp-idf` TinyUSB bindings | Boot-protocol HID; verified on hardware (Spike 4). |
|
||||
| Git | **libgit2 via `git2`**, built as an esp-idf component with mbedTLS (`firmware/components/libgit2/`) | `gix` was the original pick but can't push over HTTPS — the [ADR-004](docs/adr.md#adr-004-git-implementation--gitoxide-gix) kill-switch fired ([postmortem](docs/postmortems/2026-07-05-spike7-gix-https-push.md)). On-device add → commit → push verified. |
|
||||
| TLS | `mbedtls` via `esp-idf` | GitHub HTTPS with the chain checked against embedded roots; ≈35 KB heap measured during handshake (Spike 6). |
|
||||
| Auth | HTTPS + GitHub PAT | v0.1 bakes credentials in at build time via `TW_*` env vars; provisioning + at-rest protection is [ADR-011](docs/adr.md#adr-011-credential-provisioning--how-the-pat-reaches-the-device-and-is-protected-at-rest) (open), on-device settings land in v0.9. |
|
||||
| Filesystem | FAT on SD (`esp_vfs_fat`) | Working copy lives here. Internal LittleFS holds config. |
|
||||
|
||||
---
|
||||
|
||||
@@ -90,7 +90,7 @@ around, not against:
|
||||
## Roadmap
|
||||
|
||||
Frequent releases. Each version is a usable artifact, not a checkpoint.
|
||||
Per-version scope, current `[x]`/`[~]` marks, and the macro-plan Gantt live in
|
||||
Per-version scope, current `[x]`/`[~]` marks, and the Macroplan source live in
|
||||
[`docs/roadmap.md`](docs/roadmap.md).
|
||||
|
||||
| Version | Theme | One-liner |
|
||||
|
||||
103
docs/roadmap.md
103
docs/roadmap.md
@@ -1,9 +1,9 @@
|
||||
# Roadmap — version details
|
||||
|
||||
Frequent releases. Each version is a usable artifact, not a checkpoint.
|
||||
This file holds the macro-plan (Gantt below) and the per-version scope. The
|
||||
user-facing requirements and engineering targets each release feeds into are
|
||||
tracked in [`qfd.md`](qfd.md).
|
||||
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
|
||||
|
||||
@@ -18,29 +18,82 @@ inline `(✓)` marks the done half of a split item.
|
||||
|
||||
## Macro-plan
|
||||
|
||||
Original baseline (June 2026 start, not re-dated) — actuals are in the Status
|
||||
block above.
|
||||
Macroplan source — paste into the macroplan app to render the week-by-week
|
||||
view. `original` dates are the June 2026 baseline and never move; slips get
|
||||
appended as `reestimates`, per-item actuals live in the Status block above.
|
||||
|
||||
```mermaid
|
||||
gantt
|
||||
title Typoena — macro plan
|
||||
dateFormat YYYY-MM-DD
|
||||
axisFormat %b %Y
|
||||
section MVP
|
||||
v0.1 it writes, it pushes :v01, 2026-06-01, 4w
|
||||
section Vim
|
||||
v0.2 navigation :v02, after v01, 3w
|
||||
v0.2.5 international input :v025, after v02, 2w
|
||||
v0.3 editing :v03, after v025, 3w
|
||||
v0.4 visual + ex :v04, after v03, 2w
|
||||
section Files
|
||||
v0.5 palette + multi-file :v05, after v04, 3w
|
||||
v0.6 markdown :v06, after v05, 2w
|
||||
v0.7 search + git :v07, after v06, 3w
|
||||
section Hardware polish
|
||||
v0.8 battery + sleep :v08, after v07, 4w
|
||||
v0.9 robustness :v09, after v08, 4w
|
||||
v1.0 polish :v10, after v09, 4w
|
||||
```toml
|
||||
title = "Typoena — macro plan"
|
||||
|
||||
[[feature]]
|
||||
name = "v0.1 it writes, it pushes"
|
||||
start = 2026-06-01
|
||||
original = 2026-06-29
|
||||
status = "at-risk"
|
||||
note = "Overdue — core editing + on-device git push proven in spikes, but blocked on SD (compatible ≤32 GB card), boot splash, and wiring save/publish into main.rs."
|
||||
|
||||
[[feature]]
|
||||
name = "v0.2 navigation"
|
||||
start = 2026-06-29
|
||||
original = 2026-07-20
|
||||
status = "on-track"
|
||||
note = "Core work landed early: motions and modes already run; gutter, Ctrl-d/u, UTF-8 buffer remain."
|
||||
|
||||
[[feature]]
|
||||
name = "v0.2.5 international input"
|
||||
start = 2026-07-20
|
||||
original = 2026-08-03
|
||||
|
||||
[[feature]]
|
||||
name = "v0.3 editing"
|
||||
start = 2026-08-03
|
||||
original = 2026-08-24
|
||||
status = "on-track"
|
||||
note = "Deletes, counts, and operator grammar done early in core; yank/paste, undo/redo remain."
|
||||
|
||||
[[feature]]
|
||||
name = "v0.4 visual + ex"
|
||||
start = 2026-08-24
|
||||
original = 2026-09-07
|
||||
status = "on-track"
|
||||
note = ": command-line mechanism and :fmt done early; Visual mode not started."
|
||||
|
||||
[[feature]]
|
||||
name = "v0.5 palette + multi-file"
|
||||
start = 2026-09-07
|
||||
original = 2026-09-28
|
||||
|
||||
[[feature]]
|
||||
name = "v0.6 markdown"
|
||||
start = 2026-09-28
|
||||
original = 2026-10-12
|
||||
status = "on-track"
|
||||
note = "Done early in core — only the 80-col ruler remains."
|
||||
|
||||
[[feature]]
|
||||
name = "v0.7 search + git"
|
||||
start = 2026-10-12
|
||||
original = 2026-11-02
|
||||
|
||||
[[feature]]
|
||||
name = "v0.8 battery + sleep"
|
||||
start = 2026-11-02
|
||||
original = 2026-11-30
|
||||
|
||||
[[feature]]
|
||||
name = "v0.9 robustness"
|
||||
start = 2026-11-30
|
||||
original = 2026-12-28
|
||||
|
||||
[[feature]]
|
||||
name = "v1.0 polish"
|
||||
start = 2026-12-28
|
||||
original = 2027-01-25
|
||||
|
||||
[[milestone]]
|
||||
name = "MVP ships"
|
||||
week = 2026-06-29
|
||||
requires = ["v0.1 it writes, it pushes"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user