- outline_sync.py: write compare results to /tmp/compare_results.json
with full doc maps for parent-chain lookup during copy operations
- webui.py: /review page with remote-only, local-only, conflict tables;
/review/content endpoint to fetch doc text from either instance;
/review/apply endpoint for copy_to_local, copy_to_remote, keep_remote,
keep_local, skip actions; "Compare Instances" button on dashboard;
"Review Differences" link shown after compare completes
- entrypoint.sh: include local block in generated settings.json
- docker-compose.yml: pass LOCAL_OUTLINE_URL/TOKEN/HOST env vars
- deploy.yml: write LOCAL_* secrets to .env file
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds read-only `compare` command that fetches both the remote Outline
instance (via Tailscale) and a local instance (outline-web container),
matches documents by canonical path key, and reports in_sync / remote_only /
local_only / conflict status. Also adds PRD for the full two-instance sync
workflow.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Break connectivity check into three stages — DNS resolution, TCP connect,
and API auth — each reported separately so failures pinpoint the exact layer.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
New documents now placed in parent's subdirectory (coll/Parent/Child.md)
instead of flat in the collection dir. Parent paths registered immediately
so nested children resolve correctly within the same pull.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>