Hypercorn spawns worker processes via multiprocessing spawn, which
starts a fresh Python interpreter without the parent's sys.path
modifications from path_setup.py. Setting PYTHONPATH=/app ensures
the worker can import app.py and all project packages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Swap shared_lib submodule → shared (tracking decoupling branch)
- Dockerfile: shared_lib/ → shared/, remove bp symlink hack
- entrypoint.sh: cd shared for alembic upgrade head
- CI: trigger on decoupling branch, use dynamic ref_name
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The editor.js/editor.css were gitignored and never built during docker
build, causing 404s on the edit page. Add a Node multi-stage build step
to compile them. Also replace "nowt" placeholder in admin templates with
the actual main panel include.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract blog-specific code from the coop monolith into a standalone
repository. Includes auth, blog, post, admin, menu_items, snippets
blueprints, associated templates, Dockerfile (APP_MODULE=app:app),
entrypoint, and Gitea CI workflow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>