* fix(ui): drop the annotation count pill from the header decision primary The primary reads Send Feedback / Post Comments with no inline count; the count stays in the caret menu's discard and note copy where it is needed. DecisionPrimary loses its count field, tests pin the count-free label, and the docs no longer spell the control as 'Send Feedback · n'. * chore(guides-show): sync the viewer manifest
Tests
This directory contains manual testing scripts for Plannotator.
Manual Browser UI Smokes (tests/manual/local/)
These are local-only scripts for launching Plannotator UI flows with fixture data so you can manually verify them in a browser. They are not automated CI tests.
Plan review UI smoke tests:
./tests/manual/local/test-hook.sh # Claude Code simulation
./tests/manual/local/test-hook-2.sh # OpenCode origin badge test
./tests/manual/local/test-codex-plan-review-e2e.sh # Real Codex Stop-hook flow in disposable HOME
Code review UI:
./tests/manual/local/test-opencode-review.sh # Code review UI test
./tests/manual/local/test-worktree-review.sh # Worktree support test (creates sandbox with 4 worktrees)
See UI-TESTING.md for detailed UI testing documentation.
The end-to-end, user-centered Vim controls matrix lives in manual/vim-ux-smoke.md. It covers real Markdown and raw-HTML navigation, selection, annotation, focus recovery, HUD behavior, and native-control compatibility.
Integration & Utility Tests (manual/local/)
These scripts test integrations, releases, and provide utilities.
Binary release testing:
./tests/manual/local/test-binary.sh # Test installed binary from ~/.local/bin/
Tests the installed plannotator binary to verify releases work correctly.
Bulk plan testing (Obsidian integration):
./tests/manual/local/test-bulk-plans.sh # Iterate through ~/.claude/plans/
Opens each .md file from ~/.claude/plans/ in Plannotator. Great for testing Obsidian integration with multiple
plans.
OpenCode integration sandbox:
./tests/manual/local/sandbox-opencode.sh [--disable-sharing] [--keep] [--no-git]
Creates a temporary sandbox with a sample React/TypeScript project, initializes git with uncommitted changes, sets up the local OpenCode plugin, and launches OpenCode for full integration testing.
Options:
--disable-sharing: Createsopencode.jsonwith sharing disabled--keep: Don't clean up sandbox on exit--no-git: Skip git initialization (tests non-git fallback)
Codex Stop-hook end-to-end harness:
./tests/manual/local/test-codex-plan-review-e2e.sh [--keep] [--skip-build]
Builds the hook and review apps, creates a disposable HOME plus sample git repo, copies your Codex auth.json,
enables hooks, and runs a real codex exec against the sample project. The script writes logs, rollout paths,
history indices, and session URLs into an artifact directory under the temp root.
Tips:
- Set
PLANNOTATOR_BROWSER=/usr/bin/truewhen you want to drive the opened plan-review session with Playwright instead of auto-opening a browser. - The validated workflow is: run the script in one terminal, then point Playwright at the printed session URL from a second terminal.
Obsidian utility:
./tests/manual/local/fix-vault-links.sh /path/to/vault/plannotator
Adds Obsidian backlinks ([[Plannotator Plans]]) to existing plan files in your vault.
SSH Remote Testing (manual/ssh/)
Tests SSH session detection and port forwarding for remote development scenarios.
cd tests/manual/ssh/
docker-compose up -d
./test-ssh.sh
See manual/ssh/DOCKER_SSH_TEST.md for detailed setup instructions.