/// import React from "react"; import logoImage from "../plannotator.webp"; import { ModeToggle } from "./ModeToggle"; interface LandingProps { onEnter?: () => void; shareBaseUrl?: string; } export const Landing: React.FC = ({ onEnter, shareBaseUrl }) => { const demoUrl = shareBaseUrl || "https://share.plannotator.ai"; return (
{/* Nav */} {/* Content wrapper with vertical borders */}
{/* Hero */}
For Claude Code & OpenCode

Annotate plans.
Not in the terminal.

Plannotator logo

Interactive Plan Review for coding agents. Mark up and refine plans visually, share for team collaboration. Works with Claude Code and OpenCode.

{/* YouTube button - Claude Code */} Watch for Claude Code {/* Open Demo button */} {onEnter ? ( ) : ( Open Demo )}
{/* OpenCode video link */} Also watch for OpenCode →
{/* Problem → Solution */}

The Problem

Coding agents show plans in the terminal. You approve or deny, but giving specific feedback means typing everything out. Hard to reference exact sections. Zero collaboration features.

The Solution

Select the exact parts of the plan you want to change. Mark for deletion, add a comment, or suggest a replacement. Share plans with your team. Feedback flows back to your agent automatically.

{/* Privacy & Sharing */}

Runs locally.

Reviews and saved data stay local by default. Every load checks GitHub for updates, with no current opt-out, but sends no review content.

Know what a link contains.

Small shares contain compressed, unencrypted content in the URL fragment. Short links upload encrypted ciphertext. Anyone with the full link can read the shared content. Inspired by{" "} textarea.my .

Save to Obsidian.

Approved plans auto-save to your vault with frontmatter and auto-extracted tags. Build a searchable archive of every plan your agents create.

{/* Preview */}

What it looks like

{/* App Preview */}
{/* Mock Header */}
Plannotator
{/* Mock Content */}
{/* Document Area */}
{/* Mock heading */}
{/* Mock paragraph */}
{/* Mock subheading */}
{/* Mock list */}
{/* Mock code block */}
{/* Mock Sidebar */}
Annotations 2
{/* Mock annotation cards */}
Delete
Comment

Select text → annotate → export feedback

{/* How it works */}

How it works

Claude Code: ExitPlanMode hook opens UI
OpenCode: Agent calls submit_plan tool
Select text → choose action (delete, comment, replace) → annotations appear in the sidebar Click approve to proceed, or provide feedback with annotations. Feedback flows back to your agent automatically.
{/* Technical */}

Technical details

  • • Single HTML file build — runs from Bun server on random port
  • • Claude Code: Binary + plugin with PermissionRequest hook
  • • OpenCode: npm package with submit_plan tool
  • • Hash-based URL sharing, with an optional encrypted paste service
GitHub View GitHub repository
{/* Footer */}
); }; const Step: React.FC<{ num: number; title: string; children: React.ReactNode; }> = ({ num, title, children }) => (
{num}

{title}

{children}

);