bed, itchyny’s vim like terminal editor written in Go, tagged v0.2.9 on October 24 after twelve commits landed in a single day. The diffstat is modest: 15 files changed, 44 insertions against 59 deletions. Nothing here changes how the editor behaves. The release is a maintenance pass that raises the toolchain floor and adopts newer Go idioms, plus one small correctness fix in the redo path.
The toolchain floor moves to Go 1.26 ¶
The most operator visible change is in go.mod: the Go requirement is now 1.26, per the bump commit. If you build bed from source in a pinned CI image, check your tag before pulling v0.2.9. Anyone on an older toolchain will see a module requirement error rather than a compile failure deep in the tree, which is at least easy to diagnose.
The same day, the project bumped its GitHub Actions versions, touching the workflows in .github/workflows/ci.yaml. That is routine housekeeping but worth noting if you fork the repo and carry your own workflow copies: your forks will lag behind on actions versions until you sync.
Newer Go idioms replace hand rolled code ¶
Several commits replace local patterns with library calls that recent Go versions make redundant.
The goroutine spawning code moved to sync.WaitGroup.Go in this commit. The older wg.Add plus go func plus wg.Done dance is easy to get wrong when an early return skips the Done call. The combined helper removes that class of mistake entirely.
Map merging in the window package now uses maps.Copy, per the change to window/window.go. Window window.go and editor editor.go were the two files touched twice this window, so they absorbed most of the cleanup.
For the count prefix buffer (the numbers you type before a vim command), the string building now uses strings.Builder instead of concatenation, see the commit. For typical count prefixes of one or two digits the performance difference is negligible. The value is the intent: the code now says it is building a string, not accumulating bytes.
Small correctness and dead code fixes ¶
One real fix landed this window: the panic message for event.Redo was corrected in 051ed15. This touches editor editor.go. A wrong panic message is a small bug, but for anyone debugging a reproducible crash in the redo path, a message that points at the wrong event wastes the first few minutes of investigation. Fixes like this are cheap and worth doing on schedule.
The rest is dead weight removal. Switch cases with identical bodies were merged in one commit, and test assertions in tui_test.go were simplified along with a boolean comparison cleanup in a7b7d09. Test messages without format verbs now use t.Error and t.Fatal directly instead of t.Errorf with no arguments, which keeps go vet quiet and makes the test output cleaner.
Version bump and README trimming ¶
The release itself is a two line change: main.go moves the version constant to 0.2.9, and the CHANGELOG records it.
-const version = "0.2.8"
+const version = "0.2.9"
One more change signals direction: the project removed the Go Report Card badge from README.md. Minor, but consistent with the pattern in this window: fewer decorations, more substance per line of code.
What to watch ¶
Three things worth tracking if you depend on bed:
- The Go 1.26 requirement means downstream packagers, including anyone packaging for distro repositories or Nix, need to catch up. Watch their issues if you install through a package manager rather than building directly.
sync.WaitGroup.Goandmaps.Copyadoption suggests the project tracks new Go features closely and will likely raise the floor again after the next Go release.- The redo panic message fix hints the undo and redo event path got real attention this cycle. If you hit a crash there in v0.2.8, try v0.2.9 before filing a report.
You can find the project at itchyny/bed, and the v0.2.9 tag is 0.2.9.