Commit graph

972 commits

Author SHA1 Message Date
SamidyFR
4aaffd2c22 style: auto-fix linting issues 2026-02-26 23:19:38 +00:00
Samidy
1c1d202e91
Merge pull request #235 from gpulch/feat/mp3-download-ffmpeg-wasm
feat: add ffmpeg.wasm + MP3 320kbps download option
2026-02-27 02:19:13 +03:00
Samidy
2621e44adf
Merge pull request #245 from h1dd3n3y3/main
minor documentation addition
2026-02-26 19:30:10 +03:00
david011011
877855888f minor documentation addition 2026-02-26 18:27:32 +02:00
Samidy
7970df4e41
Merge pull request #244 from h1dd3n3y3/main
Add Tailscale documentation and minor comment changes
2026-02-26 19:14:26 +03:00
david011011
ec89b62c67 1. add tailscale documentation
2. beautify some comments in vite.config.js
2026-02-26 17:51:02 +02:00
Eduard Prigoana
be11c3af43
Merge pull request #240 from h1dd3n3y3/main
Python3 Installation and Tailscale Support
2026-02-26 15:35:32 +02:00
SamidyFR
0047c723f3 style: auto-fix linting issues 2026-02-25 23:14:12 +00:00
Samidy
41e7819e26 holy AI (ima kill u edideaur) 2026-02-26 02:13:44 +03:00
david011011
5d1f90fb46 1. Add python3 installation to Dockerfile
2. Add tailscale optional support
2026-02-25 10:57:47 +02:00
Samidy
7d4294f906 my free trial ran out 2026-02-24 19:58:19 +03:00
Samidy
d2a489c920
Merge pull request #238 from monochrome-music/sure-this-works
update README.md for new contribute link (making this PR to test my template
2026-02-24 19:53:41 +03:00
Samidy
f5a6779853 PR template works? 2026-02-24 19:49:05 +03:00
Samidy
9f30a667bc make sure people actually READDDD 2026-02-24 19:40:27 +03:00
Samidy
4457895885 Merge branch 'main' of github.com:monochrome-music/monochrome 2026-02-24 19:33:40 +03:00
Samidy
a60e6f6313 chud 2026-02-24 19:33:36 +03:00
SamidyFR
dc11e0dde9 style: auto-fix linting issues 2026-02-24 16:31:26 +00:00
Samidy
fca3ea5841 add new section in contributing guide 2026-02-24 19:30:43 +03:00
Eduard Prigoana
424ee12d04 feat: animated covers 2026-02-24 12:43:36 +00:00
SamidyFR
700645919c style: auto-fix linting issues 2026-02-23 22:58:08 +00:00
Samidy
38434f5419 Merge branch 'main' of github.com:monochrome-music/monochrome 2026-02-24 01:57:43 +03:00
Samidy
29b4899089 feat(themes): Community Themes 2026-02-24 01:57:17 +03:00
Eduard Prigoana
895cc20d26 whoops 2026-02-23 17:50:35 +00:00
Eduard Prigoana
49c054e64a userplaylists in editor picks + refresh button for playlist suggestions 2026-02-23 17:41:45 +00:00
gpulch
cde7080052 fix: address code review feedback
Inline fixes:
- Remove TDRC frame from ID3 writer (ID3v2.3 uses TYER only, not TDRC)
- Add try/finally cleanup in worker to prevent VFS leaks on errors
- Fix Blob creation to use Uint8Array directly (avoid extra bytes)
- Replace loadFFmpeg race guard with promise singleton pattern
- Add -map_metadata -1 to strip source metadata (prevent duplicate ID3)

Error handling improvements:
- Create MP3EncodingError class with code property for reliable detection
- Update api.js to use instanceof check instead of string matching
- Pass AbortSignal to encodeToMp3 for proper cancellation support
- Remove error re-wrapping in mp3-encoder.js (preserve original errors)

Technical details:
- Promise singleton ensures FFmpeg loads once even with concurrent calls
- AbortSignal listener properly cleaned up on success/error/abort
- Virtual FS cleanup in finally block prevents file leaks
- MP3EncodingError.code = 'MP3_ENCODING_FAILED' for robust detection
2026-02-23 10:49:05 +01:00
Eduard Prigoana
562e8aa6b2 add goat to editors picks 2026-02-22 21:34:31 +00:00
Eduard Prigoana
fe6b1e9fad favourites importing 2026-02-22 21:31:53 +00:00
Julien Maille
1aaf2dfd46 Fix API instances settings list rendering for object entries 2026-02-22 21:26:59 +01:00
Eduard Prigoana
7c4e1ec6e7
Update editors-picks.json 2026-02-22 20:51:48 +02:00
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
Eduard Prigoana
ac8957ada3
Update README.md 2026-02-22 19:27:28 +02:00
Eduard Prigoana
e941d3ebfa
change max size to 100mb as thats the maximum allowed by CF workers 2026-02-22 18:21:55 +02:00
EduardPrigoanaAlt
6b55fd4c7a style: auto-fix linting issues 2026-02-22 15:47:05 +00:00
Eduard Prigoana
4f35e319b7
Merge pull request #230 from GooglyBlox/feat/full-artist-metadata
feat(metadata): Add all artists to metadata
2026-02-22 17:46:45 +02:00
GooglyBlox
747f50f564 feat: add all artists to metadata 2026-02-21 18:31:43 -08:00
Julien Maille
c1973e81ff Shuffle full artist discography instead of artist radio 2026-02-22 00:57:42 +01:00
JulienMaille
651f4282e5 style: auto-fix linting issues 2026-02-21 23:33:29 +00:00
Julien Maille
bf346f756e Add multi-disc ZIP folders and fix playlist extension paths 2026-02-22 00:32:45 +01:00
Julien Maille
400197aabc Write disc number metadata for FLAC and M4A downloads 2026-02-21 23:52:33 +01:00
Julien Maille
91ecca534b Fix mobile scroll container to restore browser URL bar collapse 2026-02-21 23:51:27 +01:00
Julien Maille
888703f18b fix: resolve persistent labels 2026-02-21 23:42:45 +01:00
Julien Maille
73b9867d4b FIX: tooltip and css issues 2026-02-21 23:33:30 +01:00
Samidy
77d99245c8 feat(artists): artists socials 2026-02-22 01:04:02 +03:00
SamidyFR
87a8368fc3 style: auto-fix linting issues 2026-02-21 19:58:57 +00:00
Samidy
8cd9f782ba
Merge pull request #228 from Sietse2202/patch-1
fix(player): Uniform shuffle
2026-02-21 22:58:37 +03:00
Sietse
1f13e34249
fix(player): Uniform shuffle
Replaces the current naive solution with Fisher-Yates
2026-02-21 20:53:42 +01:00
EduardPrigoanaAlt
9e55593d79 style: auto-fix linting issues 2026-02-21 17:23:40 +00:00
Eduard Prigoana
19b5cc5b1d
session cookies for chunked uploads 2026-02-21 19:23:18 +02:00
EduardPrigoanaAlt
bb427facf4 style: auto-fix linting issues 2026-02-21 17:19:46 +00:00
Eduard Prigoana
545fa80734
Update upload.js to allow chunked uploads 2026-02-21 19:19:21 +02:00