Repository navigation
feat(opencode): support V1 and V2 notifications in one plugin - #294
Conversation
|
Important Review skippedToo many files! This PR contains 208 files, which is 58 over the limit of 150. To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configuration
⛔ Files ignored due to path filters (3)
📒 Files selected for processing (208)
You can disable this status message by setting the
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. Comment |
777genius
left a comment
There was a problem hiding this comment.
Local Claude Code review using Claude Opus 5.5 (claude-opus-5-5). Read-only source review at 0f1151d. 3 actionable findings; fixes and verification will follow. No publication or merge approval.
[P3] Other user docs still say V2 is unsupported
docs/INSTALLATION.md:7 ('V2 unsupported'), docs/troubleshooting.md:7-8 ('V2 is unsupported') and docs/PLUGIN_COMPATIBILITY.md:8-9 ('V2 is not supported') contradict the updated README and opencode-notifications.md. They also contradict the bootstrap, which now accepts V2 >= 2.0.0. A user following troubleshooting would be told that a host the installer accepts is unsupported.
Suggested fix: Update these three docs to match the candidate wording: tested on 1.18.33, 2.0.0 and 2.0.21, SDK publication pending.
Location: docs/INSTALLATION.md:7
777genius
left a comment
There was a problem hiding this comment.
Local Claude Code / Claude Opus 5.5 final follow-up at 2a15a95.
All actionable findings from the four review rounds are addressed (8 total across the two PRs). The final focused model review returned no remaining findings. This is technical code review, not publication or merge approval.
Maintainer verification: 69 SDK tests and typecheck, five plugin tests and bundle build pass. Before/after regressions distinguish all recovery and eviction fixes; the strengthened interruption test fails if its guard is removed. Native same-session recovery passed on 1.18.33, 2.0.0 and 2.0.21, including queue plus interrupt, dismiss, reject and provider failure. Actual private D-Bus calls remained generic, silent and action-free.
Provenance: extended recovery matrices ran at product 153cab3 / SDK b6f6c94; installed-artifact checks after the next eviction fix ran at 31bd651 / SDK 8e651b80. Final exact candidate 2a15a95 / SDK 27be62a68 passed installed completion on all three native versions and current-V2 managed reload. The extended matrices were not all rerun on final SHA. SDK tarball bytes match committed source and the product lock integrity.
Remaining release gates: SDK 0.2.0 registry publication with the exact integrity, a clean registry install reproducing the bundle, and remaining platform CI on final source. Product PR stays draft. No package published and no PR merged.
Add a bounded read-only clock helper and boot/domain-qualified samples for original native event admission. Preserve existing journal clock authority; Windows uses precise wall sampling without coarse fallback. Five-platform packaged qualification and notification admission integration remain pending.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #294 +/- ##
==========================================
- Coverage 65.99% 65.87% -0.13%
==========================================
Files 264 290 +26
Lines 30005 31779 +1774
==========================================
+ Hits 19802 20933 +1131
- Misses 7245 7778 +533
- Partials 2958 3068 +110 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Retain clock/event capacity until actual child close, with bounded termination and controlled per-command environments. Verify Linux real-child lifecycle contracts; installed observer composition and other native platforms remain pending.
Compare the actual class90 boot identity ABI and precise counter against independent native calls. Retain the original whole-snapshot assertion and log bounded failure predicates without native identifiers.
Bind notification claims to the captured installation incarnation under component, policy and store leases. Retain canonical claims across clock discontinuities and restart, separate native read tolerance from total source uncertainty, and verify typed terminal identities before IO.
Bind QueryInterruptTimePrecise to the documented realtime API contract. Retain strict boot identity and VOID pointer-output checks; report contract loading and export availability independently.
Preserve original entry deadlines, strict private frame provenance, one shared admission handoff and actual parent/probe settlement. Keep clock rows and runtime observer authority unverified until native qualification. Candidate requires the reviewed three-token JS producer before deployment.
…line Retain the immediate post-disposal snapshot and allow live total-count nonincrease only within the original absolute deadline. Preserve baseline, thresholds, production budgets and natural closure checks; document the changed TEST time boundary and ownership limitation. Refs #105
Regenerate the five paired clock roots and embed the current Windows binding cache. Give the hermetic D-Bus receiver its required capability reply before Notify. The bundle has independently verified byte custody; the earlier auxiliary process-group cleanup failure remains recorded separately. Refs #105 Related #301, #302, #309, #320
Accept the controlled session titles and optional question preview while rejecting unknown Notify payloads. Cover the receiver contract with real Notify behavior assertions. Check LaunchServices for the controlled private stage instead of rejecting registration of the release fixture input. Keep published generation and disposable acquisition checks. Refs #105 Related #301, #302, #309, #320
Retain only known desktop and webhook failure reasons, and expose fixed composition stages through the existing diagnostics option. Revoke authority before invoking diagnostic callbacks. Successful delivery, claims, budgets and private data remain unchanged. Validated focused consumer, Windows adapter and Node registry tests, preparation callback regression and TypeScript checking in an isolated hosted TEST checkout. Refs #105 Refs #301 Refs #302 Refs #309 Refs #320
Regenerate the embedded plugin and the five existing algorithm roots from the reviewed diagnostics source. Keep reader descriptors, platform membership and physical clock bounds unchanged. Captured and rendered with the existing generator; all five roots independently checked on GPT-6.1 high. Bundled once with the existing pinned offline toolchain in a hosted TEST checkout. Native qualification remains pending. Refs #105 Refs #301 Refs #302 Refs #309 Refs #320
Refs #105 Preserve the dual API candidate and Windows V1 limitation while accepting current public product naming. OpenCode selected source and generated assets remain unchanged.
Use the strict SDK finalized completion snapshot with live native control and the original activation calibration. Keep attention, error and V2 preparation unchanged. Refs #105
Replace the assembly load that stalls notification submission with the qualified ToastNotificationManager type preload. Preserve the original submission deadline and Show call. Refs #105
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Reuse the original v1.48.0 binaries and sealed stock-host inputs for fresh finite primitive and installed business observations. Preserve full native qualification denials and skipped macOS channels. Retain the independently reviewed native Codex Stop and webhook receipt, including its original harness false negative. Refs #105, #294, #337, #340, #341
Publish qualified Linux amd64/arm64 and Windows amd64 channels for v1.48.1 after asset verification. Preserve the release PR histories and all five legacy main versions at 1.46.1. Both macOS source rows and GitHub Latest remain v1.46.1. Refs #105, #294, #301, #302, #309, #320, #336, #337, #340, #341, #369, #370.
Integrate current main and its notification budget precision fix. Preserve the Linux/Windows-only release topology, sealed stock-host qualification inputs, fourteen-day artifacts and partial promotion state. Retain approved managed routes only for ordinary existing release jobs. Resolve duplicate admission test deadline helpers using the shared setup and per-command fixtures while preserving the exact retention boundary assertions. Keep the approved cold-start and inert notification fixtures unchanged. Refs #105, #294, #301, #302, #309, #320, #336, #337, #340, #341, #369, #370, #382
Route ordinary Linux CI through Ubicloud and ARM macOS CI through Namespace while retaining two Mac slots. Preserve Windows and Intel macOS runner contracts, frozen physical qualification, current release custody and original PR #378 ancestry. Isolate desktop unit-test helpers and per-job Darwin Python caches. Stabilize test fixtures for cold process startup and inert macOS application launch without changing production execution deadlines. Refs #105 Refs #294 Refs #301 Refs #302 Refs #309 Refs #320 Refs #336 Refs #337 Refs #340 Refs #341 Refs #369 Refs #370 Refs #382 Independent technical review accepted exact head 53b2982. All eight mandatory workflows passed on that head: Linux/macOS/Windows Go 1.25 and 1.26 CI, Swift tests, SDK blackbox, offline recovery, selector bootstrap, qualification candidates and landing verification. Six redundant native qualification workflows were cancelled outside migration proof scope and are not qualification passes. Current main signing custody and vendor test inputs were independently reviewed as compatible.
OpenCode V1 and V2 expose different plugin APIs. One installed entry point selects the observer from the actual host for root-session completion, question, permission and error notifications. Installation preserves existing skills and MCP configuration. Persistent TUI/serve hosts are supported; one-shot
opencode rundelivery remains best effort because the host may exit before asynchronous delivery settles.The original heads of #295, #298, #299, #300, #303 and #308 remain ancestors of this branch. Use a merge commit to preserve them. Installer dependencies 777genius/universal-agent-plugins#382 and #384 have merged.
Stock Windows V1 1.18.33 retains the accepted original-event-age limitation: a delayed completion may notify once and recur after the 24-hour claim lifetime. Other filters, provenance, deduplication and limits remain enforced.
Installed validation led to three bounded corrections: macOS process arguments could fill a 4096-byte buffer; V1 completion performed redundant asynchronous checks during shutdown; Windows toast initialization could stall while loading the WinRT assembly. Notification deadlines and shutdown fencing remain enforced. V1 completion uses the validated SDK snapshot and activation checks and displays the generic OpenCode title.
Validation:
Native Intel macOS desktop E2E remains unproved: GitHub runners reported notification permission undetermined. Compiled native clock/ABI checks passed, but do not establish Intel desktop delivery. This implementation can merge behind explicit setup; it does not claim full per-target lifetime/clock/visible-banner qualification or authorize a cross-platform release.
The current-main merges preserve OpenCode managed policy state, Cursor bounded revocation and qualified platform release channels. Public released V1 support remains distinct from this unreleased dual-version candidate. E2E test corrections remove unsupported cancellation-count assumptions while preserving strict negative records, attempt limits, positive delivery counts, closure and silence checks. Historical failures are retained against their actual runs; prior E2E is not relabeled as execution of a later source head.
Refs #105
Related #301, #302, #309, #320