Claudio Ortolina
1c720c8394
Add query timing metadata to reporter output
2026-04-10 10:30:05 +01:00
Claudio Ortolina
27148c6507
Add dev query reporter and skill
...
Ecto telemetry reporter that captures executed SQL queries
to a log file with interpolated parameters and source
locations. Activated/deactivated at runtime via Tidewave
for LLM-driven query analysis workflows.
2026-04-10 10:27:12 +01:00
Claudio Ortolina
59937dadb8
Remove duplication around searching scrobbled tracks
...
Fixes #157
2026-04-09 06:57:24 +01:00
Claudio Ortolina
edc4e51d1d
Optimize record set compaction
...
Closes #154
2026-04-06 18:38:56 +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
4be9db6417
Refactor DefaultPrompt into Chats.Prompt with build/2
2026-04-05 08:32:03 +01:00
Claudio Ortolina
f9155f8c52
Try and control the chat responses style
2026-04-04 23:35:46 +01:00
Claudio Ortolina
ec12be613b
Extract a default prompt
2026-04-04 23:35:30 +01:00
Claudio Ortolina
86fd3134f1
Reduce repetitive LLM chat responses ( #146 )
...
Replace "always provide a link" with conditional linking and add
instructions to vary response style and avoid restating information
already covered in the conversation.
Co-authored-by: Claude <noreply@anthropic.com >
2026-04-04 18:32:57 +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
3f7da55e50
Add a release tracked badge to records in lists
2026-04-02 11:52:07 +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
7d65a7d4ab
Make sure create record returns updated record
2026-04-01 07:06:33 +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
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
bfc6cfd9c1
Handle transport errors in RefreshScrobbles worker
2026-03-29 16:45:38 +01:00
Claudio Ortolina
027f9d1a2d
Can reset Last.fm account from maintenance page
2026-03-29 09:12:53 +01:00
Claudio Ortolina
2e22ace7cf
Move RecordsOnThisDayEmail to MusicLibraryWeb namespace
2026-03-28 10:25:03 +00:00
Claudio Ortolina
b2575eb802
Make sure that list_enabled_rules returns ALL rules
...
Fixes partially working scrobble rule application
2026-03-28 10:07:08 +00:00
Claudio Ortolina
5c5a523fe6
Move scrobble refresh infra to Oban
2026-03-28 09:00:18 +00:00
Claudio Ortolina
47f8eddff1
Move BackfillScrobbledTracks worker under MusicLibrary namespace
2026-03-28 08:05:02 +00:00
Claudio Ortolina
61dd3f45c7
Move refresh config and callers to ListeningStats
2026-03-27 23:14:09 +00:00
Claudio Ortolina
fa5e13f303
Add refresh/0 to ListeningStats
2026-03-27 23:08:08 +00:00
Claudio Ortolina
11f080b163
Add ListeningStats.Refresh GenServer
2026-03-27 23:06:05 +00:00
Claudio Ortolina
9643e2141c
Add update/1 and subscribe/0 to ListeningStats
2026-03-27 23:03:23 +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
77aae3be38
Document casting of id param
...
Closes #136
2026-03-25 12:03:05 +00:00
Claudio Ortolina
f27b647f93
Add @foreign_key_type to Note and ArtistInfo
...
Closes #135
2026-03-25 12:03:02 +00:00
Claudio Ortolina
09f61b6039
Move asset pruning logic to Assets context
...
Closes #130
2026-03-25 11:55:28 +00:00
Claudio Ortolina
0ccaf46ebd
Standardize fetch_* to refresh_* in Artists context
...
Closes #132
2026-03-25 11:52:43 +00:00
Claudio Ortolina
e4eccf4606
Move embedding regeneration to Records context
...
Closes #131
2026-03-25 11:48:46 +00:00
Claudio Ortolina
abac91aa42
Standardize pagination to Keyword.get pattern
...
Closes #137 .
2026-03-25 11:45:21 +00:00
Claudio Ortolina
766a1dd7ed
Use lazy Logger in PruneAssets worker
...
Closes #139
2026-03-25 11:29:21 +00:00
Claudio Ortolina
505bf7cbe4
Fix artist_play_count to remove duplicates
2026-03-24 15:28:07 +00:00
Claudio Ortolina
c9283d7f28
Compute artist play count from db
2026-03-24 15:07:50 +00:00
Claudio Ortolina
16bd569990
Update records on this day email sender and prefix
2026-03-23 11:24:57 +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
7d55dfd9ae
Have the AI always provide at least one link when answering questions
2026-03-19 14:30:04 +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
3f95aee7a7
Cap message content
2026-03-17 13:51:38 +00:00
Claudio Ortolina
8fd8dde73d
Persist chat history
2026-03-17 13:50:01 +00:00