Commit graph

63 commits

Author SHA1 Message Date
Troll (Hermes Agent)
5ba4f28faf feat: add ntfy access token support
- ntfy push notifications now include a Bearer access token when configured
- Add Access Token field to /admin/settings next to server and topic
- Token is stored encrypted like the SMTP password
- Bump version to 0.5.7
2026-08-07 17:21:04 +00:00
Troll (Hermes Agent)
a56f6e498b feat: add ntfy push notifications for new requests
- Add ntfy server/topic settings in /admin/settings next to Hermes API key
- POST a push notification to the configured topic on every new customer request
- Add a Send Test ntfy button to verify configuration
- Add requests dependency for ntfy HTTP calls
- Bump version to 0.5.6
2026-08-07 17:14:02 +00:00
Troll (Hermes Agent)
52558010e8 Add Live Queue slide to kiosk rotation
- Added a third kiosk slide showing the active customer queue.
- Customer names are derived from the local-part of their email address.
- Statuses are mapped to friendly labels:
    pending -> Received
    prompt_ready / songs_uploaded -> Trollgorithm Recording in Studio
    revisions_requested -> Waiting for Customer Response
    awaiting_payment -> Payment Due
- Completed/delivered statuses are not shown.
- If the queue overflows, a note points customers to the status page.
- Added queue-only mode (kiosk_cycle_seconds = 1) and updated the
  cycle logic to rotate QR -> pricing -> queue.
- Updated /admin/settings help text for the new mode.

Bumps version to 0.5.3.
2026-08-05 20:27:33 +00:00
Troll (Hermes Agent)
96b6470c25 Fix delete-song checkbox alignment on admin request page
- 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.
2026-08-05 20:08:22 +00:00
Troll (Hermes Agent)
7eb72e511d Add delete-songs controls to admin request page
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.
2026-08-05 20:05:20 +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)
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)
1694b50160 ui: display v0.2 version tag on admin settings page 2026-08-03 18:44:25 +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)
5e26650b90 feat: add booth open/closed toggle on settings page 2026-08-02 18:17:59 +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
Troll (Hermes Agent)
918eaa682c Fix email logo: resize/compress to small JPEG, make path configurable in settings, add Pillow 2026-08-01 23:32:14 +00:00
Troll (Hermes Agent)
48db5c5461 Add SMTP test email button and recipient field on settings page 2026-08-01 23:24:33 +00:00
Troll (Hermes Agent)
8e5c2f5867 Move email SMTP config to settings page with encrypted password storage; add cryptography dependency 2026-08-01 23:20:23 +00:00
Troll (Hermes Agent)
5ebce2baff Add dashboard auto-refresh, status filters, rate limiting, database backup/restore 2026-08-01 22:52:32 +00:00
Troll (Hermes Agent)
77e23ba52c Fix MP3 comment tagging and remove Genre from settings metadata 2026-08-01 22:35:51 +00:00
Troll (Hermes Agent)
e4de42efa5 Format admin settings page with two-column layout and metadata table 2026-08-01 22:07:20 +00:00
Troll (Hermes Agent)
d74a715216 Add MP3 metadata settings and auto-tag uploaded files with title, artist, album, year, genre, comment 2026-08-01 22:00:08 +00:00
Troll (Hermes Agent)
506d07179a Add configurable max revisions limit with customer counter and operator override 2026-08-01 21:36:23 +00:00
Troll (Hermes Agent)
5b6012aa3d Add vocal gender preference to customer request form and admin view 2026-08-01 21:20:11 +00:00
Troll (Hermes Agent)
0f6b68cf5d Lock customer page after choice, archive files on revision, add file checkboxes for delivery 2026-08-01 21:10:57 +00:00
Troll (Hermes Agent)
51d1b4a4d9 Add admin Settings page with DB health check, stats, and system reset 2026-08-01 20:55:20 +00:00