Updating
Pulling a new image, how migrations run, and how breaking changes are handled
Update to the latest version
docker compose pull
docker compose up -dThe one-shot migrate service applies any pending database migrations before app and worker
start. Confirm with:
docker compose logs migrateExpected: one Applied migration … line per new migration, or Database schema is up to date.
Pin a version
Releases are tagged x.y.z on GitHub (no v prefix) and published to
ghcr.io/esmeepeters/owlypost as x.y.z, x.y and latest. Pin in .env:
OWLYPOST_TAG=1.1.0Release notes are published as GitHub Releases on each tag; there is no changelog file in the repository.
Migrations
Schema changes are SQL files in db/migrations/, applied in filename order, each in its own
transaction, and tracked in the schema_migrations table. Applying them is idempotent: running
migrate twice is safe, and so is running it against an existing database. You can also run them
by hand:
docker compose exec app node scripts/migrate.tsThere are no down migrations. Running an older image against a newer schema is unsupported; to go back, restore a backup taken before the upgrade.
Breaking changes
There is no published compatibility or deprecation policy yet. Read the release notes before upgrading across a minor version, and take a backup first. Known cases so far:
- Renamed variables.
ANTHROPIC_MODEL_DIGESTandANTHROPIC_MODEL_SUMMARYbecameLLM_MODEL_DIGESTandLLM_MODEL_SUMMARY. The old names are ignored, so an install that still sets them falls back to the default models. - Migration
0002refuses to run while two categories have the same name in different casing:categories has case-insensitive duplicate names (…). Merge or rename them, then re-run migrations.Rename one in the app and rundocker compose up -dagain. - Migration
0003creates thebtree_gistextension. On some managed Postgres providers that needs superuser rights; enable the extension from the provider's dashboard first.