Skip to content

v1.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Sep 10:13
· 1 commit to master since this release

Fixed

  • Registration detection no longer keys off the launch directory. The self-checkout carve-out (directory === packageDir ⇒ repo-local) is gone: detection is config-based only — the global config dir, the repo's .opencode/, and a repo-root config — so a plugin never infers registration from where it happens to be launched.
  • The config hook can no longer stall OpenCode startup: its entire body is wrapped in try/catch, and any failure (rotted plugin cache, unreadable package metadata, a blocked destination) degrades to a warn log plus a warning toast naming the exact remediation — never a rethrow. The hook never auto-deletes the cache, since that races OpenCode's in-flight installs; hard errors stay CLI-only.
  • Consumer install snippets now use the correct OpenCode config key plugin (singular), not plugins. The config schema sets additionalProperties: false, so plugins is invalid.

Added

  • Format-tolerant registration detection: opencode.jsonc is honored alongside opencode.json in the global config dir, <repo>/.opencode/, and the repo root. .jsonc files are parsed leniently — string-aware stripping of // and /* */ comments and trailing commas, so $schema URLs survive — while .json stays strict. Config writes still target opencode.json.
  • Load-failure advisory (log + toast) with cache-rot remediation: when the config hook fails, the message names bunx opencode-gemiterm-skills install --scope global and the ~/.cache/opencode/packages/opencode-gemiterm-skills@<version> directory to clear. The advisory builder itself is infallible, with a static fallback when package metadata is unreadable.

Changed

  • @opencode-ai/plugin is now classified as a devDependency: every import in the shipped code is type-only and fully erased at runtime, so the published package declares no runtime dependencies.
  • devDependency ranges are pinned to the tested versions that are actually installed (@types/bun@^1.3.14, @types/node@^26.6.2) instead of floating latest, so installs no longer drift with whatever the registry publishes. The tracked bun.lock is the single source of truth, and the release workflow installs with bun install --frozen-lockfile so CI fails on a lockfile that does not match package.json.
  • @opencode-ai/plugin updated from ^1.16.2 to ^1.18.31. The type-only surface this package imports (Plugin, PluginInput, Config, and the client.app.log / client.tui.showToast payloads) is unchanged across the bump, and bun run check and the test suite pass against the newer types.

Removed

  • The legacy .version marker mechanism is removed outright: removeStaleVersionMarkers, its install call site, and readLegacySkillVersion are deleted, so no marker is ever read or cleaned up. <configBase>/opencode-gemiterm-skills.manifest.json (version + per-file sha256 hashes) is now the sole installation record — a scope is installed iff its manifest exists with contents, and status no longer falls back to a skill directory or a marker. A pre-manifest install (1.0.0-or-earlier, no manifest) is correctly reported as not installed; the next install (or load-hook self-ensure) writes a fresh manifest in one pass with no --force required.