zarzet
5237aed25e
feat(download): add automatic lossy conversion
2026-08-11 15:19:45 +07:00
zarzet
a59c749089
fix(download): preserve SAF and defer background starts
2026-08-09 05:23:47 +07:00
zarzet
2612da81c3
fix(db): prevent concurrent startup locks
2026-08-08 00:01:00 +07:00
zarzet
7f4ace6d1b
feat(metadata): show current cover dimensions
2026-08-01 18:34:25 +07:00
zarzet
d4b617f49a
feat(metadata): add embedded cover resize options
2026-08-01 18:24:27 +07:00
zarzet
19753ca005
fix(database): make playback session migration idempotent
2026-08-01 17:39:45 +07:00
zarzet
b3bbe93c1e
fix(metadata): preserve WAV and AIFF tags
2026-08-01 15:33:20 +07:00
zarzet
5228b0030b
fix(player): restore lyrics after cold start
2026-07-30 13:48:05 +07:00
zarzet
04a8700a65
fix(player): restore playback position reliably
2026-07-29 21:03:11 +07:00
zarzet
24b9d7ba80
fix(player): preserve audio quality across track changes
2026-07-29 19:29:19 +07:00
zarzet
dbdbf0ca41
refactor(ui): standardize modal sheets
2026-07-29 17:10:42 +07:00
zarzet
1e973d5ecb
style(dart): apply repository formatting
2026-07-29 14:14:42 +07:00
zarzet
e7fbaf7b75
fix(download): suffix only colliding quality variants
2026-07-29 02:43:35 +07:00
zarzet
fb538e9517
feat(metadata): choose extension for online autofill
2026-07-28 15:18:10 +07:00
zarzet
7bf6f32802
fix(extensions): serialize verification callbacks
2026-07-28 14:09:06 +07:00
zarzet
7f277f7a88
fix(library): backfill local audio bitrates
2026-07-28 12:51:28 +07:00
zarzet
80d9d87870
perf(metadata): avoid SAF copies during quality probes
2026-07-28 01:50:41 +07:00
zarzet
26570792a9
fix(library): persist lossless bitrate metadata
2026-07-28 00:50:20 +07:00
zarzet
52b1147275
feat(library): add missing-ISRC metadata filter
2026-07-27 01:15:51 +07:00
zarzet
d0dca1a101
refactor(library): split row models and queue union SQL into part files
2026-07-27 00:32:42 +07:00
zarzet
cbee637501
perf(history): coalesce index bumps and batch per-row exists lookups
2026-07-26 22:25:04 +07:00
zarzet
97b87472fe
feat(metadata): manual MusicBrainz lookup in the tag editor
...
The Go MusicBrainz genre and album-artist ISRC lookups only ran
automatically at download time. The tag editor's auto-fill section
gains a Fetch from MusicBrainz button that bridges both exports in one
channel call (sparing the 1 req/s budget) and fills the fields as
editable suggestions; nothing is written until Save.
2026-07-26 19:21:32 +07:00
zarzet
8d077ae2da
feat(player): add repeat off/all/one modes
...
The internal player handles setRepeatMode: repeat-one replays the
current track, repeat-all wraps the queue (and keeps a single-track
shuffle queue alive). The mode is broadcast in playback state,
persisted with the playback session, and toggleable from the Now
Playing transport row and the up-next sheet; a small shuffle toggle
joins the transport row for symmetry.
2026-07-26 19:00:50 +07:00
zarzet
cb8064a317
refactor(dart): consolidate duplicated lookup, filename, and search-provider helpers
2026-07-26 18:52:26 +07:00
zarzet
50c8f0e454
refactor(ffmpeg): remove dead conversion cluster and speculative decryption fields
2026-07-26 18:44:08 +07:00
zarzet
97758908ca
refactor(library): drop unwired DB pagination providers
2026-07-26 18:44:06 +07:00
zarzet
04a71d0211
refactor: remove orphaned bridge, database, and queue helpers
2026-07-26 18:43:53 +07:00
zarzet
901fa34d80
refactor(bridge): remove dead cross-layer platform bridge methods
2026-07-26 18:32:40 +07:00
zarzet
c497449549
feat(library): M3U8 playlist import and export
...
The playlist import picker now also accepts .m3u/.m3u8; EXTINF entries
feed the same Deezer enrichment pipeline as CSV. Collection screens
(wishlist, loved, playlists) gain an export action that resolves each
track to its local file, writes SAF entries relative to the download
tree root so external players and DAP copies resolve them, skips
tracks without a file, and shares the .m3u8 via the system sheet.
2026-07-26 17:56:38 +07:00
zarzet
54dcdb92dd
feat(player): restore playback session after process death
...
Queue, current index, position, and shuffle flag are snapshotted to a
new app_state playback_session table on pause, track change, and queue
mutation (never on position ticks). On launch the session is restored
paused into the mini player; the first play seeks to the saved
position. Plain file paths that no longer exist are dropped, an
explicit stop or mini-player dismiss clears the snapshot, and the
installation-restore guard wipes it alongside the download queue.
2026-07-26 17:45:50 +07:00
zarzet
20081b14bd
refactor(dart): extract queue search and media policies
2026-07-26 01:13:52 +07:00
zarzet
1cfda41ef2
feat(audio): use VHQ settings for SoXR resampling
2026-07-25 15:58:42 +07:00
zarzet
19787ed461
fix(config): refresh announcements and remote content
2026-07-25 15:43:25 +07:00
zarzet
eabafecaeb
fix(navigation): open download queue from snackbar actions
2026-07-24 22:19:03 +07:00
zarzet
89dcef8ffd
test(native-worker): add Android regression gates
2026-07-24 12:16:41 +07:00
zarzet
c35b11a155
fix(library): preserve downloaded file records
2026-07-23 17:40:09 +07:00
zarzet
cdbb0d6bd7
fix(notifications): restore verification alert sound
2026-07-23 13:23:54 +07:00
zarzet
c9114fef01
fix(android): sanitize restored installation state
2026-07-23 10:39:31 +07:00
zarzet
f0988070bf
fix(convert): simplify output names and harden writes
2026-07-22 15:56:07 +07:00
zarzet
87376ee73b
fix(metadata): resolve audio format and local artwork
2026-07-22 15:55:30 +07:00
zarzet
648f36244b
perf(go): add runtime metrics and benchmarks
2026-07-16 10:53:26 +07:00
zarzet
ef89352d09
perf(memory): drop disposable caches on pressure
2026-07-16 10:32:33 +07:00
zarzet
b69f67a786
fix(download): name variants by measured quality
2026-07-16 09:20:35 +07:00
zarzet
0961c09a6d
feat(download): preserve quality variants
2026-07-16 08:45:01 +07:00
zarzet
491998e5c5
feat(convert): optionally retain original files
2026-07-16 08:27:24 +07:00
zarzet
d3d34aaec1
perf(cache): defer cover cache maintenance
2026-07-16 08:09:56 +07:00
zarzet
5763a087c9
perf(queue): persist and index incremental updates
2026-07-16 08:09:28 +07:00
zarzet
efa3ff3d66
perf(playback): batch local playlist resolution
2026-07-16 08:09:12 +07:00
zarzet
10d59bc2b6
perf(library): trim startup lookup index
2026-07-15 22:17:17 +07:00
zarzet
79bb3214ae
perf(library): streamline search and grouped counts
2026-07-15 22:16:10 +07:00