Commit Graph

100 Commits

Author SHA1 Message Date
b1rdmania 5dc9d026bc fix: simplify MP3 export to one-click download
Revert the multi-step save flow and export prompts. Always render the full song, encode to MP3, and trigger a direct download.

Made-with: Cursor
2026-03-03 12:21:17 +00:00
b1rdmania f9e2755721 fix: make prepared MP3 save work on macOS Safari
Avoid awaiting during the save click handler, and treat Safari desktop like iOS by opening the MP3 in a new tab instead of relying on <a download> for blob URLs.

Made-with: Cursor
2026-03-03 12:13:52 +00:00
b1rdmania 456db201e5 fix: make MP3 save work on iOS and allow full export
Offer full-song export via prompt and improve the fallback save path by using Share Sheet when available or opening the MP3 in a new tab on iOS, instead of relying on unreliable blob downloads.

Made-with: Cursor
2026-03-03 12:07:49 +00:00
b1rdmania 67dab9063a fix: make MP3 export feel responsive
Use the file save picker when available for a true single-click save, add encoding progress updates, and cap very long exports to avoid apparent stalls.

Made-with: Cursor
2026-03-03 11:58:07 +00:00
b1rdmania b2b8ebfd78 ux: clarify two-click MP3 download
Explain that MP3 export takes time and requires a second click to save, and make the ready-state button label explicit.

Made-with: Cursor
2026-03-03 11:55:50 +00:00
b1rdmania 9937f5a02a fix: make MP3 downloads reliable again
Use bundled lamejs instead of a CDN global, and avoid browser user-gesture download blocking by preparing the MP3 first and downloading on a follow-up click.

Made-with: Cursor
2026-02-27 15:41:07 +00:00
b1rdmania 686c961fb3 ux: return clear BitMidi outage message and handoff notes 2026-02-02 23:39:29 +00:00
b1rdmania 63bd71202a Add share buttons to play.html (share page)
- Copy Link and Share to X buttons on the shared player page
- Consistent Game Boy styling with main page

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 13:22:32 +00:00
b1rdmania 5528aef7f8 Add Download MP3 button, bump to v1.5
- Download MP3 alongside Copy Link and Share to X buttons
- Offline rendering for faster MP3 exports
- Version history updated with v1.4 and v1.5 changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 13:20:42 +00:00
b1rdmania 2492ab833a Add offline MP3 rendering, Game Boy styling for UX test, fix 16-bit → 8-bit
- Add renderOffline() to SynthesisEngine for faster-than-realtime audio rendering
- Add renderOffline() to MotifEngine wrapping the synthesis engine
- Update ux-test.html MP3 download to use offline rendering (no more real-time capture)
- Restyle ux-test.html with Game Boy LCD aesthetic to match main site
- Fix "16-Bit" to "8-Bit" across all titles and share cards (Game Boy is 8-bit!)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 10:32:27 +00:00
b1rdmania 853dbaa345 Update Share to X tweet format
New format:
I made a Game Boy version of [song]
Using @b1rdmania's Wario Synthesis Midi Engine
Check it out here [link]

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:03:07 +00:00
b1rdmania f69a022afd Clean up repo for public release
Removed:
- Old planning docs (DEPLOYMENT.md, IMPLEMENTATION.md, etc.)
- Dev notes (thursday-aims-progress-problems.md)
- Old backup files (main-simple.ts, main-working.ts)
- Test file (test.html)
- Unused image (chiptune_blog_piece_1000x.webp)
- docs/ folder with old audit/plan docs

