diff --git a/.gitignore b/.gitignore index 89626fa..823e0cb 100644 --- a/.gitignore +++ b/.gitignore @@ -76,10 +76,25 @@ QUICK_START.txt docs/DEPLOY_GITHUB.md docs/COPILOT_*.md docs/TRACE_*.md +docs/findings_*.md # Internal milestone / one-off announce docs (local only — do not push) P2P_MILESTONE.md scripts/announce_*.txt +start_canopy_mcp.sh +scripts/post_canopy_dev_bot_announcement.py +scripts/setup_canopy_dev_bot_and_post.py +scripts/create_copilot_review_issues_mcp.py +scripts/create_launch_hardening_issues_mcp.py +scripts/create_ui_ux_review_issues_mcp.py +scripts/merge_copilot_prs.py +scripts/cleanup_github_repo.py +scripts/recover_db_lock.py +scripts/test_channel_image_and_delete.py +scripts/post_inbox_audit_request_to_general.py +scripts/fetch_recent_general_messages.py +scripts/post_tool_tips_to_general.py +scripts/post_poll_example_to_general.py docs/P2P_ARCHITECTURE.md docs/P2P_IMPLEMENTATION.md build_handover_zip.py diff --git a/docs/GITHUB_RELEASE_ANNOUNCEMENT_DRAFT.md b/docs/GITHUB_RELEASE_ANNOUNCEMENT_DRAFT.md index 1369da8..d147aa5 100644 --- a/docs/GITHUB_RELEASE_ANNOUNCEMENT_DRAFT.md +++ b/docs/GITHUB_RELEASE_ANNOUNCEMENT_DRAFT.md @@ -1,16 +1,21 @@ -# GitHub Release Announcement Draft (Canopy 0.4.111) +# GitHub Release Announcement Draft -Use this as the base for the GitHub release page, repo announcement, and launch posts. +Use this as a public-facing template for GitHub release notes, repo announcements, or launch posts. For authoritative version details, always align the copy with `CHANGELOG.md`. -**Guideline:** keep the announcement user-facing. Focus on workflows, operator value, and product behavior rather than internal patch mechanics. +## Writing Guidelines + +- Keep the announcement user-facing. +- Focus on operator value, product behavior, and visible outcomes. +- Avoid private environment names, local workflow labels, or internal debugging context. +- Prefer grouped themes over long patch-by-patch bullet lists. --- -## Full announcement (GitHub release notes) +## Full Announcement Template -**Canopy 0.4.111 is out.** +**Canopy [VERSION] is out.** -This release focuses on trust, privacy defaults, and making the workspace feel more continuous during media playback — while also keeping the mesh harder to abuse and search rock-solid. +This release focuses on [TOP-LEVEL THEMES], with improvements across [AREAS]. ### What is Canopy? @@ -21,57 +26,50 @@ Canopy is a local-first encrypted collaboration system for humans and AI agents: - built-in AI-native runtime surfaces through REST, MCP, agent inbox, heartbeat, and workspace events, - no mandatory hosted collaboration backend for day-to-day operation. -### Highlights since 0.4.105 - -- **Expanded media deck** (`0.4.111`): The sidebar mini-player now opens into a larger floating media deck with a stage area, queue navigation, seek support, PiP for supported video, and related media drawn from the same post or message. -- **Privacy-first trust baseline** (`0.4.106`): Unknown peers now start at trust score 0 instead of being implicitly trusted. Feed posts default to private. When you narrow a post's visibility, peers that should no longer see it receive a revocation signal automatically. -- **Proactive P2P hardening** (`0.4.107`-`0.4.109`): Trust boundaries enforce ownership verification on compliance and violation signals. Inbound messages are validated for payload size, identity, and visibility scope. Delete signal authorization covers all data types. Encryption helpers handle edge cases gracefully. API authentication extended across status endpoints. -- **Sidebar performance** (`0.4.108`): DOM batching and render-key diffing skip unnecessary redraws. Polling intervals relaxed. GPU compositing hints added for smoother animations. -- **Search that stays put** (`0.4.104`-`0.4.105`): DM and channel search are first-class UI states. Background refresh, event polling, and manual Refresh all suspend while a search is active. Local actions rerun the active search instead of reverting to the live thread. - -### Why this release matters +### Highlights -A mesh network is only as trustworthy as its defaults. Previously, unknown peers started with implicit trust and feed posts defaulted to broadcasting. That's backwards for a privacy-first system. +- **[Highlight 1]** - [User-visible outcome and why it matters.] +- **[Highlight 2]** - [User-visible outcome and why it matters.] +- **[Highlight 3]** - [User-visible outcome and why it matters.] -`0.4.106` flips those defaults: peers earn trust, posts stay private until you choose otherwise, and visibility changes propagate revocation signals. The hardening passes in `0.4.107`-`0.4.109` then enforce those boundaries across every P2P message handler. +### Why This Release Matters -The result is a workspace where privacy is the starting position, not something you have to opt into. +[Short explanation of the operator problem or workflow pain that this release improves.] -### Getting started +### Getting Started 1. Install and run: [docs/QUICKSTART.md](https://github.com/kwalus/Canopy/blob/main/docs/QUICKSTART.md) -2. Connect peers safely: [docs/CONNECT_FAQ.md](https://github.com/kwalus/Canopy/blob/main/docs/CONNECT_FAQ.md) +2. Connect peers safely: [docs/PEER_CONNECT_GUIDE.md](https://github.com/kwalus/Canopy/blob/main/docs/PEER_CONNECT_GUIDE.md) 3. Configure agents: [docs/AGENT_ONBOARDING.md](https://github.com/kwalus/Canopy/blob/main/docs/AGENT_ONBOARDING.md) 4. Connect MCP clients: [docs/MCP_QUICKSTART.md](https://github.com/kwalus/Canopy/blob/main/docs/MCP_QUICKSTART.md) 5. Explore endpoints: [docs/API_REFERENCE.md](https://github.com/kwalus/Canopy/blob/main/docs/API_REFERENCE.md) ### Notes -Canopy remains early-stage software. Test trust and visibility behavior on your own instance before broad rollout. +Canopy remains early-stage software. Test on your own instance before broad rollout, especially when promoting large networking, trust, or storage changes. --- -## Short version (for repo Discussions / announcements) +## Short Version -Canopy 0.4.111 is live. +Canopy [VERSION] is live. -This release extends Canopy's media UX while keeping privacy-first defaults: -- off-screen playback can expand into a larger media deck with queue navigation and seek support, -- unknown peers start at trust 0 instead of being implicitly trusted, -- feed posts default to private, -- visibility narrowing sends automatic revocation signals, -- P2P message handlers enforce trust boundaries, payload validation, and identity checks, -- sidebar rendering is faster with DOM batching and render-key diffing. +This release improves: + +- [short highlight 1] +- [short highlight 2] +- [short highlight 3] Start here: + - [docs/QUICKSTART.md](https://github.com/kwalus/Canopy/blob/main/docs/QUICKSTART.md) -- [docs/CONNECT_FAQ.md](https://github.com/kwalus/Canopy/blob/main/docs/CONNECT_FAQ.md) +- [docs/PEER_CONNECT_GUIDE.md](https://github.com/kwalus/Canopy/blob/main/docs/PEER_CONNECT_GUIDE.md) - [docs/MCP_QUICKSTART.md](https://github.com/kwalus/Canopy/blob/main/docs/MCP_QUICKSTART.md) --- -## Social copy (very short) +## Social Copy -Canopy 0.4.111 is out: local-first encrypted collaboration for humans and AI agents. +Canopy [VERSION] is out: local-first encrypted collaboration for humans and AI agents. -Privacy-first by default — peers earn trust, posts stay private, visibility changes propagate revocation. Plus a larger media deck for off-screen playback and hardened P2P message handling. +[One short sentence about the most visible end-user gain.] [One short sentence about the most important reliability or privacy improvement.] diff --git a/start_canopy_mcp.sh b/start_canopy_mcp.sh deleted file mode 100644 index feb93d8..0000000 --- a/start_canopy_mcp.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# Start Canopy MCP Server as background service - -# Auto-detect project directory (where this script lives) -CANOPY_DIR="$(cd "$(dirname "$0")" && pwd)" -PID_FILE="/tmp/canopy_mcp.pid" -LOG_FILE="/tmp/canopy_mcp.log" -SERVER_SCRIPT="canopy_mcp_server.py" -PORT=8030 - -# Check if server is already running -if [ -f "$PID_FILE" ]; then - PID=$(cat "$PID_FILE") - if ps -p $PID > /dev/null 2>&1; then - echo "Canopy MCP Server is already running with PID $PID." - exit 0 - else - echo "Stale PID file found. Removing it." - rm "$PID_FILE" - fi -fi - -# Check for API key -if [ -z "$CANOPY_API_KEY" ]; then - echo "⚠️ CANOPY_API_KEY not set." - echo " Create API key in Canopy UI: http://localhost:7770 → API Keys" - echo " Then set: export CANOPY_API_KEY='your_key_here'" - echo "" - echo " Starting server anyway (some tools may not work without API key)..." -fi - -echo "Starting Canopy MCP Server on port $PORT..." -cd "$CANOPY_DIR" -nohup python3 "$SERVER_SCRIPT" --port "$PORT" > "$LOG_FILE" 2>&1 & -echo $! > "$PID_FILE" -echo "Canopy MCP Server started with PID $(cat "$PID_FILE")." -echo "Logs: $LOG_FILE" -echo "" -echo "Register with MCP Manager (if using MCP Manager):" -echo " python3 infrastructure/mcp_manager/register_all_servers.py" -