feat: add per-song MP3 download buttons to admin request page

Adds an admin download route (/admin/request/<rid>/download-song/<version>)
and Download buttons next to Version A and Version B in section 2 (Songs),
shown only when the MP3 exists on disk. Bumps version to 0.9.2.
This commit is contained in:
Troll (Hermes Agent) 2026-09-20 02:49:01 +00:00
parent 530451cfef
commit be85a88543
5 changed files with 34 additions and 3 deletions

View file

@ -1,6 +1,6 @@
# Theme Song Booth (MusicGPT Edition)
![Version](https://img.shields.io/badge/version-v0.9.1-blue)
![Version](https://img.shields.io/badge/version-v0.9.2-blue)
A Flask web application for running a convention booth where visitors request a custom AI-generated theme song. Operators manage the queue from an admin dashboard, generate prompts via Hermes, queue generations through the MusicGPT API, and deliver final songs by email.
@ -78,7 +78,7 @@ The selected pronouns are stored in the `pronouns` column and included in confir
|------|------|---------|
| Login | `/admin/login` | Simple session-based login. Password comes from the `ADMIN_PASSWORD` environment variable. |
| Dashboard | `/admin` | Main queue. Filter by status and auto-refresh at a configurable interval. Includes a **Refresh MusicGPT Status** button to manually poll all in-flight tasks. |
| Request detail | `/admin/request/<id>` | Full control of one request: edit customer info, save prompt, copy Hermes callback, queue MusicGPT generation, poll a single MusicGPT task, view status/cost, view revision history, upload MP3 overrides, send preview, record payment, deliver files (MP3/WAV/cover), add operator notes, cancel generation, and generate STEMS. |
| Request detail | `/admin/request/<id>` | Full control of one request: edit customer info, save prompt, copy Hermes callback, queue MusicGPT generation, poll a single MusicGPT task, view status/cost, view revision history, upload MP3 overrides, download individual Version A/B MP3s, send preview, record payment, deliver files (MP3/WAV/cover), add operator notes, cancel generation, and generate STEMS. |
| Pricing | `/admin/pricing` | Configure fixed prices and up to 5 custom items. Also shows running MusicGPT cost totals in USD. |
| Sales | `/admin/sales` | Report of all delivered requests with customer details and Square payment references. |
| Settings | `/admin/settings` | Database health, backups, SMTP config, MP3 metadata defaults, revision limit, auto-refresh interval, kiosk mode, booth open/closed switch, Hermes API key management, MusicGPT webhook URL, album cover delivery toggle, automatic MusicGPT polling toggle, and system reset. |