- Wrapped each Version A/B row in a flex .song-row container so the
checkbox sits inline with the label instead of floating above it.
- Added generous gaps/margins since this page is desktop-only.
Bumps version to 0.5.2.
Operators can now select Version A and/or Version B in the Upload Songs
section and click 'Delete Selected Songs'. The handler removes the
chosen MP3 files, clears their DB paths, resets customer_approved to
'none', and sets the request status back to 'prompt_ready' so new
songs can be uploaded.
Bumps version to 0.5.1.
Added a new 'Limitations' section after 'Versions & revisions' using
the content from /mnt/Storage/FAQ.txt. Covers prohibited topics,
explicit lyrics, customer-provided lyrics, and karaoke-style
requests.
Bumps version to 0.5.0.
- Label now reads: 'Anything else you want in the song? (Trollgorithm is very literal, so be careful!)'
- Placeholder updated to: 'Specific Lyrics, clean/explicit...'
Bumps version to 0.4.9.
- Added a required Pronouns dropdown to /request and /admin/request:
He/Him/His, She/Her/Hers, They/Them/Their.
- Moved Email to the top of the customer request form; Pronouns sit just below Name.
- Added column to the requests schema with automatic migration.
- Stored pronouns are included in confirmation emails and Hermes prompt copy.
- Fixed /admin/request so Preferred singer voice / gender is a dropdown
matching the customer form instead of a free-text input.
- Updated README to describe pronouns and the structured style selectors.
Bumps version to 0.4.7.
The customer request form previously had an open 'Style / genre / mood'
text field, which produced inconsistent genre descriptions and confused
Suno. Replace it with three dropdowns:
- Decade / era (required) — loaded from /mnt/Storage/Decades.txt
- Basic style (required) — loaded from /mnt/Storage/Music Genres.txt
- Additional style (optional) — same genre list
The combined value is stored in the existing style_genre column as a
comma-separated string (e.g. '1980's, Pop, Funk'), so no schema change
is required. The admin request page exposes the same dropdowns for
corrections, and the copy-to-Hermes prompt formats the style as a clean
sentence like '1980's-era Pop with Funk influences'.
The canonical lists live in /mnt/Storage; bundled copies under lists/
act as a fallback when that mount is unavailable in the container.
Bumps version to 0.4.6 and updates README.
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.
Some rows (schema drift, cancelled requests, manual status edits) have
customer_approved = NULL instead of the default 'none'. Templates called
.upper() on it blindly, causing a Jinja2 UndefinedError / 500 when the
customer player or admin pages loaded.
Replace all .upper() calls with (value or 'none').upper() and add truthy
checks before rendering the approved choice in status.html and
dashboard.html.
- 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.