Commit Graph

508 Commits

Author SHA1 Message Date
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
Claudio Ortolina f1e3b22f91 Make online store templates searchable 2026-03-16 11:56:39 +00:00
Claudio Ortolina 3fb6c93d9d Add sorting optoins to scrobble rules page 2026-03-16 08:03:47 +00:00
Claudio Ortolina 43b054b34a Search scrobble rules, improved layout 2026-03-16 07:58:21 +00:00
Claudio Ortolina d815928f91 Fix SearchParser catch-all wiping valid filters
The `_, %{}` catch-all in `normalize/1` matched any map, so an
invalid filter (e.g. `format:vin`) would reset the accumulator
even when valid filters were already collected. Add a `map_size`
guard so it only returns `%{query: ""}` for a truly empty
accumulator. Also update the moduledoc.
2026-03-15 18:56:30 +00:00
Claudio Ortolina 4fb148e9db Simplify signatures of scrobbling functions 2026-03-14 22:22:41 +00:00
Claudio Ortolina be563d8fca Streamline record set items reordering query 2026-03-13 16:26:01 +00:00
Claudio Ortolina 9e1dbfd530 Re-enable Credo ModuleDoc check
Closes #108
2026-03-13 10:52:01 +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 24863b16c4 Remove unused Logger requires 2026-03-12 14:57:48 +00:00
Claudio Ortolina 1a62360b21 Group records in records on this day widget 2026-03-12 09:09:25 +00:00
Claudio Ortolina 159d5ad695 Include more maintenance tasks
- Asset tasks
- Records on this day email
2026-03-11 09:31:59 +00:00
Claudio Ortolina 97e9cdf6c4 Spell out Purchased on label in records email 2026-03-11 08:40:42 +00:00
Claudio Ortolina 20b497bbb8 Don't track route not found errors 2026-03-10 20:05:27 +00:00
Claudio Ortolina 59ac2a503f Space out lines a bit more 2026-03-10 15:13:28 +00:00
Claudio Ortolina 95302e069b Improve column detection heuristics 2026-03-10 14:56:25 +00:00
Claudio Ortolina 47ff505fa9 Refactor pdf rendering to use page-level columns 2026-03-10 14:22:11 +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 b30f0fa1ee Add metrics around image resize/convert/dominant color extration 2026-03-08 13:56:31 +00:00
Claudio Ortolina 2e3732e38b Apply all necessary exclusions to sobelow findings 2026-03-07 18:37:24 +00:00
Claudio Ortolina 6a89d31d4c Don't extract dominant colors if provided in params
This as the side effect of massively speeding up the test suite: on M1,
it goes from 24 seconds to 14.
2026-03-07 09:05:44 +00:00
Claudio Ortolina d3ae3a7381 Fix ScrobbleRule timestamps to use utc_datetime 2026-03-06 09:58:40 +00:00
Claudio Ortolina 54f19cd9a2 Fix ArtistInfo.country/1 crash when area is missing 2026-03-06 09:51:56 +00:00
Claudio Ortolina 6c2036ff7d Make excluded genres configurable 2026-03-06 09:45:42 +00:00
Claudio Ortolina 7cf9b4e7f8 First pass at uniformed types, specs and docs
- spec public functions (skipping controllers, views, live views and
components)
- use types instead of explanations in docs
- remove redundant docs
- fix typos
2026-03-06 08:33:11 +00:00
Claudio Ortolina a3ccc06d14 Extract shared SQL builder for scrobble rules 2026-03-05 20:52:25 +00:00
Claudio Ortolina d738032f8a Add string length validations to user-input schemas 2026-03-05 20:42:44 +00:00
Claudio Ortolina e8f393c5a0 Guard against nil medium in scrobble_medium
Closes #76
2026-03-05 19:54:32 +00:00
Claudio Ortolina d4376e5fa0 Extract DB queries from MaintenanceLive into context 2026-03-05 18:01:50 +00:00
Claudio Ortolina f109057be5 Persist telemetry data in local sqlite database 2026-03-05 13:39:38 +00:00
Claudio Ortolina 73a943bc63 Server records on this day email assets from a public endpoint 2026-03-05 10:50:35 +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 ed1dd2b440 Mount error tracker notifier 2026-03-04 15:55:32 +00:00