Commit Graph

3280 Commits

Author SHA1 Message Date
Claudio Ortolina 933f04bb25 Add .mcp.json to version control 2026-04-30 23:00:20 +01:00
Claudio Ortolina 8777f05e2e Use mise.lock 2026-04-30 20:06:38 +01:00
Claudio Ortolina e934b2d5f2 Pin GH actions 2026-04-30 20:02:54 +01:00
Claudio Ortolina b653c9af00 Add completed task count to backlog section header in dev summary 2026-04-30 17:40:24 +01:00
Claudio Ortolina 3b558044b4 refactor: extract Records sub-contexts (Search, Import, Enrichment)
Split the 450+ line Records context into focused modules:

- Records.Search — FTS5 search, SearchParser integration, genre listing
- Records.Import — MusicBrainz release/group import, release status
- Records.Enrichment — genre population, cover refresh, color extraction,
  MusicBrainz data refresh
- Records.Query — shared helpers (essential_fields, order_alphabetically macro)

Records module is now a facade with defdelegate for compile-time safety.
CRUD and PubSub stay directly in Records. Tests moved alongside each
sub-module. Zero callers changed, 886 tests pass.
2026-04-30 17:20:37 +01:00
Claudio Ortolina 3849b338f3 Improve performance of job counting in maintenance
- Use a single query for all workers
- Replace the manual Ecto query against Oban.Job with Oban.Job.query/1
2026-04-30 14:54:56 +01:00
Claudio Ortolina 16f6bc78d9 Update dependencies
oban 2.21.1 => 2.22.1
2026-04-30 14:34:02 +01:00
Claudio Ortolina 08fcd70a8c ML-154: add early platform detection for SQLite extensions 2026-04-30 13:39:39 +01:00
Claudio Ortolina 13068aa0ac ML-153: move MusicBrainz data transforms from Record 2026-04-30 13:21:18 +01:00
Claudio Ortolina b8b3b24ffa ML-151: document Assets.Cache TTL and invalidation strategy
Expand @moduledoc with cache key structure, 7-day TTL via
@one_week_seconds, periodic pruning by PruneAssetCache (every 12h),
and rationale for TTL-only invalidation (content-addressable immutable
assets). Update architecture.md entry accordingly.
2026-04-30 13:07:06 +01:00
Claudio Ortolina c489fde1cc ML-152: add /api/v1/ version prefix to all API routes 2026-04-30 11:57:43 +01:00
Claudio Ortolina 70d5f3bf61 Backlog grooming session 2026-04-30 11:50:07 +01:00
Claudio Ortolina bd93c036bc Add elixir usage rules to AGENTS.md 2026-04-30 10:05:54 +01:00
Claudio Ortolina f8a52993c1 ML-149: Fix selected bar not showing track data in Safari 2026-04-30 07:21:25 +01:00
Claudio Ortolina f2839dfaf1 Test needs to be sync 2026-04-29 22:50:29 +01:00
Claudio Ortolina 1e346fcf79 Provide guidance to LLM on when to open references 2026-04-29 07:48:57 +01:00
Claudio Ortolina 2fc7e7593d Update dependencies
swoosh 1.25.0 => 1.25.1
2026-04-29 07:08:00 +01:00
Claudio Ortolina 83ebfb7961 Update commit message conventions for dependencies 2026-04-28 22:46:09 +01:00
Claudio Ortolina 5656db609a Update dependencies
time_zone_info 0.7.12 => 0.7.13
2026-04-28 22:39:07 +01:00
Claudio Ortolina 870b35787f Add pi.dev configuration
Requires `DEEPSEEK_API_TOKEN` env variable
2026-04-28 15:25:34 +01:00
Claudio Ortolina 597cc89821 ML-147: Upgrade to ServerSentEvents 1.0.0 2026-04-27 22:02:45 +01:00
Claudio Ortolina b57ba3c179 Update dependencies
phoenix_test 0.11.0 => 0.11.1
2026-04-27 15:59:56 +01:00
Claudio Ortolina 69e2d2f6e5 Upgrade to hurl 8.0.0 2026-04-27 11:54:40 +01:00
Claudio Ortolina f10a932aea Re-enable medium header + checkbox for releases with 1 medium 2026-04-27 11:47:32 +01:00
Claudio Ortolina 4075ec45ac Make sure creating artist infos returns all fields 2026-04-26 19:24:56 +01:00
Claudio Ortolina b64ab98189 Extract to pipe 2026-04-26 19:08:21 +01:00
Claudio Ortolina eb9b1866a8 Streamline function implementation 2026-04-26 19:05:27 +01:00
Claudio Ortolina d6e154b7b3 Remove redundant case 2026-04-26 19:01:44 +01:00
Claudio Ortolina 8e2a9b4941 Update phoenix_test 0.10.0 => 0.11.0 2026-04-26 18:57:21 +01:00
Claudio Ortolina fdc64de30f Update ex_slop 0.3.0 => 0.3.1
Includes additional checks
2026-04-26 18:52:46 +01:00
Claudio Ortolina 5b94d6bdcf Avoid intermediate variables, and use consistent names 2026-04-26 07:57:40 +01:00
Claudio Ortolina 839277de94 Done cleanup 2026-04-25 22:27:58 +01:00
Claudio Ortolina 242549b85a ML-147: Upgrade to ServerSentEvents 1.0 2026-04-25 22:26:34 +01:00
Claudio Ortolina 4fb1bf5079 Remove duplication in implementation 2026-04-25 21:34:11 +01:00
Claudio Ortolina d4132d8851 Uniform interface of lastfm refresh async function 2026-04-25 21:30:06 +01:00
Claudio Ortolina 9f8ef6c329 Use larger image for Last.fm artists 2026-04-25 21:22:18 +01:00
Claudio Ortolina 9113df5879 ML-146: honour API retry headers 2026-04-25 07:39:49 +01:00
Claudio Ortolina d588e5738f Remove redundant tests 2026-04-25 06:57:03 +01:00
Claudio Ortolina ab4eaa8890 Use if instead of case -> nil 2026-04-25 06:37:02 +01:00
Claudio Ortolina ed2e91400c Update documentation for ML-21, ML-9, and Erlang 28.5
- architecture.md: document new ErrorResponse behaviour, HttpError, and
  Worker.ErrorHandler modules plus per-API ErrorResponse pattern
