Skip to content

Commit 2f1c7d8

Browse files
committed
docs(nook): surface tree-sitter as a decision-ready candidate
1 parent 4032145 commit 2f1c7d8

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

docs/nook/roadmap.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,28 @@ shipped, so the remaining surface is narrower than it once was.
116116
single-file editor (a vim replacement for editing a dotfile), so a
117117
real modal layer is the largest open question. Needs operator sign-off
118118
before building, not a unilateral start.
119+
- **tree-sitter highlighting** (design/02) — research is done, this is
120+
now a single binary-size decision, not an unknown. Measured: the pure-Go
121+
CGO-free backend (odvcencio/gotreesitter) with the `grammar_subset`
122+
build tags embeds one grammar in 9.10 MB vs 30.83 MB for the naive
123+
umbrella import — the subset escapes the 542 `init()` registrations, so
124+
the umbrella is off the table and the subset path holds. The parser
125+
runtime is a fixed ~6.8 MB over a bare binary; each extra grammar is
126+
~0.08 MB. Net for nook: adding tree-sitter-go moves ~15 MB → ~21-22 MB
127+
before chroma is reclaimed. The one open call is whether that ~6.8 MB
128+
one-time add clears the "lightest, fastest" north star — an operator
129+
taste decision, not a build unknown. No upstream issue is needed
130+
(issue #88 already ships the build-tag matrix). Do not wire the
131+
dependency into nook's build before this decision.
119132
- **Settings/themes surface** — config inheritance and theme hot-reload
120133
ship; a discoverable settings UI on top does not yet.
121-
- **Depth passes on shipped panes** — completion ranking, diagnostics
122-
presentation, multibuffer ergonomics. Each is a self-contained slice.
134+
- **Depth passes on shipped panes** — diagnostics presentation and
135+
multibuffer ergonomics are each self-contained slices. Completion has a
136+
concrete gap: the popup sorts by LSP SortText but has no type-to-filter
137+
— typing any rune while it is open dismisses it (main.go, the "any
138+
other key" branch) rather than narrowing the list live the way Zed and
139+
VSCode do. Closing that is a host keystroke-routing plus live-render
140+
change, so it wants a visual loop, not a blind hour.
123141

124142
Pick the smallest finishable slice that advances parity; one capability,
125143
its tests, its CHANGELOG line, one commit.

0 commit comments

Comments
 (0)