Updated:
- Renamed claude.md to CLAUDE.md
- Added .claude/ to gitignore

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 11:25:21 +00:00
b1rdmania 0b952424c3 Add iOS audio unlock banner to play page
Shows "Tap to enable audio on iOS" banner on iOS devices.
Hides automatically once audio is unlocked via button or play.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:41:15 +00:00
b1rdmania dc1126bdc8 Add fallback for iOS share when copy fails
When clipboard copy fails, shows a text input with the share link
so users can manually select and copy it.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:37:06 +00:00
b1rdmania 7dcc233445 Add immediate visual feedback on search click
Status updates to "Starting search..." immediately when button clicked,
before async operations. This will help diagnose if JS handler is running.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:35:14 +00:00
b1rdmania cb9ea7bcc9 Add debugging logs and error handling for iOS issue
Wraps app initialization in try/catch to display errors.
Adds console.log at key points to trace what's happening.
Catches and displays errors from search handler.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:33:46 +00:00
b1rdmania 602b36fc7a Add feedback when search clicked with empty input
Previously clicking Search with no input silently did nothing.
Now shows "Enter a song name to search." and focuses the input.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:32:07 +00:00
b1rdmania 8406966928 Update status message to be clearer and more concise
Changed from "Ready. Enter a song to run it through our Wario 16-Bit Engine and make a new version." to "Ready. Search any song to make a Game Boy version."

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:27:17 +00:00
b1rdmania 4bf1a971a0 Update status message copy
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:24:24 +00:00
b1rdmania fc272f3b58 Remove share link text box - just show Copied/Failed feedback
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:22:10 +00:00
b1rdmania 6ea3fa49fc Improve iOS copy link with execCommand fallback
- Try modern Clipboard API first
- Fall back to execCommand('copy') with textarea trick
- Uses setSelectionRange for iOS compatibility
- Only show manual text box if both methods fail

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:20:20 +00:00
b1rdmania 8938257d50 Remove unused formatDuration function (fixes build)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 16:14:17 +00:00
b1rdmania 2d97d5eea6 Fix iOS audio on shared play page
- Call unlockAudio() synchronously at start of click handler
- In audioUnlock: fire resume() immediately without await
- Play silent buffer synchronously before any async work
- Then await resume() again to ensure it completes

iOS requires audio interaction in synchronous user gesture context

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:26:42 +00:00
b1rdmania a6d0358469 Remove inaccurate Length column from results table
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:21:23 +00:00
b1rdmania 04efceee9b Consolidate info into status box, remove chooser helper
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:16:16 +00:00
b1rdmania c3e30ca491 Simplify selected card UI
- Remove "Choose a different source" link
- Remove Details toggle
- Simplify meta to just show source (remove length/notes)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:08:11 +00:00
b1rdmania 6fddb140cc Remove redundant info box from selected card
Consolidated messaging - the chooser helper already explains MIDI selection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:05:50 +00:00
b1rdmania 0e6a08852f Fix Share to X on mobile, update helper text
- Open window immediately before async fetch to preserve user gesture
- Update MIDI selection helper text per feedback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:05:04 +00:00
b1rdmania b13923a1eb Remove duplicate FAQ from footer, show New Search only after generation
- FAQ button now only in hero header (removed from footer)
- New Search button hidden by default, shown only after generating

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 15:02:29 +00:00
b1rdmania 5db9aceaf5 Update X share: 16-Bit Midi Wario Synth by @b1rdmania
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:58:42 +00:00
b1rdmania 3acf4301f0 Update X share tweet format
"I made [title] Game Boy version.

