code-context-control 2.57.0__tar.gz → 2.57.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 (343) hide show
  1. {code_context_control-2.57.0/code_context_control.egg-info → code_context_control-2.57.1}/PKG-INFO +1 -1
  2. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/c3.py +1 -1
  3. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/project_card.js +40 -9
  4. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/server.py +27 -0
  5. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/sidebar.js +64 -13
  6. {code_context_control-2.57.0 → code_context_control-2.57.1/code_context_control.egg-info}/PKG-INFO +1 -1
  7. {code_context_control-2.57.0 → code_context_control-2.57.1}/pyproject.toml +1 -1
  8. {code_context_control-2.57.0 → code_context_control-2.57.1}/LICENSE +0 -0
  9. {code_context_control-2.57.0 → code_context_control-2.57.1}/README.md +0 -0
  10. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/__init__.py +0 -0
  11. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/_hook_utils.py +0 -0
  12. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/commands/__init__.py +0 -0
  13. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/commands/common.py +0 -0
  14. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/commands/parser.py +0 -0
  15. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/docs.html +0 -0
  16. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/edits.html +0 -0
  17. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/guide/bitbucket.html +0 -0
  18. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/guide/getting-started.html +0 -0
  19. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/guide/index.html +0 -0
  20. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/guide/oracle.html +0 -0
  21. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/guide/shared.css +0 -0
  22. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/guide/tools.html +0 -0
  23. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/guide/workflow.html +0 -0
  24. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_artifact.py +0 -0
  25. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_auto_snapshot.py +0 -0
  26. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_c3_signal.py +0 -0
  27. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_c3read.py +0 -0
  28. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_dispatch.py +0 -0
  29. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_edit_ledger.py +0 -0
  30. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_edit_unlock.py +0 -0
  31. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_filter.py +0 -0
  32. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_ghost_files.py +0 -0
  33. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_pretool_enforce.py +0 -0
  34. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_prompt_recall.py +0 -0
  35. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_read.py +0 -0
  36. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_session_stats.py +0 -0
  37. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hook_terse_advisor.py +0 -0
  38. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub.html +0 -0
  39. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_server.py +0 -0
  40. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/app.js +0 -0
  41. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/add_project.js +0 -0
  42. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/config_editor.js +0 -0
  43. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/drill_artifacts.js +0 -0
  44. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/drill_health.js +0 -0
  45. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/drill_panel.js +0 -0
  46. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/drill_subprojects.js +0 -0
  47. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/drill_tasks.js +0 -0
  48. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/drill_views.js +0 -0
  49. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/global_search.js +0 -0
  50. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/mcp_manager.js +0 -0
  51. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/modals.js +0 -0
  52. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/project_tree.js +0 -0
  53. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/session_drawer.js +0 -0
  54. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/settings_modal.js +0 -0
  55. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/sidebar.js +0 -0
  56. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/summary_bar.js +0 -0
  57. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/task_board.js +0 -0
  58. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/toasts.js +0 -0
  59. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/components/topbar.js +0 -0
  60. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui/state.js +0 -0
  61. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/hub_ui.html +0 -0
  62. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/mcp_proxy.py +0 -0
  63. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/mcp_server.py +0 -0
  64. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/progress.py +0 -0
  65. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/__init__.py +0 -0
  66. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/_helpers.py +0 -0
  67. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/agent.py +0 -0
  68. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/artifacts.py +0 -0
  69. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/bitbucket.py +0 -0
  70. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/compress.py +0 -0
  71. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/delegate.py +0 -0
  72. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/edit.py +0 -0
  73. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/edits.py +0 -0
  74. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/federate.py +0 -0
  75. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/filter.py +0 -0
  76. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/impact.py +0 -0
  77. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/jira.py +0 -0
  78. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/memory.py +0 -0
  79. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/project.py +0 -0
  80. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/read.py +0 -0
  81. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/search.py +0 -0
  82. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/session.py +0 -0
  83. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/shell.py +0 -0
  84. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/status.py +0 -0
  85. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/tasks.py +0 -0
  86. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/tools/validate.py +0 -0
  87. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/api.js +0 -0
  88. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/app.js +0 -0
  89. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/bitbucket.js +0 -0
  90. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/chat.js +0 -0
  91. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/dashboard.js +0 -0
  92. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/edits.js +0 -0
  93. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/instructions.js +0 -0
  94. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/jira.js +0 -0
  95. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/memory.js +0 -0
  96. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/sessions.js +0 -0
  97. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/settings.js +0 -0
  98. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/components/tasks.js +0 -0
  99. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/icons.js +0 -0
  100. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/pm_shared.js +0 -0
  101. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/shared.js +0 -0
  102. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui/theme.js +0 -0
  103. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui.html +0 -0
  104. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui_legacy.html +0 -0
  105. {code_context_control-2.57.0 → code_context_control-2.57.1}/cli/ui_nano.html +0 -0
  106. {code_context_control-2.57.0 → code_context_control-2.57.1}/code_context_control.egg-info/SOURCES.txt +0 -0
  107. {code_context_control-2.57.0 → code_context_control-2.57.1}/code_context_control.egg-info/dependency_links.txt +0 -0
  108. {code_context_control-2.57.0 → code_context_control-2.57.1}/code_context_control.egg-info/entry_points.txt +0 -0
  109. {code_context_control-2.57.0 → code_context_control-2.57.1}/code_context_control.egg-info/requires.txt +0 -0
  110. {code_context_control-2.57.0 → code_context_control-2.57.1}/code_context_control.egg-info/top_level.txt +0 -0
  111. {code_context_control-2.57.0 → code_context_control-2.57.1}/core/__init__.py +0 -0
  112. {code_context_control-2.57.0 → code_context_control-2.57.1}/core/config.py +0 -0
  113. {code_context_control-2.57.0 → code_context_control-2.57.1}/core/ide.py +0 -0
  114. {code_context_control-2.57.0 → code_context_control-2.57.1}/core/mcp_toml.py +0 -0
  115. {code_context_control-2.57.0 → code_context_control-2.57.1}/core/web_security.py +0 -0
  116. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/__init__.py +0 -0
  117. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/config.py +0 -0
  118. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/mcp_oracle.py +0 -0
  119. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/oracle_server.py +0 -0
  120. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/oracle_ui.html +0 -0
  121. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/__init__.py +0 -0
  122. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/activity_reporter.py +0 -0
  123. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/api_auth.py +0 -0
  124. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/c3_bridge.py +0 -0
  125. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/chat_engine.py +0 -0
  126. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/chat_store.py +0 -0
  127. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/cross_memory.py +0 -0
  128. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/federated_graph.py +0 -0
  129. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/health_checker.py +0 -0
  130. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/insight_engine.py +0 -0
  131. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/local_session.py +0 -0
  132. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/memory_reader.py +0 -0
  133. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/memory_writer.py +0 -0
  134. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/project_scanner.py +0 -0
  135. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/review_agent.py +0 -0
  136. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/tool_executor.py +0 -0
  137. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/services/tool_registry.py +0 -0
  138. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/activity.js +0 -0
  139. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/agents.js +0 -0
  140. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/app.js +0 -0
  141. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/busy.js +0 -0
  142. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/chat/conversations.js +0 -0
  143. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/chat/input.js +0 -0
  144. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/chat/markdown.js +0 -0
  145. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/chat/send.js +0 -0
  146. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/chat/stream_renderer.js +0 -0
  147. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/chat/toolbar.js +0 -0
  148. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/core.js +0 -0
  149. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/crossgraph.js +0 -0
  150. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/header.js +0 -0
  151. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/insights.js +0 -0
  152. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/projects.js +0 -0
  153. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/settings.js +0 -0
  154. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/suggestions.js +0 -0
  155. {code_context_control-2.57.0 → code_context_control-2.57.1}/oracle/ui/theme_tabs.js +0 -0
  156. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/__init__.py +0 -0
  157. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/activity_log.py +0 -0
  158. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/agent_base.py +0 -0
  159. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/agents.py +0 -0
  160. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/artifact_defs.py +0 -0
  161. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/artifact_store.py +0 -0
  162. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/auto_memory.py +0 -0
  163. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/bench/__init__.py +0 -0
  164. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/bench/external/__init__.py +0 -0
  165. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/bench/external/aider_polyglot.py +0 -0
  166. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/bench/external/swe_bench.py +0 -0
  167. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/benchmark_dashboard.py +0 -0
  168. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/bitbucket_client.py +0 -0
  169. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/bitbucket_credentials.py +0 -0
  170. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/circuit_breaker.py +0 -0
  171. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/claude_md.py +0 -0
  172. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/compressor.py +0 -0
  173. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/context_snapshot.py +0 -0
  174. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/conversation_store.py +0 -0
  175. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/doc_index.py +0 -0
  176. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/e2e_benchmark.py +0 -0
  177. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/e2e_evaluator.py +0 -0
  178. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/e2e_tasks.py +0 -0
  179. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/edit_ledger.py +0 -0
  180. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/embedding_index.py +0 -0
  181. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/error_reporting.py +0 -0
  182. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/file_memory.py +0 -0
  183. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/git_context.py +0 -0
  184. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/hub_service.py +0 -0
  185. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/indexer.py +0 -0
  186. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/jira_client.py +0 -0
  187. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/jira_cloud.py +0 -0
  188. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/jira_credentials.py +0 -0
  189. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/jira_data_center.py +0 -0
  190. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/jira_links.py +0 -0
  191. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/memory.py +0 -0
  192. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/memory_consolidator.py +0 -0
  193. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/memory_distiller.py +0 -0
  194. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/memory_graph.py +0 -0
  195. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/memory_grounder.py +0 -0
  196. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/memory_queue.py +0 -0
  197. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/memory_scorer.py +0 -0
  198. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/metrics.py +0 -0
  199. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/notifications.py +0 -0
  200. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/ollama_bridge.py +0 -0
  201. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/ollama_client.py +0 -0
  202. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/ollama_credentials.py +0 -0
  203. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/output_filter.py +0 -0
  204. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/parser.py +0 -0
  205. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/project_manager.py +0 -0
  206. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/project_runtime.py +0 -0
  207. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/protocol.py +0 -0
  208. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/proxy_state.py +0 -0
  209. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/retention.py +0 -0
  210. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/retrieval_broker.py +0 -0
  211. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/router.py +0 -0
  212. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/runtime.py +0 -0
  213. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/scanner.py +0 -0
  214. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/session_benchmark.py +0 -0
  215. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/session_manager.py +0 -0
  216. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/session_preloader.py +0 -0
  217. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/subprojects.py +0 -0
  218. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/task_store.py +0 -0
  219. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/telemetry.py +0 -0
  220. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/text_index.py +0 -0
  221. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/time_tracker.py +0 -0
  222. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/tool_classifier.py +0 -0
  223. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/transcript_index.py +0 -0
  224. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/validation_cache.py +0 -0
  225. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/vector_store.py +0 -0
  226. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/watcher.py +0 -0
  227. {code_context_control-2.57.0 → code_context_control-2.57.1}/services/win_subprocess.py +0 -0
  228. {code_context_control-2.57.0 → code_context_control-2.57.1}/setup.cfg +0 -0
  229. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_activity_reporter.py +0 -0
  230. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_aider_polyglot.py +0 -0
  231. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_antigravity_transition.py +0 -0
  232. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_artifact_store.py +0 -0
  233. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_artifact_tool.py +0 -0
  234. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_bitbucket_cli_smoke.py +0 -0
  235. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_bitbucket_client.py +0 -0
  236. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_bitbucket_config_fallback.py +0 -0
  237. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_bitbucket_credentials.py +0 -0
  238. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_bitbucket_tool.py +0 -0
  239. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_c3_bridge_project_artifacts.py +0 -0
  240. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_c3_shell.py +0 -0
  241. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_circuit_breaker.py +0 -0
  242. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_claude_md_merge.py +0 -0
  243. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_cli_smoke.py +0 -0
  244. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_compressor_large_file.py +0 -0
  245. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_delegate_cascade.py +0 -0
  246. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_e2e_benchmark.py +0 -0
  247. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_edit_ledger_hook.py +0 -0
  248. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_edit_normalization.py +0 -0
  249. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_enforcement_flip.py +0 -0
  250. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_federated_graph.py +0 -0
  251. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_filter_backoff.py +0 -0
  252. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_ghost_files.py +0 -0
  253. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_ghost_generation.py +0 -0
  254. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_git_branch_awareness.py +0 -0
  255. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hook_dispatch.py +0 -0
  256. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hook_pretool_enforce.py +0 -0
  257. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hook_prompt_recall.py +0 -0
  258. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hook_smoke.py +0 -0
  259. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hook_state.py +0 -0
  260. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hook_utf8_stdio.py +0 -0
  261. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hub_inspect_api.py +0 -0
  262. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hub_server_smoke.py +0 -0
  263. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_hub_subproject_links.py +0 -0
  264. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_init_scan.py +0 -0
  265. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_install_mcp_entrypoint.py +0 -0
  266. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_jira_cli_smoke.py +0 -0
  267. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_jira_client.py +0 -0
  268. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_jira_config_fallback.py +0 -0
  269. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_jira_credentials.py +0 -0
  270. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_jira_links.py +0 -0
  271. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_jira_routes.py +0 -0
  272. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_jira_tool.py +0 -0
  273. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_lazy_store_init.py +0 -0
  274. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_mcp_host_guard.py +0 -0
  275. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_mcp_memory_timeout.py +0 -0
  276. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_mcp_server_smoke.py +0 -0
  277. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_mcp_toml.py +0 -0
  278. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_memory_distiller.py +0 -0
  279. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_memory_graph_api.py +0 -0
  280. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_memory_queue.py +0 -0
  281. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_memory_system.py +0 -0
  282. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_notification_dedup.py +0 -0
  283. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_notification_discipline.py +0 -0
  284. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_ollama_credentials.py +0 -0
  285. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_api_auth.py +0 -0
  286. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_apikey_api.py +0 -0
  287. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_c3_bridge.py +0 -0
  288. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_chat_engine.py +0 -0
  289. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_discovery_api.py +0 -0
  290. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_local_auth.py +0 -0
  291. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_ollama_bridge.py +0 -0
  292. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_scanner_cache.py +0 -0
  293. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_security_fixes.py +0 -0
  294. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_subproject_awareness.py +0 -0
  295. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_oracle_ui_bundle.py +0 -0
  296. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_output_filter.py +0 -0
  297. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_permissions.py +0 -0
  298. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_pm_api.py +0 -0
  299. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_project_manager.py +0 -0
  300. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_project_manager_merge.py +0 -0
  301. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_project_tool.py +0 -0
  302. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_read_coercion.py +0 -0
  303. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_read_edit_parity.py +0 -0
  304. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_related_facts.py +0 -0
  305. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_response_boilerplate.py +0 -0
  306. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_retention.py +0 -0
  307. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_review_digest.py +0 -0
  308. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_service_durability.py +0 -0
  309. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_session_benchmark.py +0 -0
  310. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_session_budget.py +0 -0
  311. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_shell_robustness.py +0 -0
  312. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_subproject_exclusion.py +0 -0
  313. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_subproject_federation.py +0 -0
  314. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_subprojects.py +0 -0
  315. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_swe_bench.py +0 -0
  316. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_task_store.py +0 -0
  317. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_task_tool.py +0 -0
  318. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_time_tracker.py +0 -0
  319. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_token_telemetry.py +0 -0
  320. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_tool_registry.py +0 -0
  321. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_upgrade_and_version.py +0 -0
  322. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_validate.py +0 -0
  323. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_version_sync.py +0 -0
  324. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_web_security.py +0 -0
  325. {code_context_control-2.57.0 → code_context_control-2.57.1}/tests/test_windows_reliability.py +0 -0
  326. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/__init__.py +0 -0
  327. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/backend.py +0 -0
  328. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/main.py +0 -0
  329. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/__init__.py +0 -0
  330. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/benchmark_view.py +0 -0
  331. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/claudemd_view.py +0 -0
  332. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/compress_view.py +0 -0
  333. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/index_view.py +0 -0
  334. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/init_view.py +0 -0
  335. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/mcp_view.py +0 -0
  336. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/optimize_view.py +0 -0
  337. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/pipe_view.py +0 -0
  338. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/projects_view.py +0 -0
  339. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/search_view.py +0 -0
  340. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/session_view.py +0 -0
  341. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/stats.py +0 -0
  342. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/screens/ui_view.py +0 -0
  343. {code_context_control-2.57.0 → code_context_control-2.57.1}/tui/theme.tcss +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-context-control
