Commit Graph

140 Commits

Author SHA1 Message Date
Claudio Ortolina e575f2af9e Stub color extractor in tests
Makes the test suite much faster
2026-03-26 22:58:39 +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 59ce580b99 Can filter records by release year 2026-03-21 09:21:21 +00:00
Claudio Ortolina ee4d2555ee Move scrobble queries from Records to ListeningStats
Closes #110
2026-03-12 16:32:10 +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 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 6d451481b7 Remove obsolete color extraction strategies 2026-03-03 16:01:25 +00:00
Claudio Ortolina 1d3361c425 BETA: accurate color extractor 2026-03-03 15:41:24 +00:00
Claudio Ortolina 6bf13486a3 Do not crash on & search 2026-02-27 07:56:44 +00:00
Claudio Ortolina 561cd02ec7 Fixes error in matching multiple colums during search 2026-02-25 07:54:59 +00:00
Claudio Ortolina 3e1da2cb19 Uniform repo usage for Oban jobs 2026-02-17 09:01:46 +00:00
Claudio Ortolina 9da995bce8 Extract helpers to handle async jobs 2026-02-09 11:07:33 +00:00
Claudio Ortolina e418395b23 Edit record genres 2026-02-09 08:53:16 +00:00
Claudio Ortolina 57f138e597 Fix search filter precedence bug
Previous version would do:

purchase status + normal filter OR normalized filter

New version does:

purchase status AND (normal filter OR normalized filter)
2026-01-21 16:09:35 +00:00
Claudio Ortolina 1193eda4ca Escape "." in searches 2026-01-19 21:04:03 +00:00
Claudio Ortolina 80763b8192 Sort collection records by release 2025-11-25 22:24:23 +00:00
Claudio Ortolina cc7d00c750 Display number of scrobbles when viewing a record 2025-11-19 13:51:22 +00:00
Claudio Ortolina fcd558066e Can filter collection records by purchase year 2025-10-31 12:25:10 +00:00
Claudio Ortolina 901a6b1c93 Update dependencies
credo 1.7.12 => 1.7.13
usage_rules 0.1.24 => 0.1.25
2025-10-15 09:57:13 +01:00
Claudio Ortolina 9cae972bc5 Add similar records
Initial stab by Claude
2025-10-11 21:39:59 +02:00
Claudio Ortolina ac750d8a91 Refactor essential_fields via search index 2025-10-06 13:48:01 +03:00
Claudio Ortolina 4e24bfe966 Populate genres via Oban with generous retries
This is due to OpenAI erroring or timing out incredibly frequently.
2025-09-22 08:22:36 +03:00
Claudio Ortolina 90b3fa1fdc Refactor Records.Cover to Assets.Image 2025-09-20 07:42:38 +03:00
Claudio Ortolina d865a61ef9 Make sure escaping works consistently everywhere (including with ?)
Remove duplication
2025-09-13 10:25:21 +03:00
Claudio Ortolina 1e211ce32a Simplify by removing search parser escape 2025-09-13 08:28:57 +03:00
Claudio Ortolina 62578de950 Pass one from Tidewave 2025-09-13 08:25:08 +03:00
Claudio Ortolina 16740cec5e Remove obsolete backfill function 2025-09-01 23:08:16 +03:00
Claudio Ortolina dc77d337c0 Migrate from embedded covers to assets 2025-09-01 16:20:41 +03:00
Claudio Ortolina cb7f3c23b0 Add backfill function 2025-09-01 13:39:00 +03:00
Claudio Ortolina a9d27059c4 Update dependencies
circular_buffer 0.4.1 => 0.4.2
ecto 3.12.6 => 3.13.1
ecto_sql 3.12.1 => 3.13.1
ecto_sqlite3 0.19.0 => 0.20.0 (minor)
exqlite 0.31.0 => 0.32.0 (minor)

Includes handling of deprecation for literal/1 to identifier/1
2025-06-21 09:10:57 +03:00
Claudio Ortolina 2df5e7ee1d Show wishlisted date for wishlisted records 2025-06-14 12:58:47 +03:00
Claudio Ortolina 2cc1d7ca8f Pick color extraction strategy from dropdown 2025-06-08 20:06:54 +01:00
Claudio Ortolina 2bbb91769d Generate better dominant colors async after record import 2025-06-08 07:50:07 +01:00
Claudio Ortolina 569f8b5340 Distinguish between color extraction strategies
By default, use fast color sampling. Run heavy edge weighted extraction
only on demand.
2025-06-08 07:43:07 +01:00
Claudio Ortolina 378992e632 Add functions to generate dominant colors 2025-06-07 20:13:19 +01:00
Claudio Ortolina a63f2de60b Use ->> instead of json_extract in queries
Improves readability of queries.
2025-06-06 21:05:44 +01:00
Claudio Ortolina 669b144c55 Find last listened track based on title and artist as well 2025-06-03 18:05:23 +01:00
Claudio Ortolina c23260d03d Show last listen at for each collected record 2025-06-03 15:57:12 +01:00
Claudio Ortolina 1f64c71efa Apply quokka blocks rule 2025-05-28 19:51:54 +01:00
Claudio Ortolina 423d1e7764 Can sort wishlisted records by insertion 2025-05-26 23:12:34 +01:00
Claudio Ortolina ad29b8f96d Normalized search index
So that one can search for 'bjorn' and find 'Bjørn'
2025-05-25 09:26:01 +01:00
Claudio Ortolina ee808fb041 Add ability to refresh musicbrainz data async 2025-05-24 18:04:20 +01:00
Claudio Ortolina 93e1fad88e Make purchase order deterministic
Avoids ordering issues when records have the same purchased_at datetime
(which is what happens when they're scanned in batches).
2025-05-04 09:20:45 +01:00
Claudio Ortolina bc213caa45 Store selected release id when scanning a record 2025-05-01 19:36:47 +01:00
Claudio Ortolina e083950138 Rename record.release to record.release_date
Includes changes to dependent tables (i.e. the record search index) and
related functions.
2025-05-01 14:04:57 +01:00
Claudio Ortolina 818a416b1c Prune artist info after deleting the artist's last record 2025-04-29 18:44:37 +01:00
Claudio Ortolina fa49e73385 When creating a record, queue a job to fetch artist info 2025-04-29 16:56:22 +01:00
Claudio Ortolina f6d1d3431a Improve meta and error handling for background cover refreshing 2025-04-14 17:41:33 +01:00
Claudio Ortolina a3b6510c40 Refresh covers asynchronously 2025-04-14 10:58:47 +01:00