Releases: oribarilan/vimcode
Releases · oribarilan/vimcode
v0.14.0
Added
/vimtoggle command to disable/enable vim mode. Persisted across restarts.- Startup toast when vim is disabled so users know why keybindings aren't active.
Fixed
- Leader key now works with modifier-based configurations like the default
ctrl+x. Previously,parseLeaderKeyexpected vim-styleC-xnotation but OpenCode's keybinds API returnsctrl+xformat, so the leader key was silently broken for any config with modifiers. - Leader detection supports all OpenCode modifier aliases (
control,alt,option,super) and multiple leader bindings. - Optional chaining on
api.kv.setto avoid crashes on older OpenCode versions. - Escape/Enter no longer intercepted when vim is disabled.
- Toggling vim off resets mode and clears pending state.
:vimpalette title uses:prefix, consistent with:q/:quit/:wq.
v0.13.0
Changed
- Leader key is now auto-detected from OpenCode's
keybinds.leaderconfig. Theleaderplugin option has been removed.
Fixed
- Leader key (e.g. space) no longer enters pending-sequence state when typing in question or permission prompt overlays.
v0.12.2
Reverted
- Persistent mode indicator removed. The SolidJS slot approach doesn't work from git-installed plugins — the host's JSX runtime can't be resolved from the package cache (#3).
Changed
modeIndicatoroption now accepts"toast"(default) or"none".Ctrl+Oone-shot normal now emits a proper mode action. The toast shows(insert)in lowercase, matching Vim convention.
v0.12.1
Fixed
- Plugin failed to load when installed via git URL. Peer dependencies (
solid-js,@opentui/solid,@opentui/core) were getting installed into the plugin'snode_modules/, and their.d.tsstubs shadowed the host's runtime modules. Removed peer deps — the host provides these at runtime.
v0.12.0
Added
- Persistent mode indicator next to the prompt (#3). Shows NORMAL, INSERT, VISUAL, or (insert) for one-shot normal. Replaces the old toast, which disappeared after a second.
modeIndicatoroption:"status"(default, persistent label),"toast"(old behavior), or"none"(disabled). The oldmodeToastoption still works as a fallback.
Changed
- Plugin entry point is now
.tsx(was.ts) to support SolidJS slot rendering.
v0.11.0
Added
:q,:quit, and:wqquit OpenCode from the command palette (#19). Since:already opens the palette, typing:qand pressing Enter exits the app.Ctrl+Oin insert mode — run one normal-mode command, then return to insert. Motions, operators, counts, andr{char}all work.leaderplugin option — lets you use space (or any key) as leader without breaking insert mode. Spaces type normally while editing, and leader sequences likespace lstill work in normal mode (#21).
v0.10.0
Added
dGandcG— delete/change from cursor to end of buffer.yGalready worked, now all three operators work withG.
Changed
- Cursor shape is set via the editor widget's
cursorStyleproperty instead of writing DECSCUSR escape sequences to stdout. Fixes terminals that don't support DECSCUSR (e.g. macOS Terminal.app).
Fixed
dG,cG,de,ceundo in a singleupress. The host editor's undo system splits multi-line deletions into per-line entries, so these operations now go througheditBuffer.deleteRange()with a pre-operation snapshot thaturestores from directly.yyreads the cursor position from the editor widget instead of a line counter. The counter drifted on clicks, arrow keys, and word motions, causingyyto yank the wrong line.emoves to end of word instead of behaving likew.de,ce, andyeoperate on the correct range too.gwaits for a second keypress instead of jumping to buffer start on its own.ggnow works as a proper two-key command.
v0.9.0
Added
r{char}replaces the character under the cursor. Supports counts:3rareplaces 3 characters witha.
v0.8.0
Added
- Yank with motions:
yw,yb,ye,y$,y0,y^,yh,yl,yj,yk,yG. Previously onlyyyworked. - Plugin init sanity test that catches crashes from hostile API shapes before release.
- Biome for linting and formatting, enforced in CI.
just test,just lint,just lint-fix,just checkrecipes.
Fixed
- Plugin failed to load when
api.kvdidn't match the expected interface (e.g. object with no.getmethod). Broke installs on some OpenCode versions.
Changed
- README operators section rewritten to show
d,c, andyside by side for each motion. - Noted that
eandwbehave identically (the host has no separate end-of-word command).
v0.7.0
Added
- Cross-platform clipboard. Yank/paste now works on macOS (
pbcopy), Windows (clip.exe), and Linux (xclip). Previously macOS-only. - Plugin configuration via
tui.jsontuple syntax. Three options available:updateCheck— disable the daily GitHub version check.modeToast— disable the mode-switch toast, relying on cursor shape alone.startMode— start in normal mode instead of insert.
- Daily caching for the update checker via
api.kv. Previously checked GitHub on every launch. - GitHub Actions CI — runs
bun teston push and PR to main. - Issue templates for bug reports and missing keybinding requests.
- Version sync test — catches drift between
VERSIONandpackage.jsonat test time. typecheckscript (tsc --noEmit) inpackage.json.- MIT LICENSE file.
Changed
- Removed unused devDependencies (
@opentui/core,@opentui/keymap,@opentui/solid,solid-js). Pinned@opencode-ai/pluginto^1.15.4. - Removed
private: truefrompackage.json. - Dropped lockfiles from git. Plugin consumers resolve their own deps.
- Replaced local paths in AGENTS.md with public GitHub URLs.
- Fixed
g/ggcontradiction in README —gremoved from keybinding tables. - Added platform notes and configuration sections to README.