Build from source
git clone https://github.com/udhawan97/Codemble.gitcd Codemblepython -m venv .venv && source .venv/bin/activatepip install -e ".[dev]"
pytest && ruff check . # the CI gatescodemble --version
cd webnpm installnpm run build # refresh codemble/web_dist packaged assetsnpm run check # production galaxy build (CI gate)cd ..
codemble ./some-projectDocs site:
cd docs-sitenpm installnpm run brand:build # regenerate committed SVG/PNG brand assetsnpm run check # astro check (CI gate)npm run buildPreview separately because the development server stays open:
cd docs-sitenpm run dev # http://localhost:4321For live frontend work, run ./scripts/dev.sh ./some-project from the
repository root. Vite serves the UI at http://127.0.0.1:5173 and proxies its
API calls to the local Codemble server.
Build the Python wheel and verify the packaged SPA without Node at runtime:
python -m pip wheel . --no-deps --wheel-dir /tmp/codemble-wheelpython -m venv /tmp/codemble-install/tmp/codemble-install/bin/pip install /tmp/codemble-wheel/codemble-*.whlcd /tmp/tmp/codemble-install/bin/codemble --versionThe committed product screenshots are reproducible with Chrome, Python, and the web dependencies installed:
(cd web && npm run capture:docs)The command copies Git-tracked and non-ignored current source into a disposable
Codemble snapshot, then starts its own server on a random loopback port with a
unique temporary CODEMBLE_DATA_DIR. Ignored build output and clone/worktree
names therefore cannot change the capture. Provider keys and provider settings
are removed from that child process, the progress reset must succeed before
capture continues, and the server, source snapshot, and temporary data are
removed afterward. It refuses CODEMBLE_CAPTURE_URL so it cannot be pointed at
a normal Codemble session, and the capture route fixes the displayed project
label to Codemble.
Set CODEMBLE_CAPTURE_PYTHON only when the desired Python executable is not
named python.