3
- Version: 2.57.0
3
+ Version: 2.57.1
4
4
  Summary: Local code-intelligence layer for AI coding tools (Claude Code, Codex, Copilot, Cursor, Antigravity). Retrieve less, read less, edit safer — version the configs that shape your agent (CLAUDE.md, skills, hooks, MCP), and manage multi-project + sub-project hierarchies from a local hub.
5
5
  Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -92,7 +92,7 @@ console = Console() if HAS_RICH else None
92
92
  # Config
93
93
  CONFIG_DIR = ".c3"
94
94
  CONFIG_FILE = ".c3/config.json"
95
- __version__ = "2.57.0"
95
+ __version__ = "2.57.1"
96
96
 
97
97
 
98
98
  def _command_deps() -> CommandDeps:
@@ -374,21 +374,52 @@ function ProjectCard({ p, isChild, rollup, expanded, onToggleExpand, onChanged,
374
374
  setUpdating(false);
375
375
  };
376
376
 
377
+ // Launch the UI server, then open its tab once the port shows up in the
378
+ // registry. launch_session cannot return the port (the detached child
379
+ // picks it), so open a placeholder tab synchronously — still inside the
380
+ // click gesture, so popup blockers allow it — and navigate it when
381
+ // polling /api/projects finds the port.
377
382
  const start = async (e) => {
378
383
  e.stopPropagation();
379
384
  if (starting) return;
380
385
  setStarting(true);
386
+ const win = window.open('', '_blank');
387
+ if (win) {
388
+ try {
389
+ win.document.write(
390
+ `<title>Starting ${p.name}…</title>` +
391
+ '<body style="background:#0d1117;color:#8b949e;font-family:sans-serif;' +
392
+ 'display:flex;align-items:center;justify-content:center;height:100vh">' +
393
+ `Starting ${p.name}…</body>`);
394
+ } catch { }
395
+ }
396
+ const fail = (msg) => {
397
+ if (win) win.close();
398
+ notify(msg, 'err');
399
+ setStarting(false);
400
+ };
381
401
  try {
382
402
  const d = await api.post('/api/sessions/start', { path: p.path });
383
- if (d.launched) {
384
- notify(`Starting ${p.name}…`);
385
- setTimeout(onChanged, 1500);
386
- setTimeout(onChanged, 4000);
387
- } else {
388
- notify('Launch failed', 'err');
389
- }
390
- } catch (err) { notify('Start: ' + err.message, 'err'); }
391
- setStarting(false);
403
+ if (!d.launched) { fail('Launch failed'); return; }
404
+ notify(`Starting ${p.name}…`);
405
+ setTimeout(onChanged, 1500);
406
+ const poll = async (tries) => {
407
+ let rows = [];
408
+ try { rows = await api.get('/api/projects'); } catch { }
409
+ const row = (Array.isArray(rows) ? rows : []).find(r =>
410
+ (r.path || '').toLowerCase() === (p.path || '').toLowerCase());
411
+ if (row && row.port) {
412
+ const url = 'http://127.0.0.1:' + row.port;
413
+ if (win) { win.location = url; } else { window.open(url, '_blank'); }
414
+ onChanged();
415
+ setStarting(false);
416
+ return;
417
+ }
418
+ if (tries >= 20) { fail(`${p.name}: UI server did not report a port — check .c3/ui.log`); return; }
419
+ setTimeout(() => poll(tries + 1), 1500);
420
+ };
421
+ setTimeout(() => poll(0), 1200);
422
+ } catch (err) { fail('Start: ' + err.message); }
392
423
  };
