canopy-cli 3.1.0__tar.gz → 3.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- canopy_cli-3.1.1/.github/workflows/release.yml +50 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/CHANGELOG.md +8 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/PKG-INFO +1 -1
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/__init__.py +1 -1
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/mcp/server.py +16 -0
- canopy_cli-3.1.0/.github/workflows/publish.yml +0 -36
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/.github/workflows/ci.yml +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/.gitignore +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/AGENTS.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/CLAUDE.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/README.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/agents.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/architecture/providers.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/architecture.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/archive/test-plan.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/canopy-banner.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-commit.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-config.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-done.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-drift.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-init.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-list.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-push.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-review.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-setup-agent.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-stage.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-state.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-status.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-switch.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-triage.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-worktree.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/commands.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/concepts.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/mcp.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/workspace.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/gen_svgs.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/mockups/canopy-vscode.html +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/pyproject.toml +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/aliases.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/augments.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/bootstrap.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/bot_resolutions.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/bot_status.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/commit.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/conflicts.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/doctor.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/draft_replies.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/drift.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/errors.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/evacuate.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/feature_state.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/historian.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/ide_workspace.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/last_visit.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/migrate_slots.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/preflight_state.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/push.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/reads.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/resume.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/review_filter.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/ship.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/slot_details.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/slot_load.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/slots.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/stash.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/switch.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/switch_preflight.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/thread_actions.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/thread_resolutions.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/triage.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent/runner.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent_setup/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent_setup/skills/augment-canopy/SKILL.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent_setup/skills/using-canopy/SKILL.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/main.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/render.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/ui.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/features/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/features/coordinator.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/hooks.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/multi.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/repo.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/templates/post-checkout.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/graph/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/github.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/linear.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/precommit.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/mcp/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/mcp/client.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/github_issues.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/linear.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/types.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/config.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/context.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/discovery.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/workspace.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/__init__.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/conftest.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_action_errors.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_agent_setup.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_aliases.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_augments.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_bootstrap.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_bot_resolutions.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_bot_status.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_ci_status.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_commit.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_commit_push_integration.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_config.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_config_done.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_conflicts.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_context_stage.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_coordinator.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_doctor.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_draft_replies.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_drift.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_evacuate.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_feature_state.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_feature_state_bot.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_historian.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_hooks.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_last_visit.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_linear_integration.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_mcp_server_worktree_create.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_migrate_slots.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_new_commands.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_precommit.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_github_issues.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_linear.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_registry.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_types.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_push.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_reads.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_repo.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_resume.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_review.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_review_filter.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_runner.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_ship.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_slot_details.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_slot_load.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_slots.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_stash_features.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_switch.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_switch_action.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_switch_preflight.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_thread_actions.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_thread_graphql.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_triage.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_workspace.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_worktree_features.py +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/.gitignore +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/.vscodeignore +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/CHANGELOG.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/LICENSE +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/README.md +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/esbuild.config.mjs +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/jest.config.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/canopy-icon.png +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/canopy-icon.svg +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/screenshots/dashboard-feature.png +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/screenshots/dashboard-global.png +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/package-lock.json +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/package.json +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/__mocks__/vscode.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/canopyCli.test.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/canopyCli.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/canopyClient.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/cliResolver.test.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/cliResolver.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/createFeature.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/createFeatureFromIssue.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/installBackend.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/setupWizard.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/extension.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/mcpResolver.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/stateReader.test.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/stateReader.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/statusBar.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/types.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/views/GlobalDashboardPanel.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/views/canopyTreeProvider.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/views/themeShim.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/watchers.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/cockpitPanel.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/branchLedger.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/bridge.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/capReachedModal.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/focusTile.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/newFeatureForm.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/styles.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/triageFeed.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/util.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/worktreeRow.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/dashboardPanel.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/Dashboard.tsx +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/FeatureView.tsx +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/GlobalView.tsx +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/Skeletons.tsx +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/diff.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/index.tsx +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/protocol.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/vscode.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/newFeaturePanel.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/shared/pastel.css +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/index.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/minimal.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/navy.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/render.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/types.ts +0 -0
- {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/tsconfig.json +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Release (build + publish + tag)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
contents: write # push tag
|
|
8
|
+
id-token: write # OIDC for PyPI trusted publishing
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
release:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
|
|
18
|
+
- uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: "3.12"
|
|
21
|
+
|
|
22
|
+
- name: Read __version__
|
|
23
|
+
id: ver
|
|
24
|
+
run: |
|
|
25
|
+
V=$(python -c "import re,pathlib; print(re.search(r'__version__\s*=\s*\"([^\"]+)\"', pathlib.Path('src/canopy/__init__.py').read_text()).group(1))")
|
|
26
|
+
echo "version=$V" >> "$GITHUB_OUTPUT"
|
|
27
|
+
echo "Releasing v$V"
|
|
28
|
+
|
|
29
|
+
- name: Refuse if tag already exists
|
|
30
|
+
run: |
|
|
31
|
+
if git rev-parse -q --verify "refs/tags/v${{ steps.ver.outputs.version }}" >/dev/null; then
|
|
32
|
+
echo "::error::Tag v${{ steps.ver.outputs.version }} already exists. Bump __version__ first."
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
- name: Build sdist + wheel
|
|
37
|
+
run: |
|
|
38
|
+
python -m pip install --upgrade pip build twine
|
|
39
|
+
python -m build
|
|
40
|
+
python -m twine check dist/*
|
|
41
|
+
|
|
42
|
+
- name: Publish to PyPI
|
|
43
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
44
|
+
|
|
45
|
+
- name: Tag and push
|
|
46
|
+
run: |
|
|
47
|
+
git config user.name "github-actions[bot]"
|
|
48
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
49
|
+
git tag "v${{ steps.ver.outputs.version }}"
|
|
50
|
+
git push origin "v${{ steps.ver.outputs.version }}"
|
|
@@ -4,6 +4,14 @@ Tracks the Python side (CLI + MCP server). The VSCode extension has its own [vsc
|
|
|
4
4
|
|
|
5
5
|
Versions follow semver. Pre-1.0 — minor bumps may add features or break behavior; the README is the source-of-truth contract.
|
|
6
6
|
|
|
7
|
+
## 3.1.1 — 2026-05-31
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- `canopy-mcp --help` / `-h` now prints usage and exits instead of starting the
|
|
11
|
+
stdio server and crashing on an empty stdin read. The MCP entry point is not
|
|
12
|
+
meant to be invoked interactively; the help text says so and points at
|
|
13
|
+
`canopy setup-agent`.
|
|
14
|
+
|
|
7
15
|
## 3.1.0 — 2026-05-30 (Plan 2 — Feature Resume)
|
|
8
16
|
|
|
9
17
|
### Added
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""Canopy — workspace-first development orchestrator."""
|
|
2
|
-
__version__ = "3.1.
|
|
2
|
+
__version__ = "3.1.1"
|
|
@@ -1790,6 +1790,22 @@ def main():
|
|
|
1790
1790
|
from .. import __version__
|
|
1791
1791
|
print(f"canopy-mcp {__version__}")
|
|
1792
1792
|
return
|
|
1793
|
+
if len(sys.argv) > 1 and sys.argv[1] in ("--help", "-h"):
|
|
1794
|
+
print(
|
|
1795
|
+
"canopy-mcp — Canopy MCP server (stdio JSON-RPC)\n"
|
|
1796
|
+
"\n"
|
|
1797
|
+
"This is a Model Context Protocol server. It is not run interactively;\n"
|
|
1798
|
+
"your MCP-aware client (Claude Code, Claude Desktop, etc.) launches it\n"
|
|
1799
|
+
"and communicates with it over stdio.\n"
|
|
1800
|
+
"\n"
|
|
1801
|
+
"To register canopy with Claude Code, run:\n"
|
|
1802
|
+
" canopy setup-agent\n"
|
|
1803
|
+
"\n"
|
|
1804
|
+
"Options:\n"
|
|
1805
|
+
" -V, --version Print version and exit\n"
|
|
1806
|
+
" -h, --help Print this message and exit"
|
|
1807
|
+
)
|
|
1808
|
+
return
|
|
1793
1809
|
mcp.run(transport="stdio")
|
|
1794
1810
|
|
|
1795
1811
|
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
name: Publish to PyPI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- "v*"
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
build-and-publish:
|
|
10
|
-
name: Build and publish to PyPI
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
permissions:
|
|
13
|
-
id-token: write # OIDC for PyPI trusted publishing
|
|
14
|
-
steps:
|
|
15
|
-
- uses: actions/checkout@v4
|
|
16
|
-
|
|
17
|
-
- uses: actions/setup-python@v5
|
|
18
|
-
with:
|
|
19
|
-
python-version: "3.12"
|
|
20
|
-
|
|
21
|
-
- name: Build sdist and wheel
|
|
22
|
-
run: |
|
|
23
|
-
python -m pip install --upgrade pip build
|
|
24
|
-
python -m build
|
|
25
|
-
|
|
26
|
-
- name: Verify version matches tag
|
|
27
|
-
run: |
|
|
28
|
-
TAG_VERSION="${GITHUB_REF_NAME#v}"
|
|
29
|
-
PKG_VERSION=$(python -c "import re,pathlib; print(re.search(r'__version__\s*=\s*\"([^\"]+)\"', pathlib.Path('src/canopy/__init__.py').read_text()).group(1))")
|
|
30
|
-
if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then
|
|
31
|
-
echo "::error::Tag v$TAG_VERSION does not match __version__ ($PKG_VERSION)"
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|
|
34
|
-
|
|
35
|
-
- name: Publish to PyPI
|
|
36
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/screenshots/dashboard-feature.png
RENAMED
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/screenshots/dashboard-global.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/createFeatureFromIssue.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/branchLedger.ts
RENAMED
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/capReachedModal.ts
RENAMED
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/newFeatureForm.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/worktreeRow.ts
RENAMED
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/Dashboard.tsx
RENAMED
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/FeatureView.tsx
RENAMED
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/GlobalView.tsx
RENAMED
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/Skeletons.tsx
RENAMED
|
File without changes
|
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/index.tsx
RENAMED
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/protocol.ts
RENAMED
|
File without changes
|
{canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/vscode.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|