Releases: oribarilan/vimcode
Releases · oribarilan/vimcode
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.
v0.6.1
Changed
- Updated AGENTS.md with current line counts and visual mode status in known limitations.
Removed
- Dead
readClipboard()export from clipboard module. - Stale implementation plan (
docs/plan.md) from initial prototype.
v0.6.0
Added
- Character-wise visual mode (
v). Select text with motions, thend/xto delete,cto change,yto yank. All normal-mode motions work for extending the selection, with counts. - Tab inserts a tab character in insert mode. Previously fell through to OpenCode's default handler because the plugin had no way to insert text at the cursor. Now uses
insertTexton the focused editor directly.
Fixed
j/know move the cursor up/down in multi-line text. Previously they always dispatched prompt history commands because the plugin read prompt text fromapi.promptwhich doesn't exist. Now reads fromapi.renderer.currentFocusedEditor.plainText.din visual mode deletes the full selection instead of just the last character.- Block cursor now shows in visual mode (not just normal mode).