Claudio Ortolina
b7af9557c1
Add MusicBrainz.get_all_releases/1
2026-04-11 21:40:32 +01:00
Claudio Ortolina
fcf5adde2f
Add tests for QueryReporter
2026-04-10 11:10:12 +01:00
Claudio Ortolina
49d26e1fd0
Switch the release component to a form to enable recovery
2026-04-08 18:22:44 +01:00
Claudio Ortolina
1cfd91278b
Use correct api_cooldown for OpenAi.API tests
2026-04-07 10:07:48 +01:00
Claudio Ortolina
a5df68c7ad
Don't suppress errors when fetching artist Last.fm data
...
Closes #149
2026-04-05 15:47:36 +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
2f9460d2cb
Regenerate embeddings only when the test representation changes
2026-04-04 08:32:29 +01:00
Claudio Ortolina
4bfe27e6c8
Cancel refresh cover job if image is not available
2026-04-03 12:43:50 +01:00
Claudio Ortolina
851bbd54af
Setup swoosh sandbox
2026-04-02 15:26:15 +01:00
Claudio Ortolina
7f406ce455
Replace deprecated {:discard, _} with {:cancel, _}
2026-04-01 09:38:05 +01:00
Claudio Ortolina
553ad2bbb9
Discard worker when no wikipedia entry is present
2026-04-01 08:52:28 +01:00
Claudio Ortolina
6fcca38e27
Make sure to pull artists info when record is updated
...
Catches the scenario when a new artist is added
2026-04-01 07:11:47 +01:00
Claudio Ortolina
e0a277e215
Always open chat links in new tabs
2026-03-31 19:17:58 +01:00
Claudio Ortolina
c913dab692
Return controlled errors from genre population
...
Closes #142
2026-03-30 15:01:42 +01:00
Claudio Ortolina
92a36b915a
Harden public asset endpoint against invalid payloads
...
Closes #143
2026-03-30 14:56:40 +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
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
2e22ace7cf
Move RecordsOnThisDayEmail to MusicLibraryWeb namespace
2026-03-28 10:25:03 +00:00
Claudio Ortolina
fbcf40b4b3
Remove LastFm.Feed, LastFm.Refresh, and LastFm.Supervisor
2026-03-27 23:17:25 +00:00
Claudio Ortolina
61dd3f45c7
Move refresh config and callers to ListeningStats
2026-03-27 23:14:09 +00:00
Claudio Ortolina
9643e2141c
Add update/1 and subscribe/0 to ListeningStats
2026-03-27 23:03:23 +00:00
Claudio Ortolina
96836ae715
Improve tests: better assertions, meaningful tests
...
Track resulting principles in project conventions
2026-03-27 15:46:31 +00:00
Claudio Ortolina
1301f888f3
Remove "it" from the test descriptions
2026-03-27 08:38:41 +00:00
Claudio Ortolina
bf379b9887
Remove unnecessary test
2026-03-26 23:03:42 +00:00
Claudio Ortolina
e575f2af9e
Stub color extractor in tests
...
Makes the test suite much faster
2026-03-26 22:58:39 +00:00
Claudio Ortolina
f5d3d90043
Use correct fixture for test
2026-03-26 11:55:44 +00:00
Claudio Ortolina
dec564b840
Move test in correct describe block
2026-03-26 11:55:27 +00:00
Claudio Ortolina
88b575ee95
Remove duplicated test
2026-03-26 11:55:05 +00:00
Claudio Ortolina
170a52b3e4
Fix test descriptions for consistency
2026-03-26 11:54:47 +00:00
Claudio Ortolina
69983d9dac
Fix incorrect tests
2026-03-26 11:53:49 +00:00
Claudio Ortolina
09c5ba8fb5
Make sure Brave API tests run fast
2026-03-26 09:41:30 +00:00
Claudio Ortolina
0ccaf46ebd
Standardize fetch_* to refresh_* in Artists context
...
Closes #132
2026-03-25 11:52:43 +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
0f9a2d28cb
Add test coverage for ScrobbleActivity
...
Closes #127
2026-03-23 07:45:49 +00:00
Claudio Ortolina
0edd5f317c
Extract biography helpers from ArtistLive.Show
...
Closes #124
2026-03-22 08:07:06 +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
56d9d6bfd7
Use MDEx streaming to render chat content
2026-03-20 23:42:10 +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
654b172ddb
Fix UI inconsistencies across templates
...
- Replace .separator with .dropdown_separator in 4 dropdown menus
- Change gray-* to zinc-* color classes in online store templates
- Wrap hardcoded page titles in gettext() in online store templates
- Add consistent dark:text-zinc-200 to maintenance h3 subsections
- Add text-zinc-900 dark:text-zinc-200 to scrobble section headers
- Fix heading hierarchy (h1/h2 → h2/h3) in record set items
- Align artist form modal header to text-lg font-semibold
- Use size="xs" prop instead of class override on format badge
- Add external link icon to wishlist online store buttons
2026-03-16 11:37:29 +00:00
Claudio Ortolina
028f111300
Stabilize rate limiter tests by using dependency injection
2026-03-16 11:21:24 +00:00