Made in Wario Synth by @b1rdmania
[link]"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:57:23 +00:00
b1rdmania e485335a26 Remove @b1rdmania from OG share copy, strip mid/midi from song titles
- OG description no longer includes "by @b1rdmania" (only X share has it)
- Song titles now strip standalone "mid" and "midi" words

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:53:28 +00:00
b1rdmania 2df84d9679 Move version history to bottom, add FAQ to hero with v1.3 tag
- Hero now shows "WARIO SYNTH v1.3" with FAQ button
- Version history moved to bottom of page
- Added Wario Synthesis Engine explanation to FAQ
- Bigger Wario sprite (192px)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:49:10 +00:00
b1rdmania f0acf96514 Fix audio on shared play page - add iOS audio unlock
Shared links weren't playing audio on iOS because unlockAudio() wasn't being called

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:35:06 +00:00
b1rdmania eb3f61b63a Add Share to X button with proper tweet text
- Added "Share to X" button next to "Copy link"
- Tweet text: "I made [song] game boy version. Click to listen or generate your own, made in Wario Synth by @b1rdmania"
- Updated Twitter cards to summary_large_image
- Dynamic OG description includes song title

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:32:34 +00:00
b1rdmania 469212aa3c Fix share button: copy to clipboard on desktop, text box fallback on iOS
- Try navigator.clipboard.writeText first
- Show "Copied!" feedback on success
- Only show text box fallback if clipboard fails (iOS)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:28:32 +00:00
b1rdmania c5a65e0f19 Keep search results visible after generation
Users can now pick a different MIDI source even after generating

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:56:35 +00:00
b1rdmania 3d85a8e981 Fix scroll during generate, restore Claude Code easter egg
- Preserve scroll position when clicking Generate
- Add back "Ps. Built with Claude Code" in FAQ

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:41:46 +00:00
b1rdmania 79601a78ba Fix iOS FAQ modal, host font locally, cleanup
- Fix FAQ modal scrolling/sizing on iOS with max-height and flexbox
- Host Press Start 2P font locally to avoid content blocker issues
- Remove FAQ button from top bar (keep footer button)
- Shorten MIDI selection tips text

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:36:15 +00:00
b1rdmania 1041be46f3 Add short links with song title in OG preview
- Re-enable /api/share for short links (/s/abc123)
- Title shows as "Song Name - WARIO SYNTH"
- Description: "I made this in WARIO SYNTH"
- Falls back to long URL if short link fails

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:25:27 +00:00
b1rdmania 7a8f6d6517 Include song title in share URL 2025-12-29 13:21:07 +00:00
b1rdmania cbb808b968 Remove unused clipboard functions 2025-12-29 13:10:47 +00:00
b1rdmania 31310a6ea3 Replace copy button with text box for sharing
Simple solution: show the link in a selectable text box
Works everywhere without clipboard API issues

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:59:34 +00:00
b1rdmania 56e280fe33 Simplify share: use native share sheet on mobile
- Remove async fetch before share (was breaking iOS gesture chain)
- Use navigator.share() on mobile for native share sheet
- Simple clipboard.writeText() on desktop
- No complicated fallbacks

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:56:55 +00:00
b1rdmania 1eef11acbe Fix iOS clipboard with contentEditable approach
- Try modern clipboard API first
- For iOS: use contentEditable + special range selection
- Set font-size 16px to prevent zoom on iOS
- Properly throw error on failure for user feedback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:53:55 +00:00
b1rdmania aac5d9d95b Fix iOS clipboard, update FAQ style, rename button text
- Fix iOS Safari clipboard by using textarea with proper selection
- Add visible "Link copied!" confirmation next to Copy link button
- Update FAQ modal styling to match Game Boy light palette
- Change "Use this →" to "Use" in search results

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:48:51 +00:00
b1rdmania 71762c07f8 Switch to light Game Boy palette and fix search/results UX
- Flip from dark to light authentic Game Boy LCD palette
- Update both main app (index.html) and share page (play.html)
- Light background (#C8D8B0) with dark text (#1D2A1D)
- Keep results interactive after selecting a song
- Remove search locking so users can always search or pick different results

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:38:37 +00:00
b1rdmania b582446269 Remove volume slider and description text from player
Cleaner UI - metadata already tells the story.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 12:13:31 +00:00
b1rdmania 9d38a9a83a Fix pause/play audio muting + tidy share page UX
- Fix SynthesisEngine to not cleanup layers on stop, preventing
  audio from going silent after pause/resume
- Remove "Reimagined as classic game-console music" line
- Remove procedural playback meta block
- Move "Generate your own" CTA inside player card
- Update footer with Birdmania credit and Twitter link

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 11:00:27 +00:00
b1rdmania 6e61aef35a Redesign UI with Game Boy retro aesthetic
- Add classic LCD green color palette (#9BBC0F, #8BAC0F, #306230, #0F380F)
- Switch to Press Start 2P pixel font
- Add scanline overlay effect for CRT feel
- Style buttons with chunky 4px borders and inset shadows
- Remove all border-radius for pixel-perfect look
- Update hero, controls, results table, and player sections

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 10:49:04 +00:00