Claudio Ortolina
0ccaf46ebd
Standardize fetch_* to refresh_* in Artists context
...
Closes #132
2026-03-25 11:52:43 +00:00
Claudio Ortolina
0f9a2d28cb
Add test coverage for ScrobbleActivity
...
Closes #127
2026-03-23 07:45:49 +00:00
Claudio Ortolina
b18a544156
Add test coverage for BarcodeScan context
...
Closes #126
2026-03-22 07:56:44 +00:00
Claudio Ortolina
59ce580b99
Can filter records by release year
2026-03-21 09:21:21 +00:00
Claudio Ortolina
5a27fc46ac
Add Top 20 Release Years widget
2026-03-21 09:02:25 +00:00
Claudio Ortolina
ccc929e939
Deduplicate tracks in ListeningStats queries
...
When multiple records share MusicBrainz release IDs, the left joins in
ListeningStats fan out — producing duplicate rows per scrobbled track.
Fix by grouping release subqueries on release_id with MIN(record_id)
before joining, so each release maps to exactly one record.
2026-03-20 12:48:40 +00:00
Claudio Ortolina
715a1e1f69
Consolidate handling of artist joinphrases
2026-03-19 15:09:34 +00:00
Claudio Ortolina
1001610472
First pass at having a chat count in the entity pages
2026-03-19 12:28:58 +00:00
Claudio Ortolina
63c95ff1e2
Move all chat related code under chats
2026-03-17 14:30:24 +00:00
Claudio Ortolina
8fd8dde73d
Persist chat history
2026-03-17 13:50:01 +00:00
Claudio Ortolina
f1e3b22f91
Make online store templates searchable
2026-03-16 11:56:39 +00:00
Claudio Ortolina
5752d1fe27
Add tests for scrobble rules search/sort
2026-03-16 08:06:48 +00:00
Claudio Ortolina
4977f4631c
Show grouped records in records on this day email
2026-03-12 17:23:22 +00:00
Claudio Ortolina
dbc6d029b4
Move collected artist IDs query to Collection context
...
Closes #112
2026-03-12 16:58:31 +00:00
Claudio Ortolina
d057f29ba1
Split ScrobbleActivity into focused modules
...
Move track CRUD/listing to ListeningStats and diagnostics
to Maintenance, leaving ScrobbleActivity for scrobbling only.
Closes #111
2026-03-12 16:51:33 +00:00
Claudio Ortolina
ee4d2555ee
Move scrobble queries from Records to ListeningStats
...
Closes #110
2026-03-12 16:32:10 +00:00
Claudio Ortolina
24efa3986c
Route artist search queries through Artists context
...
Closes #113
2026-03-12 16:21:04 +00:00
Claudio Ortolina
1a62360b21
Group records in records on this day widget
2026-03-12 09:09:25 +00:00
Claudio Ortolina
43dc81d051
Assert that generated PDF file always has one page
2026-03-10 15:09:33 +00:00
Claudio Ortolina
95302e069b
Improve column detection heuristics
2026-03-10 14:56:25 +00:00
Claudio Ortolina
c352ad4809
Can print an individual medium tracklist
2026-03-09 14:52:26 +00:00
Claudio Ortolina
4c6baa6e13
Improve printout PDF layout
...
Support multiple columns in case the tracklist is long, or there's
multiple media.
2026-03-09 14:44:28 +00:00
Claudio Ortolina
4569c6727e
Add function to download a record's tracklist for printing
2026-03-09 13:39:12 +00:00
Claudio Ortolina
54f19cd9a2
Fix ArtistInfo.country/1 crash when area is missing
2026-03-06 09:51:56 +00:00
Claudio Ortolina
f9b381570f
Extract artist infos fixtures
2026-03-06 08:58:59 +00:00
Claudio Ortolina
3819afca4d
Extract fixture
2026-03-06 08:53:25 +00:00
Claudio Ortolina
d4376e5fa0
Extract DB queries from MaintenanceLive into context
2026-03-05 18:01:50 +00:00
Claudio Ortolina
fb7ccad6f9
Add meaningful tests for ArtistChat and RecordChat
...
Closes #96
2026-03-05 14:43:50 +00:00
Claudio Ortolina
478832249b
Send record of the day email
2026-03-05 10:37:04 +00:00
Claudio Ortolina
c831b20317
Move error tracker notifier files to correct namespace
2026-03-04 19:39:36 +00:00
Claudio Ortolina
ad9bcd8481
Inline error tracker notification code
...
As we don't need the Discord functionality which brings quite a lot of
extra libraries/code
2026-03-04 17:19:14 +00:00
Claudio Ortolina
7ec3e68e58
Relax assertions on colors
...
As dominant colors are not stable on different environments
2026-03-03 16:13:23 +00:00
Claudio Ortolina
6d451481b7
Remove obsolete color extraction strategies
2026-03-03 16:01:25 +00:00
Claudio Ortolina
de14ec3e25
Consolidate completely stateless tests into doctests
...
Removing dupes
2026-03-03 11:30:52 +00:00
Claudio Ortolina
854e293902
Add large battery of tests, primarily workers
2026-03-01 17:03:36 +00:00
Claudio Ortolina
84323e5732
Capture logs to avoid useless test log noise
2026-03-01 08:56:42 +00:00
Claudio Ortolina
b35f4aed1d
EXP: enrich artist info data via Last.fm and produce better embeddings
2026-03-01 08:22:35 +00:00
Claudio Ortolina
871f4b3554
Extract ListeningStats out of ScrobbleActivity
2026-02-27 12:16:38 +00:00
Claudio Ortolina
16e0bf03a9
Remove Flagmojis dependency
2026-02-24 08:58:49 +00:00
Claudio Ortolina
8eaaa3cfec
Use custom country module to resolve flags more accurately
...
Ported from https://github.com/wojtekmaj/country-code-to-flag-emoji
(MIT)
2026-02-24 08:57:30 +00:00
Claudio Ortolina
1dfb2d2a6f
Use Wikipedia data for record similarity and raise similarity threshold
2026-02-19 15:51:12 +00:00
Copilot
2faddbf0c6
Add audit tooling for scrobbled tracks data quality ( #89 )
2026-02-17 11:24:45 +00:00
Claudio Ortolina
583789850c
Normalize top artist and top album counts
...
- Make sure joins don't discard tracks
- Make sure we group by names as MB ids can be empty
2026-02-15 20:35:23 +00:00
Claudio Ortolina
445033861d
Reuse fixture
2026-02-10 19:32:28 +00:00
Claudio Ortolina
fe748782c7
Reorder record sets via drag and drop
2026-02-10 11:16:41 +00:00
Claudio Ortolina
84159a1c0d
Improve test coverage
...
Files Created (8 files, 54 new tests)
Fixtures
1. test/support/fixtures/music_library/record_sets.ex — record_set/1
and record_set_with_records/2 helpers
2. test/support/fixtures/music_library/online_store_templates.ex —
online_store_template/1 helper
Context Tests
3. test/music_library/record_sets_test.exs — 20 tests covering search,
count, CRUD, add/remove/move records
4. test/music_library/online_store_templates_test.exs — 8 tests
covering list, CRUD, URL generation, validation
5. test/music_library/search_test.exs — 5 tests covering universal
search and search counts
6. test/music_library/notes_test.exs — 4 tests covering get, create,
update
LiveView Tests
7. test/music_library_web/live/record_set_live/index_test.exs — 11
tests covering listing, empty state, search, ordering,
create/edit/delete sets, remove records, reorder records
8.
test/music_library_web/live/online_store_template_live/index_test.exs —
6 tests covering listing, create/edit/delete, toggle enabled
Results
- 297 tests, 0 failures (up from 243 — 54 new tests added)
- All existing tests continue to pass
There's a remaining gettext warning that needs to be investigated
2026-02-07 10:39:22 +00:00
Claudio Ortolina
faf8500256
Ensure uniqueness of scrobble rules
2026-02-02 10:32:32 +00:00
Claudio Ortolina
5692be4e63
Update dependencies
...
credo 1.7.13 => 1.7.14 - requires updates to pass updated checks
2025-12-01 16:09:51 +00:00
Copilot
e11894c095
Batch scrobble rule application by type to reduce N queries to 2 ( #61 )
...
* Implement optimized batch rule application
- Add apply_all_album_rules/1 to batch apply all album rules in single query
- Add apply_all_artist_rules/1 to batch apply all artist rules in single query
- Update apply_all_rules/0 to use new batch functions
- Add comprehensive tests for batch application
- Use CASE statement in SQL to apply multiple rules efficiently
Co-authored-by: cloud8421 <537608+cloud8421@users.noreply.github.com >
* Add batch application support for track-filtered rules
- Extend apply_all_album_rules/2 to support filtering by tracks
- Extend apply_all_artist_rules/2 to support filtering by tracks
- Update apply_all_rules/1 to use batch functions for track-filtered application
- Remove duplicate function definitions
- Ensures both main use cases (all tracks and specific tracks) are optimized
Co-authored-by: cloud8421 <537608+cloud8421@users.noreply.github.com >
* Add comprehensive documentation for optimization
- Document the problem and solution approach
- Explain SQL generation and performance impact
- Detail trade-offs and backward compatibility
- Include future considerations and scalability notes
Co-authored-by: cloud8421 <537608+cloud8421@users.noreply.github.com >
* Apply credo suggestions and format
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: cloud8421 <537608+cloud8421@users.noreply.github.com >
Co-authored-by: Claudio Ortolina <cloud8421@gmail.com >
2025-11-10 20:04:34 +00:00
Claudio Ortolina
d38089d82d
Show similarity in % points
2025-10-12 20:46:01 +02:00