codemble 0.5.2__tar.gz → 0.5.3__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 (222) hide show
  1. {codemble-0.5.2 → codemble-0.5.3}/CHANGELOG.md +21 -0
  2. {codemble-0.5.2 → codemble-0.5.3}/PKG-INFO +2 -2
  3. {codemble-0.5.2 → codemble-0.5.3}/codemble/__init__.py +1 -1
  4. codemble-0.5.3/docs/releases/v0.5.3.md +50 -0
  5. {codemble-0.5.2 → codemble-0.5.3}/docs-site/package.json +1 -1
  6. {codemble-0.5.2 → codemble-0.5.3}/pyproject.toml +7 -2
  7. codemble-0.5.3/tests/test_dependency_compatibility.py +43 -0
  8. {codemble-0.5.2 → codemble-0.5.3}/web/package-lock.json +2 -2
  9. {codemble-0.5.2 → codemble-0.5.3}/web/package.json +1 -1
  10. {codemble-0.5.2 → codemble-0.5.3}/.env.example +0 -0
  11. {codemble-0.5.2 → codemble-0.5.3}/.gitattributes +0 -0
  12. {codemble-0.5.2 → codemble-0.5.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  13. {codemble-0.5.2 → codemble-0.5.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  14. {codemble-0.5.2 → codemble-0.5.3}/.github/ISSUE_TEMPLATE/early_tester.yml +0 -0
  15. {codemble-0.5.2 → codemble-0.5.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  16. {codemble-0.5.2 → codemble-0.5.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {codemble-0.5.2 → codemble-0.5.3}/.github/dependabot.yml +0 -0
  18. {codemble-0.5.2 → codemble-0.5.3}/.github/workflows/ci.yml +0 -0
  19. {codemble-0.5.2 → codemble-0.5.3}/.github/workflows/pages.yml +0 -0
  20. {codemble-0.5.2 → codemble-0.5.3}/.github/workflows/publish-pypi.yml +0 -0
  21. {codemble-0.5.2 → codemble-0.5.3}/.gitignore +0 -0
  22. {codemble-0.5.2 → codemble-0.5.3}/AGENTS.md +0 -0
  23. {codemble-0.5.2 → codemble-0.5.3}/CLAUDE.md +0 -0
  24. {codemble-0.5.2 → codemble-0.5.3}/CODE_OF_CONDUCT.md +0 -0
  25. {codemble-0.5.2 → codemble-0.5.3}/CONTRIBUTING.md +0 -0
  26. {codemble-0.5.2 → codemble-0.5.3}/LICENSE +0 -0
  27. {codemble-0.5.2 → codemble-0.5.3}/NOTICE +0 -0
  28. {codemble-0.5.2 → codemble-0.5.3}/README.md +0 -0
  29. {codemble-0.5.2 → codemble-0.5.3}/SECURITY.md +0 -0
  30. {codemble-0.5.2 → codemble-0.5.3}/TESTING.md +0 -0
  31. {codemble-0.5.2 → codemble-0.5.3}/assets/demo.gif +0 -0
  32. {codemble-0.5.2 → codemble-0.5.3}/codemble/adapters/__init__.py +0 -0
  33. {codemble-0.5.2 → codemble-0.5.3}/codemble/adapters/base.py +0 -0
  34. {codemble-0.5.2 → codemble-0.5.3}/codemble/adapters/discovery.py +0 -0
  35. {codemble-0.5.2 → codemble-0.5.3}/codemble/adapters/parse_progress.py +0 -0
  36. {codemble-0.5.2 → codemble-0.5.3}/codemble/adapters/project.py +0 -0
  37. {codemble-0.5.2 → codemble-0.5.3}/codemble/adapters/python_ast.py +0 -0
  38. {codemble-0.5.2 → codemble-0.5.3}/codemble/adapters/typescript_tree_sitter.py +0 -0
  39. {codemble-0.5.2 → codemble-0.5.3}/codemble/checks/__init__.py +0 -0
  40. {codemble-0.5.2 → codemble-0.5.3}/codemble/checks/service.py +0 -0
  41. {codemble-0.5.2 → codemble-0.5.3}/codemble/cli.py +0 -0
  42. {codemble-0.5.2 → codemble-0.5.3}/codemble/graph/__init__.py +0 -0
  43. {codemble-0.5.2 → codemble-0.5.3}/codemble/graph/finalize.py +0 -0
  44. {codemble-0.5.2 → codemble-0.5.3}/codemble/graph/layout.py +0 -0
  45. {codemble-0.5.2 → codemble-0.5.3}/codemble/graph/mapview.py +0 -0
  46. {codemble-0.5.2 → codemble-0.5.3}/codemble/lens/__init__.py +0 -0
  47. {codemble-0.5.2 → codemble-0.5.3}/codemble/lens/javascript_typescript.py +0 -0
  48. {codemble-0.5.2 → codemble-0.5.3}/codemble/lens/python.py +0 -0
  49. {codemble-0.5.2 → codemble-0.5.3}/codemble/llm/__init__.py +0 -0
  50. {codemble-0.5.2 → codemble-0.5.3}/codemble/llm/local_status.py +0 -0
  51. {codemble-0.5.2 → codemble-0.5.3}/codemble/llm/providers.py +0 -0
  52. {codemble-0.5.2 → codemble-0.5.3}/codemble/llm/structural.py +0 -0
  53. {codemble-0.5.2 → codemble-0.5.3}/codemble/llm/study.py +0 -0
  54. {codemble-0.5.2 → codemble-0.5.3}/codemble/paths.py +0 -0
  55. {codemble-0.5.2 → codemble-0.5.3}/codemble/progress/__init__.py +0 -0
  56. {codemble-0.5.2 → codemble-0.5.3}/codemble/progress/store.py +0 -0
  57. {codemble-0.5.2 → codemble-0.5.3}/codemble/server/__init__.py +0 -0
  58. {codemble-0.5.2 → codemble-0.5.3}/codemble/server/app.py +0 -0
  59. {codemble-0.5.2 → codemble-0.5.3}/codemble/server/parse_job.py +0 -0
  60. {codemble-0.5.2 → codemble-0.5.3}/codemble/server/runtime.py +0 -0
  61. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/index-DTjcBtZj.js +0 -0
  62. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/index-Dbk76SAB.css +0 -0
  63. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  64. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  65. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  66. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  67. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/shippori-mincho-latin-500-normal-C-QwvIb3.woff +0 -0
  68. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/shippori-mincho-latin-500-normal-XI1O8euf.woff2 +0 -0
  69. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/shippori-mincho-latin-700-normal-CkoCYOiI.woff +0 -0
  70. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/shippori-mincho-latin-700-normal-DHcmzUO5.woff2 +0 -0
  71. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/zen-kaku-gothic-new-latin-400-normal-BEdayliK.woff2 +0 -0
  72. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/assets/zen-kaku-gothic-new-latin-400-normal-CPSmNJAU.woff +0 -0
  73. {codemble-0.5.2 → codemble-0.5.3}/codemble/web_dist/index.html +0 -0
  74. {codemble-0.5.2 → codemble-0.5.3}/docs/adr/README.md +0 -0
  75. {codemble-0.5.2 → codemble-0.5.3}/docs/plans/2026-07-19-audience-modes-and-local-narration-design.md +0 -0
  76. {codemble-0.5.2 → codemble-0.5.3}/docs/plans/2026-07-19-audience-modes-backend-plan.md +0 -0
  77. {codemble-0.5.2 → codemble-0.5.3}/docs/plans/2026-07-19-audience-modes-frontend-plan.md +0 -0
  78. {codemble-0.5.2 → codemble-0.5.3}/docs/plans/2026-07-19-install-ux-folder-picker-design.md +0 -0
  79. {codemble-0.5.2 → codemble-0.5.3}/docs/plans/2026-07-19-install-ux-folder-picker-plan.md +0 -0
  80. {codemble-0.5.2 → codemble-0.5.3}/docs/plans/README.md +0 -0
  81. {codemble-0.5.2 → codemble-0.5.3}/docs/plans/phase-1.md +0 -0
  82. {codemble-0.5.2 → codemble-0.5.3}/docs/releases/checklist.md +0 -0
  83. {codemble-0.5.2 → codemble-0.5.3}/docs/releases/v0.1.0.md +0 -0
  84. {codemble-0.5.2 → codemble-0.5.3}/docs/releases/v0.2.0.md +0 -0
  85. {codemble-0.5.2 → codemble-0.5.3}/docs/releases/v0.4.0.md +0 -0
  86. {codemble-0.5.2 → codemble-0.5.3}/docs/releases/v0.5.0.md +0 -0
  87. {codemble-0.5.2 → codemble-0.5.3}/docs/releases/v0.5.1.md +0 -0
  88. {codemble-0.5.2 → codemble-0.5.3}/docs/releases/v0.5.2.md +0 -0
  89. {codemble-0.5.2 → codemble-0.5.3}/docs/research/README.md +0 -0
  90. {codemble-0.5.2 → codemble-0.5.3}/docs/superpowers/plans/2026-07-19-galaxy-ux-phase-a.md +0 -0
  91. {codemble-0.5.2 → codemble-0.5.3}/docs/superpowers/plans/2026-07-19-galaxy-ux-phase-b.md +0 -0
  92. {codemble-0.5.2 → codemble-0.5.3}/docs/superpowers/plans/2026-07-19-galaxy-ux-phase-c.md +0 -0
  93. {codemble-0.5.2 → codemble-0.5.3}/docs/superpowers/plans/2026-07-19-galaxy-ux-shared-contract.md +0 -0
  94. {codemble-0.5.2 → codemble-0.5.3}/docs/superpowers/specs/2026-07-19-galaxy-ux-overhaul-design.md +0 -0
  95. {codemble-0.5.2 → codemble-0.5.3}/docs-site/.gitignore +0 -0
  96. {codemble-0.5.2 → codemble-0.5.3}/docs-site/astro.config.mjs +0 -0
  97. {codemble-0.5.2 → codemble-0.5.3}/docs-site/design.md +0 -0
  98. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/favicon-16.png +0 -0
  99. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/favicon-32.png +0 -0
  100. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/icon-180.png +0 -0
  101. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/icon-192.png +0 -0
  102. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/icon-512.png +0 -0
  103. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/icon.svg +0 -0
  104. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/icons/asterism.svg +0 -0
  105. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/icons/install.svg +0 -0
  106. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/mark-animated.svg +0 -0
  107. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/mark.svg +0 -0
  108. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/hero-chart.svg +0 -0
  109. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/hero-field.svg +0 -0
  110. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/hero-gold.svg +0 -0
  111. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/kasumi-rule.svg +0 -0
  112. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/plate-galaxy.svg +0 -0
  113. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/plate-study.svg +0 -0
  114. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/plate-system.svg +0 -0
  115. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/brand/plates/seal.svg +0 -0
  116. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/favicon.svg +0 -0
  117. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/easy-mode.png +0 -0
  118. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/galaxy-lit.png +0 -0
  119. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/galaxy.png +0 -0
  120. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/loading.png +0 -0
  121. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/map-architecture.png +0 -0
  122. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/map-workflow.png +0 -0
  123. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/study-panel.png +0 -0
  124. {codemble-0.5.2 → codemble-0.5.3}/docs-site/public/shots/system.png +0 -0
  125. {codemble-0.5.2 → codemble-0.5.3}/docs-site/scripts/build-plates.mjs +0 -0
  126. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/assets/codemble-mark-dark.svg +0 -0
  127. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/assets/codemble-mark-light.svg +0 -0
  128. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/components/Search.astro +0 -0
  129. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/components/Tatebanko.astro +0 -0
  130. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/architecture.md +0 -0
  131. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/build-from-source.md +0 -0
  132. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/checks-and-lighting.md +0 -0
  133. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/contributing.md +0 -0
  134. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/correctness.md +0 -0
  135. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/early-testing.md +0 -0
  136. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/installation.md +0 -0
  137. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/introduction.md +0 -0
  138. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m1-parser.md +0 -0
  139. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m10-polyglot-release.md +0 -0
  140. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m12-galaxy-look.md +0 -0
  141. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m13-scale.md +0 -0
  142. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m2-galaxy.md +0 -0
  143. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m3-study.md +0 -0
  144. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m4-lens.md +0 -0
  145. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m5-checks.md +0 -0
  146. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m6-release.md +0 -0
  147. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m8-typescript.md +0 -0
  148. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/progress/m9-typescript-lens.md +0 -0
  149. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/quickstart.md +0 -0
  150. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/roadmap.md +0 -0
  151. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/star-chart.md +0 -0
  152. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/study-panel.md +0 -0
  153. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content/docs/the-galaxy.md +0 -0
  154. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/content.config.ts +0 -0
  155. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/pages/index.astro +0 -0
  156. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/styles/custom.css +0 -0
  157. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/styles/landing.css +0 -0
  158. {codemble-0.5.2 → codemble-0.5.3}/docs-site/src/styles/tokens.css +0 -0
  159. {codemble-0.5.2 → codemble-0.5.3}/scripts/dev.sh +0 -0
  160. {codemble-0.5.2 → codemble-0.5.3}/scripts/record_demo.sh +0 -0
  161. {codemble-0.5.2 → codemble-0.5.3}/tests/conftest.py +0 -0
  162. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/check_suites.json +0 -0
  163. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/concepts_sample.py +0 -0
  164. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/impact/alpha.py +0 -0
  165. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/impact/beta.py +0 -0
  166. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/impact/gamma.py +0 -0
  167. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/impact/helpers.py +0 -0
  168. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/impact/noisy.py +0 -0
  169. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/python_worker.py +0 -0
  170. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/src/broken.ts +0 -0
  171. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/src/legacy.js +0 -0
  172. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/src/local.js +0 -0
  173. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/src/main.ts +0 -0
  174. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/src/reexport.ts +0 -0
  175. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/src/util.ts +0 -0
  176. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/polyglot/src/widget.tsx +0 -0
  177. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/repeated_calls.py +0 -0
  178. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/.gitignore +0 -0
  179. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/ambiguous.py +0 -0
  180. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/api.py +0 -0
  181. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/app.py +0 -0
  182. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/broken.py +0 -0
  183. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/cli.py +0 -0
  184. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/pkg/__init__.py +0 -0
  185. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/pkg/helpers.py +0 -0
  186. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/pkg/service.py +0 -0
  187. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/pkg/util.py +0 -0
  188. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/runner/__main__.py +0 -0
  189. {codemble-0.5.2 → codemble-0.5.3}/tests/fixtures/sampleproj/shared.py +0 -0
  190. {codemble-0.5.2 → codemble-0.5.3}/tests/test_checks.py +0 -0
  191. {codemble-0.5.2 → codemble-0.5.3}/tests/test_graph_finalization.py +0 -0
  192. {codemble-0.5.2 → codemble-0.5.3}/tests/test_mapview.py +0 -0
  193. {codemble-0.5.2 → codemble-0.5.3}/tests/test_parse_job.py +0 -0
  194. {codemble-0.5.2 → codemble-0.5.3}/tests/test_parse_progress.py +0 -0
  195. {codemble-0.5.2 → codemble-0.5.3}/tests/test_progress.py +0 -0
  196. {codemble-0.5.2 → codemble-0.5.3}/tests/test_project_parser.py +0 -0
  197. {codemble-0.5.2 → codemble-0.5.3}/tests/test_providers.py +0 -0
  198. {codemble-0.5.2 → codemble-0.5.3}/tests/test_python_ast.py +0 -0
  199. {codemble-0.5.2 → codemble-0.5.3}/tests/test_server.py +0 -0
  200. {codemble-0.5.2 → codemble-0.5.3}/tests/test_smoke.py +0 -0
  201. {codemble-0.5.2 → codemble-0.5.3}/tests/test_structural.py +0 -0
  202. {codemble-0.5.2 → codemble-0.5.3}/tests/test_study.py +0 -0
  203. {codemble-0.5.2 → codemble-0.5.3}/tests/test_typescript_tree_sitter.py +0 -0
  204. {codemble-0.5.2 → codemble-0.5.3}/web/README.md +0 -0
  205. {codemble-0.5.2 → codemble-0.5.3}/web/index.html +0 -0
  206. {codemble-0.5.2 → codemble-0.5.3}/web/scripts/check_graph_data.mjs +0 -0
  207. {codemble-0.5.2 → codemble-0.5.3}/web/scripts/check_learner_session.mjs +0 -0
  208. {codemble-0.5.2 → codemble-0.5.3}/web/scripts/record_demo.mjs +0 -0
  209. {codemble-0.5.2 → codemble-0.5.3}/web/src/App.jsx +0 -0
  210. {codemble-0.5.2 → codemble-0.5.3}/web/src/GalaxyCanvas.jsx +0 -0
  211. {codemble-0.5.2 → codemble-0.5.3}/web/src/GuidanceLayer.jsx +0 -0
  212. {codemble-0.5.2 → codemble-0.5.3}/web/src/MapView.jsx +0 -0
  213. {codemble-0.5.2 → codemble-0.5.3}/web/src/ModeControl.jsx +0 -0
  214. {codemble-0.5.2 → codemble-0.5.3}/web/src/StudyPanel.jsx +0 -0
  215. {codemble-0.5.2 → codemble-0.5.3}/web/src/galaxyEffects.js +0 -0
  216. {codemble-0.5.2 → codemble-0.5.3}/web/src/galaxyMaterials.js +0 -0
  217. {codemble-0.5.2 → codemble-0.5.3}/web/src/graphData.js +0 -0
  218. {codemble-0.5.2 → codemble-0.5.3}/web/src/learnerSession.js +0 -0
  219. {codemble-0.5.2 → codemble-0.5.3}/web/src/main.jsx +0 -0
  220. {codemble-0.5.2 → codemble-0.5.3}/web/src/styles.css +0 -0
  221. {codemble-0.5.2 → codemble-0.5.3}/web/src/tokens.css +0 -0
  222. {codemble-0.5.2 → codemble-0.5.3}/web/vite.config.js +0 -0
@@ -5,6 +5,27 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · Versioning:
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.5.3] - 2026-07-21
9
+
10
+ ### Fixed
11
+ - **A fresh install crashed on every JavaScript/TypeScript project.** The
12
+ dependency range allowed `tree-sitter` 0.26.0, which is ABI-incompatible with
13
+ the newest published grammar wheels (`tree-sitter-javascript` 0.25.0,
14
+ `tree-sitter-typescript` 0.23.2 — the only ones that exist). Partway through a
15
+ real project the parser died with a SIGSEGV inside `node_get_named_children`,
16
+ taking the whole process down with it: `codemble <path>` exited with no
17
+ traceback, and the app's local server vanished mid-parse, so the loading
18
+ screen reported "Lost contact with the local server" and stopped there.
19
+ Bisected on one machine, one project, one Python: 0.26.0 crashes every run,
20
+ 0.25.2 is clean. The core is now pinned `<0.26`.
21
+ An install that already had 0.25.x kept working, which is why this stayed
22
+ invisible from a developer checkout — it only reached people installing
23
+ fresh, including through the documented `uvx codemble` path.
24
+ - A dependency guard now asserts the resolved `tree-sitter` version stays below
25
+ the segfaulting release. A behavioural test cannot catch this: a small snippet
26
+ parses and walks fine on 0.26.0, and every fixture in the suite is small,
27
+ which is exactly how it reached a release.
28
+
8
29
  ## [0.5.2] - 2026-07-20
9
30
 
10
31
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codemble
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: A learning game that turns the code AI wrote for you into a galaxy you light up by understanding it.
5
5
  Project-URL: Homepage, https://udhawan97.github.io/Codemble/
6
6
  Project-URL: Repository, https://github.com/udhawan97/Codemble
@@ -22,7 +22,7 @@ Requires-Python: >=3.11
22
22
  Requires-Dist: fastapi>=0.115
23
23
  Requires-Dist: tree-sitter-javascript<0.26,>=0.25
24
24
  Requires-Dist: tree-sitter-typescript<0.24,>=0.23.2
25
- Requires-Dist: tree-sitter<0.27,>=0.25
25
+ Requires-Dist: tree-sitter<0.26,>=0.25
26
26
  Requires-Dist: uvicorn>=0.30
27
27
  Provides-Extra: dev
28
28
  Requires-Dist: httpx>=0.27; extra == 'dev'
@@ -1,4 +1,4 @@
1
1
  """Codemble — a learning game that turns the code AI wrote for you into a galaxy
2
2
  you light up by understanding it. See CLAUDE.md for the agent brief and roadmap."""
3
3
 
4
- __version__ = "0.5.2"
4
+ __version__ = "0.5.3"
@@ -0,0 +1,50 @@
1
+ # Codemble v0.5.3 — fixes a crash on every fresh install
2
+
3
+ **If you installed Codemble recently and it died on a JavaScript or TypeScript
4
+ project, this is why. Please upgrade.**
5
+
6
+ Codemble's dependency range allowed `tree-sitter` 0.26.0, which is
7
+ ABI-incompatible with the newest published grammar wheels
8
+ (`tree-sitter-javascript` 0.25.0 and `tree-sitter-typescript` 0.23.2 — the only
9
+ ones that exist). Partway through parsing a real project the parser died with a
10
+ segmentation fault inside `node_get_named_children`, taking the whole process
11
+ down with it.
12
+
13
+ What that looked like:
14
+
15
+ - `codemble ./my-project` exited partway through with no traceback.
16
+ - In the app, the local server vanished mid-parse, so the loading screen stopped
17
+ on *"Lost contact with the local server"* and never recovered.
18
+
19
+ The core is now pinned `<0.26`.
20
+
21
+ ## Why it escaped every check
22
+
23
+ An environment that already had `tree-sitter` 0.25.x kept working, so it was
24
+ invisible from a developer checkout and from CI's cache. It only hit people
25
+ installing **fresh** — including through `uvx codemble`, the documented install
26
+ path, which resolves the newest permitted version.
27
+
28
+ It also could not be caught by a behavioural test. A small snippet parses and
29
+ walks its children perfectly well on 0.26.0; the crash needs a corpus of real
30
+ size, and every fixture in the suite is small. That is precisely how it reached
31
+ a release.
32
+
33
+ So the guard added here asserts the **resolved dependency version** rather than
34
+ the behaviour: the suite now fails if `tree-sitter` resolves to the segfaulting
35
+ release. Verified both ways — it passes on 0.25.2 and fails on 0.26.0.
36
+
37
+ ## Upgrading
38
+
39
+ ```
40
+ uvx codemble@latest # or: uv tool upgrade codemble
41
+ ```
42
+
43
+ No breaking changes: the CLI, the graph/checks API, and the on-disk progress
44
+ format are unchanged, and existing progress in `~/.codemble/` is read as-is.
45
+
46
+ ## Honest note
47
+
48
+ The upper bound is deliberate, not caution. It should be raised only once a
49
+ grammar release has been verified against the newer core **on a project of real
50
+ size** — a snippet test will not tell you anything useful here.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "codemble-docs",
3
3
  "type": "module",
4
- "version": "0.5.2",
4
+ "version": "0.5.3",
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "dev": "astro dev",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "codemble"
7
- version = "0.5.2"
7
+ version = "0.5.3"
8
8
  description = "A learning game that turns the code AI wrote for you into a galaxy you light up by understanding it."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -26,7 +26,12 @@ classifiers = [
26
26
  ]
27
27
  dependencies = [
28
28
  "fastapi>=0.115",
29
- "tree-sitter>=0.25,<0.27",
29
+ # Hard upper bound, not caution: tree-sitter 0.26.0 segfaults (SIGSEGV in
30
+ # node_get_named_children) against the newest published grammar wheels
31
+ # (javascript 0.25.0, typescript 0.23.2), which are the only ones available.
32
+ # Bisected on one env, one project: 0.26.0 crashes every run, 0.25.2 is clean.
33
+ # Raise this only once a grammar release is verified against the newer core.
34
+ "tree-sitter>=0.25,<0.26",
30
35
  "tree-sitter-javascript>=0.25,<0.26",
31
36
  "tree-sitter-typescript>=0.23.2,<0.24",
32
37
  "uvicorn>=0.30",
@@ -0,0 +1,43 @@
1
+ """Guard the tree-sitter core/grammar pairing that the parser segfaults without.
2
+
3
+ tree-sitter 0.26.0 is ABI-incompatible with the newest published grammar wheels
4
+ (``tree-sitter-javascript`` 0.25.0, ``tree-sitter-typescript`` 0.23.2 — the only
5
+ ones that exist). Paired with 0.26.0 the parser dies with SIGSEGV inside
6
+ ``node_get_named_children`` partway through a real project, taking the whole
7
+ process — and, in the app, the local server — down with it.
8
+
9
+ A behavioural test cannot catch this: a small snippet parses and walks fine on
10
+ 0.26.0, and every fixture in this suite is small. It only trips on a corpus of
11
+ real size, which is exactly why it reached a release. So the guard asserts the
12
+ resolved version instead of the behaviour.
13
+
14
+ Raise the ceiling only after verifying a grammar release against the newer core
15
+ on a project of real size.
16
+ """
17
+
18
+ from __future__ import annotations
19
+
20
+ import importlib.metadata as metadata
21
+
22
+
23
+ def _version_tuple(distribution: str) -> tuple[int, ...]:
24
+ raw = metadata.version(distribution)
25
+ return tuple(int(part) for part in raw.split(".")[:3] if part.isdigit())
26
+
27
+
28
+ def test_tree_sitter_core_stays_below_the_segfaulting_release() -> None:
29
+ assert _version_tuple("tree-sitter") < (0, 26), (
30
+ "tree-sitter >= 0.26 segfaults against the published grammar wheels; "
31
+ "pyproject pins <0.26 deliberately."
32
+ )
33
+
34
+
35
+ def test_tree_sitter_core_is_new_enough_for_the_grammars() -> None:
36
+ assert _version_tuple("tree-sitter") >= (0, 25), (
37
+ "the JS/TS adapter is written against the 0.25 Language/Parser API."
38
+ )
39
+
40
+
41
+ def test_grammar_wheels_are_the_pinned_pairing() -> None:
42
+ assert _version_tuple("tree-sitter-javascript") >= (0, 25)
43
+ assert _version_tuple("tree-sitter-typescript") >= (0, 23, 2)
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "codemble-web",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "codemble-web",
9
- "version": "0.5.2",
9
+ "version": "0.5.3",
10
10
  "dependencies": {
11
11
  "@fontsource/jetbrains-mono": "5.2.8",
12
12
  "@fontsource/shippori-mincho": "^5.3.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "codemble-web",
3
3
  "private": true,
4
- "version": "0.5.2",
4
+ "version": "0.5.3",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
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