393
424
 
394
425
  const stop = async (e) => {
@@ -396,6 +396,33 @@ def api_health():
396
396
 
397
397
 
398
398
  # ─── API: Session Registry ───────────────────────────────
399
+ @app.route('/api/registry/active')
400
+ def api_registry_active():
401
+ """Running UI servers PLUS registered projects with a live agent session
402
+ but no UI (port None) — the project switcher's data. On-demand only:
403
+ get_active_sessions() probes ports, so this must never be polled."""
404
+ try:
405
+ from services.project_manager import ProjectManager
406
+ return jsonify(ProjectManager().get_active_sessions())
407
+ except Exception as e:
408
+ return jsonify({"error": str(e)}), 500
409
+
410
+
411
+ @app.route('/api/registry/launch', methods=['POST'])
412
+ def api_registry_launch():
413
+ """Launch another project's UI server so the switcher can jump to it."""
414
+ data = request.get_json(force=True) or {}
415
+ path = (data.get('path') or '').strip()
416
+ if not path:
417
+ return jsonify({"error": "path is required"}), 400
418
+ try:
419
+ from services.project_manager import ProjectManager
420
+ result = ProjectManager().launch_session(path)
421
+ return jsonify(result), (200 if result.get("launched") else 400)
422
+ except Exception as e:
423
+ return jsonify({"error": str(e)}), 500
424
+
425
+
399
426
  @app.route('/api/registry')
400
427
  def api_registry():
401
428
  """Return all live C3 sessions from the global registry."""
@@ -1,6 +1,13 @@
1
1
  // ─── Sidebar ─────────────────────────────
2
+ // Switch between ACTIVE projects: other running UI servers (direct jump)
3
+ // plus projects with a live agent session but no UI yet (launch, then
4
+ // jump). The cheap polled /api/registry prop only seeds the count hint;
5
+ // the authoritative list (/api/registry/active — it probes ports) loads
6
+ // on demand when the menu opens, never on a poll.
2
7
  function ProjectSwitcher({ registry }) {
3
8
  const [open, setOpen] = useState(false);
9
+ const [entries, setEntries] = useState(null); // null = scanning
10
+ const [busyPath, setBusyPath] = useState(null); // path being launched
4
11
  const ref = React.useRef(null);
5
12
  const myPort = parseInt(window.location.port) || 3333;
6
13
 
@@ -20,37 +27,81 @@ function ProjectSwitcher({ registry }) {
20
27
  return "Unknown";
21
28
  };
22
29
 
23
- const others = (registry || []).filter(e => e.port !== myPort);
24
- if (others.length === 0) return null;
30
+ const others = (list) => (list || []).filter(e => e.port !== myPort);
31
+
32
+ const loadActive = async () => {
33
+ setEntries(null);
34
+ try {
35
+ const r = await api.get('/api/registry/active');
36
+ setEntries(others(Array.isArray(r) ? r : []));
37
+ } catch { setEntries(others(registry)); }
38
+ };
39
+
40
+ const toggle = () => { const next = !open; setOpen(next); if (next) loadActive(); };
41
+
42
+ // Portless entry = live agent session without a UI server: launch one,
43
+ // poll until it registers a port, then navigate this tab to it.
44
+ const jump = async (e) => {
45
+ if (busyPath) return;
46
+ setBusyPath(e.project_path);
47
+ try {
48
+ await api.post('/api/registry/launch', { path: e.project_path });
49
+ const poll = async (tries) => {
50
+ let list = [];
51
+ try { list = await api.get('/api/registry/active'); } catch { }
52
+ const row = (Array.isArray(list) ? list : []).find(x =>
53
+ (x.project_path || '').toLowerCase() === (e.project_path || '').toLowerCase() && x.port);
54
+ if (row) { window.location.href = `http://localhost:${row.port}`; return; }
55
+ if (tries >= 15) { setBusyPath(null); return; }
56
+ setTimeout(() => poll(tries + 1), 1500);
57
+ };
58
+ setTimeout(() => poll(0), 1200);
59
+ } catch { setBusyPath(null); }
60
+ };
61
+
62
+ const hint = others(registry).length;
25
63
 
26
64
  return (
27
65
  <div ref={ref} style={{ position: "relative" }}>
28
- <button onClick={() => setOpen(!open)} title="Switch project"
66
+ <button onClick={toggle} title="Switch to another active project"
29
67
  style={{
30
- padding: "3px 6px", borderRadius: 4, border: `1px solid ${T.border}`, background: "transparent",
31
- cursor: "pointer", display: "flex", alignItems: "center", gap: 4, fontSize: 10, color: T.textDim
68
+ width: "100%", padding: "4px 6px", borderRadius: 4, border: `1px solid ${T.border}`,
69
+ background: "transparent", cursor: "pointer", display: "flex", alignItems: "center",
70
+ gap: 5, fontSize: 10, color: T.textDim
32
71
  }}>
33
72
  <I name="shuffle" size={10} color={T.textDim} />
34
- <span>{others.length}</span>
73
+ <span>Switch project</span>
74
+ {hint > 0 && <span className="mono" style={{ marginLeft: "auto", color: T.textMuted }}>{hint}</span>}
35
75
  </button>
36
76
  {open && (
37
77
  <div style={{
38
- position: "absolute", top: "100%", left: 0, marginTop: 4, zIndex: 100,
78
+ position: "absolute", bottom: "100%", left: 0, marginBottom: 4, zIndex: 100,
39
79
  background: T.surface, border: `1px solid ${T.border}`, borderRadius: 6,
40
- boxShadow: "0 4px 12px rgba(0,0,0,0.3)", minWidth: 200, overflow: "hidden"
80
+ boxShadow: "0 4px 12px rgba(0,0,0,0.3)", minWidth: 220, overflow: "hidden"
41
81
  }}>
42
- {others.map(e => (
43
- <a key={e.port} href={`http://localhost:${e.port}`}
82
+ {entries === null && (
83
+ <div style={{ padding: "8px 12px", fontSize: 11, color: T.textDim }}>Scanning active sessions…</div>
84
+ )}
85
+ {entries !== null && entries.length === 0 && (
86
+ <div style={{ padding: "8px 12px", fontSize: 11, color: T.textDim }}>No other active projects.</div>
87
+ )}
88
+ {(entries || []).map(e => (
89
+ <a key={e.project_path || e.port}
90
+ href={e.port ? `http://localhost:${e.port}` : '#'}
91
+ onClick={(ev) => { if (!e.port) { ev.preventDefault(); jump(e); } }}
44
92
  style={{
45
93
  display: "flex", alignItems: "center", gap: 8, padding: "8px 12px",
46
94
  color: T.text, textDecoration: "none", fontSize: 12,
47
- borderBottom: `1px solid ${T.border}20`, transition: "background 0.1s"
95
+ borderBottom: `1px solid ${T.border}20`, transition: "background 0.1s",
96
+ opacity: busyPath && busyPath !== e.project_path ? 0.5 : 1
48
97
  }}
49
98
  onMouseEnter={ev => ev.currentTarget.style.background = T.surfaceAlt}
50
99
  onMouseLeave={ev => ev.currentTarget.style.background = "transparent"}>
51
- <GlowDot color={T.accent} size={5} />
100
+ <GlowDot color={e.port ? T.accent : T.warn} size={5} />
52
101
  <span style={{ flex: 1 }}>{entryName(e)}</span>
53
- <span className="mono" style={{ fontSize: 9, color: T.textDim }}>:{e.port}</span>
102
+ <span className="mono" style={{ fontSize: 9, color: T.textDim }}>
103
+ {e.port ? `:${e.port}` : (busyPath === e.project_path ? 'starting…' : 'session')}
104
+ </span>
54
105
  </a>
55
106
  ))}
56
107
  </div>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-context-control
3
- Version: 2.57.0
3
+ Version: 2.57.1
4
4
  Summary: Local code-intelligence layer for AI coding tools (Claude Code, Codex, Copilot, Cursor, Antigravity). Retrieve less, read less, edit safer — version the configs that shape your agent (CLAUDE.md, skills, hooks, MCP), and manage multi-project + sub-project hierarchies from a local hub.
5
5
  Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-context-control"
7
- version = "2.57.0"
7
+ version = "2.57.1"
8
8
  description = "Local code-intelligence layer for AI coding tools (Claude Code, Codex, Copilot, Cursor, Antigravity). Retrieve less, read less, edit safer — version the configs that shape your agent (CLAUDE.md, skills, hooks, MCP), and manage multi-project + sub-project hierarchies from a local hub."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"