Skip to content

chore(main): release pai-opencode 3.0.0#139

Merged
Steffen025 merged 7 commits intomainfrom
release-please--branches--main--components--pai-opencode
Apr 13, 2026
Merged

chore(main): release pai-opencode 3.0.0#139
Steffen025 merged 7 commits intomainfrom
release-please--branches--main--components--pai-opencode

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot commented Apr 13, 2026

🤖 Release PR managed by release-please — updated to correct version.


3.0.0 (2026-04-13)

⚠️ Breaking Changes

  • wp-m1: model_tiers removed — PAI-OpenCode now runs on vanilla OpenCode from opencode.ai. The custom Steffen025/opencode fork is archived. Each agent in opencode.json has exactly one model field. See ADR-019 and UPGRADE.md.
  • core: Bootstrap loading removed — the PAI Core Skill now loads via OpenCode's native skill system (tier: always). MINIMAL_BOOTSTRAP.md is deleted. See ADR-020.
  • skills: skills/CORE renamed to skills/PAI.
  • installer: Provider selection removed from install — configure post-install via /connect + switch-provider.ts.

Features

  • OpenCode-native architecture — zero bootstrap, PAI/SKILL.md tier:always via native skill scanner
  • Zen free out-of-box — all agents default to opencode/big-pickle, no API key required
  • Interactive terminal install wizard for v3
  • Two-step provider setup: /connect (credentials) → switch-provider.ts (opencode.json)
  • PAI wrapper script — separate pai command from opencode
  • Legacy config migration script for v2.x model_tiers → flat model
  • Professional CI/CD workflows, CodeRabbit, upstream sync automation
  • ADR-020 — Native OpenCode context loading architecture decision

Migration

Run bun run PAI-Install/engine/migrate-legacy-config.ts ~/.opencode/opencode.json to auto-convert existing v2.x configs. See UPGRADE.md.


Files changed: CHANGELOG.md, package.json, .release-please-manifest.json

Merging this PR will create a GitHub Release pai-opencode-v3.0.0 and tag pai-opencode-v3.0.0.

Summary by CodeRabbit

  • New Features

    • Released version 3.0.0 with updated default metadata and version information.
    • Enhanced banner displays to dynamically show version information.
  • Documentation

    • Added Contributors section in README recognizing community members and their contributions.
    • Restructured and expanded changelog with improved feature categorization, including detailed breakdowns of architecture, security, and infrastructure updates.

@github-actions github-actions bot force-pushed the release-please--branches--main--components--pai-opencode branch from 91369f1 to 10e4a5f Compare April 13, 2026 12:06
@github-actions github-actions bot force-pushed the release-please--branches--main--components--pai-opencode branch from 10e4a5f to cf6ada1 Compare April 13, 2026 12:13
@Steffen025 Steffen025 changed the title chore(main): release pai-opencode 4.0.0 chore(main): release pai-opencode 3.0.0 Apr 13, 2026
…emove epic folder

