Skip to content

Accept prerelease Paseo versions in plugin requirements and prepare plugin docs for the 0.8 beta - #4452

Merged
boudra merged 2 commits into
mainfrom
qa/0.8-beta1-plugins-docs
Sep 8, 2026
Merged

Accept prerelease Paseo versions in plugin requirements and prepare plugin docs for the 0.8 beta#4452
boudra merged 2 commits into
mainfrom
qa/0.8-beta1-plugins-docs

Conversation

@boudra

@boudra boudra commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

Linked issue

Refs #4206, #4347, #4430, #4265, #4314, #4357, #4435, #4392, #4431, #4358, #4203, #4446, #3983, #3985.

Type of change

  • Bug fix
  • Docs

Reasoning

Plugins declaring requirements.paseo: ">=0.8.0" were rejected by Paseo 0.8.0-beta.1, so the release examples could not install on the beta. Match the running version or its stable core against the range in the shared compatibility function. Both the daemon and app use this function; legacy <0.8.0 plugins remain rejected by beta.1, and 0.7.2 remains rejected by >=0.8.0. Explicit prerelease ranges still work.

The ACP example also had unsupported name, version, and description manifest fields. Remove them and validate every checked-in example through the production manifest reader in a parameterized test.

Prepare the plugin guides for the beta: label v0.8 Beta while retaining stable v0.7 navigation; use >=0.8.0 in copyable manifests and explain stable-core matching; correct the slash-command RPC schema and stale runtime-boundary/config-edit guidance; clarify ACP and lifecycle-helper prerequisites; add README plugin discovery and trust guidance. The documentation-navigation assertion follows the Beta label and existing Providers page. The scaffold still generates the current CLI version as its minimum.

Compatibility and scope

No wire schema or RPC shape changes. Old messages still parse unchanged; this changes only local plugin version eligibility in the shared app/daemon helper. An older app still checks its own version and does not become compatible merely because its daemon is compatible. Stable-core matching intentionally treats a prerelease as eligible wherever its stable release is eligible.

Two commits on the branch: the existing docs commit 1766217a8, followed by the code fix 5de2122a7. No evidence files are committed. No release version bump, SDK publish, or provider implementation change.

Test-first evidence

Before the fix, the new compatibility case failed with:

FAIL plugin requirements on daemon > accepts >=0.8.0 on 0.8.0-beta.1
Plugin "test" requires Paseo >=0.8.0. Your daemon is 0.8.0-beta.1.

Before removing the ACP metadata, the new example-validation case failed with:

FAIL plugin manifest > validates the provider-acp-transformer example manifest
Unrecognized keys: "name", "version", "description"

After the fixes:

npx vitest run packages/protocol/src/plugin-requirements.test.ts --bail=1
44 passed — both app and daemon, stable-core acceptance, legacy rejection,
0.7.2 rejection, explicit beta range acceptance, invalid/unknown versions

npx vitest run packages/server/src/server/plugins/manifest.test.ts --bail=1
14 passed — all 12 example manifests plus existing validation tests

npm run build:client   exit 0
npm run typecheck      exit 0
npm run lint           0 warnings, 0 errors
npm run format         exit 0
git diff --check       exit 0

Checked all 12 example manifests and seven manifest JSON snippets across public/internal/example docs: no unsupported top-level metadata fields found. packages/app/src/plugins/registry.ts imports and calls the same assertPluginCompatibility before evaluating client bundles. No app-specific fallback was added.

CLI integration verification

Used this checkout's built CLI against two isolated in-process daemons, each with its own temporary PASEO_HOME and OS-assigned port. The daemon code is the built release source with the rebuilt protocol package; the harness sets only the reported version to beta.1 or 0.7.2. Installed directly from checked-in example directories, with no temporary requirement rewrites or ACP command substitution. All 12 plugins reached running on beta.1, and all 12 were rejected on 0.7.2. Both daemons stopped in finally; existing daemons were untouched.

ACP's example-acp command remains a documented placeholder; installation/running does not establish that command can complete a prompt. Prior UI/provider QA used an installed OpenCode ACP command explicitly, as recorded below.

