Commit graph

75 commits

Author SHA1 Message Date
Troll (Hermes Agent)
d7e54809c9 Add Limitations section to FAQ
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.
2026-08-05 19:59:24 +00:00
Troll (Hermes Agent)
d9566f4158 Update extra requests label and placeholder on customer form
- 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.
2026-08-05 19:27:27 +00:00
Troll (Hermes Agent)
3f7bbf4b12 Add required pronouns dropdown and fix admin vocal gender selector
- 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.
2026-08-05 17:21:38 +00:00
Troll (Hermes Agent)
10ee182558 Replace free-text genre field with structured style dropdowns
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.
2026-08-05 17:03:28 +00:00
Troll (Hermes Agent)
51f7ffd5ab Add revision prompt copy button for Hermes on admin request page
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.
2026-08-05 03:25:34 +00:00
Troll (Hermes Agent)
db249e80bd Add VERSION file and live version display on settings page
- 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.
2026-08-05 03:17:16 +00:00
Troll (Hermes Agent)
d9e198e397 Bump version tag to v0.3 on admin settings page 2026-08-05 03:13:21 +00:00
Troll (Hermes Agent)
2b46f7d3dc Guard customer_approved null/None in all templates
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.
2026-08-05 03:11:21 +00:00
Troll (Hermes Agent)
8de32d91b7 Move revision history above operator notes, move cancel button next to status with confirmation 2026-08-04 18:58:49 +00:00
Troll (Hermes Agent)
968a6fb43c Add Cancelled status and cancel request button 2026-08-04 17:56:02 +00:00
Troll (Hermes Agent)
fd58cf47da Reorder Suno copy buttons to Lyrics, Style, Title 2026-08-04 17:49:44 +00:00
Troll (Hermes Agent)
985092d629 Remove footer URL from kiosk page 2026-08-04 17:46:49 +00:00
Troll (Hermes Agent)
9cc1bd94a6 Trim Hermes API key section on settings page 2026-08-04 17:45:16 +00:00
Troll (Hermes Agent)
c726525c8e Add public kiosk page with QR/pricing cycle and configurable slide timing 2026-08-04 17:41:33 +00:00
Troll (Hermes Agent)
a25bf3a9c9 Add admin Pricing page with fixed and custom items 2026-08-04 17:17:57 +00:00
Troll (Hermes Agent)
a3fd5938a5 Detect missing tables in DB health check and always show schema fix button 2026-08-04 16:59:54 +00:00
Troll (Hermes Agent)
cda4d57859 Add revision history log and music files ZIP backup 2026-08-04 16:54:51 +00:00
Troll (Hermes Agent)
8246f641a2 Move request status badge to top of admin request page 2026-08-04 16:45:24 +00:00
Troll (Hermes Agent)
0c90b5a298 Make all customer info fields editable from admin request page 2026-08-04 16:32:17 +00:00
Troll (Hermes Agent)
da917692f0 Add admin Sales report page 2026-08-04 01:20:56 +00:00
Troll (Hermes Agent)
d02d0b3d25 Add stems_link support for Pingvin-Share-X delivery 2026-08-04 01:10:15 +00:00
Troll (Hermes Agent)
a72da4c5da ui: remove Hermes API key regenerate button from admin settings
Key is now managed via HERMES_API_KEY env var only.
2026-08-03 22:55:55 +00:00
Troll (Hermes Agent)
d5d4882d07 feat: require customer approval before mark paid/deliver
- 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.
2026-08-03 19:07:22 +00:00
Troll (Hermes Agent)
3057eb8eda feat: stream MP3s through backend proxy endpoint
- 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.
2026-08-03 18:59:00 +00:00
Troll (Hermes Agent)
5863c32e35 ui: assign audio src via JS so direct MP3 URLs are not in page source 2026-08-03 18:52:01 +00:00
Troll (Hermes Agent)
56493f5ea7 feat: disable direct MP3 download from customer player page
- Add controlsList=nodownload to audio elements.
- Serve audio with Content-Disposition: inline to discourage browser save dialogs.
2026-08-03 18:49:26 +00:00
Troll (Hermes Agent)
1694b50160 ui: display v0.2 version tag on admin settings page 2026-08-03 18:44:25 +00:00
Troll (Hermes Agent)
06db9f3e55 ui: preserve blank lines between verses in customer lyrics view 2026-08-03 18:42:31 +00:00
Troll (Hermes Agent)
d44882c237 ui: hide Suno metatag brackets from customer lyrics view 2026-08-03 18:41:06 +00:00
Troll (Hermes Agent)
e5b8186b4f fix: remove pre-wrap from lyrics container to eliminate phantom spacing 2026-08-03 18:36:24 +00:00
Troll (Hermes Agent)
d7e30ba317 ui: compress lyrics line spacing further on player page 2026-08-03 18:28:31 +00:00
Troll (Hermes Agent)
5757a768d5 ui: tighten lyrics spacing on player page 2026-08-03 18:16:00 +00:00
Troll (Hermes Agent)
7a9c8b8240 ui: show formatted lyrics on customer player page above audio players 2026-08-03 18:13:44 +00:00
Troll (Hermes Agent)
6a60aa686c feat: Hermes prompt callback endpoint + API key management
- Add /api/prompt/<rid> callback endpoint with dual auth:
  per-request signed URL token + Bearer API key.
