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.
Files changed (218) hide show
  1. canopy_cli-3.1.1/.github/workflows/release.yml +50 -0
  2. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/CHANGELOG.md +8 -0
  3. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/PKG-INFO +1 -1
  4. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/__init__.py +1 -1
  5. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/mcp/server.py +16 -0
  6. canopy_cli-3.1.0/.github/workflows/publish.yml +0 -36
  7. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/.github/workflows/ci.yml +0 -0
  8. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/.gitignore +0 -0
  9. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/AGENTS.md +0 -0
  10. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/CLAUDE.md +0 -0
  11. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/README.md +0 -0
  12. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/agents.md +0 -0
  13. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/architecture/providers.md +0 -0
  14. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/architecture.md +0 -0
  15. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/archive/test-plan.md +0 -0
  16. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/canopy-banner.svg +0 -0
  17. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-commit.svg +0 -0
  18. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-config.svg +0 -0
  19. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-done.svg +0 -0
  20. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-drift.svg +0 -0
  21. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-init.svg +0 -0
  22. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-list.svg +0 -0
  23. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-push.svg +0 -0
  24. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-review.svg +0 -0
  25. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-setup-agent.svg +0 -0
  26. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-stage.svg +0 -0
  27. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-state.svg +0 -0
  28. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-status.svg +0 -0
  29. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-switch.svg +0 -0
  30. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-triage.svg +0 -0
  31. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/cli-worktree.svg +0 -0
  32. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/commands.md +0 -0
  33. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/concepts.md +0 -0
  34. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/mcp.md +0 -0
  35. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/docs/workspace.md +0 -0
  36. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/gen_svgs.py +0 -0
  37. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/mockups/canopy-vscode.html +0 -0
  38. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/pyproject.toml +0 -0
  39. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/__init__.py +0 -0
  40. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/aliases.py +0 -0
  41. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/augments.py +0 -0
  42. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/bootstrap.py +0 -0
  43. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/bot_resolutions.py +0 -0
  44. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/bot_status.py +0 -0
  45. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/commit.py +0 -0
  46. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/conflicts.py +0 -0
  47. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/doctor.py +0 -0
  48. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/draft_replies.py +0 -0
  49. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/drift.py +0 -0
  50. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/errors.py +0 -0
  51. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/evacuate.py +0 -0
  52. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/feature_state.py +0 -0
  53. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/historian.py +0 -0
  54. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/ide_workspace.py +0 -0
  55. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/last_visit.py +0 -0
  56. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/migrate_slots.py +0 -0
  57. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/preflight_state.py +0 -0
  58. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/push.py +0 -0
  59. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/reads.py +0 -0
  60. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/resume.py +0 -0
  61. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/review_filter.py +0 -0
  62. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/ship.py +0 -0
  63. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/slot_details.py +0 -0
  64. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/slot_load.py +0 -0
  65. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/slots.py +0 -0
  66. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/stash.py +0 -0
  67. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/switch.py +0 -0
  68. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/switch_preflight.py +0 -0
  69. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/thread_actions.py +0 -0
  70. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/thread_resolutions.py +0 -0
  71. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/actions/triage.py +0 -0
  72. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent/__init__.py +0 -0
  73. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent/runner.py +0 -0
  74. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent_setup/__init__.py +0 -0
  75. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent_setup/skills/augment-canopy/SKILL.md +0 -0
  76. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/agent_setup/skills/using-canopy/SKILL.md +0 -0
  77. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/__init__.py +0 -0
  78. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/main.py +0 -0
  79. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/render.py +0 -0
  80. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/cli/ui.py +0 -0
  81. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/features/__init__.py +0 -0
  82. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/features/coordinator.py +0 -0
  83. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/__init__.py +0 -0
  84. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/hooks.py +0 -0
  85. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/multi.py +0 -0
  86. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/repo.py +0 -0
  87. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/git/templates/post-checkout.py +0 -0
  88. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/graph/__init__.py +0 -0
  89. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/__init__.py +0 -0
  90. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/github.py +0 -0
  91. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/linear.py +0 -0
  92. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/integrations/precommit.py +0 -0
  93. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/mcp/__init__.py +0 -0
  94. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/mcp/client.py +0 -0
  95. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/__init__.py +0 -0
  96. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/github_issues.py +0 -0
  97. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/linear.py +0 -0
  98. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/providers/types.py +0 -0
  99. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/__init__.py +0 -0
  100. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/config.py +0 -0
  101. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/context.py +0 -0
  102. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/discovery.py +0 -0
  103. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/src/canopy/workspace/workspace.py +0 -0
  104. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/__init__.py +0 -0
  105. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/conftest.py +0 -0
  106. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_action_errors.py +0 -0
  107. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_agent_setup.py +0 -0
  108. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_aliases.py +0 -0
  109. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_augments.py +0 -0
  110. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_bootstrap.py +0 -0
  111. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_bot_resolutions.py +0 -0
  112. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_bot_status.py +0 -0
  113. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_ci_status.py +0 -0
  114. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_commit.py +0 -0
  115. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_commit_push_integration.py +0 -0
  116. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_config.py +0 -0
  117. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_config_done.py +0 -0
  118. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_conflicts.py +0 -0
  119. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_context_stage.py +0 -0
  120. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_coordinator.py +0 -0
  121. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_doctor.py +0 -0
  122. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_draft_replies.py +0 -0
  123. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_drift.py +0 -0
  124. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_evacuate.py +0 -0
  125. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_feature_state.py +0 -0
  126. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_feature_state_bot.py +0 -0
  127. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_historian.py +0 -0
  128. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_hooks.py +0 -0
  129. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_last_visit.py +0 -0
  130. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_linear_integration.py +0 -0
  131. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_mcp_server_worktree_create.py +0 -0
  132. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_migrate_slots.py +0 -0
  133. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_new_commands.py +0 -0
  134. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_precommit.py +0 -0
  135. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_github_issues.py +0 -0
  136. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_linear.py +0 -0
  137. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_registry.py +0 -0
  138. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_providers_types.py +0 -0
  139. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_push.py +0 -0
  140. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_reads.py +0 -0
  141. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_repo.py +0 -0
  142. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_resume.py +0 -0
  143. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_review.py +0 -0
  144. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_review_filter.py +0 -0
  145. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_runner.py +0 -0
  146. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_ship.py +0 -0
  147. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_slot_details.py +0 -0
  148. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_slot_load.py +0 -0
  149. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_slots.py +0 -0
  150. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_stash_features.py +0 -0
  151. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_switch.py +0 -0
  152. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_switch_action.py +0 -0
  153. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_switch_preflight.py +0 -0
  154. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_thread_actions.py +0 -0
  155. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_thread_graphql.py +0 -0
  156. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_triage.py +0 -0
  157. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_workspace.py +0 -0
  158. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/tests/test_worktree_features.py +0 -0
  159. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/.gitignore +0 -0
  160. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/.vscodeignore +0 -0
  161. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/CHANGELOG.md +0 -0
  162. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/LICENSE +0 -0
  163. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/README.md +0 -0
  164. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/esbuild.config.mjs +0 -0
  165. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/jest.config.ts +0 -0
  166. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/canopy-icon.png +0 -0
  167. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/canopy-icon.svg +0 -0
  168. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/screenshots/dashboard-feature.png +0 -0
  169. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/media/screenshots/dashboard-global.png +0 -0
  170. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/package-lock.json +0 -0
  171. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/package.json +0 -0
  172. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/__mocks__/vscode.ts +0 -0
  173. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/canopyCli.test.ts +0 -0
  174. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/canopyCli.ts +0 -0
  175. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/canopyClient.ts +0 -0
  176. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/cliResolver.test.ts +0 -0
  177. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/cliResolver.ts +0 -0
  178. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/createFeature.ts +0 -0
  179. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/createFeatureFromIssue.ts +0 -0
  180. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/installBackend.ts +0 -0
  181. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/commands/setupWizard.ts +0 -0
  182. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/extension.ts +0 -0
  183. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/mcpResolver.ts +0 -0
  184. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/stateReader.test.ts +0 -0
  185. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/stateReader.ts +0 -0
  186. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/statusBar.ts +0 -0
  187. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/types.ts +0 -0
  188. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/views/GlobalDashboardPanel.ts +0 -0
  189. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/views/canopyTreeProvider.ts +0 -0
  190. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/views/themeShim.ts +0 -0
  191. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/watchers.ts +0 -0
  192. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/cockpitPanel.ts +0 -0
  193. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/branchLedger.ts +0 -0
  194. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/bridge.ts +0 -0
  195. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/capReachedModal.ts +0 -0
  196. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/focusTile.ts +0 -0
  197. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/newFeatureForm.ts +0 -0
  198. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/styles.ts +0 -0
  199. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/triageFeed.ts +0 -0
  200. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/util.ts +0 -0
  201. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/components/worktreeRow.ts +0 -0
  202. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/dashboardPanel.ts +0 -0
  203. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/Dashboard.tsx +0 -0
  204. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/FeatureView.tsx +0 -0
  205. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/GlobalView.tsx +0 -0
  206. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/Skeletons.tsx +0 -0
  207. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/diff.ts +0 -0
  208. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/index.tsx +0 -0
  209. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/protocol.ts +0 -0
  210. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/global-dashboard/vscode.ts +0 -0
  211. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/newFeaturePanel.ts +0 -0
  212. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/shared/pastel.css +0 -0
  213. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/index.ts +0 -0
  214. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/minimal.ts +0 -0
  215. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/navy.ts +0 -0
  216. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/render.ts +0 -0
  217. {canopy_cli-3.1.0 → canopy_cli-3.1.1}/vscode-extension/src/webview/themes/types.ts +0 -0
  218. {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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: canopy-cli
3
- Version: 3.1.0
3
+ Version: 3.1.1
4
4
  Summary: Workspace-first development orchestrator for AI coding agents
5
5
  Project-URL: Homepage, https://github.com/ashmitb95/canopy
6
6
  Project-URL: Source, https://github.com/ashmitb95/canopy
@@ -1,2 +1,2 @@
1
1
  """Canopy — workspace-first development orchestrator."""
2
- __version__ = "3.1.0"
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