/api/prompt/<rid> previously rejected any request not in 'pending'
status. This blocked the revision workflow from using the callback.
Now the endpoint accepts 'pending' (sets status to 'prompt_ready') and
'revisions_requested' (keeps status as 'revisions_requested' so the
operator still sees it needs new song uploads).
- 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.
The customer player page (/play/<token>) and revision endpoint were
reading max_revisions directly from booth_settings.json, where it is
stored as a string. Arithmetic/comparison with revision_count (an int)
raised TypeError and caused a 500 error when opening the customer player.
Add get_max_revisions() helper that always returns a non-negative int,
and use it in play(), revise(), and admin_settings().
The regenerate button stores encrypted keys, but legacy/manual writes may
save plaintext. get_hermes_api_key now falls back to returning the raw
value if Fernet decryption fails.
Previously passed the entire runtime_settings dict as metadata, which could
clobber/overlap email form fields. Now only artist/album/year/comment are passed.
- Disable checkboxes, payment ref input, and submit button in admin UI when customer has not approved.
- Add server-side guard in mark_paid_deliver action.
- Replace /audio/<token>/<v>.mp3 with /api/stream/<token>/<v>.mp3.
- Stream bytes from private storage with Accept-Ranges and Content-Range support.
- Keep old /audio route returning 404.
- Update player page JS to use new stream endpoint.
- Refresh app.py module and route docstrings for runtime settings,
MP3 tagging, rate limiting, revision workflow, and admin actions.
- Clarify config.py and models.py comments.
- Update template comments/CSS for dashboard filters, request detail,
player page, and settings page.
- Rewrite README.md with current features, status flow, file layout,
deployment variables, and troubleshooting.
- Refresh REVIEW.md quick-reference.
- Add MAX_REVISIONS to docker-compose.yml environment list.
- Expand requirements.txt comment coverage.
No version history or changelog included.