Update changelog and prepare new release

main
Medium
Unlisted
nice, i think the recent changes constitutes a new release, lets update the changelog and related docs if needed and prepare to tag a new release, note we no longer need to manually make releases since we have cargo-dist now

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 create step)

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
do it 🚀

🚀 v0.3.18 is live! Tag pushed — cargo-dist CI will now build the binaries, create the GitHub release, and publish to Homebrew automatically.

check dependabot security stuff on gh

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?

yes

Done — pushed. The two alerts for bytes and time should auto-close once GitHub processes the updated lockfile.

look through the feature planning docs and identify 3 smaller ones we could investigate and look at next, consult oracle for guidance

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.

lets do 2 first, for 1. check which threashold is commonly used for other editors and report back findings

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?

lets do 250ms for the undo grouping, for recent files, lets do all 5 at once.

Let me understand the codebase structure needed for implementation:

Explored 5 files

Now let me look at the update modules and the AppModel fields to understand integration points:

Explored 4 files

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:

Explored 2 files

This is a large implementation spanning many files. Let me use the handoff tool to continue in a fresh thread with a focused plan:

Ran 1 tool

Handed off to a fresh thread to implement all 5 phases of Recent Files with full context. Following now.