- project-conventions.md: capture API-failure → Oban tuple convention and
  mix_audit CI/pre-commit run
- production-infrastructure.md: bump builder image Erlang to 28.5 and
  note mix_audit in the lint step
2026-04-24 14:29:35 +01:00
Claudio Ortolina 4418fbc377 Remove unnecessary specs
Function is private, and AsyncResult doesn't expose `t()`
2026-04-24 14:13:04 +01:00
Claudio Ortolina e2a0b7aebc Update to erlang 28.5 2026-04-24 14:09:08 +01:00
Claudio Ortolina ade31b50a8 Update dependencies
db_connection 2.9.0 => 2.10.0
2026-04-24 14:05:34 +01:00
Claudio Ortolina a1c665b490 ML-21: Classify API errors as transient vs permanent 2026-04-24 14:02:15 +01:00
Claudio Ortolina be4f4686f8 ML-146: Honour rate-limit headers for precise snoozing 2026-04-24 12:13:56 +01:00
Claudio Ortolina b9bc96b9a4 ML-21: reframe for correctness 2026-04-24 12:13:33 +01:00
Claudio Ortolina 2e38412a84 ML-10: break compile cycle via Artists → Collection edge 2026-04-24 10:49:47 +01:00
Claudio Ortolina 252caf31ce ML-11: Improve performance of Telemetry.Storage with in-memory buffer 2026-04-24 10:30:28 +01:00
Claudio Ortolina 2a688e2309 Cleanup old tasks 2026-04-24 09:58:09 +01:00
Claudio Ortolina 3852340479 ML-13: Tighten ecto_sqlite3 dep constraints 2026-04-24 09:54:05 +01:00