Commit graph

702 commits

Author SHA1 Message Date
Samidy
38dd6f8220 Merge branch 'main' of github.com:monochrome-music/monochrome 2026-03-07 08:02:56 +03:00
Samidy
c074b48b0a shitty prob not working implementation for auto-updates in the desktop app 2026-03-07 08:02:52 +03:00
SamidyFR
1da88ac568 style: auto-fix linting issues 2026-03-07 02:50:41 +00:00
Samidy
db1d607603 Merge branch 'main' of github.com:monochrome-music/monochrome 2026-03-07 05:50:19 +03:00
Samidy
0b2fe88731 feat(keyboard): command palette 2026-03-07 05:50:15 +03:00
SamidyFR
6865e45ff7 style: auto-fix linting issues 2026-03-06 23:57:54 +00:00
Samidy
135e5fd0af
lets try that again 2026-03-07 02:57:28 +03:00
SamidyFR
67eb5075d4 style: auto-fix linting issues 2026-03-06 23:42:53 +00:00
Samidy
e15ca352a0
fix(auth): ATTEMPTED fix for google oauth (lowk havent tested this) 2026-03-07 02:42:30 +03:00
SamidyFR
60d61f74d2 style: auto-fix linting issues 2026-03-06 21:01:28 +00:00
Samidy
cddf318d19
Merge pull request #279 from TimurCravtov/feat/local-files-duration
Feat/local files duration
2026-03-07 00:01:02 +03:00
edideaur
0de436a693 fix dockerfile and album cover clicks 2026-03-06 20:53:35 +00:00
Timur Cravtov
4e174297ca fix: move mvhd tag to run before udta guard 2026-03-06 22:40:05 +02:00
Timur Cravtov
6545b31388 feat(library): estimate flac and mp4 duration 2026-03-06 22:19:58 +02:00
Timur Cravtov
8c7a7547c9 feat(library): estimate mp3 files duration 2026-03-06 22:19:40 +02:00
edideaur
b88e55efb3 fix copilot findings in kawarp.js and themeStore.js cause they were bugging me 2026-03-06 09:45:05 +00:00
edideaur
f6bc60bd5e style: auto-fix linting issues 2026-03-06 08:57:13 +00:00
edideaur
c986921505 bun install in dockerfile and reload page when visualizer switching to avoid issues 2026-03-06 08:56:36 +00:00
edideaur
828e192362 fix visualizers 2026-03-06 08:43:53 +00:00
edideaur
55854020b6
Merge pull request #275 from boidushya/main
feat: add kawarp as visualizer
2026-03-06 09:58:46 +02:00
Samidy
3772295a07 feat(home): explore page 2026-03-06 08:58:24 +03:00
Samidy
73878b421d fix(community themes): fix not being able to upload community themes 2026-03-06 03:30:50 +03:00
Samidy
e013ad0de5 Merge branch 'main' of github.com:monochrome-music/monochrome 2026-03-06 02:14:47 +03:00
Samidy
ad7d088e5c refactor(auth): migrate authentication from Firebase to (self-hosted) Appwrite 2026-03-06 02:14:43 +03:00
Boidushya
a2b8ce3cdf
feat: add kawarp as visualizer 2026-03-06 04:25:56 +05:30
edideaur
14cf949381 fix ddosing lmao 2026-03-05 18:22:54 +00:00
edideaur
8eefb1b79b open in harmony + context menu on album pages 2026-03-05 18:17:53 +00:00
edideaur
03ea16ac04 fix settings > system issue 2026-03-05 17:32:53 +00:00
edideaur
f967d29c52 donate and about page changes 2026-03-03 20:47:49 +00:00
edideaur
b29160385a keybind rebinding 2026-03-03 12:20:42 +00:00
edidealt
9054016ff2 settings import + export 2026-03-02 23:32:51 +00:00
edidealt
be67f79968
Merge pull request #266 from DanTheMan827/more-metadata
feat(downloads): add more metadata
2026-03-03 00:24:44 +02:00
Daniel
8035dd3873
feat(downloads): add BPM tag to Vorbis comments and MP4 metadata
- Added 'TEMPO' tag to Vorbis comments if BPM is available
- Added 'tmpo' tag to MP4 metadata if BPM is available
2026-03-02 21:38:16 +00:00
Daniel
82ca593894
fix(downloads): fix malformed m4a user atoms 2026-03-02 21:14:15 +00:00
edidealt
69652ba085 escaping 2026-03-02 21:14:14 +00:00
edidealt
3de1221c20 navigation 2026-03-02 21:04:04 +00:00
SamidyFR
0999fefda4 style: auto-fix linting issues 2026-03-02 20:42:59 +00:00
Samidy
103cce6338 Merge branch 'main' of github.com:monochrome-music/monochrome 2026-03-02 23:42:14 +03:00
Samidy
e983030c23 feat(community themes): edit themes after publishing theme 2026-03-02 23:42:09 +03:00
edidealt
ebccec5903 FULLY hide show ui button 2026-03-02 20:35:45 +00:00
edidealt
5e437d4019 fullscreen mode settings 2026-03-02 20:14:25 +00:00
Daniel
6c09793276
feat(downloads): add XID ISRC tag to MP4 metadata
- Added 'xid ' tag for ISRC in createMp4MetadataAtoms function
2026-03-02 19:13:18 +00:00
Daniel
c430a5bd7e
fix(downloads): fix malformed m4a replaygain metadata 2026-03-02 17:59:05 +00:00
edideaur
b55734933d
Merge pull request #263 from DanTheMan827/m4a-replaygain
feat(downloads): write replaygain to m4a tracks
2026-03-02 09:55:42 +02:00
SamidyFR
0735d2a202 style: auto-fix linting issues 2026-03-02 04:14:10 +00:00
Samidy
46c565e437 Merge branch 'main' of github.com:monochrome-music/monochrome 2026-03-02 07:13:46 +03:00
Samidy
5eabfc13e8 donate button shit 2026-03-02 07:13:41 +03:00
Samidy
23fdf10f86 fix(import): prevent incorrect artist matches and missing tracks 2026-03-02 06:47:50 +03:00
Daniel
2b2f61d1ee
feat(downloads): write replaygain to m4a tracks 2026-03-01 23:57:33 +00:00
edidealt
3a0edc3066 fix mpris covers 2026-03-01 11:48:39 +00:00
edidealt
2d8d93cbfa fix for firefox? 2026-03-01 11:29:40 +00:00
edidealt
5cac487c0f pitch shit 2026-03-01 10:52:03 +00:00
edidealt
a885e3d05a style: auto-fix linting issues 2026-03-01 10:23:30 +00:00
edidealt
eb61e87980
Merge pull request #260 from itsgareth/gareth/fix-ios-lockscreen-controls
feat: fix ios lockscreen controls
2026-03-01 12:23:08 +02:00
edidealt
de3e125bac
Merge pull request #261 from ericdaddario02/feature/replay-gain-flac
feat(downloads): save replay gain tags to FLAC metadata
2026-03-01 12:15:00 +02:00
Eric D'Addario
39206f4128 feat(downloads): save replay gain tags to FLAC metadata 2026-02-28 16:03:45 -05:00
Gareth Dawson
13ac84880b fix comment indentation 2026-02-28 19:05:47 +00:00
Gareth Dawson
523aa2d710 feat: fix ios lockscreen controls 2026-02-28 18:58:50 +00:00
Daniel
120073aea4
fix(downloads): write full track title to metadata 2026-02-28 16:55:37 +00:00
binimum
fb5fe05414
Remux instead of transcode 2026-02-28 11:59:27 +00:00
edidealt
e8ad19b2d7
Merge pull request #251 from DanTheMan827/lossless-container-option
feat(downloads): add lossless container option
2026-02-28 13:19:07 +02:00
edidealt
72eae8f411 style: auto-fix linting issues 2026-02-28 11:18:26 +00:00
Daniel
dcf8563254
feat(downloads): add explicit content rating support
- Write ITUNESADVISORY for FLAC
- Write rtng for M4A
- Read the corresponding values from local media
2026-02-28 02:49:13 +00:00
Samidy
fc28f9faeb
Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-28 02:00:58 +03:00
Samidy
9ff62c52d4
Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-28 02:00:37 +03:00
Eduard Prigoana
fa4da493e6 UI hiding 2026-02-27 22:57:11 +00:00
Eduard Prigoana
4b5dc5865e consistent playback speed 2026-02-27 22:05:45 +00:00
Daniel
07422debb9
feat(downloads): add lossless container option
This uses ffmpeg to ensure that the downloaded lossless audio is in the desired container format.
2026-02-27 21:23:33 +00:00
Samidy
2f7f0e61dc Merge branch 'main' of github.com:monochrome-music/monochrome 2026-02-27 23:36:22 +03:00
Samidy
ca173c2d58 fix(animated-covers): edis a fat worm 2026-02-27 23:36:19 +03:00
Samidy
6dbcd17e41
Merge pull request #250 from DanTheMan827/mp3-bulk-download-fix
fix(downloads): handle MP3_320 format in bulk downloads
2026-02-27 23:36:06 +03:00
Daniel
353ced831b
fix(downloads): handle MP3_320 format in bulk downloads 2026-02-27 20:32:19 +00:00
Daniel
52ad38c080
refactor(downloads): abstract ffmpeg worker logic
This refactors the ffmpeg worker logic and abstracts it into its own script file for easier use elsewhere.
2026-02-27 20:24:20 +00:00
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
7d4294f906 my free trial ran out 2026-02-24 19:58:19 +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
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
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
EduardPrigoanaAlt
6b55fd4c7a style: auto-fix linting issues 2026-02-22 15:47:05 +00: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
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
Sietse
1f13e34249
fix(player): Uniform shuffle
Replaces the current naive solution with Fisher-Yates
2026-02-21 20:53:42 +01:00
binimum
1188a2dcce style: auto-fix linting issues 2026-02-21 14:57:44 +00:00
binimum
01309a9a15
Change instances.json in favour of Workers which have live API uptime 2026-02-21 14:56:55 +00:00
Julien Maille
acf64cbc17 fix: prevent home page double refresh and improve artist name extraction in album cards 2026-02-21 14:17:46 +01:00