Commit Graph

1173 Commits

Author SHA1 Message Date
Michael Ramos 64f2cbfa16 Fix release build: add missing @plannotator/server dependency
The hook's server/index.ts imports from @plannotator/server, but the
package wasn't declared in dependencies. Bun only creates workspace
symlinks for declared dependencies, causing the build to fail in CI.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 14:36:50 -08:00
Michael Ramos eefcf91bc2 Fix release workflow: use working-directory for bundle step
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 14:34:10 -08:00
Michael Ramos 0d7a4b66cf Fix release workflow for workspace packages
Pre-bundle server to resolve @plannotator/server before cross-compiling.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 14:31:57 -08:00
Michael Ramos 93dcbe55a8 Bump version to 0.4.2
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 14:28:57 -08:00
Michael Ramos 14e9aea0ec Fix/devcontainer & plan auto switching (opencode) (#31)
* Refactor: shared server package with PLANNOTATOR_REMOTE env var

- Create packages/server/ with shared server implementation
- Add PLANNOTATOR_REMOTE=1 env var for devcontainer/SSH mode
- Deprecate SSH_CONNECTION detection (still works with warning)
- Both Claude Code and OpenCode now use identical server logic
- OpenCode gains Obsidian/Bear integrations and remote detection
- Update documentation with environment variables section

Fixes #27

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Remove PLANNOTATOR_ORIGIN env var, fix onReady callback timing

- Remove PLANNOTATOR_ORIGIN hack from Claude Code hook (hardcode "claude-code")
- Fix onReady callback to pass port directly (was referencing undefined server)
- Create tests/manual/test-server.ts for testing either origin
- Update test-hook-2.sh to use new test server with opencode origin

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add devcontainer test setup, reduce logging verbosity

- Add tests/devcontainer/ with devcontainer.json for testing remote mode
- Add tests/opencode-local/ for local OpenCode testing
- Update package.json build script for proper bundling
- Remove verbose multi-line error messages, keep useful errors
- Clean up unused deprecationWarned variable

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add devcontainer support and documentation

- Add PLANNOTATOR_REMOTE env var for container/remote detection
- Remove console logging (silent operation)
- Add devcontainer.md with full setup instructions
- Add devcontainer section to OpenCode plugin README
- Add port-only test setup to reproduce common misconfiguration
- Update test devcontainers to forward port 4096 for opencode web
- Bump version to 0.4.1

Fixes #27

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update CLAUDE.md: legacy SSH detection, not deprecated

Removed incorrect mention of deprecation warning - SSH_TTY/SSH_CONNECTION
detection is silent by design.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix OpenCode agent switching after plan approval

After approving a plan, the conversation context stayed in "plan" mode
even though the TUI showed "build". This caused edits to fail because
the plan agent has edit permissions denied.

The fix uses session.prompt() to inject a message with agent: "build",
which triggers a new agentic loop with proper build agent permissions.

Fixes #29

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 14:25:19 -08:00
Sean Swanson 4f37699e03 Widen plan viewer layout for responsiveness (#32) 2026-01-06 13:33:03 -08:00
Michael Ramos 1e293d3a07 Update README with image annotation feature
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 18:22:40 -08:00
Michael Ramos 5da7ffa944 Bump version to 0.4.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 18:12:07 -08:00
Michael Ramos 0e75251e0b UX improvements for annotations and feedback flow
- Global comment input now multiline (textarea with auto-expand)
- Enter submits, Shift+Enter for newlines (all annotation inputs)
- Buttons stay at top when textarea expands (items-start)
- Rename "Provide Feedback" to "Deny with Feedback"
- Dim approve button when Claude Code + annotations exist
- Add CSS tooltip warning about annotations not sent on approve
- Add image attachments to code block toolbar
- Lock code block toolbar open when in input mode (fixes dialog closing)
- Rename "Images" to "Attach" with descriptive tooltip

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 17:59:36 -08:00
Michael Ramos 386a9e6d4a Feat: Add image attachments with annotation drawing
- Add global (plan-level) and per-annotation image attachments
- Image upload via drag-drop, file picker, or clipboard paste (Cmd+V)
- ImageAnnotator component for drawing on images before saving
  - Freehand pen, arrow, and circle tools
  - Adjustable stroke size and color presets
  - Edge-to-edge circle drawing
- Server endpoints for image upload (/api/upload) and serving (/api/image)
- Images stored as paths in /tmp/plannotator/, included in export for Claude
- Preserve image paths in URL sharing for round-trip scenarios
- Uses perfect-freehand (~2KB) for smooth pen strokes

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 17:06:43 -08:00
Michael Ramos 1820142d28 Feat: Add origin tracking badge (Claude Code vs OpenCode)
- Server returns origin field in /api/plan response
- UI displays badge next to version in header
- Claude Code: orange badge
- OpenCode: neutral zinc/gray badge
- Supports PLANNOTATOR_ORIGIN env var for testing

Closes #22

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 14:16:35 -08:00
Michael Ramos 685c67f780 Feat: Add project name to tags (Obsidian/Bear)
- Add project.ts utility for detecting git repo name
- Fallback to directory name if not in a git repo
- Include project name as second tag after "plannotator"
- Add 21 unit tests for project detection
- Increase tag limit from 6 to 7

Closes #24

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 09:14:31 -08:00
Michael Ramos 7a7e98b55b Add Linux ARM64 binary to release workflow 2026-01-05 09:06:57 -08:00
Michael Ramos c981f6ff0e Bump version to 0.3.1 2026-01-04 10:22:07 -08:00
Michael Ramos 8828ca01ba Feat: Add Bear Notes integration (#21)
- Add bear.ts utility for settings storage
- Add Bear toggle to Settings UI (simple on/off)
- Add saveToBear() using x-callback-url protocol
- Reuse extractTags() for inline #hashtags
- Change base tag from "plan" to "plannotator"
- Add test-hook-2.sh with alternate plan for testing

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

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 10:14:36 -08:00
Michael Ramos 137ed35df0 Add cache clear instructions for existing OpenCode users
Users may be stuck on old plugin versions due to OpenCode's caching.
Added note to both READMEs with the rm command to clear the cache.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 13:34:17 -08:00
Michael Ramos 33ecca3c19 Add prominent OpenCode notice to install script
OpenCode users were running the Claude Code install script and getting
confused. Added a clear banner at the end directing them to use the
npm plugin instead.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-03 13:33:14 -08:00
Michael Ramos 9535003826 docs: recommend @latest for OpenCode plugin install
OpenCode caches plugin versions, so without @latest users may not
get updates. Added note explaining this.
2026-01-03 13:16:29 -08:00
Michael Ramos 0c58212850 Bump version to 0.3.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 11:11:31 -08:00
Michael Ramos 6aae06500c Feat/save to obsidian (#11)
* Add Obsidian integration for auto-saving approved plans

- Auto-detect Obsidian vaults from system config
- Settings UI with vault dropdown and folder config
- Save plans with YAML frontmatter (created, source, tags)
- Extract tags heuristically from H1 title and code fence languages
- Human-readable filenames: "Title - Jan 2, 2026 2-30pm.md"
- Cross-platform support (macOS, Windows, Linux)
- Add local test script for hook simulation

* Add backlinks and improve filename generation

- Add [[Plannotator Plans]] backlink to saved notes for graph connectivity
- Extract title from H1 for human-readable filenames
- Format: "Title - Jan 2, 2026 2-30pm.md"
- Add bulk test script for ~/.claude/plans
- Add fix script to add backlinks to existing vault files

* Add Obsidian integration docs to README, landing page, and plugins

- Root README: Quick note about Obsidian support after video table
- apps/hook README: Detailed setup and example file format
- apps/opencode-plugin README: Feature list and setup instructions
- Landing page: New "Save to Obsidian" feature card

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add Obsidian Integration section to README

* Screenshot Obsidian settings

Added an implementation plan section for user authentication.

* Update README with Obsidian auto-save feature

Added information about auto-saving approved plans to Obsidian.

* Update README with Obsidian integration link

Added link to details about Obsidian integration.

* Update README to include Obsidian auto-saving feature

Clarified the new feature for saving to Obsidian with a link.

---------
2026-01-02 11:08:19 -08:00
Michael Ramos fd2212ad6c Bump version to 0.2.3 2026-01-02 09:02:10 -08:00
Michael Ramos 226f2ad25d Feat/ux improvements (#10)
* handle indents and checkboxes

* menu persistence when scrolling

* better ux on teh annotation comment box
2026-01-02 08:57:01 -08:00
Michael Ramos 283af416ff Bump version to 0.2.2
- Sync all package versions (root, Claude plugin, OpenCode npm package)
- Includes global comments feature and forward-compatibility fix

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:30:51 -08:00
Michael Ramos 22aae761e1 add global comments (#8)
* Add global comments annotation capability

- Add GLOBAL_COMMENT type to AnnotationType enum
- Add "Global comment" button next to "Copy plan" in Viewer header
- Implement inline input form for entering global comments
- Update AnnotationPanel to display global comments with purple styling
- Update exportDiff to include global comments in feedback output
- Update sharing utils to serialize/deserialize global comments with 'G' prefix

* Add fallback for unknown annotation types and update docs

- Add fallback config in AnnotationPanel for forward compatibility
  (prevents crash when portal encounters unknown annotation types)
- Update CLAUDE.md with GLOBAL_COMMENT enum value
- Update CLAUDE.md with 'G' ShareableAnnotation variant
2026-01-01 11:23:01 -08:00
Michael Ramos 78dbd1bee5 Bump version to 0.2.1 and fix dynamic version display
- Update version to 0.2.1 in package.json and plugin.json
- Fix hardcoded v0.1 in App.tsx to use dynamic __APP_VERSION__

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 10:19:32 -08:00
Dave Smith 3391d071a4 Add SSH remote support with fixed port (#5)
* Add SSH remote session support with fixed port

- Auto-detect SSH sessions via SSH_TTY/SSH_CONNECTION env vars
- Use fixed port 19432 over SSH for predictable port forwarding
- Add PLANNOTATOR_PORT env var for custom port configuration
- Add retry loop (5 attempts) for port conflicts
- Print SSH config hint when running remotely
- Skip browser auto-open in SSH sessions

* integration test for ssh

---------

Co-authored-by: Michael Ramos <mdramos8@gmail.com>
2025-12-31 10:00:03 -08:00
Michael Ramos c61cbc3942 cleaner readme 2025-12-30 21:30:56 -08:00
Michael Ramos 9ff64aafc6 Remove bundled HTML from git tracking
Build artifact now generated at publish time via prepublishOnly script.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 21:30:13 -08:00
Michael Ramos 17ebb50b79 opencode plugin (#3)
* opencode plugin

* opencode plugin

* marketing copy updates

* opencode plugin marketing

* readme for open code

* readme enhancement;
2025-12-30 21:25:46 -08:00
Michael Ramos c86671aead Bump version to 0.2.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 22:07:37 -08:00
Michael Ramos 3b88fdc25a Clean up duplicate log and fix indentation in server
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 22:05:21 -08:00
Michael Ramos f7aa683b00 Merge pull request #1 from chocomilk4759/main
Add cross-platform browser support (Windows/Linux)
2025-12-29 22:02:36 -08:00
ChocoMilk#4759 4b184a7ca2 Merge pull request #1 from chocomilk4759/chocomilk4759-patch-1
Add cross-platform browser support (Windows/Linux)
2025-12-30 14:44:09 +09:00
ChocoMilk#4759 37a274ccab Add cross-platform browser support (Windows/Linux)
- Windows: use `cmd /c start`
- Linux: use `xdg-open`
- macOS: keep existing `open`
2025-12-30 14:41:22 +09:00
Michael Ramos 43951bcd92 Add restart reminder inside plugin install code block
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:59:25 -08:00
Michael Ramos 7714c309b3 Use custom YouTube thumbnail in README
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v0.1.0
2025-12-28 17:51:10 -08:00
Michael Ramos 8fcd0ef878 Update YouTube video links to actual demo video
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:47:43 -08:00
Michael Ramos 0c052aa158 Add restart note to plugin installation instructions
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:43:29 -08:00
Michael Ramos bc193cf924 Add update notification banner
- Inject version at build time via Vite define
- Add useUpdateCheck hook to fetch latest release from GitHub API
- Add UpdateBanner component with copy install command button
- Shows when newer version is available

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:42:08 -08:00
Michael Ramos 748d4e4ae3 Fix share URL to always use share.plannotator.ai
Share links were using localhost when running from the hook,
making them unusable for actual sharing.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:04:56 -08:00
Michael Ramos f62ec06686 Fix annotation restoration breaking DOM structure
- Use multi-mark approach instead of destructive extractContents()
- Walk text nodes individually and wrap each with its own <mark>
- Update removeHighlight to handle multiple marks per annotation
- Fixes code blocks splitting and list items showing 1px ticks

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:03:43 -08:00
Michael Ramos 889569a562 Add markdown table parsing and rendering
- Add 'table' type to Block union
- Detect and collect table lines in parser
- Render tables with proper HTML structure and styling

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 16:59:29 -08:00
Michael Ramos 804f5c603c Update install scripts with test command and plugin instructions
- Remove incorrect --help reference
- Add test command to verify installation
- Add Claude Code plugin installation instructions
- Update all platforms (bash, PowerShell, CMD)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 16:16:30 -08:00
Michael Ramos e471c54eca Add image type declarations, update Landing YouTube button
- Add types.d.ts for .webp imports in components directory
- Remove overcomplicated assets.d.ts approach
- Update YouTube button styling

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 16:03:30 -08:00
Michael Ramos e3367936d5 Add TypeScript declarations for image assets
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 15:55:33 -08:00
Michael Ramos 06e83d1b32 Tone down YouTube button red
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 15:48:01 -08:00
Michael Ramos 1639d9b864 minimal copy edits 2025-12-28 15:46:04 -08:00
Michael Ramos 5eeec5164c minimal copy edits 2025-12-28 15:45:02 -08:00
Michael Ramos fede9ce837 remove development docs 2025-12-28 15:42:44 -08:00
Michael Ramos 6fde96eda5 remove legacy reference 2025-12-28 15:40:46 -08:00