The previous schema migration added revision_count as TEXT. SQLite stores
the default as TEXT, but the app does integer arithmetic on it, causing:
TypeError: unsupported operand type(s) for -: 'int' and 'str'
- init_db() now adds revision_count as INTEGER.
- app.py casts revision_count to int in play() and revise() and when
incrementing in revise(), so existing TEXT values also work.
Bump version 0.4.2 -> 0.4.3.
Deployed DBs persisted without the revision_count column / revision_history
table, causing customer revision requests to 500.
- init_db() now migrates existing tables by adding missing columns.
- log_revision() falls back to init_db() on missing table for full repair.
- Bump version 0.4.1 -> 0.4.2.
Deployed databases can persist without the revision_history table,
causing /play/<token>/revise to crash with sqlite3.OperationalError.
- log_revision() now creates the table on the fly if it is missing.
- app.py runs init_db() at import time (safe CREATE TABLE IF NOT EXISTS)
so new deployments auto-create missing tables on startup.
Bump patch version 0.4.0 -> 0.4.1.
When a request has revision_note set, the operator now sees a
'Copy revision prompt for Hermes' button in the revision note box.
It copies a prompt that includes:
- the original customer brief,
- the previously generated title/style/lyrics,
- the customer's revision request,
- the signed callback URL and expected JSON shape.
Minor version bump: 0.3.0 → 0.4.0.
- New VERSION file at project root, starting at 0.3.0.
- config.py reads VERSION and exposes it as Config.VERSION.
- Admin settings page now renders the live version from config.
- Semantic versioning convention: MAJOR for breaking/user-facing changes,
MINOR for new features, PATCH for bug fixes and small polish.