Release v0.1.1: fix collectstatic crash-loop; ship /api/skill

Fixes the deploy blocker found deploying v0.1.0 to cloud-vm-1: the vendored
gridjs.umd.js ended with a //# sourceMappingURL=gridjs.umd.js.map trailer,
but that .map isn't in the repo. The strict CompressedManifestStaticFilesStorage
backend follows the reference and raises MissingFileError, aborting the
entrypoint's collectstatic so the container never served. Stripped the
debug-only trailer (no runtime effect); collectstatic now succeeds from a
pristine checkout (169 copied, 481 post-processed).

Also rolls up this release's already-committed work: GET /api/skill and the
location-agnostic posting-skill rewrite.

- Bump __version__ to 0.1.1.
- Runbook: note that a post-build crash-loop is most likely a collectstatic
  MissingFileError (check docker logs), and how to clear on-server tracked
  drift before checking out a tag.
- CHANGELOG: 0.1.1 entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
peter 2026-09-03 16:13:19 +01:00
parent fb69261218
commit 5c46f2aa67
4 changed files with 27 additions and 3 deletions

View file

@ -6,6 +6,16 @@ the git tags (`vX.Y.Z`) and `daybook_project.__version__`.
## [Unreleased] ## [Unreleased]
_Nothing yet._
## [0.1.1] — 2026-09-03
### Fixed
- Deployment crash-loop: the vendored `gridjs.umd.js` referenced a
`gridjs.umd.js.map` sourcemap that isn't in the repo, so `collectstatic`
(strict manifest storage) failed on container start and v0.1.0 never came
up. Removed the dangling sourcemap trailer (debug-only, no runtime effect).
### Added ### Added
- `GET /api/skill` serves the bundled agent-posting skill as Markdown (or - `GET /api/skill` serves the bundled agent-posting skill as Markdown (or
`?format=json`), with `DAYBOOK_URL` pre-filled to the instance's own `?format=json`), with `DAYBOOK_URL` pre-filled to the instance's own
@ -53,5 +63,6 @@ First tagged release.
- Dockerised (Gunicorn + whitenoise), SQLite, `git`-based deploy with a - Dockerised (Gunicorn + whitenoise), SQLite, `git`-based deploy with a
runbook (`deploy/cloud_agent_deploy.md`) and health check. runbook (`deploy/cloud_agent_deploy.md`) and health check.
[Unreleased]: https://git.cygnus.systems/peter/daybook/compare/v0.1.0...HEAD [Unreleased]: https://git.cygnus.systems/peter/daybook/compare/v0.1.1...HEAD
[0.1.1]: https://git.cygnus.systems/peter/daybook/compare/v0.1.0...v0.1.1
[0.1.0]: https://git.cygnus.systems/peter/daybook/releases/tag/v0.1.0 [0.1.0]: https://git.cygnus.systems/peter/daybook/releases/tag/v0.1.0

View file

@ -1,4 +1,4 @@
# Single source of truth for the app version. Bump this, commit, then tag the # Single source of truth for the app version. Bump this, commit, then tag the
# commit `vX.Y.Z` and deploy. Surfaced on Settings -> About and in # commit `vX.Y.Z` and deploy. Surfaced on Settings -> About and in
# GET /api/capabilities ("version"). # GET /api/capabilities ("version").
__version__ = "0.1.0" __version__ = "0.1.1"

View file

@ -234,6 +234,20 @@ the code checkout.
or `deploy/data` by default) are untracked, so `git pull` never touches them — or `deploy/data` by default) are untracked, so `git pull` never touches them —
no need to back them up before a routine redeploy. no need to back them up before a routine redeploy.
**If the container crash-loops right after a build** (`docker compose ps`
shows `restarting`, health never goes green), the most likely cause is the
entrypoint's `collectstatic` step failing — check `docker logs daybook`
before assuming an env/network problem. A `whitenoise ... MissingFileError`
there means a static asset references a file that isn't present (this is what
bit v0.1.0). No data or schema impact; fix the asset in the repo, tag, and
redeploy.
**If `git checkout <tag>` refuses because of local working-tree changes** to
tracked files (e.g. a previous on-server hotfix), reset those tracked files
first — `git checkout -- <file>` for a specific one, or `git stash` /
`git reset --hard` to clear all tracked drift. This never touches `deploy/.env`
or the data directory, which are untracked and therefore safe.
## 8. Hardening For Internet-Facing Deployments ## 8. Hardening For Internet-Facing Deployments
If this VM is reachable from the public internet (not just a private If this VM is reachable from the public internet (not just a private

File diff suppressed because one or more lines are too long