Repository navigation
v3.2.1
What's new
Bug Fixes
OpenCode's config schema uses a singular plugin array, but the plural plugins key is silently ignored, so a configured plugin would simply never load. Several install docs and both shipped registry profile configs (standalone and omo) used the wrong plural key, which meant users following the documented setup ended up with instructions that failed silently. The docs and shipped configs — README, installation/index/agent-install pages, and the registry profile opencode.jsonc files — are now swept to the singular plugin key, aligning them with the behavior Systematic's own setup.ts already enforces and its integration tests already exercise (#665).
Build System
Authored .mdx content pages weren't picking up Astro's default GFM table parsing, so pipe tables rendered as raw text inside a <p> element across the live docs site (configuration, main-loop, v3-migration, and others) instead of as actual <table> elements. Plain generated .md reference pages were unaffected. remark-gfm is now wired explicitly into markdown.remarkPlugins so .mdx content gets proper GFM table parsing — verified against built HTML output (configuration 0→1 tables, main-loop 0→1, v3-migration 0→2 tables), with no raw pipe-text tables remaining, mermaid diagrams unaffected, and all 85 pages building clean (#663).
Documentation
Two knowledge-track solution docs capture learnings from the Claude Code harness work: best-practices/claude-code-plugin-build-and-publish-architecture documents the build-and-publish-from-CI packaging pattern (gitignored staging, build-time identifier translation on generated output only, a generated-namespace integrity gate, release-gated orphan-branch publishing, SHA versioning, and the marketplace catalog), and workflow-issues/verify-installed-artifacts-not-just-build-gates captures the verification lesson that artifacts should be verified as-installed rather than assuming build gates passing is sufficient, and that unproven host channels should be probed empirically before designing against them. Both docs add reciprocal cross-links to the qualified-persona-ids, reference-integrity, and neutral-v1-gate sibling docs (#662).
Continuous Integration
The publish-claude-code-plugin job previously ran independent of the release job, so the plugin branch could ship a non-release commit, or drift from the published npm package if the release itself failed. The job is now gated on the release job and on an actually-cut version: semantic-release's new-release-published/new-release-version are exposed as release job outputs, the publish job now depends on release, and publishing only happens when new-release-published is true. The plugin remains SHA-versioned — this change only couples its publish timing to npm releases (#661).