Commit Graph
550 Commits
Author SHA1 Message Date
teahubxyzandClaude Opus 5.5 f2e8f1cb91 havre: the update pill watches split.js too
ci / test (pull_request) Successful in 3s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjyFZEJivqQMhhCyyQau49
2026-10-23 19:37:22 +00:00
teahubxyzandClaude Opus 5.5 9b85b15744 havre: load split.js
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjyFZEJivqQMhhCyyQau49
2026-10-23 19:37:21 +00:00
teahubxyzandClaude Opus 5.5 15d9ab268f havre: the divider's look; hidden where the list and chat take turns
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjyFZEJivqQMhhCyyQau49
2026-10-23 19:37:20 +00:00
teahubxyzandClaude Opus 5.5 058d0b069e havre: a divider to drag between the list and the chat
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjyFZEJivqQMhhCyyQau49
2026-10-23 19:37:07 +00:00
teahubxyzandClaude Opus 5.5 d821cc5bee Havre: sort the model picker by price (#250)
Havre: sort the model picker by price (#250)

The model picker gets a sort beside its search: name (the one in use first, then A to Z), cheapest first, priciest first, kept in this browser. Sorted by price, the price column says which way; a text model goes by its price in, then out. Clips, which Venice prices one at a time, have no sort.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjyFZEJivqQMhhCyyQau49
2026-10-23 19:29:44 +00:00
time 3b6bf3930f ventures: daily signup counts 2026-10-23 00:28:14 +00:00
time c6f4fe489f ventures: daily signup counts 2026-10-22 00:28:21 +00:00
teahubxyz 6fff82ebb8 Havre remix: editable write-up + rewrite box (#218) 2026-10-21 21:52:33 +00:00
teahubxyz ffb16e5605 Havre: hear / whisper in the message tools line (#217) 2026-10-21 20:12:40 +00:00
teahubxyz 2e86c329d4 Havre: voice notes off / on / asmr, ASMR settings, "whisper it", and the /whisper display fix (#216) 2026-10-21 19:46:52 +00:00
teahubxyz cbb01d0a33 Havre: update pill (NEW VERSION · RELOAD) (#215) 2026-10-21 19:39:35 +00:00
teahubxyz 0c0feec53b Havre: /whisper — ASMR voice notes (#214) 2026-10-21 19:30:07 +00:00
teahubxyz 26265ee0cf mdecks README: opening a .md file 2026-10-21 17:30:23 +00:00
teahubxyz 97610b03ec mdecks: Open .md button, drop target styling, copy
Adds the Open .md button beside the editor label, a hidden file input, a page-wide drop highlight, and mentions dropping a file in the hint, How it works and the Free tier.
2026-10-21 17:30:12 +00:00
teahubxyz 23fde14eda mdecks: open a .md file by drop or button
A .md (or any text) file dropped anywhere on the page, or picked with the new Open .md button, replaces the editor text and clears the hash, so the file is the deck. Nothing is uploaded: FileReader reads it in the tab.
2026-10-21 17:29:56 +00:00
time 79635906e3 ventures: daily signup counts 2026-10-21 00:28:45 +00:00
github-actions[bot] e82c7e791f ventures: refresh roll-credits 2026-10-20 22:47:37 +00:00
teahubxyzandClaude Fable 5.1 9841186f80 ventures: roll-credits card image
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hn2DWhV7Z1qUxjhCprDb88
2026-10-20 22:42:28 +00:00
teahubxyzandClaude Fable 5.1 0a263c782b ventures: roll-credits gets a tools/build.sh that renders its shots/desktop.png (it launched without a card image)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hn2DWhV7Z1qUxjhCprDb88
2026-10-20 22:42:15 +00:00
teahubxyzandClaude Fable 5.1 f00e5156dc ventures: gandora moved to gandora/site (served at gandora.yolopreneur.lol from its own repo)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hn2DWhV7Z1qUxjhCprDb88
2026-10-20 22:37:40 +00:00
teahubxyzandClaude Fable 5.1 67b91770a7 gandora: 120 s tracks
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:35:37 +00:00
teahubxyzandClaude Fable 5.1 1666f0200c ventures: gandora lives in gandora/site now; its card image comes from there
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hn2DWhV7Z1qUxjhCprDb88
2026-10-20 22:34:47 +00:00
teahubxyzandClaude Fable 5.1 ffc0e85999 gandora: player order — cover, transport, trail, title, bar, lyrics/keep/share, then dj line / next / tags
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:33:42 +00:00
teahubxyzandClaude Fable 5.1 3324fcc226 gandora: trail — scroll back through what this station has played, right on the player (pandora-style), tap to jump
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:15:17 +00:00
teahubxyzandClaude Fable 5.1 7769502e0b gandora: hide the shared-budget / add-key button for now (still reachable with ?key)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:09:35 +00:00
teahubxyzandClaude Fable 5.1 4ebed492bd gandora: render through the worker's one-call /v1/render (Runware when the factory has a key), real cost + seed + renderer kept on the track
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:08:16 +00:00
teahubxyzandClaude Fable 5.1 982d1af057 gandora: DJ line · NEXT · then bpm · key · TAGS ▾, with the tags opening on a line of their own
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 22:00:35 +00:00
teahubxyzandClaude Fable 5.1 bf2ecbc6b3 gandora: a tap outside any sheet (station, emoji picker, tape picker) closes it
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ac/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:59:02 +00:00
teahubxyzandClaude Fable 5.1 1c57e075ff gandora: tags fold to one line (TAGS ▾ · bpm · key); palette dial per station — mono, duo, tri
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:57:02 +00:00
teahubxyzandClaude Fable 5.1 f733a66fb6 gandora: station name above the cover, centred, in the wordmark style
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:54:12 +00:00
teahubxyzandClaude Fable 5.1 c0aea23067 gandora: + tag stays visible when the tag row is folded
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:53:55 +00:00
teahubxyzandClaude Fable 5.1 b976041118 gandora: new flow — cover, title, progress, DJ line, tags (folded to four, bpm and key as chips), NEXT, controls, pills
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:53:45 +00:00
teahubxyzandClaude Fable 5.1 538b93cf75 gandora: chord look fills in — slower damping, more cycles, a detuned second trace
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:34:24 +00:00
teahubxyzandClaude Fable 5.1 7b66e4dd35 gandora: looks — rings, chord (a harmonograph of the key's interval), attractor (a Clifford attractor from the song); per station, set in the station sheet
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:31:33 +00:00
teahubxyzandClaude Fable 5.1 0a22d29dd4 gandora: a station sheet — rename, reset taste, delete (kept tracks stay); from the top bar name or ⋯ on a station tile
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:30:04 +00:00
teahubxyzandClaude Fable 5.1 271243a334 gandora: refreshing a station link resumes the station rather than refilling the seed box
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:29:28 +00:00
teahubxyzandClaude Fable 5.1 60f374527f gandora: tags sit with the reactions, above the emoji row
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:26:52 +00:00
teahubxyzandClaude Fable 5.1 0c6fd2d1f1 gandora: a shared tape queues its tracks before the station opens; switching station ends a tape
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:16:42 +00:00
teahubxyzandClaude Fable 5.1 a7f342b196 gandora: mixtapes
A tape is a named, ordered list of tracks: start one from the library's TAPES strip or add any tile with its +;
the tape screen plays through, repeats all, reorders (▲▼), removes, renames, deletes; SHARE copies a link that
carries every track's sheet music, and a browser opening it gets a tape of its own, rendering each in order.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:16:21 +00:00
teahubxyzandClaude Fable 5.1 abbcceba53 gandora: controls reordered (back · shuffle · replay · play · repeat · remix · next), cleaner shuffle glyph, first remix
Remix hands the current track's sheet music back to the DJ with the listener's chip edits and words, asks for a
variation with the same bones, and puts it next; a track already cooking plays after it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:14:45 +00:00
teahubxyzandClaude Fable 5.1 2631dd6f6c gandora: shuffle mixes the station's own library in, weighted by the taste net
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:09:21 +00:00
teahubxyzandClaude Fable 5.1 4add8c4484 gandora: no KEPT label inside the KEPT section
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:08:16 +00:00
teahubxyzandClaude Fable 5.1 c866d70f5c gandora: library tiles — emoji on the cover, KEPT as a label not a heart, one-line meta
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:05:19 +00:00
teahubxyzandClaude Fable 5.1 70a856db39 gandora: an emoji picker from +, and the reaction row is the listener's eight most-used emoji
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 21:03:32 +00:00
teahubxyzandClaude Fable 5.1 b3ff0f9672 gandora: tag taps train the net as word-level samples; ▲▼ counts on the taste map
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 20:59:25 +00:00
teahubxyzandClaude Fable 5.1 5a56c56a07 gandora: tag taps can be let go (~word); tag tokens stay out of the emoji rows
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 20:59:06 +00:00
teahubxyzandClaude Fable 5.1 3a0df54646 gandora: tags are controls (more / less / let go, + your own); the DJ's line sits above them and taps into the reply box
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 20:58:48 +00:00
teahubxyzandClaude Fable 5.1 c435a7be1f gandora: the net hears the words — tags, title and lyrics as hashed bag-of-words inputs
5 numbers + 48 signed-hash word slots → 12 neurons → like. The DJ's taste paragraph now names the words the net
warms to and cools on; the heat map and the grid are scored with the station's own wording so the words block is
live. Checked: with identical tempo/energy/key, "wobble bass" vs "harmonica" separate cleanly on words alone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 20:55:05 +00:00
teahubxyzandClaude Fable 5.1 ce2eead558 gandora: STORAGE.md, the contract between the page and whatever stores its tracks
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 20:37:35 +00:00
teahubxyzandClaude Fable 5.1 a78d6db949 gandora: the URL follows the station; SHARE links carry a track's sheet music so it opens and renders for anyone
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
2026-10-20 20:34:00 +00:00