CHANGELOG [3.0.0] now covers all 19 work packages (WP1-WP4, WP-A through WP-N10,
WP-M1, PR #138) including:
- Algorithm v3.7.0, hierarchical skills, native skill loading, Zen free default
- Event-driven plugin system (5 new handlers, bus events, shell.env hook)
- Security hardening (prompt injection detection, input sanitization)
- Core PAI system (skill fixes, PAI v4.0.3 docs port)
- Installer & migration (migrate-legacy-config.ts, DB health, /db-archive)
- Session intelligence (session registry, compaction intelligence, awareness)
- Docs & tooling (system self-awareness, roborev/Biome CI, agent matrix)
- Provider infrastructure (switch-provider.ts, two-step setup, ToS warning)
- 8 dependency updates

Remove docs/epic/ — all 6 working documents (EPIC, TODO, RUNBOOK, PLANS,
CLEANUP) were project management scaffolding for a completed v3.0 migration.
Architectural decisions live in ADRs, scope in docs/SCOPE-BOUNDARY.md,
and what shipped is now in CHANGELOG.md.
@Steffen025
Copy link
Copy Markdown
Owner

@coderabbitai review

….0.3

- Default paiVersion: '4.0.3' → '3.0.0' (PAI-OpenCode version)
- Default repoUrl: 'github.com/danielmiessler/PAI' → 'github.com/Steffen025/pai-opencode'
- settings.json fallback version: '2.0' → '3.0.0'
- Header text: 'PAI | Personal AI Infrastructure'
  → 'PAI-OpenCode v3.0.0 | Personal AI Infrastructure' (large + medium banners)
- Credit line added below repo URL in large + medium banners:
  'Built on PAI by Daniel Miessler · github.com/danielmiessler/PAI'
- Version detection: 'claude --version' → 'opencode --version'
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 13, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 13, 2026

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 3cd4bfac-9f8c-42ab-a531-f1e10d17fe4e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This pull request transitions PAI metadata from version 4.0.3 to PAI-OpenCode 3.0.0, updates version detection to call opencode --version instead of claude --version, adjusts banner display text to show dynamic version information, and removes 16 epic planning and PR filelist documentation files.

Changes

Cohort / File(s) Summary
PAI Metadata & Version Probing
.opencode/PAI/Tools/Banner.ts
Updated default PAI repository and version from v4.0.3 to PAI-OpenCode v3.0.0; changed CLI version probe from claude --version to opencode --version; modified banner headers to display dynamic PAI-OpenCode version; added credit line for original PAI author.
Release Documentation
CHANGELOG.md
Restructured v3.0.0 release notes (dated 2026-04-13) with reorganized sections: consolidated breaking changes, added grouped Features section covering architecture updates and migration guidance, added Bug Fixes and Removed lists, appended Dependencies and Contributors sections.
Contributor Attribution
README.md
Added new Contributors section with table listing GitHub users and their contributions with linked PRs, plus pointer to CONTRIBUTING.md.
Deleted Epic Planning Docs
docs/epic/CLAUDE-CLEANUP-PLAN.md, docs/epic/EPIC-v3.0-Synthesis-Architecture.md, docs/epic/OPTIMIZED-PR-PLAN.md, docs/epic/TODO-v3.0.md, docs/epic/V3.0-COMPLETION-PLAN.md, docs/epic/V3.0-RUNBOOK.md
Removed comprehensive planning and execution documentation for v3.0 release, including cleanup procedures, synthesis architecture, PR roadmaps, task tracking, and detailed runbook instructions.
Deleted PR Filelist Manifests
docs/epic/pr-filelists/PR-0[1-9]-files.txt, docs/epic/pr-filelists/PR-1[0-1]-files.txt
Removed file-operation tracking manifests (11 files total) that enumerated RENAME, ADD, DELETE, and MODIFY operations for individual PR stages during PAI→PAI-OpenCode migration.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 Hop along to OpenCode we go,
From Claude's whispers to Opencode's glow,
v3.0.0 fresh upon the stage,
Old plans filed away, a new page,
Version probes dance, banners bright and true! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'chore(main): release pai-opencode 3.0.0' accurately summarizes the main change—a v3.0.0 release—and aligns with the changeset's primary objective of releasing PAI-OpenCode v3.0.0.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release-please--branches--main--components--pai-opencode

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Steffen025
Copy link
Copy Markdown
Owner

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 13, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
CHANGELOG.md (1)

147-153: Use a table for contributors to keep this structured section consistent.

This section compares repeated fields (person + contribution + PR) and is easier to scan in table form.

📋 Suggested table format
-Special thanks to community members whose contributions are included in this release:
-
-* **[`@eddovandenboom`](https://github.com/eddovandenboom)** — PAI wrapper script, `--fix-symlink` flag ([PR `#104`](https://github.com/Steffen025/pai-opencode/pull/104))
-* **[`@ktneely`](https://github.com/ktneely)** — Model profile updates for provider-agnostic routing ([PR `#103`](https://github.com/Steffen025/pai-opencode/pull/103))
-* **[`@step-security-bot`](https://github.com/step-security-bot)** — CI security hardening, pinned Actions SHA hashes ([PR `#106`](https://github.com/Steffen025/pai-opencode/pull/106))
+Special thanks to community members whose contributions are included in this release:
+
+| Contributor | Contribution |
+|-------------|--------------|
+| **[`@eddovandenboom`](https://github.com/eddovandenboom)** | PAI wrapper script, `--fix-symlink` flag ([PR `#104`](https://github.com/Steffen025/pai-opencode/pull/104)) |
+| **[`@ktneely`](https://github.com/ktneely)** | Model profile updates for provider-agnostic routing ([PR `#103`](https://github.com/Steffen025/pai-opencode/pull/103)) |
+| **[`@step-security-bot`](https://github.com/step-security-bot)** | CI security hardening, pinned Actions SHA hashes ([PR `#106`](https://github.com/Steffen025/pai-opencode/pull/106)) |
As per coding guidelines, `**/*.md`: "Tables for structured comparisons".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CHANGELOG.md` around lines 147 - 153, The Contributors list in CHANGELOG.md
is free-form and should be converted into a structured markdown table for
consistency; replace the bullet list under the "### Contributors" heading with a
table that has columns like "Contributor", "Contribution", and "PR" and move
each entry (e.g., `@eddovandenboom` — PAI wrapper script, `--fix-symlink` flag
([PR `#104`]), `@ktneely` — Model profile updates ([PR `#103`]), `@step-security-bot` —
CI security hardening ([PR `#106`])) into its own row so the section is
machine-readable and follows the `**/*.md` guideline requiring tables for
structured comparisons.
.opencode/PAI/Tools/Banner.ts (1)

331-333: Avoid hardcoded visible widths for centered banner text.

The fixed widths (44, 61) will drift as version strings or copy change and can visibly mis-center headers/credits. Use visibleLength(...) to compute padding dynamically.

♻️ Suggested refactor
-  const headerLen = 44; // "PAI-OpenCode v3.0.0 | Personal AI Infrastructure"
-  const headerPad = " ".repeat(Math.floor((width - headerLen) / 2));
+  const headerLen = visibleLength(headerText);
+  const headerPad = " ".repeat(Math.max(0, Math.floor((width - headerLen) / 2)));

-  const creditLen = 61; // visible length
-  const creditPad = " ".repeat(Math.floor((width - creditLen) / 2));
+  const creditLen = visibleLength(creditLine);
+  const creditPad = " ".repeat(Math.max(0, Math.floor((width - creditLen) / 2)));

-  const headerPad = " ".repeat(Math.max(0, Math.floor((width - 44) / 2)));
+  const headerPad = " ".repeat(Math.max(0, Math.floor((width - visibleLength(headerText)) / 2)));

-  const creditPad = " ".repeat(Math.max(0, Math.floor((width - 61) / 2)));
+  const creditPad = " ".repeat(Math.max(0, Math.floor((width - visibleLength(creditLine)) / 2)));

Also applies to: 365-367, 683-685, 705-707

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.opencode/PAI/Tools/Banner.ts around lines 331 - 333, The banner code
hardcodes visible widths (e.g., headerLen = 44 and similar 61 elsewhere) which
breaks centering when version text changes; replace those numeric literals by
computing the visible length of the string using the visibleLength(...) helper
(e.g., compute headerLen = visibleLength(headerText) and creditLen =
visibleLength(creditText) where used) and then compute headerPad = "
".repeat(Math.floor((width - headerLen) / 2)); apply this change for the
occurrences around the header block (currently using 44), the credit block
(currently using 61), and the other two places noted (lines referenced in the
review: 365-367, 683-685, 705-707) so all centered strings use
visibleLength(...) instead of hardcoded constants.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@CHANGELOG.md`:
- Line 12: Update the release summary sentence that currently reads “Zen free
default” to use a hyphenated compound—replace the phrase "Zen free default" with
"Zen-free default" in the CHANGELOG entry so the wording reads clearly (search
for the exact phrase "Zen free default" to find the sentence to edit).

---

Nitpick comments:
In @.opencode/PAI/Tools/Banner.ts:
- Around line 331-333: The banner code hardcodes visible widths (e.g., headerLen
= 44 and similar 61 elsewhere) which breaks centering when version text changes;
replace those numeric literals by computing the visible length of the string
using the visibleLength(...) helper (e.g., compute headerLen =
visibleLength(headerText) and creditLen = visibleLength(creditText) where used)
and then compute headerPad = " ".repeat(Math.floor((width - headerLen) / 2));
apply this change for the occurrences around the header block (currently using
44), the credit block (currently using 61), and the other two places noted
(lines referenced in the review: 365-367, 683-685, 705-707) so all centered
strings use visibleLength(...) instead of hardcoded constants.

In `@CHANGELOG.md`:
- Around line 147-153: The Contributors list in CHANGELOG.md is free-form and
should be converted into a structured markdown table for consistency; replace
the bullet list under the "### Contributors" heading with a table that has
columns like "Contributor", "Contribution", and "PR" and move each entry (e.g.,
`@eddovandenboom` — PAI wrapper script, `--fix-symlink` flag ([PR `#104`]), `@ktneely`
— Model profile updates ([PR `#103`]), `@step-security-bot` — CI security hardening
([PR `#106`])) into its own row so the section is machine-readable and follows the
`**/*.md` guideline requiring tables for structured comparisons.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 439cd6f0-106e-4b6b-b8e1-d65e5b56e7d4

📥 Commits

Reviewing files that changed from the base of the PR and between b772613 and e5a811d.

📒 Files selected for processing (20)
  • .opencode/PAI/Tools/Banner.ts
  • CHANGELOG.md
  • README.md
  • docs/epic/CLAUDE-CLEANUP-PLAN.md
  • docs/epic/EPIC-v3.0-Synthesis-Architecture.md
  • docs/epic/OPTIMIZED-PR-PLAN.md
  • docs/epic/TODO-v3.0.md
  • docs/epic/V3.0-COMPLETION-PLAN.md
  • docs/epic/V3.0-RUNBOOK.md
  • docs/epic/pr-filelists/PR-01-files.txt
  • docs/epic/pr-filelists/PR-02-files.txt
  • docs/epic/pr-filelists/PR-03-files.txt
  • docs/epic/pr-filelists/PR-04-files.txt
  • docs/epic/pr-filelists/PR-05-files.txt
  • docs/epic/pr-filelists/PR-06-files.txt
  • docs/epic/pr-filelists/PR-07-files.txt
  • docs/epic/pr-filelists/PR-08-files.txt
  • docs/epic/pr-filelists/PR-09-files.txt
  • docs/epic/pr-filelists/PR-10-files.txt
  • docs/epic/pr-filelists/PR-11-files.txt
💤 Files with no reviewable changes (17)
  • docs/epic/pr-filelists/PR-09-files.txt
  • docs/epic/pr-filelists/PR-02-files.txt
  • docs/epic/pr-filelists/PR-04-files.txt
  • docs/epic/pr-filelists/PR-01-files.txt
  • docs/epic/pr-filelists/PR-05-files.txt
  • docs/epic/pr-filelists/PR-06-files.txt
  • docs/epic/TODO-v3.0.md
  • docs/epic/OPTIMIZED-PR-PLAN.md
  • docs/epic/CLAUDE-CLEANUP-PLAN.md
  • docs/epic/V3.0-RUNBOOK.md
  • docs/epic/EPIC-v3.0-Synthesis-Architecture.md
  • docs/epic/pr-filelists/PR-07-files.txt
  • docs/epic/V3.0-COMPLETION-PLAN.md
  • docs/epic/pr-filelists/PR-08-files.txt
  • docs/epic/pr-filelists/PR-10-files.txt
  • docs/epic/pr-filelists/PR-03-files.txt
  • docs/epic/pr-filelists/PR-11-files.txt

CHANGELOG.md Outdated
## [3.0.0] - 2026-04-12
## [3.0.0](https://github.com/Steffen025/pai-opencode/compare/opencode-v2.0.0...pai-opencode-v3.0.0) (2026-04-13)

PAI-OpenCode v3.0 is the **OpenCode-native release** — a complete re-architecture that moves from a Claude Code fork to vanilla OpenCode, removes the bootstrap loading mechanism in favour of the native skill system, and ships a zero-config Zen free default so users are productive immediately.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix compound adjective wording in the release summary.

Line 12 reads awkwardly as “Zen free default”; use a hyphenated compound (e.g., “Zen-free default”) for clarity.

✏️ Suggested wording fix
-PAI-OpenCode v3.0 is the **OpenCode-native release** — a complete re-architecture that moves from a Claude Code fork to vanilla OpenCode, removes the bootstrap loading mechanism in favour of the native skill system, and ships a zero-config Zen free default so users are productive immediately.
+PAI-OpenCode v3.0 is the **OpenCode-native release** — a complete re-architecture that moves from a Claude Code fork to vanilla OpenCode, removes the bootstrap loading mechanism in favour of the native skill system, and ships a zero-config Zen-free default so users are productive immediately.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
PAI-OpenCode v3.0 is the **OpenCode-native release** — a complete re-architecture that moves from a Claude Code fork to vanilla OpenCode, removes the bootstrap loading mechanism in favour of the native skill system, and ships a zero-config Zen free default so users are productive immediately.
PAI-OpenCode v3.0 is the **OpenCode-native release** — a complete re-architecture that moves from a Claude Code fork to vanilla OpenCode, removes the bootstrap loading mechanism in favour of the native skill system, and ships a zero-config Zen-free default so users are productive immediately.
🧰 Tools
🪛 LanguageTool

[grammar] ~12-~12: Use a hyphen to join words.
Context: ...kill system, and ships a zero-config Zen free default so users are productive imm...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CHANGELOG.md` at line 12, Update the release summary sentence that currently
reads “Zen free default” to use a hyphenated compound—replace the phrase "Zen
free default" with "Zen-free default" in the CHANGELOG entry so the wording
reads clearly (search for the exact phrase "Zen free default" to find the
sentence to edit).

Tools/pai-to-opencode-converter.ts:
- Fix CodeQL alert #11 'Incomplete string escaping': escape backslashes
  BEFORE double quotes (desc.replace(/\\/g, '\\\\').replace(/"/g, '\\"'))
  to prevent broken YAML when input contains literal backslashes.

.opencode/skills/Telos/DashboardTemplate/package.json:
- Bump next ^15.5.6 → ^15.5.15 — resolves Dependabot alerts #2-6
  (4× HIGH/MEDIUM CVEs in Next.js < 15.5.15)
…ntering

CHANGELOG.md:
- 'Zen free default' → 'Zen-free default' (hyphenated compound)
- Contributors bullet list → table (Contributor | Contribution | PR)

Banner.ts:
- Replace 6 hardcoded visible-length constants (44, 35, 61) with
  visibleLength() calls in large + medium Navy banners.
  Centering now adapts when version string length changes.
@Steffen025 Steffen025 merged commit 944ab5f into main Apr 13, 2026
7 checks passed
@Steffen025 Steffen025 deleted the release-please--branches--main--components--pai-opencode branch April 13, 2026 15:20
@github-actions
Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant