codemble 0.6.4__tar.gz → 0.7.0__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.
- {codemble-0.6.4 → codemble-0.7.0}/.gitignore +1 -0
- {codemble-0.6.4 → codemble-0.7.0}/CHANGELOG.md +68 -0
- {codemble-0.6.4 → codemble-0.7.0}/CLAUDE.md +44 -3
- {codemble-0.6.4 → codemble-0.7.0}/PKG-INFO +31 -14
- {codemble-0.6.4 → codemble-0.7.0}/README.md +30 -13
- {codemble-0.6.4 → codemble-0.7.0}/codemble/__init__.py +1 -1
- codemble-0.6.4/codemble/web_dist/assets/index-DvJD5a9M.js → codemble-0.7.0/codemble/web_dist/assets/index-CMsEPFpK.js +1 -1
- codemble-0.7.0/codemble/web_dist/assets/index-CU2GP4jq.css +1 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/index.html +2 -2
- codemble-0.7.0/docs/releases/v0.7.0.md +64 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/package.json +1 -1
- codemble-0.7.0/docs-site/public/shots/easy-mode.png +0 -0
- codemble-0.7.0/docs-site/public/shots/galaxy-lit.png +0 -0
- codemble-0.7.0/docs-site/public/shots/galaxy.png +0 -0
- codemble-0.7.0/docs-site/public/shots/map-architecture.png +0 -0
- codemble-0.7.0/docs-site/public/shots/map-workflow.png +0 -0
- codemble-0.7.0/docs-site/public/shots/study-panel.png +0 -0
- codemble-0.7.0/docs-site/public/shots/system.png +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/checks-and-lighting.md +13 -6
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/quickstart.md +15 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/study-panel.md +16 -7
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/the-galaxy.md +53 -17
- {codemble-0.6.4 → codemble-0.7.0}/pyproject.toml +1 -1
- {codemble-0.6.4 → codemble-0.7.0}/web/package-lock.json +2 -2
- {codemble-0.6.4 → codemble-0.7.0}/web/package.json +2 -2
- codemble-0.7.0/web/scripts/check_galaxy_effects.mjs +89 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_graph_data.mjs +94 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_learner_projection.mjs +36 -0
- codemble-0.7.0/web/scripts/check_map_viewport.mjs +84 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/App.jsx +126 -30
- {codemble-0.6.4 → codemble-0.7.0}/web/src/GalaxyCanvas.jsx +25 -2
- {codemble-0.6.4 → codemble-0.7.0}/web/src/MapView.jsx +137 -10
- {codemble-0.6.4 → codemble-0.7.0}/web/src/StudyPanel.jsx +46 -3
- {codemble-0.6.4 → codemble-0.7.0}/web/src/galaxyEffects.js +8 -4
- {codemble-0.6.4 → codemble-0.7.0}/web/src/graphData.js +86 -2
- {codemble-0.6.4 → codemble-0.7.0}/web/src/learnerProjection.js +32 -12
- codemble-0.7.0/web/src/mapViewport.js +86 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/styles.css +90 -7
- {codemble-0.6.4 → codemble-0.7.0}/web/src/tokens.css +27 -0
- codemble-0.6.4/codemble/web_dist/assets/index-BBC-ag63.css +0 -1
- codemble-0.6.4/docs-site/public/shots/easy-mode.png +0 -0
- codemble-0.6.4/docs-site/public/shots/galaxy-lit.png +0 -0
- codemble-0.6.4/docs-site/public/shots/galaxy.png +0 -0
- codemble-0.6.4/docs-site/public/shots/map-architecture.png +0 -0
- codemble-0.6.4/docs-site/public/shots/map-workflow.png +0 -0
- codemble-0.6.4/docs-site/public/shots/study-panel.png +0 -0
- codemble-0.6.4/docs-site/public/shots/system.png +0 -0
- codemble-0.6.4/web/scripts/check_map_viewport.mjs +0 -38
- codemble-0.6.4/web/src/mapViewport.js +0 -45
- {codemble-0.6.4 → codemble-0.7.0}/.env.example +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.gitattributes +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/ISSUE_TEMPLATE/early_tester.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/dependabot.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/workflows/ci.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/workflows/pages.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/.github/workflows/publish-pypi.yml +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/AGENTS.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/CODE_OF_CONDUCT.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/CONTEXT.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/CONTRIBUTING.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/LICENSE +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/NOTICE +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/SECURITY.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/TESTING.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/assets/demo.gif +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/adapters/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/adapters/base.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/adapters/discovery.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/adapters/parse_progress.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/adapters/project.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/adapters/python_ast.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/adapters/typescript_tree_sitter.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/checks/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/checks/service.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/cli.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/graph/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/graph/finalize.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/graph/layout.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/graph/mapview.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/lens/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/lens/javascript_typescript.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/lens/python.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/llm/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/llm/local_status.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/llm/providers.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/llm/structural.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/llm/study.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/paths.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/progress/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/progress/store.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/server/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/server/app.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/server/parse_job.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/server/project_activation.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/server/project_selection.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/server/runtime.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/shippori-mincho-latin-500-normal-C-QwvIb3.woff +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/shippori-mincho-latin-500-normal-XI1O8euf.woff2 +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/shippori-mincho-latin-700-normal-CkoCYOiI.woff +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/shippori-mincho-latin-700-normal-DHcmzUO5.woff2 +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/zen-kaku-gothic-new-latin-400-normal-BEdayliK.woff2 +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/codemble/web_dist/assets/zen-kaku-gothic-new-latin-400-normal-CPSmNJAU.woff +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/adr/README.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/2026-07-19-audience-modes-and-local-narration-design.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/2026-07-19-audience-modes-backend-plan.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/2026-07-19-audience-modes-frontend-plan.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/2026-07-19-install-ux-folder-picker-design.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/2026-07-19-install-ux-folder-picker-plan.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/2026-07-20-oss-inspired-map-and-constellations.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/README.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/plans/phase-1.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/checklist.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.1.0.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.2.0.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.4.0.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.5.0.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.5.1.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.5.2.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.5.3.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.6.1.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.6.2.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.6.3.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/releases/v0.6.4.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/research/2026-07-20-opensource-graph-architecture-inspiration.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/research/README.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/superpowers/plans/2026-07-19-galaxy-ux-phase-a.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/superpowers/plans/2026-07-19-galaxy-ux-phase-b.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/superpowers/plans/2026-07-19-galaxy-ux-phase-c.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/superpowers/plans/2026-07-19-galaxy-ux-shared-contract.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/superpowers/specs/2026-07-19-galaxy-ux-overhaul-design.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs/superpowers/specs/2026-07-21-navigation-design-clarity-design.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/.gitignore +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/astro.config.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/design.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/favicon-16.png +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/favicon-32.png +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/icon-180.png +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/icon-192.png +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/icon-512.png +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/icon.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/icons/asterism.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/icons/install.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/mark-animated.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/mark.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/hero-chart.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/hero-field.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/hero-gold.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/kasumi-rule.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/plate-galaxy.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/plate-study.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/plate-system.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/brand/plates/seal.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/favicon.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/public/shots/loading.png +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/scripts/build-plates.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/assets/codemble-mark-dark.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/assets/codemble-mark-light.svg +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/components/Search.astro +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/components/Tatebanko.astro +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/architecture.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/build-from-source.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/contributing.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/correctness.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/early-testing.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/installation.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/introduction.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m1-parser.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m10-polyglot-release.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m12-galaxy-look.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m13-scale.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m2-galaxy.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m3-study.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m4-lens.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m5-checks.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m6-release.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m8-typescript.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/progress/m9-typescript-lens.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/roadmap.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content/docs/star-chart.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/content.config.ts +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/pages/index.astro +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/styles/custom.css +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/styles/landing.css +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/docs-site/src/styles/tokens.css +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/scripts/dev.sh +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/scripts/record_demo.sh +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/conftest.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/check_suites.json +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/concepts_sample.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/impact/alpha.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/impact/beta.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/impact/gamma.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/impact/helpers.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/impact/noisy.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/python_worker.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/src/broken.ts +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/src/legacy.js +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/src/local.js +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/src/main.ts +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/src/reexport.ts +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/src/util.ts +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/polyglot/src/widget.tsx +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/repeated_calls.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/.gitignore +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/ambiguous.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/api.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/app.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/broken.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/cli.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/pkg/__init__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/pkg/helpers.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/pkg/service.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/pkg/util.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/runner/__main__.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/fixtures/sampleproj/shared.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_checks.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_dependency_compatibility.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_graph_finalization.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_mapview.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_parse_job.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_parse_progress.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_progress.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_project_activation.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_project_parser.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_project_selection.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_providers.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_python_ast.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_server.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_smoke.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_structural.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_study.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/tests/test_typescript_tree_sitter.py +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/README.md +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/index.html +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/benchmark_learner_projection.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_focus_handoffs.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_learner_session.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_mode_gate_portal.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_name_atlas.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_orbit_pointer_guard.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/check_project_mapping.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/scripts/record_demo.mjs +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/GuidanceLayer.jsx +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/ModeControl.jsx +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/galaxyMaterials.js +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/learnerSession.js +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/main.jsx +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/nameAtlas.js +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/orbitPointerGuard.js +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/src/projectMapping.js +0 -0
- {codemble-0.6.4 → codemble-0.7.0}/web/vite.config.js +0 -0
|
@@ -5,6 +5,74 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · Versioning:
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.7.0] - 2026-07-22
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Constellations you can tell apart.** Every parser-proven import community
|
|
12
|
+
now wears one of eight traditional Japanese colour families (seiji, fuji,
|
|
13
|
+
koke, asagi, toki, umenezumi, wakatake, kikyō), assigned deterministically
|
|
14
|
+
from the community id — same code, same sky, same colours. Galaxy stars keep
|
|
15
|
+
centrality as lightness inside the family hue, planets inherit their
|
|
16
|
+
system's family, and Architecture boxes tint toward it. Every hue is
|
|
17
|
+
lightness-capped beneath the unlit ceiling and the amber band is excluded
|
|
18
|
+
from the wheel, so a lit star stays the brightest object in the sky and
|
|
19
|
+
nothing unproven can read as understood. The Key gains a colour-family row.
|
|
20
|
+
- **A counted shelf for unreachable modules.** On the Architecture map, modules
|
|
21
|
+
with no import route from Home fold away behind their exact count with a
|
|
22
|
+
**Show them** control (auto-folded above eight). On this repository that
|
|
23
|
+
turns a 1:3.2-tall drawing dominated by 80 test fixtures into a readable
|
|
24
|
+
connected core — with nothing hidden from the count and every module still
|
|
25
|
+
one click away.
|
|
26
|
+
- **Class rings.** A structure the parser knows is a class wears a thin ring in
|
|
27
|
+
the system view — parser fact, not decoration.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- **Connections are visible.** Routes on both layers used to borrow the border
|
|
31
|
+
hairline at ~1.6:1 contrast — and the galaxy multiplied it to 32% opacity —
|
|
32
|
+
so the relationships the app teaches were its least visible marks. Both
|
|
33
|
+
layers now draw a dedicated route ink (4.0:1), arrowheads included, and a
|
|
34
|
+
*possible* relationship stays deliberately the more visible claim, dashed on
|
|
35
|
+
the map as before.
|
|
36
|
+
- **The map's language stripe actually renders.** It set its colour through an
|
|
37
|
+
SVG presentation attribute, where `var()` is invalid, and silently fell back
|
|
38
|
+
to the box navy — the Key advertised Python/JS/TS colours the map never
|
|
39
|
+
drew. The stripe now paints through a style property.
|
|
40
|
+
- **The nebula dawn no longer corrupts the lit system's name plate.** The
|
|
41
|
+
animation snapshotted one scale axis and restored all three from it, so the
|
|
42
|
+
celebration squashed the plate into a blurry square until a level change
|
|
43
|
+
rebuilt it. It now restores the full vector — the one bold moment ends
|
|
44
|
+
crisp.
|
|
45
|
+
- **Escape steps back from anywhere on the Map.** The handler listened only
|
|
46
|
+
inside the stage, and the most common Easy path leaves focus on the page
|
|
47
|
+
body, so the documented recovery silently did nothing; the study exit also
|
|
48
|
+
said "Back to system" on the Diagram. Escape is now a window-level handler
|
|
49
|
+
(with dialog and typing guards) and the exit says "Back to the module".
|
|
50
|
+
- **A resize cannot strand you in empty space.** Restored map viewports are
|
|
51
|
+
replayed only while they still show your focus; shrinking a desktop window
|
|
52
|
+
to phone width used to keep the desktop scroll and show empty layer bands.
|
|
53
|
+
Both the restore path and live resizes now re-centre on the parser-backed
|
|
54
|
+
target.
|
|
55
|
+
- **Fit lands on something readable.** On tall drawings a true fit reached 7% —
|
|
56
|
+
a thumbnail with no names — so Fit now fits the width and lets the height
|
|
57
|
+
scroll when the whole shape would be unreadable, and keeps whole-shape fit
|
|
58
|
+
otherwise. The open Key also no longer covers the zoom controls, and the
|
|
59
|
+
region panel's actions no longer clip at desktop heights.
|
|
60
|
+
- **Easy mode speaks its own register end to end.** "parser rank 0" became
|
|
61
|
+
"candidate 1", the checks header reads "Quiz · answers come from your code,
|
|
62
|
+
not AI", the lit celebration explains what the source hash means instead of
|
|
63
|
+
naming it, study metadata reads "What it is / Length / Evidence", and the
|
|
64
|
+
chrome attributes fixture errors to their shared directory ("2 could not be
|
|
65
|
+
read · all under tests/"). Expert keeps every precise term.
|
|
66
|
+
- **Guidance stops sending beginners into tests first.** The nearest-unlit
|
|
67
|
+
ranking now charges test-scoped paths a bounded +1.5-hop penalty — a real
|
|
68
|
+
source module one hop farther wins the tie, an all-tests project is still
|
|
69
|
+
guided, and the displayed hop count stays the real one. On this repository
|
|
70
|
+
the second stop changed from `tests.test_python_ast` to
|
|
71
|
+
`codemble.adapters.project`.
|
|
72
|
+
- **The study panel's connection diagram names its dots.** Six anonymous dots
|
|
73
|
+
used to decorate the labelled list below; each now carries its structure's
|
|
74
|
+
own (tail-truncated) name.
|
|
75
|
+
|
|
8
76
|
## [0.6.4] - 2026-07-21
|
|
9
77
|
|
|
10
78
|
### Fixed
|
|
@@ -167,8 +167,36 @@ Polish, then the coordinated launch (Show HN / X; lit-galaxy GIF as hero).
|
|
|
167
167
|
|
|
168
168
|
## Current State **[AGENT-MAINTAINED]**
|
|
169
169
|
|
|
170
|
-
**Current milestone: Phase 1 tester evidence** · Last updated: 2026-07-
|
|
171
|
-
Session note: v0.
|
|
170
|
+
**Current milestone: Phase 1 tester evidence** · Last updated: 2026-07-22 ·
|
|
171
|
+
Session note: v0.7.0 implements all fourteen findings of a fresh evidence-based
|
|
172
|
+
user-flow audit of the served v0.6.4 build (run as a first-run Easy learner on
|
|
173
|
+
this repository at 1280/375/320, with before/after screenshots) plus the
|
|
174
|
+
approved D1 design direction: parser-proven import communities now wear eight
|
|
175
|
+
deterministic traditional Japanese colour families (galaxy stars, planets, and
|
|
176
|
+
Architecture-box tints), lightness-capped beneath the unlit ceiling with the
|
|
177
|
+
amber band excluded so understanding stays the brightest claim in the sky.
|
|
178
|
+
Routes on both layers moved from the 1.6:1 border hairline to a dedicated
|
|
179
|
+
4.0:1 route ink (possible relationships stay dashed and deliberately more
|
|
180
|
+
visible); the Architecture map folds modules with no route from Home into a
|
|
181
|
+
counted shelf behind a Show-them control; Fit fits width when whole-shape fit
|
|
182
|
+
would be unreadable; and Easy guidance charges test-scoped paths a bounded
|
|
183
|
+
+1.5-hop penalty so a learner's own code outranks its test suite at equal
|
|
184
|
+
distance. Mechanical fixes: the nebula dawn restores sprite scale as a vector
|
|
185
|
+
(it squashed the lit system's name plate square), the map's language stripe
|
|
186
|
+
paints via a style property (an SVG fill attribute cannot resolve var() and
|
|
187
|
+
silently rendered navy), Escape on the Map is a window-level handler that
|
|
188
|
+
works with focus on body, stale map viewports re-centre on the focus point on
|
|
189
|
+
restore and on live resizes, the open Key stacks below the zoom controls, the
|
|
190
|
+
region panel's actions no longer clip, study connection dots carry names, and
|
|
191
|
+
the Easy register replaces parser vocabulary end to end ("candidate 1",
|
|
192
|
+
"Quiz · answers come from your code, not AI", "What it is / Length /
|
|
193
|
+
Evidence", fixture errors attributed "all under tests/"). Parser, graph,
|
|
194
|
+
checks, progress, provider, and HTTP contracts are byte-unchanged; the suite
|
|
195
|
+
grew a nebula-dawn scale-restore check plus community-colour, viewport, and
|
|
196
|
+
guidance-penalty contract assertions (241 pytest, ruff clean, 12 frontend
|
|
197
|
+
checks, rebuilt web_dist). Full planet realism explicitly remains a Phase 3
|
|
198
|
+
decision under the game-art Non-Goal. The milestone does not advance: issue
|
|
199
|
+
#13 still requires human tester evidence. Previously: v0.6.4 closes all twenty findings of a fresh end-to-end user-flow
|
|
172
200
|
audit run against the served build on three real projects (Codemble, Golavo,
|
|
173
201
|
FolioOrb) at 1280/375/320 px with a keyboard pass. The headline fix is a
|
|
174
202
|
Correctness Contract one: a missed check printed the parser answer and its
|
|
@@ -576,6 +604,10 @@ shows lower repeated-commit work without changing derived values.
|
|
|
576
604
|
| 2026-07-21 | The audience answer is stored per learner as well as per project (`learner.json` beside progress); a fresh bind seeds from it and skips the gate, while the header toggle still overrides one project | The gate asks who the *learner* is, but the answer lived only under the project key, so every new project re-asked an expert whether they were new to coding. The file carries no `schema_version`, which is what keeps recents from reading it as a project |
|
|
577
605
|
| 2026-07-21 | Home calibration is a native modal sized to the viewport, grouped by the candidates' real top-level scope, with the candidate count stated and "Explore without Home" outside the scrolling list | It is the second step of the same required sequence as the audience gate and deserves the same shape. As a card capped to a share of the stage it showed one candidate of eleven with the escape hatch thousands of pixels below the fold, and a flat list put `tests/fixtures/...` beside the learner's entrypoint with nothing to tell them apart. Scope and rank are parser facts already in the payload; the leading group always opens so a project whose best candidate is rank 1 is never met by an all-collapsed list |
|
|
578
606
|
| 2026-07-21 | Galaxy name plates use the same path-tail rule as map schema 3's `short_label`; the shared module index and the command palette use it too, and the palette's unfiltered order is Home → lit → centrality | Basenames collide hard in a Python project — every package carries an `__init__.py` — so identical plates named different modules, which is precisely the wrong a learner cannot detect, and the palette opened on a screen of indistinguishable rows |
|
|
607
|
+
| 2026-07-22 | **Hue means import community.** Each parser-proven community takes one of eight traditional Japanese colour tokens (`--cm-com-0..7`) by `community id mod 8`; stars, planets and Architecture boxes all read the same arithmetic in `graphData.communityShade`. This amends the M2 encoding row: colour was "language", which is now the nebula/stripe channel only | Approved by UD. The sky had one hue for 109 systems, so nothing could be tracked without reading every plate — and the graph had proven communities since schema 5 that nothing rendered. Guardrails that keep the Correctness Contract intact: every token is lightness-tuned to `--cm-ink-2`'s luminance (0.389) so a lit star at 0.598 always wins, the kohaku band (~40°) is excluded so no community can read as "understood", a missing community id falls back to the old neutral ramp rather than borrowing a hue, and the mapping is pure arithmetic on graph truth so the same code always yields the same sky |
|
|
608
|
+
| 2026-07-22 | Routes get their own ink (`--cm-route`, 4.0:1) on both layers, and it sits deliberately BELOW `--cm-route-possible` (6.4:1) | Edges borrowed `--cm-hairline`, the ink of box borders and panel rules, measuring 1.57:1 on the canvas ground — the relationships the product exists to teach were its least visible marks, which is the literal complaint that opened the audit. Ordering the two inks this way keeps the 2026-07-19 rule that an unproven claim must be the more visible one |
|
|
609
|
+
| 2026-07-22 | Architecture-map modules with no import route from Home fold into a counted shelf behind an explicit control (auto-folded above 8), and Fit fits WIDTH when a whole-shape fit would land below 35% | On this repository 80 of 109 boxes are test fixtures and scripts, making the drawing 1:3.2 tall so the connected core fit at an unreadable 7%. Folding is view state, never truth: the note carries the exact count, **Show them** draws every one, and both surfaces still reach every module. Distinct from progressive reveal, which stays galaxy-only |
|
|
610
|
+
| 2026-07-22 | Easy guidance charges test-scoped paths a bounded +1.5-hop penalty; the displayed hop count stays the real one | A CLI's nearest neighbour is usually its own test suite, so pure hop-distance sent a brand-new learner from Home straight into `tests/`. The penalty is bounded so a non-test module one hop farther wins while a distant one does not, and an all-tests project is still guided. Both inputs stay parser truth (the BFS count and the recorded file path); only the ranking key is biased, never the reported fact |
|
|
579
611
|
|
|
580
612
|
## Non-Goals — do NOT build (point here when asked)
|
|
581
613
|
|
|
@@ -588,7 +620,11 @@ shows lower repeated-commit work without changing derived values.
|
|
|
588
620
|
- ❌ Accounts, cloud hosting, multi-user; share link waits for Phase 3
|
|
589
621
|
- ❌ Extra quest types before Phase 3
|
|
590
622
|
- ❌ GitHub-URL ingestion in v1
|
|
591
|
-
- ❌ Elaborate game art before the loop teaches well
|
|
623
|
+
- ❌ Elaborate game art before the loop teaches well — **still holds**: the
|
|
624
|
+
2026-07-22 visual pass shipped only encodings that carry parser facts
|
|
625
|
+
(community hue, class rings). Procedural planet surfaces, atmospheres and
|
|
626
|
+
rotation ("almost real planets, like a game") remain OUT until Phase 1
|
|
627
|
+
tester evidence lands, and would need their own Decision Log entry
|
|
592
628
|
|
|
593
629
|
## Gotchas
|
|
594
630
|
|
|
@@ -616,6 +652,11 @@ shows lower repeated-commit work without changing derived values.
|
|
|
616
652
|
- **Canvas colours must be plain values, never `color-mix()`** — WebGL receives
|
|
617
653
|
a custom property's authored text, so a computed token renders black. Add new
|
|
618
654
|
canvas tokens through `readPalette`, which resolves them.
|
|
655
|
+
- **`var()` never works in an SVG presentation attribute** — `fill="var(--x)"`
|
|
656
|
+
is invalid and falls back to the cascade *silently*, which is how the map's
|
|
657
|
+
language stripe rendered box-navy for a release while the legend advertised
|
|
658
|
+
three colours. Use `style={{ fill: … }}` (a CSS property) for any
|
|
659
|
+
token-driven SVG paint.
|
|
619
660
|
|
|
620
661
|
## Edge cases & limits
|
|
621
662
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codemble
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0
|
|
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
|
|
@@ -66,7 +66,7 @@ Description-Content-Type: text/markdown
|
|
|
66
66
|
</p>
|
|
67
67
|
|
|
68
68
|
<p align="center">
|
|
69
|
-
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/galaxy.png" alt="Codemble at galaxy level:
|
|
69
|
+
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/galaxy.png" alt="Codemble at galaxy level: 109 star systems parsed from real source, 23 charted and named by file path, constellations wearing their import-community colour families in traditional Japanese hues around an amber lit Home, with language focus buttons, a Key disclosure, and a notice that two files could not be read — all under tests/" width="960">
|
|
70
70
|
</p>
|
|
71
71
|
|
|
72
72
|
<p align="center"><sub>
|
|
@@ -148,7 +148,7 @@ of your own code becomes a sky you understand.
|
|
|
148
148
|
## What it looks like
|
|
149
149
|
|
|
150
150
|
<p align="center">
|
|
151
|
-
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/system.png" alt="A single star system, codemble.server.app,
|
|
151
|
+
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/system.png" alt="A single star system, codemble.server.app, its functions and classes as planets in the system's own colour family, in call-depth orbits with the call edges between them" width="900">
|
|
152
152
|
</p>
|
|
153
153
|
|
|
154
154
|
<p align="center"><sub>
|
|
@@ -156,7 +156,7 @@ of your own code becomes a sky you understand.
|
|
|
156
156
|
</sub></p>
|
|
157
157
|
|
|
158
158
|
<p align="center">
|
|
159
|
-
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/study-panel.png" alt="The study panel for create_app, showing kind, span,
|
|
159
|
+
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/study-panel.png" alt="The study panel for create_app, showing kind, span, 53 callers, parser-proven resolution, and a structural summary marked no model needed" width="900">
|
|
160
160
|
</p>
|
|
161
161
|
|
|
162
162
|
<p align="center"><sub>
|
|
@@ -188,9 +188,17 @@ computed in the graph layer and served as data.
|
|
|
188
188
|
| **Map · Workflow** | The call tree from your entrypoint, depth by depth | Seeing what runs first |
|
|
189
189
|
|
|
190
190
|
The Map is plain SVG, so it still works on a machine that cannot draw WebGL.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
Click a box and it offers both halves of a step — **Read the source** opens that
|
|
192
|
+
module's real source, lens notes and relationships without leaving the layer,
|
|
193
|
+
and **Prove understanding** starts its checks. Escape steps back a level, as in
|
|
194
|
+
the Galaxy. On a compact screen the Map opens at readable 100% around Home or
|
|
195
|
+
the selected target; **Fit** is an explicit whole-diagram overview. Zoom and pan
|
|
196
|
+
survive Map refreshes and layer switches instead of snapping back after a passed
|
|
197
|
+
check.
|
|
198
|
+
|
|
199
|
+
In Easy mode these surfaces carry plainer labels — the layer is **Diagram** and
|
|
200
|
+
the tabs are **How it fits together** and **What runs first**. Same views, same
|
|
201
|
+
evidence; only the wording follows the audience.
|
|
194
202
|
|
|
195
203
|
## Open a structure, read what the parser knows first
|
|
196
204
|
|
|
@@ -207,10 +215,14 @@ Sections other than the narration never involve a model at all.
|
|
|
207
215
|
A header toggle changes how Codemble talks to you and how much it puts on
|
|
208
216
|
screen: plain language, larger type, the Map by default, and a hint chip naming
|
|
209
217
|
the nearest unlit region to Home — counted in import hops over the graph, not
|
|
210
|
-
chosen by a model
|
|
211
|
-
|
|
212
|
-
than an enabled no-op. It
|
|
213
|
-
|
|
218
|
+
chosen by a model, and broken by parser-proven structure count when several sit
|
|
219
|
+
the same distance away. The hint opens that system, offers to read its source,
|
|
220
|
+
then becomes an instruction rather than an enabled no-op. It waits until the
|
|
221
|
+
first-run choices are done before it appears at all, and it never changes graph
|
|
222
|
+
truth, coordinates, progress, or how a check is scored.
|
|
223
|
+
|
|
224
|
+
Codemble asks which audience you are **once** — the question is about you, not
|
|
225
|
+
about the project — and each project still keeps its own mode.
|
|
214
226
|
|
|
215
227
|
You can also switch project or change Home without leaving the app.
|
|
216
228
|
|
|
@@ -224,6 +236,7 @@ You can also switch project or change Home without leaving the app.
|
|
|
224
236
|
| A route or edge | An import or call; approximate calls are labeled **possible** |
|
|
225
237
|
| Size | Lines of code |
|
|
226
238
|
| Brightness and glow | How many **distinct** structures call it |
|
|
239
|
+
| Colour family | Import community — modules that import each other share one of eight traditional Japanese hues |
|
|
227
240
|
| Nebula tint | Language, at galaxy level |
|
|
228
241
|
| Orbit ring | Call depth — the inner ring runs first |
|
|
229
242
|
| Drifting particles | A call the parser proved; a possible call stays still |
|
|
@@ -231,9 +244,13 @@ You can also switch project or change Home without leaving the app.
|
|
|
231
244
|
|
|
232
245
|
Understanding owns the top of the brightness range: the unlit ramp stops below
|
|
233
246
|
the amber a lit star uses, so a busy module you have not proven can never
|
|
234
|
-
outshine one you have
|
|
235
|
-
amber
|
|
236
|
-
a
|
|
247
|
+
outshine one you have — every community hue is lightness-capped beneath it, and
|
|
248
|
+
the amber band is excluded from the community wheel entirely. Pass a region's
|
|
249
|
+
checks and that system plays a short amber "nebula dawn" — after the light is
|
|
250
|
+
already saved, so the animation marks a fact rather than delivering one. On the
|
|
251
|
+
flat Map, modules with no import route from Home fold into a counted shelf
|
|
252
|
+
(**Show them** draws every one), so test scaffolding never buries the connected
|
|
253
|
+
core it cannot reach.
|
|
237
254
|
|
|
238
255
|
Python-only, JavaScript-only, TypeScript-only, and mixed projects share the same
|
|
239
256
|
graph contract. Language focus changes only what you are looking at; it never
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
</p>
|
|
35
35
|
|
|
36
36
|
<p align="center">
|
|
37
|
-
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/galaxy.png" alt="Codemble at galaxy level:
|
|
37
|
+
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/galaxy.png" alt="Codemble at galaxy level: 109 star systems parsed from real source, 23 charted and named by file path, constellations wearing their import-community colour families in traditional Japanese hues around an amber lit Home, with language focus buttons, a Key disclosure, and a notice that two files could not be read — all under tests/" width="960">
|
|
38
38
|
</p>
|
|
39
39
|
|
|
40
40
|
<p align="center"><sub>
|
|
@@ -116,7 +116,7 @@ of your own code becomes a sky you understand.
|
|
|
116
116
|
## What it looks like
|
|
117
117
|
|
|
118
118
|
<p align="center">
|
|
119
|
-
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/system.png" alt="A single star system, codemble.server.app,
|
|
119
|
+
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/system.png" alt="A single star system, codemble.server.app, its functions and classes as planets in the system's own colour family, in call-depth orbits with the call edges between them" width="900">
|
|
120
120
|
</p>
|
|
121
121
|
|
|
122
122
|
<p align="center"><sub>
|
|
@@ -124,7 +124,7 @@ of your own code becomes a sky you understand.
|
|
|
124
124
|
</sub></p>
|
|
125
125
|
|
|
126
126
|
<p align="center">
|
|
127
|
-
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/study-panel.png" alt="The study panel for create_app, showing kind, span,
|
|
127
|
+
<img src="https://github.com/udhawan97/Codemble/raw/main/docs-site/public/shots/study-panel.png" alt="The study panel for create_app, showing kind, span, 53 callers, parser-proven resolution, and a structural summary marked no model needed" width="900">
|
|
128
128
|
</p>
|
|
129
129
|
|
|
130
130
|
<p align="center"><sub>
|
|
@@ -156,9 +156,17 @@ computed in the graph layer and served as data.
|
|
|
156
156
|
| **Map · Workflow** | The call tree from your entrypoint, depth by depth | Seeing what runs first |
|
|
157
157
|
|
|
158
158
|
The Map is plain SVG, so it still works on a machine that cannot draw WebGL.
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
159
|
+
Click a box and it offers both halves of a step — **Read the source** opens that
|
|
160
|
+
module's real source, lens notes and relationships without leaving the layer,
|
|
161
|
+
and **Prove understanding** starts its checks. Escape steps back a level, as in
|
|
162
|
+
the Galaxy. On a compact screen the Map opens at readable 100% around Home or
|
|
163
|
+
the selected target; **Fit** is an explicit whole-diagram overview. Zoom and pan
|
|
164
|
+
survive Map refreshes and layer switches instead of snapping back after a passed
|
|
165
|
+
check.
|
|
166
|
+
|
|
167
|
+
In Easy mode these surfaces carry plainer labels — the layer is **Diagram** and
|
|
168
|
+
the tabs are **How it fits together** and **What runs first**. Same views, same
|
|
169
|
+
evidence; only the wording follows the audience.
|
|
162
170
|
|
|
163
171
|
## Open a structure, read what the parser knows first
|
|
164
172
|
|
|
@@ -175,10 +183,14 @@ Sections other than the narration never involve a model at all.
|
|
|
175
183
|
A header toggle changes how Codemble talks to you and how much it puts on
|
|
176
184
|
screen: plain language, larger type, the Map by default, and a hint chip naming
|
|
177
185
|
the nearest unlit region to Home — counted in import hops over the graph, not
|
|
178
|
-
chosen by a model
|
|
179
|
-
|
|
180
|
-
than an enabled no-op. It
|
|
181
|
-
|
|
186
|
+
chosen by a model, and broken by parser-proven structure count when several sit
|
|
187
|
+
the same distance away. The hint opens that system, offers to read its source,
|
|
188
|
+
then becomes an instruction rather than an enabled no-op. It waits until the
|
|
189
|
+
first-run choices are done before it appears at all, and it never changes graph
|
|
190
|
+
truth, coordinates, progress, or how a check is scored.
|
|
191
|
+
|
|
192
|
+
Codemble asks which audience you are **once** — the question is about you, not
|
|
193
|
+
about the project — and each project still keeps its own mode.
|
|
182
194
|
|
|
183
195
|
You can also switch project or change Home without leaving the app.
|
|
184
196
|
|
|
@@ -192,6 +204,7 @@ You can also switch project or change Home without leaving the app.
|
|
|
192
204
|
| A route or edge | An import or call; approximate calls are labeled **possible** |
|
|
193
205
|
| Size | Lines of code |
|
|
194
206
|
| Brightness and glow | How many **distinct** structures call it |
|
|
207
|
+
| Colour family | Import community — modules that import each other share one of eight traditional Japanese hues |
|
|
195
208
|
| Nebula tint | Language, at galaxy level |
|
|
196
209
|
| Orbit ring | Call depth — the inner ring runs first |
|
|
197
210
|
| Drifting particles | A call the parser proved; a possible call stays still |
|
|
@@ -199,9 +212,13 @@ You can also switch project or change Home without leaving the app.
|
|
|
199
212
|
|
|
200
213
|
Understanding owns the top of the brightness range: the unlit ramp stops below
|
|
201
214
|
the amber a lit star uses, so a busy module you have not proven can never
|
|
202
|
-
outshine one you have
|
|
203
|
-
amber
|
|
204
|
-
a
|
|
215
|
+
outshine one you have — every community hue is lightness-capped beneath it, and
|
|
216
|
+
the amber band is excluded from the community wheel entirely. Pass a region's
|
|
217
|
+
checks and that system plays a short amber "nebula dawn" — after the light is
|
|
218
|
+
already saved, so the animation marks a fact rather than delivering one. On the
|
|
219
|
+
flat Map, modules with no import route from Home fold into a counted shelf
|
|
220
|
+
(**Show them** draws every one), so test scaffolding never buries the connected
|
|
221
|
+
core it cannot reach.
|
|
205
222
|
|
|
206
223
|
Python-only, JavaScript-only, TypeScript-only, and mixed projects share the same
|
|
207
224
|
graph contract. Language focus changes only what you are looking at; it never
|