Skip to content

Releases: oribarilan/vimcode

v0.12.2

08 Jun 15:03
e17ca43

Choose a tag to compare

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

  • modeIndicator option now accepts "toast" (default) or "none".
  • Ctrl+O one-shot normal now emits a proper mode action. The toast shows (insert) in lowercase, matching Vim convention.

v0.12.1

08 Jun 14:53
0a2d090

Choose a tag to compare

Fixed

  • Plugin failed to load when installed via git URL. Peer dependencies (solid-js, @opentui/solid, @opentui/core) were getting installed into the plugin's node_modules/, and their .d.ts stubs shadowed the host's runtime modules. Removed peer deps — the host provides these at runtime.

v0.12.0

08 Jun 14:14
8eabc6e

Choose a tag to compare

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.
  • modeIndicator option: "status" (default, persistent label), "toast" (old behavior), or "none" (disabled). The old modeToast option still works as a fallback.

Changed

  • Plugin entry point is now .tsx (was .ts) to support SolidJS slot rendering.

v0.11.0

08 Jun 11:35
75a944b

Choose a tag to compare

Added

  • :q, :quit, and :wq quit OpenCode from the command palette (#19). Since : already opens the palette, typing :q and pressing Enter exits the app.
  • Ctrl+O in insert mode — run one normal-mode command, then return to insert. Motions, operators, counts, and r{char} all work.
  • leader plugin option — lets you use space (or any key) as leader without breaking insert mode. Spaces type normally while editing, and leader sequences like space l still work in normal mode (#21).

v0.10.0

31 May 18:52
bd7e23b

Choose a tag to compare

Added

  • dG and cG — delete/change from cursor to end of buffer. yG already worked, now all three operators work with G.

Changed

  • Cursor shape is set via the editor widget's cursorStyle property instead of writing DECSCUSR escape sequences to stdout. Fixes terminals that don't support DECSCUSR (e.g. macOS Terminal.app).

Fixed

  • dG, cG, de, ce undo in a single u press. The host editor's undo system splits multi-line deletions into per-line entries, so these operations now go through editBuffer.deleteRange() with a pre-operation snapshot that u restores from directly.
  • yy reads the cursor position from the editor widget instead of a line counter. The counter drifted on clicks, arrow keys, and word motions, causing yy to yank the wrong line.
  • e moves to end of word instead of behaving like w. de, ce, and ye operate on the correct range too.
  • g waits for a second keypress instead of jumping to buffer start on its own. gg now works as a proper two-key command.

v0.9.0

29 May 17:15
538de55

Choose a tag to compare

Added

  • r{char} replaces the character under the cursor. Supports counts: 3ra replaces 3 characters with a.

v0.8.0

26 May 18:06

Choose a tag to compare

Added

  • Yank with motions: yw, yb, ye, y$, y0, y^, yh, yl, yj, yk, yG. Previously only yy worked.
  • 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 check recipes.

Fixed

  • Plugin failed to load when api.kv didn't match the expected interface (e.g. object with no .get method). Broke installs on some OpenCode versions.

Changed

  • README operators section rewritten to show d, c, and y side by side for each motion.
  • Noted that e and w behave identically (the host has no separate end-of-word command).

v0.7.0

26 May 17:25

Choose a tag to compare

Added

  • Cross-platform clipboard. Yank/paste now works on macOS (pbcopy), Windows (clip.exe), and Linux (xclip). Previously macOS-only.
  • Plugin configuration via tui.json tuple 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 test on push and PR to main.
  • Issue templates for bug reports and missing keybinding requests.
  • Version sync test — catches drift between VERSION and package.json at test time.
  • typecheck script (tsc --noEmit) in package.json.
  • MIT LICENSE file.

Changed

  • Removed unused devDependencies (@opentui/core, @opentui/keymap, @opentui/solid, solid-js). Pinned @opencode-ai/plugin to ^1.15.4.
  • Removed private: true from package.json.
  • Dropped lockfiles from git. Plugin consumers resolve their own deps.
  • Replaced local paths in AGENTS.md with public GitHub URLs.
  • Fixed g/gg contradiction in README — g removed from keybinding tables.
  • Added platform notes and configuration sections to README.

v0.6.1

25 May 08:50

Choose a tag to compare

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

24 May 19:52

Choose a tag to compare

Added

  • Character-wise visual mode (v). Select text with motions, then d/x to delete, c to change, y to 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 insertText on the focused editor directly.

Fixed

  • j/k now move the cursor up/down in multi-line text. Previously they always dispatched prompt history commands because the plugin read prompt text from api.prompt which doesn't exist. Now reads from api.renderer.currentFocusedEditor.plainText.
  • d in visual mode deletes the full selection instead of just the last character.
  • Block cursor now shows in visual mode (not just normal mode).