Skip to content

Plannotator

v0.17.7 Bugfix

This release fixes issues for SREs watching stability and regressions.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agents claude-code code-review codex obsidian opencode
+3 more
pi-mono plan-mode skills

Affected surfaces

breaking_upgrade

Summary

AI summary

Updates https://github.com/backnotprop/plannotator/issues/528, req, and fix across a mixed release.

Full changelog

Follow @plannotator on X for updates


Missed recent releases?

| Release | Highlights |
| -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| v0.17.6 | Bun.serve error handlers for diagnostic 500 responses, install.cmd cache fix |
| v0.17.5 | Fix VCS detection crash when p4 not installed, install script cache path fix |
| v0.17.4 | Vault browser merged into Files tab, Kanagawa themes, Pi idle session tool fix |
| v0.17.3 | Sticky lane repo/branch badge overflow fix |
| v0.17.2 | Supply-chain hardening, sticky toolstrip and badges, overlay scrollbars, external annotation highlighting, Conventional Comments |
| v0.17.1 | Pi PR review parity, parseRemoteUrl rewrite, cross-repo clone fixes, diff viewer flash fix |
| v0.17.0 | AI code review agents, token-level annotation, merge-base diffs |
| v0.16.7 | Gemini CLI plan review, install script skills directory fix |
| v0.16.6 | Perforce support, Pi shared event API, suggested code prefill, file tree expand fix |
| v0.16.5 | Resize handle scrollbar fix, VS Code Marketplace publish |
| v0.16.4 | Compound planning improvement hook, GitHub Enterprise + self-hosted GitLab, dockview workspace, new themes |
| v0.16.3 | Pi phase configuration, CLI help, untracked file discovery fix, review scroll reset |


What's New in v0.17.7

v0.17.7 fixes the "fetch(req) did not return a Response object" error that affected OpenCode users running opencode web, opencode serve, or any mode that starts the HTTP server (including --port or --hostname flags).

Fix: OpenCode Web/Serve Mode Compatibility

OpenCode recently added Node.js support alongside Bun. To bridge its Hono app to Node's HTTP server, OpenCode uses @hono/node-server, which includes a createAdaptorServer function. That function unconditionally patches global.Response with a polyfill class — a necessary step for Node.js, which lacks native web API globals.

The problem: in opencode web and opencode serve modes, this patch runs before plugins load. When the plannotator plugin calls Bun.serve() and the fetch handler returns new Response(...), it's constructing the hono polyfill, not Bun's native Response. Bun validates return types using internal type tags, not instanceof, so it rejects the polyfill and shows its default error page. The error() handler added in v0.17.6 also uses new Response(...), which is why it didn't fire either — the error handler's own response was also a polyfill.

Plain opencode TUI without --port or server config was never affected. In that mode, OpenCode routes requests through an internal RPC bridge instead of starting an HTTP server, so createAdaptorServer never runs and global.Response stays native.

The fix detects the polyfill by walking the prototype chain. Hono sets up Object.setPrototypeOf(Response2.prototype, GlobalResponse.prototype), so the parent prototype's constructor is the original native Response. The plugin recovers it and restores globalThis.Response before any server code runs. When Response hasn't been patched, the detection check fails safely and the fix is a no-op.

  • Closing #528, reported by @Zengwenj

Install / Update

macOS / Linux:

curl -fsSL https://plannotator.ai/install.sh | bash

Windows PowerShell:

irm https://plannotator.ai/install.ps1 | iex

Pin a specific version:

curl -fsSL https://plannotator.ai/install.sh | bash -s -- --version v0.17.7

Claude Code Plugin: Run /plugin in Claude Code, find plannotator, and click "Update now".

Copilot CLI:

/plugin marketplace add backnotprop/plannotator
/plugin install plannotator-copilot@plannotator

Gemini CLI: The install script auto-detects ~/.gemini and configures hooks, policy, and slash commands.

OpenCode: Clear cache and restart:

rm -rf ~/.cache/opencode/packages/@plannotator ~/.bun/install/cache/@plannotator

Then in opencode.json:

{
  "plugin": ["@plannotator/opencode@latest"]
}

Pi: Install or update the extension:

pi install npm:@plannotator/pi-extension

VS Code Extension: Install from the VS Code Marketplace.


What's Changed

  • fix: recover native Response when patched by hono node-server adapter by @backnotprop

Community

@Zengwenj reported the original issue in #528. @xxJava provided the p4 stack trace and confirmed cross-platform reproduction. @boris-gorbylev and @chocochu confirmed on macOS. @jehu-rodriguez confirmed 0.17.6's error handler didn't fire, which was the key clue that the issue was a non-Response return rather than an exception. The latest reporter confirmed opencode web as the specific trigger, which led directly to identifying the hono adapter's global.Response patch as the root cause.

Full Changelog: https://github.com/backnotprop/plannotator/compare/v0.17.6...v0.17.7

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Plannotator

Get notified when new releases ship.

Sign up free

About Plannotator

All releases →

Related context

Beta — feedback welcome: [email protected]