Commit Graph
51 Commits
Author SHA1 Message Date
teahubxyzandClaude Fable 5.1 2edb835cc7 if the next track isn't cooked when one ends, the player itself loops the crackle inside the ended event, so a locked phone keeps a live playback session until the track lands
shots / shots (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:38:29 +00:00
teahubxyzandClaude Fable 5.1 7d10ff41d7 locked-screen continuity: when a track ends and the next is already cooked, the swap to it happens synchronously inside the ended event (iOS only lets playback continue that way in the background); the bookkeeping follows
shots / shots (push) Canceled after 2m14s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:36:43 +00:00
teahubxyzandClaude Fable 5.1 5725ed3ebc station sheet: an × in the top right instead of a CLOSE button
shots / shots (push) Successful in 2m18s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:15:46 +00:00
teahubxyzandClaude Fable 5.1 38c5a9ec76 crackle starts the moment there's nothing ready to play (DJ writing + render), and is loud enough to hear
shots / shots (push) Successful in 2m15s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:13:14 +00:00
teahubxyzandClaude Fable 5.1 b891f698e5 emoji tray: seven most-used + the picker
shots / shots (push) Successful in 2m22s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:08:19 +00:00
teahubxyzandClaude Fable 5.1 0bf78b5d8a meta chips say intermission / sponsored / remix
shots / shots (push) Canceled after 33s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:07:26 +00:00
teahubxyzandClaude Fable 5.1 94edeaca94 scrub the progress bar (tap or drag, with a time readout while dragging); remixes say so on the meta line
shots / shots (push) Canceled after 33s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:07:11 +00:00
teahubxyzandClaude Fable 5.1 fcdaaff678 station sheet gets STATION FROM THIS TRACK and SHARE STATION; the * STATION pill goes; one fewer emoji in the tray so + stays on the row on phones
shots / shots (push) Successful in 2m17s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 03:04:23 +00:00
teahubxyzandClaude Fable 5.1 97d8bc938f the first tap unlocks the crackle too
shots / shots (push) Successful in 2m43s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:49:50 +00:00
teahubxyzandClaude Fable 5.1 8607d325ef share links carry the render seed, length, meter, look and palette, so the other end hears the same song; vinyl crackle while a track cooks and between tracks (a second quiet <audio>, no Web Audio, so iOS is fine)
shots / shots (push) Canceled after 36s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:49:37 +00:00
teahubxyzandClaude Fable 5.1 006597719f the unlock clip is 50 ms of real silence (an empty wav is rejected by some players)
shots / shots (push) Successful in 2m18s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:35:01 +00:00
teahubxyzandClaude Fable 5.1 027d069787 prime only while no track is loaded
shots / shots (push) Canceled after 56s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:34:06 +00:00
teahubxyzandClaude Fable 5.1 0ffeefe94d mobile: the first tap anywhere unlocks the player (silent clip inside the gesture) so the first track autoplays when it lands; on iOS the cover pulses to the beat instead of the spectrum, so music keeps playing with the screen off and ignores the mute switch
shots / shots (push) Canceled after 28s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:33:56 +00:00
teahubxyzandClaude Fable 5.1 d372da5950 breaks look like breaks: the cover goes monochrome under an ON AIR ring with the asterisk as the mark
shots / shots (push) Successful in 2m21s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:22:33 +00:00
gitea-actions[bot] bd3c7aa973 shots: desktop.png + icons 2026-10-21 02:19:36 +00:00
teahubxyzandClaude Fable 5.1 9da4b4db14 speak() works with a personal Venice key too
shots / shots (push) Successful in 2m18s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:15:03 +00:00
teahubxyzandClaude Fable 5.1 5f8afacda9 spoken breaks are read by a TTS voice the DJ keeps (welcome, recap, shout-out, tease); sung breaks stay on the song model; errors name the renderer, not Venice
shots / shots (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:14:53 +00:00
teahubxyzandClaude Fable 5.1 2c53627bac shots workflow: no pip step, the icon script needs nothing
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:10:37 +00:00
teahubxyzandClaude Fable 5.1 f718d1869e icons: standard-library PNG writer (the runner has no pip)
shots / shots (push) Failing after 2m16s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:10:31 +00:00
teahubxyzandClaude Fable 5.1 4bc0dacd97 welcome break comes after the third track, when the brain turns on
shots / shots (push) Failing after 2m15s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:04:59 +00:00
teahubxyzandClaude Fable 5.1 71e4feee03 welcome break: after the first track the DJ pops on once — a name they pick and keep, the station's name, what the station listens for, react or drop a line, thanks for listening to gandora, enjoy
shots / shots (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:04:32 +00:00
teahubxyzandClaude Fable 5.1 0874f1566a intermissions wait until the station has three real tracks (when the brain wakes up)
shots / shots (push) Canceled after 2m15s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 02:02:37 +00:00
teahubxyzandClaude Fable 5.1 37bf31d6ba brain: intermissions of any kind stay out of taste
shots / shots (push) Canceled after 2m21s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:59:52 +00:00
teahubxyzandClaude Fable 5.1 4f96b9ec82 DJ intermissions: every fifth slot is a 30 s break — ident, recap of the last tracks, tease of what's next, a shout-out to the listener, or the pro word — in the station's own sound, marked, kept out of taste
shots / shots (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:59:45 +00:00
teahubxyzandClaude Fable 5.1 a178e5c9b2 shots workflow: Pillow for the icons; rerun when the icon script changes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:58:09 +00:00
teahubxyzandClaude Fable 5.1 c488529e14 icons: drawn by tools/icons.py (Pillow, supersampled), not screenshotted — the runner's Chrome cropped them
shots / shots (push) Canceled after 29s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:58:01 +00:00
teahubxyzandClaude Fable 5.1 fb1f816ebe brain: sponsored idents never train taste or appear in THE FIVE
shots / shots (push) Successful in 2m22s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:53:41 +00:00
teahubxyzandClaude Fable 5.1 fc2170ab70 sponsored: every sixth track is a 30 s station ident in the station's own style — thanks for listening to g*ndora, a nod to pro — marked SPONSORED, kept out of taste
shots / shots (push) Canceled after 28s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:53:34 +00:00
teahubxyzandClaude Fable 5.1 390323baf9 remix: the reference sets the length, so when the DJ changed the length by 30 s or more the remix goes without it
shots / shots (push) Successful in 3m53s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:45:30 +00:00
teahubxyzandClaude Fable 5.1 6a8e8bed8c trail: bigger thumbs on the cover
shots / shots (push) Successful in 2m36s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:31:16 +00:00
teahubxyzandClaude Fable 5.1 c82a340d15 brain: track length is an input to the taste net
shots / shots (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:29:58 +00:00
teahubxyzandClaude Fable 5.1 d9dbedd956 icons: PNGs for the installed app (separate any / maskable entries), SVG keeps explicit size; desktop PWA icon was clipped
shots / shots (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:29:44 +00:00
teahubxyzandClaude Fable 5.1 e89bb9c538 length and meter are the DJ's to choose (30–300 s, 4/4 3/4 6/8 …), steered by what the listener says; remixes and track-born stations hand the source audio to the renderer as a reference
shots / shots (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 01:29:18 +00:00
teahubxyzandClaude Fable 5.1 31805089f0 start a station from a track (pandora-style): * STATION pill on the player and a * button on library tiles — the track opens the new station, its tags seed the taste, the DJ carries on from there
shots / shots (push) Successful in 2m24s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 00:30:28 +00:00
teahubxyzandClaude Fable 5.1 f8527d6d76 taste: the five picks say what they are
shots / shots (push) Canceled after 2m8s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 00:27:34 +00:00
teahubxyzandClaude Fable 5.1 150a1cc14a taste: the five picks sit at the top, under the tabs
shots / shots (push) Canceled after 28s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-21 00:27:27 +00:00
gitea-actions[bot] 67ba3e27d2 shots: desktop.png + icons 2026-10-20 23:56:00 +00:00
teahubxyzandClaude Fable 5.1 83bf464b49 taste canvases read the theme's colours instead of hard-coded dark ones
shots / shots (push) Successful in 2m22s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 23:53:40 +00:00
teahubxyzandClaude Fable 5.1 2beac64165 ui: no more gold — the accent is ink (white in dark, near-black in light); light/dark toggle (LIGHT/DARK next to LIBRARY), follows the system until set
shots / shots (push) Canceled after 35s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 23:53:19 +00:00
gitea-actions[bot] 91bf1e0c2c shots: desktop.png + icons 2026-10-20 23:48:35 +00:00
teahubxyzandClaude Fable 5.1 42d68a2a4c icons: icon.html draws a fixed box at the requested size (?s=512) so the runner's screenshot crop is exact
shots / shots (push) Successful in 2m21s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 23:46:28 +00:00
gitea-actions[bot] 6d0e980662 shots: desktop.png + icons 2026-10-20 23:44:19 +00:00
teahubxyzandClaude Fable 5.1 4140f511f2 shots workflow: commit the rendered icons too; rerun when the icon or the script changes
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 23:41:25 +00:00
teahubxyzandClaude Fable 5.1 8c01818950 shots: also render icons/icon-512.png, icon-192.png and apple-touch-icon.png from icons/icon.svg
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 23:41:17 +00:00
teahubxyzandClaude Fable 5.1 ea1a0b0d1f pwa: manifest + icons + service worker + Media Session (lock-screen art and controls); g*ndora wordmark; * as the seed placeholder
shots / shots (push) Canceled after 33s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 23:40:58 +00:00
teahubxyzandClaude Fable 5.1 bd5eab0c7c brand: the asterisk — white, square terminals. favicon.svg, icons/, manifest, service worker (library plays offline), Media Session, g*ndora wordmark
shots / shots (push) Canceled after 42s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 23:40:30 +00:00
teahubxyzandClaude Fable 5.1 d3ff1799b3 lyrics/keep/share sit right above the bpm · key · tags line; the trail lives on the cover — hover (or always on touch) shows it, wheel scrolls it
shots / shots (push) Successful in 2m16s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:45:46 +00:00
teahubxyzandClaude Fable 5.1 c7db36473e player order (cover, transport, trail, title, bar, lyrics/keep/share, dj/next/tags) + 120 s tracks — re-applied after the move from time#gh-pages
shots / shots (push) Successful in 2m16s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:40:04 +00:00
gitea-actions[bot] 57a6abbdfd shots: desktop.png 2026-10-20 22:36:24 +00:00
teahubxyzandClaude Fable 5.1 9a4e34268f shots: a workflow that renders shots/desktop.png with headless Chromium and commits it
Teahub pages serves this repo at gandora.yolopreneur.lol; the yolopreneur.lol
venture list shows shots/desktop.png as the card image. Actions -> shots ->
Run workflow (also runs on a push to main that touches index.html).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hn2DWhV7Z1qUxjhCprDb88
2026-10-20 22:33:29 +00:00