Commit Graph

518 Commits

Author SHA1 Message Date
Claudio Ortolina f108e6f062 ML-174: add empty action to record set dropdown menu
Add RecordSets.empty_record_set/1 that bulk-deletes all items in a set via
a single DELETE query and returns the reloaded empty set. Add Empty button
with confirmation prompt to both index and show view dropdowns.
2026-05-14 17:15:06 +01:00
Claudio Ortolina 0784fc5e0c Fix page title for scrobble anything release page 2026-04-23 21:06:32 +01:00
Claudio Ortolina 1bd5707cb4 Fix page title for scrobble anything index and release group route 2026-04-23 21:06:12 +01:00
Claudio Ortolina c7c7e1fe4e Navigate from scrobble search to release-group page 2026-04-23 14:47:50 +01:00
Claudio Ortolina 0dcd6eab83 Replace /scrobble/:release_id with nested route 2026-04-23 14:39:26 +01:00
Claudio Ortolina d8041dc0dd Add /scrobble/:rg_id release-group page 2026-04-23 14:35:58 +01:00
Claudio Ortolina 4c48bda7b2 Refactor Release component to take release_id 2026-04-23 14:19:11 +01:00
Claudio Ortolina 0776700170 ML-142: Improve scrobble UI in the release component
- Sticky bar for easier track-based scrobbling
- Support setting custom finish time
2026-04-22 17:19:35 +01:00
Claudio Ortolina 29bfa20978 Remove unreachable error clauses in form save helpers 2026-04-21 12:46:35 +01:00
Claudio Ortolina 8d004d39cc Extract shared cart sidebar component 2026-04-20 15:57:44 +01:00
Claudio Ortolina 9851a5c6bf Use cart with barcode scanner 2026-04-20 15:46:40 +01:00
Claudio Ortolina eaece07193 Count formats in results 2026-04-20 15:15:29 +01:00
Claudio Ortolina c4ebe636ff Fix ML-143 review: security, worker, and test improvements
Closes ML-143 review findings:
- cast_id/1 uses Integer.parse instead of String.to_integer
- add_to_cart validates against server-side release_groups
- JS.push payload trimmed to {id, format} only
- Oban.insert_all result checked for partial failures
- handle_async success resets @importing? to false
- ImportFromMusicbrainzReleaseGroup gets unique constraint
- Record.parse_datetime/1 made public with safe match
- Workers delegate to Record.parse_datetime/1
- Test coverage: change_format, clear_cart, wishlist single import
2026-04-20 15:15:29 +01:00
Claudio Ortolina 3f5ce060b1 Implement ML-143: Cart-style multi record import
Closes ML-143.
2026-04-20 15:15:29 +01:00
Claudio Ortolina 405235e2b3 Add picker to create scrobble rules on the fly 2026-04-15 10:53:58 +01:00
Claudio Ortolina 8db324d74a Extract shared badge/dropdown to ScrobbleComponents 2026-04-14 16:50:40 +01:00
Claudio Ortolina 888b5a68e6 Update all callers to use matching_records
Migrate StatsLive.Index, ScrobbledTracksLive.Index, and TopAlbums to
consume matching_records list instead of scalar record IDs. Remove the
derive_legacy_record_ids bridge function. TopAlbums now uses a dropdown
for multi-record badges with play count display.
2026-04-14 16:14:59 +01:00
Claudio Ortolina 9ef918a621 Update record_status_badges with matching_records and dropdown 2026-04-14 16:10:57 +01:00
Claudio Ortolina e43bccb9bc Extract shared index logic into LiveHelpers.IndexActions
Closes #150
2026-04-13 23:09:22 +01:00
Claudio Ortolina e0ad83a774 Update gettext translations for collection chat 2026-04-13 10:17:03 +01:00
Claudio Ortolina a509248625 Wire up Chat component in CollectionLive.Index 2026-04-13 10:12:49 +01:00
Claudio Ortolina 55be2a4bab Add :collection to chat entity enum 2026-04-13 10:04:37 +01:00
Claudio Ortolina 501ff18733 Can copy a chat message 2026-04-05 14:35:03 +01:00
Claudio Ortolina b9be62a500 Async barcode scan batch import for 2+ new records
When barcode scan results contain at least 2 new records,
enqueue individual Oban jobs instead of importing synchronously.
Wishlisted/collected/not_found results still process synchronously.
2026-04-04 10:20:50 +01:00
Claudio Ortolina 98c2f85258 Use a tooltip for release status 2026-04-02 11:57:41 +01:00
Claudio Ortolina 3f7da55e50 Add a release tracked badge to records in lists 2026-04-02 11:52:07 +01:00
Claudio Ortolina 6f4600192f Update sqlean extensions 0.28.1 => 0.28.2 2026-03-31 08:04:32 +01:00
Claudio Ortolina 45fd414f1b Use friendly error messages in Last.fm callback
Closes #145
2026-03-30 14:42:20 +01:00
Claudio Ortolina b0018db89d Improve error handling for color extraction
Includes a around embedding generation, which was happening twice (the
first call was redundant as record embeddings are always regenerated
after their parent artist embeddings are regenerated).

