Group genre dropdowns into non-selectable optgroup sections

- Load grouped genre list (music_genres_grouped.txt) with section headings
- Render headings as <optgroup> labels (visible, not selectable)
- Add Disney under CHILDREN'S & HOLIDAY (was missing from grouped file)
- Bump version to 0.9.3
This commit is contained in:
Troll (Hermes Agent) 2026-09-20 16:11:42 +00:00
parent 07e92a522a
commit 868b59077f
7 changed files with 360 additions and 21 deletions

View file

@ -1,6 +1,6 @@
# Theme Song Booth (MusicGPT Edition)
![Version](https://img.shields.io/badge/version-v0.9.2-blue)
![Version](https://img.shields.io/badge/version-v0.9.3-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.
@ -42,7 +42,7 @@ The MusicGPT fork automates song generation: instead of manually creating songs
| Page | Path | Purpose |
|------|------|---------|
| Request form | `/request` | Visitors enter email, name, pronouns, hobbies, notable facts, and extra requests. The music style is picked from three dropdowns: **Decade** (required), **Basic style** (required), and **Additional style** (optional). Decades and genres are loaded from `/mnt/Storage/Decades.txt` and `/mnt/Storage/Music Genres.txt`. Rate limited to 5 submissions per minute per IP. |
| Request form | `/request` | Visitors enter email, name, pronouns, hobbies, notable facts, and extra requests. The music style is picked from three dropdowns: **Decade** (required), **Basic style** (required), and **Additional style** (optional). Decades and genres are loaded from `/mnt/Storage/Decades.txt` and `/mnt/Storage/music_genres_grouped.txt` (a grouped file where section headings are rendered as non-selectable dropdown groups). Rate limited to 5 submissions per minute per IP. |
| Closed page | `/request` (when booth is closed) | Shows a friendly closed banner instead of the form when the operator marks the booth closed. |
| Thanks | `/thanks/<id>` | Confirmation page shown after a request is submitted. |
| Order status | `/status` | Customers enter their email to see all their requests and statuses. |