Claudio Ortolina
9939b53aa2
Fix compose variable name
2026-05-26 14:55:44 +03:00
Claudio Ortolina
19e097e514
ML-197: add Elm-style Presto application
2026-05-26 08:59:01 +03:00
Claudio Ortolina
631053b87e
ML-197: track Elm-style Presto application
2026-05-26 08:45:04 +03:00
Claudio Ortolina
c0af66190c
[presto] Update dependencies
2026-05-25 23:02:09 +03:00
Claudio Ortolina
0d6d2fdc32
Ignore application and router in cover config
2026-05-25 22:15:31 +03:00
Claudio Ortolina
65b2f3e1f2
Update dependencies
...
ex_slop 0.4.1 => 0.4.2
Introduces a new check around misusing the `length/1` function which
require widespread fixes.
2026-05-25 19:45:33 +03:00
Claudio Ortolina
bfcdfc1b90
ML-169.7: record audit findings
2026-05-25 12:52:01 +03:00
Claudio Ortolina
118171ed8a
ML-169.8: restore formats/types stats position after counters
...
Formats and types stats should appear directly after the record counters,
before the TopArtists/TopAlbums/OnThisDay grid. The refactor had
accidentally moved them below.
2026-05-25 11:32:48 +03:00
Claudio Ortolina
d75a683df0
Update README features section
...
Add missing features: collection chat, markdown notes, store templates, scrobbled tracks browsing, tracklist PDF, daily email, maintenance dashboard, cart-style import, color extraction, and search syntax details. Group into sub-sections for readability.
2026-05-25 10:06:47 +03:00
Claudio Ortolina
9f6848f1ab
Fix gh actions to use mise lock as cache key
2026-05-25 09:54:19 +03:00
Claudio Ortolina
2d8989a8d0
ML-169.8: keep latest record query synchronous
...
get_latest_record is a single fast ORDER BY LIMIT 1 query --
no reason to async-load it. Removes the <.async_result> wrapper
and the now-unnecessary render_async() from its test.
2026-05-25 09:42:14 +03:00
Claudio Ortolina
a3701de90e
Backlog cleanup
2026-05-25 09:33:08 +03:00
Claudio Ortolina
f347f56218
ML-169.8: reduce Stats mount sync queries to 3
...
Move 7 non-critical queries out of synchronous mount into assign_async
and start_async tasks with skeleton loading placeholders.
Only scalar badge counters (collection count, wishlist count, scrobble
count) remain synchronous. All async sections use <.async_result> with
loading and failed slots. Scrobble activity preserves LiveView streams
via handle_async. On-this-day date changes use AsyncResult.ok/2.
2026-05-25 09:31:43 +03:00
Claudio Ortolina
6f5c959238
Show timezone settings in maintenance page
2026-05-25 09:16:56 +03:00
Claudio Ortolina
2503b5e46e
Sync docs: Elixir 1.20.0-rc.6, updated Docker tags, busy_timeout
2026-05-25 08:33:09 +03:00
Claudio Ortolina
5c80a6d6ad
ML-169.11: archive as invalid
2026-05-23 20:23:01 +01:00
Claudio Ortolina
1ccd9ccc91
ML-182: finish audit and subsequent improvements
2026-05-23 07:18:25 +01:00
Claudio Ortolina
27d3a9f285
Try and reduce test flakiness
2026-05-23 06:56:52 +01:00
Claudio Ortolina
8127eccd41
Reduce sensitive paths guard to paths in actual use in this application
2026-05-22 23:47:20 +01:00
Claudio Ortolina
69245d8d15
ML-156: extend and improve plan
2026-05-22 23:46:04 +01:00
Claudio Ortolina
484e9297b7
Update git-commit skill to instruct the LLM to skip manual run of precommit tasks
2026-05-22 16:28:55 +01:00
Claudio Ortolina
3f2e5f2e27
ML-169.10: drop socket-internals delete tests
...
Remove 12 unit tests that accessed socket internals via :sys.get_state
and called handle_async directly — these leak implementation details and
error/exit paths can't be reached through the DOM.
Keep the 3 integration delete tests that use pure DOM assertions: visit,
assert_has, click, refute_has, render_async, DB verification.
2026-05-22 16:27:42 +01:00
Claudio Ortolina
b10be7ba3c
ML-169.10: async delete actions with initial implementation
2026-05-22 16:19:54 +01:00
Claudio Ortolina
9f02e12414
ML-169.10: refine implementation plan
2026-05-22 15:37:09 +01:00
Claudio Ortolina
ee4eecd1c6
ML-169.9: archive invalid stream pagination task
...
Pagination is page-based (not load-more), so reset: true on each
page navigation is correct. Using at: -1 would accumulate records
across pages, breaking the pagination model.
2026-05-22 15:29:07 +01:00
Claudio Ortolina
67a2e6eac6
ML-196: add application-task pi prompt template
...
Introduces /application-task for working on Backlog.md tasks end-to-end:
- Pre-flight: read docs, load task plan, load relevant skills
- Execution: present plan, short loops, log progress, handle scope
- Done vs Complete: finalize without archiving, per Backlog.md workflow
2026-05-22 15:17:12 +01:00
Claudio Ortolina
f1c9069c35
Expand enrichment query scope and streamline selected release
2026-05-22 13:40:40 +01:00
Claudio Ortolina
ff3f809c2c
ML-170: add enrichment fields to collection API
...
Add MusicLibrary.Collection.Enrichment module with batch scrobble, artist
country, and selected release enrichment from existing tables.
Wire enrichment into all four collection API endpoints (index, latest,
random, on_this_day). New JSON fields: scrobble_count, last_listened_at,
artist_country, selected_release.
Uses 3 fixed-count batch queries regardless of page size — no N+1 risk.
No schema changes or migrations required.
2026-05-22 13:21:14 +01:00
Claudio Ortolina
c41299f6c1
ML-196: pi template work on application task (capture)
2026-05-22 13:18:08 +01:00
Claudio Ortolina
00864ae994
Backlog cleanup
2026-05-22 10:28:26 +01:00
Claudio Ortolina
d8a67cd475
ML-181: harden assets endpoints
2026-05-22 08:20:35 +01:00
Claudio Ortolina
5601d681e9
Make some tests async
2026-05-22 07:42:54 +01:00
Claudio Ortolina
c2b8ed2b4a
Update elixir to 1.20.0-rc.6
2026-05-21 17:33:37 +01:00
Claudio Ortolina
a8fecafe42
Update dependencies
...
ecto 3.14.0
ecto_sql 3.14.0
ecto_sqlite3 0.24.0
Requires overriding error_tracker dependencies.
2026-05-21 14:44:20 +01:00
Claudio Ortolina
ca01e94d47
ML-194: add selective smoke coverage
...
Add smoke tests for bulk cron workers, CSP browser header, and
on_mount hooks (GetTimezone/StaticAssets). 9 tests across 4 files,
all passing alongside 135 existing related tests.
2026-05-21 12:01:32 +01:00
Claudio Ortolina
ec6980eea0
ML-193: add secondary parser, search, and API coverage tests
...
Add ~80 focused tests across 10 files covering:
- Record set search by name, description, contained record title, artist name
- Navigation events for records, artists, record sets, links, and view-all actions
- MusicBrainz.ReleaseGroup parser (artist credits, included RGs, release IDs, types)
- MusicBrainz.ReleaseSearchResult edge cases (missing RG, unknown formats)
- LastFm.Session XML edge cases (non-subscriber, missing nodes)
- MusicLibrary.HttpError default status-kind mapping
- Discogs.API.ErrorResponse fallback message and retry-delay behavior
- ArtistRefreshWikipediaData {:cancel, :no_english_wikipedia} worker path
- StatsComponents grouped on-this-day records and anniversary labels
2026-05-21 10:45:29 +01:00
Claudio Ortolina
e99597dc7e
No need to load checks again, they're compiled
2026-05-21 08:50:00 +01:00
Claudio Ortolina
ff42f24972
ML-195: Add credo check for put_toast/put_toast! usage in live components
2026-05-21 08:08:11 +01:00
Claudio Ortolina
66fb688b2a
Fix toasts not appearing for notes and barcode scan
2026-05-21 07:49:36 +01:00
Claudio Ortolina
e46d890143
Extend testing skill for cross-process req stub instructions
2026-05-21 06:38:55 +01:00
Claudio Ortolina
2983313426
ML-192: add high value missing tests
...
- Record editing + cover search
- Barcode scan errors + cart editing
- Notes
- Scrobble rules application over set of tracks
- Image conversion
2026-05-21 06:38:02 +01:00
Claudio Ortolina
07f43e59bb
ML-192: plan refinement
2026-05-20 22:55:34 +01:00
Claudio Ortolina
6af942db7c
Update dependencies
...
server_sent_events 1.0.0 => 1.1.0
2026-05-20 22:32:14 +01:00
Claudio Ortolina
ab48d4b13a
Add testing coverage backlog tasks
2026-05-20 18:22:08 +01:00
Claudio Ortolina
23960b5b23
ML-169.10.1: Add delete coverage
...
Cover current delete behavior across LiveView index and show paths, and strengthen existing delete tests with persistence assertions.\n\nValidation: mise run dev:precommit
2026-05-20 18:04:29 +01:00
Claudio Ortolina
981099511f
Update dependencies
...
mix:
req 0.5.17 => 0.5.18
2026-05-20 17:23:12 +01:00
Claudio Ortolina
c537ea0d21
Backlog cleanup
2026-05-20 13:15:11 +01:00
Claudio Ortolina
b28309ceb9
Make dev:lint work by default only changed files
2026-05-20 13:14:18 +01:00
Claudio Ortolina
004d2a2318
ML-169.10: refine implementation plan
2026-05-20 11:20:33 +01:00
Claudio Ortolina
760c44ccb5
ML-169.10: rescope to list pages and use async handling
2026-05-20 10:42:35 +01:00