Closes #144.
2026-03-30 14:29:44 +01:00
Claudio Ortolina 53178b373b Add barcode scan quick action 2026-03-30 13:26:04 +01:00
Claudio Ortolina 19b7091358 Extend last.fm token diagnostics for maintenance page 2026-03-30 10:55:20 +01:00
Claudio Ortolina 8f8eb0a656 Enable quick actions from universal search 2026-03-29 23:07:53 +01:00
Claudio Ortolina 027f9d1a2d Can reset Last.fm account from maintenance page 2026-03-29 09:12:53 +01:00
Claudio Ortolina 8996ca0eeb Add empty states for collection and wishlist 2026-03-29 08:53:33 +01:00
Claudio Ortolina 2e3f44495f Add record button when no latest record is present 2026-03-29 08:48:19 +01:00
Claudio Ortolina d45aff21ec Rename refresh_lastfm_feed to refresh_scrobbles 2026-03-28 08:59:22 +00:00
Claudio Ortolina a5041d683a Update oban to 2.21.0 2026-03-26 09:37:09 +00:00
Claudio Ortolina c9283d7f28 Compute artist play count from db 2026-03-24 15:07:50 +00:00
Claudio Ortolina d5be6e6182 Remove on tour tracking functionality (source unreliable) 2026-03-24 15:01:16 +00:00
Claudio Ortolina 35f2654934 Revert "Replace logo/icon"
This reverts commit a3eb5719b7.
2026-03-23 17:05:52 +00:00
Claudio Ortolina a3eb5719b7 Replace logo/icon 2026-03-23 14:40:35 +00:00
Claudio Ortolina 2de879b9ec Remove unused Phoenix logo 2026-03-23 14:13:57 +00:00
Claudio Ortolina ca228db598 Extract RecordHelpers
Closes #123
2026-03-22 09:21:00 +00:00
Claudio Ortolina af151c955e Rearrange buttons in artist show page 2026-03-21 21:49:58 +00:00
Claudio Ortolina b85ce0831c Move filters/selectors to the side of the title 2026-03-21 18:26:39 +00:00
Claudio Ortolina 5a27fc46ac Add Top 20 Release Years widget 2026-03-21 09:02:25 +00:00
Claudio Ortolina 97f0c5bfc3 Improve scrobbled tracks/album metadata tooltips design 2026-03-18 18:31:55 +00:00
Claudio Ortolina 5afb5f9533 Inline similar records in collection show view 2026-03-18 07:30:45 +00:00
Claudio Ortolina 5eb7ccd837 Fix overlapping buttons in chat 2026-03-17 14:10:31 +00:00
Claudio Ortolina 8fd8dde73d Persist chat history 2026-03-17 13:50:01 +00:00