zarzet
7557ffbf85
fix(metadata): preserve explicit advisory across conversions
2026-08-22 23:24:56 +07:00
zarzet
19591bdf19
feat(metadata): show explicit badges in track titles
2026-08-22 23:08:40 +07:00
zarzet
75e1cf17b8
fix(home): clear recent activity permanently
2026-08-22 22:45:06 +07:00
zarzet
60624436a6
feat(library): support multiple storage folders
2026-08-22 11:15:42 +07:00
zarzet
89d39c4074
fix(metadata): show readable SAF file locations
2026-08-21 01:02:02 +07:00
zarzet
ea63291db8
refactor(metadata): move cover resolution to extensions
2026-08-19 13:12:29 +07:00
zarzet
bdb10a2ae6
chore(deps): update Flutter and Go dependencies
2026-08-19 11:59:28 +07:00
zarzet
a7423b7f89
feat(metadata): edit release tags and render UPC barcodes
2026-08-18 19:29:12 +07:00
zarzet
290923e88f
feat(tagging): write release identity tags
2026-08-18 19:04:26 +07:00
zarzet
48883d51d4
feat(extensions): preserve provider metadata
2026-08-18 12:28:35 +07:00
zarzet
7fc27e8314
perf(library): stream scans and optimize queue queries
2026-08-18 11:03:05 +07:00
zarzet
2e115308b7
feat(filename): add provider traceability tags
2026-08-17 20:51:27 +07:00
zarzet
6dbca64a80
perf(history): batch SAF orphan inspection #511
2026-08-11 16:50:35 +07:00
zarzet
bec9e33c94
feat(metadata): review batch tag enrichment #511
2026-08-11 16:40:06 +07:00
zarzet
28538395c2
fix(metadata): match by primary artist and review results #511
2026-08-11 16:20:03 +07:00
zarzet
e750c195ca
feat(search): save max-quality cover on long press #511
2026-08-11 16:01:39 +07:00
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