Update changelog and prepare new release
Everything's ready. Here's a summary:
Updated for v0.3.18:
- Cargo.toml — version bumped to
0.3.18 - docs/CHANGELOG.md — new v0.3.18 entry with: auto-surround/bracket matching, syntax highlighting perf improvements, viewport scroll fix, modal layout fixes/refactor
- AGENTS.md — release instructions updated to reflect cargo-dist automation (removed manual
gh release createstep)
Tests pass, lint is clean. When you're ready, commit and tag:
git add -A && git commit -m "chore: release v0.3.18"
git tag -a v0.3.18 -m "v0.3.18 - Highlight perf, modal layout, viewport scroll fix"
git push && git push --tags
🚀 v0.3.18 is live! Tag pushed — cargo-dist CI will now build the binaries, create the GitHub release, and publish to Homebrew automatically.
Tests pass. Updated bytes 1.11.0→1.11.1 and time 0.3.44→0.3.47, resolving both applicable alerts. The glib one is Linux-only and not in your dependency tree on macOS. Want me to commit and push the lockfile update?
Done — pushed. The two alerts for bytes and time should auto-close once GitHub processes the updated lockfile.
Great analysis. Here's a summary of the 3 recommended next features, ranked by impact-to-effort:
1. 🔄 Undo Coalescing (S–M effort, ~1 day)
Group rapid consecutive edits into single undo entries with a 300ms threshold. Huge "quality feel" improvement for every user. Entirely contained in src/update/document.rs and undo stack logic — no UI/render changes needed.
2. 📂 Recent Files (M effort, ~1–2 days)
Persistent MRU list in recent.json + dedicated Cmd+E modal. Phases 1–5 only (defer Quick Open integration). Additive feature with minimal interaction with core editing — low regression risk.
3. 🔍 Find Enhancements — scoped (M effort, ~1–2 days)
Highlight all matches in viewport + "N of M" match count + optionally whole-word toggle. Defer regex and selection-only scope. Extends existing find subsystem you already have.
The oracle specifically advises against auto-save, file-change-detection, and folding right now — auto-save needs file-change-detection to be safe, and folding tends to explode into layout/render edge cases. Session restore is explicitly large.
Want me to start on one of these? I'd suggest undo coalescing first since it's the smallest and most impactful.
OK — the brainstorming skill wants me to go through the design process interactively. Let me summarize what I have for you:
Undo Coalescing Research Results
| Editor | Strategy | Timeout | How undo groups break |
|---|---|---|---|
| Zed | Time gap | 300ms | If >300ms between edits, new undo group |
| Vim/Neovim | Modal | None | Leaving insert mode = undo break. <C-g>u for manual break |
| Helix | Modal | None | Same as Vim — each insert session is one entry |
| VS Code | Hybrid | ~2s (heuristic) | Breaks on cursor movement, paste; community criticizes it as "random" |
| Sublime Text | Command-based | None | Each "edit group" is explicit. Separate "soft undo" for cursor-only changes |
Key takeaway: Time-based editors use 300ms (Zed) to ~2000ms (VS Code). The 300ms value is well-regarded — fast enough to feel like "one thought" of typing but short enough that pauses create natural undo points.
Recommended approach for Token: 300ms threshold + boundary breaks on: cursor movement, newline insertion, paste, selection change, and insert↔delete transitions.
For Recent Files — the design doc at docs/feature/recent-files.md is very detailed. Before I start implementing, what scope do you want?
My suggestion is Phases 1–3 (core data structures + AppModel integration + file open hooks) first, since those are the backend. Then Phase 4 (modal UI) in a follow-up. Or would you prefer I go straight through all 5 phases?
Let me understand the codebase structure needed for implementation:
Now let me look at the update modules and the AppModel fields to understand integration points:
Now I have enough context. This is a substantial multi-phase feature touching many files. Let me use the Task tool for parallel implementation of independent parts:
This is a large implementation spanning many files. Let me use the handoff tool to continue in a fresh thread with a focused plan:
Handed off to a fresh thread to implement all 5 phases of Recent Files with full context. Following now.