diff --git a/docs/releases/v0.1.1.md b/docs/releases/v0.1.1.md new file mode 100644 index 0000000..0994abc --- /dev/null +++ b/docs/releases/v0.1.1.md @@ -0,0 +1,29 @@ +# opencode-offpeak v0.1.1 + +Released 2026-10-11. This is the repaired release. `v0.1.0` remains at its own tag and is not modified. + +## Fix + +- **Root cause of the live `Keymap.Provider is missing` failure:** a long-running OpenCode TUI process that still executed OpenCode 2.0.18 host code after an in-place upgrade. OpenCode releases before 2.0.26 activate TUI plugins outside the Solid keymap provider owner, so the documented `context.keymap.layer()` call in `setup` fails there. The same call works on 2.0.26, verified in the live TUI and in an isolated clean install. +- **Compatibility enforcement:** `package.json` now declares `engines.opencode: ">=2.0.26 <2.1.0"`, and both entrypoints check `context.app.version` at startup. Unsupported hosts fail with an explicit upgrade message instead of the confusing keymap error. +- **TUI package shape:** the `./tui` entrypoint uses the documented `Plugin.define(...)` form and imports `@opencode/plugin/tui`. No `tui.json`/`cli.json` workaround is involved; no duplicate registration exists. +- **Queue hygiene:** `/offpeak remove ` deletes a terminal (`COMPLETED`, `FAILED`, `CANCELLED`) record. Active tasks must be cancelled first, and OpenCode sessions are never deleted. + +## Regression protection + +- Manifest compatibility declaration, TUI export resolution, `Plugin.define` entrypoint shape, server/TUI separation, and clean packed-install loading tests. +- Compatibility-guard tests for in-range, out-of-range, and unknown host versions. +- A real OpenCode v2 TUI smoke test that packs the repository, loads the packed package into an isolated OpenCode configuration with `--standalone`, asserts the reconciliation has no `Keymap.Provider is missing` failure, and drives `/offpeak status` in the live TUI. It skips when the `opencode` CLI or `tmux` is unavailable and never contacts a model provider. + +## Install + +```sh +opencode plugin add git+https://github.com/lutzkind/opencode-offpeak.git#v0.1.1 +``` + +Then restart OpenCode (a long-running TUI keeps its old code until it restarts). + +## Checks + +- `npm run lint`, `npm run typecheck`, `npm test` (39 tests), `npm pack --dry-run`. +- Live validation on the supported OpenCode 2.0.26 TUI: `/offpeak status`, `/offpeak on`, `/offpeak pricing`, `/offpeak list`, queue execution of a smoke task, persistence across reload, and removal of the smoke record.