Commit graph

13 commits

Author SHA1 Message Date
gpulch
8a17bddbc3 feat: add MP3 320kbps download option with ffmpeg.wasm
Implements MP3 320kbps download functionality using ffmpeg.wasm for
industry-standard encoding with libmp3lame.

Features:
- New MP3_320 quality option in download settings UI
- ID3v2.3 metadata writing (title, artist, album, cover art, ISRC, etc.)
- Non-blocking encoding via Web Worker to keep UI responsive
- Proper UTF-16 with BOM text encoding for international characters
- Album artist fallback to track artist (mirrors FLAC/M4A behavior)
- Automatic format detection for downloaded audio
- Year validation to prevent writing NaN to ID3 tags

Implementation:
- mp3-encoder.js: Main encoder module with worker orchestration
- mp3-encoder.worker.js: FFmpeg Web Worker for async encoding
- id3-writer.js: ID3v2.3 tag writer with synchsafe size encoding
- Updates to api.js, metadata.js, utils.js for MP3 support
- Vite config excludes @ffmpeg packages from dep optimization

Technical details:
- Uses @ffmpeg/ffmpeg (libmp3lame 320kbps CBR, 44.1kHz)
- FFmpeg binary lazy-loaded from CDN (~25MB, cached)
- Encoding runs in separate thread (non-blocking UI)
- Proper error handling with distinct encoding vs network errors
- Memory-efficient: transfers ArrayBuffer with zero-copy

Dependencies:
- @ffmpeg/ffmpeg ^0.12.10
- @ffmpeg/util ^0.12.1
- Removed: package-lock.json (project uses bun.lock)

Closes maintainer request to use ffmpeg.wasm instead of lamejs.
2026-02-22 19:13:03 +01:00
binimum
01309a9a15
Change instances.json in favour of Workers which have live API uptime 2026-02-21 14:56:55 +00:00
Eduard Prigoana
304eb78d7b set butterchurn as the default visualizer 2026-02-11 09:49:59 +00:00
Julien Maille
1e19b3026c WIP: neutralino 2026-02-10 13:52:06 +01:00
JulienMaille
4c5b201b61 style: auto-fix linting issues 2026-02-10 12:20:16 +00:00
Julien Maille
2c165d7148 FIX: clean my own mess 2026-02-10 13:19:54 +01:00
Julien Maille
8f27000fcf add RPC to neutralino 2026-02-10 00:15:46 +01:00
BlackSigKill
5ffb14560b add server-side global auth for private selfhosted instance 2026-02-09 19:44:35 +01:00
Eduard Prigoana
ffe625ade8 fix build issues 2026-02-09 03:44:36 +00:00
JulienMaille
dc3ae80d9f style: auto-fix linting issues 2026-01-11 00:36:22 +01:00
Aji Priyo Wibowo
df2b77eb7d Feat: adding romaji convert feature on lyric 2026-01-08 15:49:54 +07:00
Julien Maille
97e076e2ee Fix: Cloudflare Pages 404 by making base path dynamic
- Default base to '/' for root deployments and local dev
- Use VITE_BASE_PATH env var in GitHub Actions for subdirectory hosting
- Update documentation and local dev URL
2026-01-07 21:51:21 +01:00
Julien Maille
21c947fd68 WIP: auto-deploy 2026-01-07 21:03:57 +01:00