Example beta.1 add 0.7.2 add
agent-configuration exit 0, running exit 1, incompatible
catppuccin exit 0, running exit 1, incompatible
inline-thinking exit 0, running exit 1, incompatible
lifecycle-actions exit 0, running exit 1, incompatible
lifecycle-logger exit 0, running exit 1, incompatible
linear exit 0, running exit 1, incompatible
local-plugin exit 0, running exit 1, incompatible
modal-ui exit 0, running exit 1, incompatible
provider-acp-transformer exit 0, running exit 1, incompatible
provider-direct exit 0, running exit 1, incompatible
settings exit 0, running exit 1, incompatible
timeline-items exit 0, running exit 1, incompatible
Exact CLI commands and output (trust notice / Node warning omitted)

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/agent-configuration --json
{
  "id": "agent-configuration",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/agent-configuration",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/catppuccin --json
{
  "id": "catppuccin",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/catppuccin",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/inline-thinking --json
{
  "id": "inline-thinking",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/inline-thinking",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/lifecycle-actions --json
{
  "id": "lifecycle-actions",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/lifecycle-actions",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/lifecycle-logger --json
{
  "id": "lifecycle-logger",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/lifecycle-logger",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/linear --json
{
  "id": "linear",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/linear",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/local-plugin --json
{
  "id": "local-example",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/local-plugin",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/modal-ui --json
{
  "id": "modal-ui-example",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/modal-ui",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/provider-acp-transformer --json
{
  "id": "provider-acp-transformer-example",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/provider-acp-transformer",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/provider-direct --json
{
  "id": "provider-direct-example",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/provider-direct",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/settings --json
{
  "id": "settings-example",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/settings",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.8.0-beta.1

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:43461 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/timeline-items --json
{
  "id": "pi-tasks-timeline",
  "path": "/home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/timeline-items",
  "enabled": true,
  "status": "running"
}

Exit: 0

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/agent-configuration --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "6221835a-0854-4a2c-a865-54a2d02d9da2",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"agent-configuration\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/catppuccin --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "3d515126-92b3-4ef6-9aa1-71df3e1daab5",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"catppuccin\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/inline-thinking --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "21a0c4ab-f688-4aa9-a61d-8b554a51e55e",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"inline-thinking\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/lifecycle-actions --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "7a9f81a2-2da0-40ab-afba-9d115764a59f",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"lifecycle-actions\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/lifecycle-logger --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "962a07a9-18de-4469-aaa6-d4476e9f6742",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"lifecycle-logger\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/linear --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "8e76cd71-6e02-428e-943f-d39635cc1acc",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"linear\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/local-plugin --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "f673a478-1949-48e5-9346-3ca38b1596dd",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"local-example\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/modal-ui --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "38b35634-e1d9-4ce0-916e-d05267bb9ced",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"modal-ui-example\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/provider-acp-transformer --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "1bae68ad-e001-451a-917c-39d207d624c4",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"provider-acp-transformer-example\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/provider-direct --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "be67d89d-d8cf-4716-a4f7-a55d2797885a",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"provider-direct-example\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/settings --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "47a8ab9d-b5c0-43ee-b00c-4ec96d0d55f3",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"settings-example\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Reported daemon version: 0.7.2

node /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/packages/cli/dist/index.js --host 127.0.0.1:41625 plugin add /home/moboudra/dev/paseo/.dev/paseo-home/worktrees/04qpit1r/qa-0-8-beta1-plugins-docs/plugin-examples/timeline-items --json
{
  "error": {
    "name": "DaemonRpcError",
    "requestId": "100c356f-564d-4ca6-91c8-6213eb87dc11",
    "requestType": "plugin.directory.install.request",
    "code": "handler_error",
    "message": "Request failed: Plugin \"pi-tasks-timeline\" requires Paseo >=0.8.0. Your daemon is 0.7.2. Use a compatible plugin version or update the daemon. requestType=plugin.directory.install.request code=handler_error"
  }
}

Exit: 1

Prior browser and SDK QA retained

Linux/Chromium at 1440×1000 and 390×844 against an isolated built daemon: settings save/validation/reload persistence; Catppuccin theme; sidebar item visibility/order; workspace and Explorer panels; composer pills and slash command; timeline renderer rows; modal clipboard/list behavior; direct-provider and configured ACP prompts; all 11 lifecycle hook types; public SDK project subscription, permission response and workspace-owned terminal operations; Git update rejection preserving the running revision. Those earlier UI checks used disclosed temporary example adaptations before the compatibility fix. This follow-up independently verifies unmodified checked-in example installation after the fix.

Prior local SDK/runtime/docs checks: 44 SDK boundaries, 1 plugin process, 31 client loader, 1 migration documentation, 2 documentation navigation; 52 current TypeScript snippets typechecked with typed surrounding context, and 46 Markdown links resolved (11 unique external URLs fetched). No complete local suite was run.

Remaining release QA notes outside this fix: the 0.7.2-versioned scaffold selects the old published SDK while emitting newer imports; a version-bumped/published beta scaffold still needs verification. Appending a plugin row after a completed provider turn extended its displayed duration in prior QA. Successful authenticated Linear search, live Pi integration, native platforms/gestures and every lifecycle policy branch remain untested. These are not claimed as fixed or green by this PR.

Final CI on 5de2122a78155bf4fec5bed6d696d364b38a6dae is green: SDK tests (including ACP), Linux and Windows server tests, typecheck, lint, formatting, Docker, Linux Nix and macOS desktop builds, and Greptile review all passed. Unaffected jobs were skipped by CI filters. The ACP failure did not recur; no rerun or assertion change was needed. All review threads are resolved; the stable-core behavior for explicit prerelease ranges was confirmed as intentional and the reviewer withdrew that finding.

Checklist

  • Failing-first regressions for both reported blockers
  • Shared app/daemon behavior; no wire compatibility changes
  • All 12 checked-in examples install on beta.1 and reject 0.7.2
  • Build client, typecheck, lint, format
  • Copyable docs ranges and README updated
  • Evidence stays outside the repository

@greptile-apps

greptile-apps Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR updates the plugin documentation for the 0.8 beta, repairs the ACP example manifest and documentation snippets, and changes plugin compatibility handling so prerelease runtimes can satisfy ranges written against their stable core.

  • Labels and navigation now present v0.8 as Beta while retaining v0.7 stable documentation.
  • Plugin installation, lifecycle, provider, migration, and SDK guidance is clarified.
  • Example manifests are validated from the server test suite.
  • Compatibility checks now normalize prereleases to their stable core, but that fallback also bypasses explicit prerelease minimums.

Confidence Score: 4/5

The PR is not yet safe to merge because explicit beta minimums can be bypassed, allowing plugins to load on an older beta than they declare.

The compatibility gate retries every prerelease as its stable core, so an older beta can satisfy a newer explicit prerelease floor and load code that depends on unavailable APIs.

Files Needing Attention: packages/protocol/src/plugin-requirements.ts, packages/protocol/src/plugin-requirements.test.ts

Important Files Changed

Filename Overview
packages/protocol/src/plugin-requirements.ts Broadens prerelease compatibility through stable-core matching, but unintentionally defeats explicit prerelease minimums.
packages/protocol/src/plugin-requirements.test.ts Expands daemon/app compatibility coverage but omits the older-beta versus newer-beta-floor boundary.
packages/server/src/server/plugins/manifest.test.ts Validates every current checked-in plugin example through the production manifest reader.
plugin-examples/provider-acp-transformer/paseo-plugin.json Removes unsupported manifest metadata so the ACP example passes manifest validation.
public-docs/plugins/v0.8/reference.md Updates beta requirements and SDK guidance, while documenting the new stable-core compatibility behavior.
public-docs/plugins/v0.8/migration.md Updates migrated manifests to use the beta-compatible stable range.
packages/website/src/plugin-docs-navigation.test.ts Updates navigation expectations for the Beta label and provider guide.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  M[Plugin manifest range] --> C[assertPluginCompatibility]
  V[Daemon or app version] --> C
  C --> S{Actual version satisfies?}
  S -->|Yes| L[Load plugin]
  S -->|No| K[Compare stable core]
  K -->|Satisfies| L
  K -->|Does not satisfy| R[Reject plugin]
Loading

Reviews (2): Last reviewed commit: "fix(plugins): accept prerelease versions..." | Re-trigger Greptile

Let beta runtimes load plugins targeting their stable release while preserving the pre-0.8 legacy boundary. Validate all checked-in example manifests and remove unsupported ACP example metadata.
@boudra boudra changed the title Prepare plugin documentation for the 0.8 beta Accept prerelease Paseo versions in plugin requirements and prepare plugin docs for the 0.8 beta Sep 8, 2026
Comment thread packages/protocol/src/plugin-requirements.ts
@boudra
boudra merged commit 229f3cd into main Sep 8, 2026
24 checks passed
@boudra
boudra deleted the qa/0.8-beta1-plugins-docs branch September 8, 2026 06:30
omorsi45 pushed a commit to omorsi45/paseo that referenced this pull request Sep 8, 2026
…lugin docs for the 0.8 beta (getpaseo#4452)

Accept plugin requirements against the runtime version or its stable core while preserving the legacy version boundary. Validate all example manifests, correct the ACP example metadata, and prepare plugin author documentation for the beta.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant