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
d03e288353
Make sure top_by_period components have a proper ID
2026-04-23 16:41:18 +01:00
Claudio Ortolina
62586c9ae5
Restore flex context for sheet selection bar
2026-04-23 15:12:58 +01:00
Claudio Ortolina
ca9cc7687c
Hide release-actions dropdown when empty
2026-04-23 15:06:45 +01:00
Claudio Ortolina
779708e62e
Hide print tracklist on scrobble release page
2026-04-23 15:05:05 +01:00
Claudio Ortolina
72818bfaf2
Validate release-group shape before parsing
2026-04-23 15:00:49 +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
0d1f580379
Refactor TracklistPdf to take release alone
2026-04-23 07:48:53 +01:00
Claudio Ortolina
8631b97b4d
Add joinphrase to Release.Artist; parse from MB
2026-04-23 07:42:06 +01:00
Claudio Ortolina
f7f38d580e
Enable unaliased modules ex_slop check
2026-04-22 20:37:09 +01:00
Claudio Ortolina
8179b4317c
ML-142: forgot to support timezones
2026-04-22 18:14:14 +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
016c4691be
Canonicalize tailwind classes
2026-04-21 14:22:41 +01:00
Claudio Ortolina
dd1d99a145
Fix store_embedding/3 spec to reflect float list input
2026-04-21 12:57:28 +01:00
Claudio Ortolina
30c0a961e9
Stringify format atom in get_release_status query
2026-04-21 12:57:09 +01:00
Claudio Ortolina
87522a6551
Fully qualify nested type refs in MusicBrainz.Release
2026-04-21 12:48:55 +01:00
Claudio Ortolina
c7749924fe
Spec release component private helpers
2026-04-21 12:48:36 +01:00
Claudio Ortolina
563135fcea
Remove dead nil fallback on play_count
2026-04-21 12:48:17 +01:00
Claudio Ortolina
9840690af1
Fix nil-index crash in move_record_in_set
2026-04-21 12:47:57 +01:00
Claudio Ortolina
53348a328e
Relax ScrobbleRule.t to allow unpersisted structs
2026-04-21 12:47:38 +01:00
Claudio Ortolina
87d2a8f186
Fix Maintenance vacuum/optimize return specs
2026-04-21 12:47:18 +01:00
Claudio Ortolina
40ac5bdc99
Widen Transform.new/1 spec to accept keyword list
2026-04-21 12:47:00 +01:00
Claudio Ortolina
29bfa20978
Remove unreachable error clauses in form save helpers
2026-04-21 12:46:35 +01:00
Claudio Ortolina
dc71b2ff90
Fix badge align issue in barcode scan cart
2026-04-20 16:04:20 +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
d47df899b7
Improve layout of add record form
...
Remove results count (I never looked at it)
2026-04-20 15:31:14 +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
cf872cfed0
Secondary sort for artist albums in collection (purchase date desc)
2026-04-19 21:36:07 +01:00
Claudio Ortolina
7767933742
Give more space above the universal search input
2026-04-19 21:29:40 +01:00
Claudio Ortolina
da12d5d693
Handle ArtistLive.Form saved message in show view
2026-04-19 08:59:04 +01:00
Claudio Ortolina
45236e4b10
Convert ErrorIgnorer tests to doctests
2026-04-19 07:50:39 +01:00
Claudio Ortolina
fb1b60373d
Fix max width issue for release selector on mobile
2026-04-18 10:57:14 +01:00
Claudio Ortolina
f6bcf3d970
Partial fix for barcode scan camera persisting after disconnection
2026-04-18 10:50:41 +01:00
Claudio Ortolina
b37162fce3
Fix colors of mixed badges
2026-04-17 22:30:27 +01:00
Claudio Ortolina
94143010c0
Fix doubly-wrapped safe tuple in artist bio render
2026-04-17 16:00:22 +01:00
Claudio Ortolina
e6a8488137
Use Notes.change_note/2 instead of Note.changeset/2 in notes component
...
Closes #171
2026-04-17 12:56:08 +01:00
Claudio Ortolina
bbe1722c9f
Handle unencodable structs in QueryReporter params
2026-04-17 07:10:45 +01:00
Claudio Ortolina
fbc548e903
Explicitly trust Wikipedia's HTML
...
Closes #168
2026-04-16 23:14:00 +01:00
Claudio Ortolina
464e627a63
Remove unnecessary padding from detail views
2026-04-16 22:54:39 +01:00
Claudio Ortolina
6b35b5cde5
Trigger search on Enter in search inputs inside forms
2026-04-16 15:15:47 +01:00
Claudio Ortolina
58c60193f2
Use pipe
2026-04-16 10:38:08 +01:00
Claudio Ortolina
840547c509
Speed up structured modal animation
2026-04-16 09:31:30 +01:00
Claudio Ortolina
fea1231304
Replace refresh scrobble list icon
...
Makes it for a better animation
2026-04-15 22:52:28 +01:00