Claudio Ortolina
3600bb204b
Set explicit max_frame_size on websocket
2026-05-02 07:12:20 +01:00
Claudio Ortolina
0b78f24fed
ML-155: Compact collection summary and add stats preamble
2026-05-02 07:11:18 +01:00
Claudio Ortolina
450114100b
Fix dimensions of camera button and preview
2026-05-01 22:09:44 +01:00
Claudio Ortolina
ca5b13ad8d
Remove some uses of List.last
2026-05-01 17:03:42 +01:00
Claudio Ortolina
c11009f3f9
Update dependencies
...
ex_slop 0.3.1 => 0.4.0
2026-05-01 17:03:14 +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
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
f8a52993c1
ML-149: Fix selected bar not showing track data in Safari
2026-04-30 07:21:25 +01:00
Claudio Ortolina
597cc89821
ML-147: Upgrade to ServerSentEvents 1.0.0
2026-04-27 22:02:45 +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
5b94d6bdcf
Avoid intermediate variables, and use consistent names
2026-04-26 07:57:40 +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
ab4eaa8890
Use if instead of case -> nil
2026-04-25 06:37:02 +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
a1c665b490
ML-21: Classify API errors as transient vs permanent
2026-04-24 14:02:15 +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
90db113845
ML-5: document Last.fm OAuth callback trust boundary
...
Closes GitHub issue #178 .
2026-04-24 08:05:07 +01:00
Claudio Ortolina
0784fc5e0c
Fix page title for scrobble anything release page
2026-04-23 21:06:32 +01:00
Claudio Ortolina
1bd5707cb4
Fix page title for scrobble anything index and release group route
2026-04-23 21:06:12 +01:00
Claudio Ortolina
d03e288353
Make sure top_by_period components have a proper ID
2026-04-23 16:41:18 +01:00
Claudio Ortolina
62586c9ae5
Restore flex context for sheet selection bar
2026-04-23 15:12:58 +01:00
Claudio Ortolina
ca9cc7687c
Hide release-actions dropdown when empty
2026-04-23 15:06:45 +01:00
Claudio Ortolina
779708e62e
Hide print tracklist on scrobble release page
2026-04-23 15:05:05 +01:00
Claudio Ortolina
72818bfaf2
Validate release-group shape before parsing
2026-04-23 15:00:49 +01:00
Claudio Ortolina
c7c7e1fe4e
Navigate from scrobble search to release-group page
2026-04-23 14:47:50 +01:00
Claudio Ortolina
0dcd6eab83
Replace /scrobble/:release_id with nested route
2026-04-23 14:39:26 +01:00
Claudio Ortolina
d8041dc0dd
Add /scrobble/:rg_id release-group page
2026-04-23 14:35:58 +01:00
Claudio Ortolina
4c48bda7b2
Refactor Release component to take release_id
2026-04-23 14:19:11 +01:00
Claudio Ortolina
0d1f580379
Refactor TracklistPdf to take release alone
2026-04-23 07:48:53 +01:00
Claudio Ortolina
8631b97b4d
Add joinphrase to Release.Artist; parse from MB
2026-04-23 07:42:06 +01:00
Claudio Ortolina
f7f38d580e
Enable unaliased modules ex_slop check
2026-04-22 20:37:09 +01:00
Claudio Ortolina
8179b4317c
ML-142: forgot to support timezones
2026-04-22 18:14:14 +01:00
Claudio Ortolina
0776700170
ML-142: Improve scrobble UI in the release component
...
- Sticky bar for easier track-based scrobbling
- Support setting custom finish time
2026-04-22 17:19:35 +01:00
Claudio Ortolina
016c4691be
Canonicalize tailwind classes
2026-04-21 14:22:41 +01:00
Claudio Ortolina
dd1d99a145
Fix store_embedding/3 spec to reflect float list input
2026-04-21 12:57:28 +01:00
Claudio Ortolina
30c0a961e9
Stringify format atom in get_release_status query
2026-04-21 12:57:09 +01:00
Claudio Ortolina
87522a6551
Fully qualify nested type refs in MusicBrainz.Release
2026-04-21 12:48:55 +01:00
Claudio Ortolina
c7749924fe
Spec release component private helpers
2026-04-21 12:48:36 +01:00