- Add HERMES_API_KEY config and runtime key helpers in app.py.
- Update admin request page to copy request details + callback URL.
- Add API key management to admin settings: regenerate, mask, show-once.
- Update .env.example, docker-compose.yml, README, REVIEW docs.
2026-08-03 17:16:56 +00:00
Troll (Hermes Agent)
e46893e0b4 docs: update comments, docstrings, README, REVIEW, and env docs to match current features 2026-08-03 00:11:41 +00:00
Troll (Hermes Agent)
0aa3eab084 fix: record payment ref immediately; show it on admin request page 2026-08-02 23:23:45 +00:00
Troll (Hermes Agent)
109ac6c0b2 fix: make settings metadata fields always default to empty string 2026-08-02 22:41:21 +00:00
Troll (Hermes Agent)
4ab1c1e589 fix: correct DB health fix button action from fix_schema to fix_db 2026-08-02 22:35:22 +00:00
Troll (Hermes Agent)
3cb63a6480 ui: convert admin request page to two-column layout 2026-08-02 22:24:54 +00:00
Troll (Hermes Agent)
3e25c3638b feat: add operator-only notes field per request 2026-08-02 22:10:42 +00:00
Troll (Hermes Agent)
2ac99fde8b feat: add /status order lookup page linked from request form 2026-08-02 22:00:27 +00:00
Troll (Hermes Agent)
5e26650b90 feat: add booth open/closed toggle on settings page 2026-08-02 18:17:59 +00:00
Troll (Hermes Agent)
35c8a722fe docs: update FAQ page from edited draft 2026-08-02 18:01:30 +00:00
Troll (Hermes Agent)
023b4fade7 feat: add /faq page and link from request form 2026-08-02 17:31:08 +00:00
Troll (Hermes Agent)
382b05d7f8 fix: keep form values and show email error on request page 2026-08-02 17:05:27 +00:00
Troll (Hermes Agent)
bf9f9e09fd feat: editable customer email in admin + email validation on public form 2026-08-02 16:51:32 +00:00
Troll (Hermes Agent)
4af9322c9d docs: update comments and README to reflect current feature set
- 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.
2026-08-02 00:07:24 +00:00
Troll (Hermes Agent)
14ed80fe4b Fix dashboard filters: Delivered instead of Done, correct Needs Upload status mapping 2026-08-02 00:02:05 +00:00
Troll (Hermes Agent)
72fa09a6e1 Hardcode email logo to DM-Logo_compress.png and remove configurable logo path 2026-08-01 23:41:31 +00:00
Troll (Hermes Agent)
60909c7122 Use DM-Logo_compress.png directly for email logo, remove Pillow resize logic 2026-08-01 23:35:09 +00:00