Bump version to 0.4.10

- Update CLAUDE.md with new APIs and file structure
- Remove unused helper functions (isAgentSwitchEnabled, isPlanSaveEnabled)
- Sync all package versions to 0.4.10

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Michael Ramos
2026-01-07 14:24:59 -08:00
parent 710e18daff
commit f4dcdbffd6
7 changed files with 18 additions and 28 deletions
+14 -10
View File
@@ -18,13 +18,14 @@ plannotator/
├── packages/
│ ├── server/ # Shared server implementation
│ │ ├── index.ts # startPlannotatorServer(), handleServerReady()
│ │ ├── storage.ts # Plan saving to disk (getPlanDir, savePlan, etc.)
│ │ ├── remote.ts # isRemoteSession(), getServerPort()
│ │ ├── browser.ts # openBrowser()
│ │ ├── integrations.ts # Obsidian, Bear integrations
│ │ └── project.ts # Project name detection for tags
│ ├── ui/ # Shared React components
│ │ ├── components/ # Viewer, Toolbar, Settings, etc.
│ │ ├── utils/ # parser.ts, sharing.ts, storage.ts
│ │ ├── utils/ # parser.ts, sharing.ts, storage.ts, planSave.ts, agentSwitch.ts
│ │ ├── hooks/ # useSharing.ts
│ │ └── types.ts
│ └── editor/ # Main App.tsx
@@ -80,15 +81,18 @@ Deny → stdout: {"hookSpecificOutput":{"decision":{"behavior":"deny","messag
## Server API
| Endpoint | Method | Purpose |
| -------------- | ------ | --------------------------------- |
| `/api/plan` | GET | Returns plan markdown as JSON |
| `/api/approve` | POST | User approved the plan |
| `/api/deny` | POST | User denied with feedback in body |
| Endpoint | Method | Purpose |
| --------------------- | ------ | ------------------------------------------ |
| `/api/plan` | GET | Returns `{ plan, origin }` |
| `/api/approve` | POST | Approve plan (body: planSave, agentSwitch, obsidian, bear, feedback) |
| `/api/deny` | POST | Deny plan (body: feedback, planSave) |
| `/api/image` | GET | Serve image by path query param |
| `/api/upload` | POST | Upload image, returns temp path |
| `/api/obsidian/vaults`| GET | Detect available Obsidian vaults |
**Location:** `packages/server/index.ts` (shared), `apps/hook/server/index.ts` (Claude Code entry), `apps/opencode-plugin/index.ts` (OpenCode entry)
**Location:** `packages/server/index.ts`
Both plugins use the shared `startPlannotatorServer()` from `packages/server`. The server handles remote detection, port configuration, and all API routes. Port is random locally (`port: 0`) or fixed (`19432`) in remote mode.
Both plugins use `startPlannotatorServer()` from `packages/server`. Port is random locally or fixed (`19432`) in remote mode.
## Data Types
@@ -188,9 +192,9 @@ type ShareableAnnotation =
## Settings Persistence
**Location:** `packages/ui/utils/storage.ts`
**Location:** `packages/ui/utils/storage.ts`, `planSave.ts`, `agentSwitch.ts`
Uses cookies instead of localStorage because each hook invocation runs on a random port, and localStorage is scoped by origin (including port). Cookies are scoped by domain only.
Uses cookies (not localStorage) because each hook invocation runs on a random port. Settings include identity, plan saving (enabled/custom path), and agent switching (OpenCode only).
## Syntax Highlighting
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "plannotator",
"description": "Interactive Plan Review: Mark up and refine your plans using a UI, easily share for team collaboration, automatically integrates with plan mode hooks.",
"version": "0.4.9",
"version": "0.4.10",
"author": {
"name": "backnotprop"
},
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@plannotator/opencode",
"version": "0.4.9",
"version": "0.4.10",
"description": "Plannotator plugin for OpenCode - interactive plan review with visual annotation",
"author": "backnotprop",
"license": "BSL-1.1",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "plannotator",
"version": "0.4.9",
"version": "0.4.10",
"private": true,
"description": "Interactive Plan Review for Claude Code - annotate plans visually, share with team, automatically send feedback",
"author": "backnotprop",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@plannotator/server",
"version": "0.4.8",
"version": "0.4.10",
"private": true,
"description": "Shared server implementation for Plannotator plugins",
"main": "index.ts",
-7
View File
@@ -44,10 +44,3 @@ export function getAgentSwitchSettings(): AgentSwitchSettings {
export function saveAgentSwitchSettings(settings: AgentSwitchSettings): void {
storage.setItem(STORAGE_KEY, settings.switchTo);
}
/**
* Check if agent switching is enabled
*/
export function isAgentSwitchEnabled(): boolean {
return getAgentSwitchSettings().switchTo !== 'disabled';
}
-7
View File
@@ -47,10 +47,3 @@ export function savePlanSaveSettings(settings: PlanSaveSettings): void {
storage.removeItem(STORAGE_KEY_PATH);
}
}
/**
* Check if plan saving is enabled
*/
export function isPlanSaveEnabled(): boolean {
return getPlanSaveSettings().enabled;
}