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
Claudio Ortolina
d2def9d0d3
ML-169.8: tighten task scope
2026-05-20 07:55:36 +01:00
Claudio Ortolina
f6792e08aa
Update dependencies
...
quokka 2.13.0 => 2.13.1
2026-05-19 21:56:45 +01:00
Claudio Ortolina
4a6c80f7a9
ML-191: avoid VACUUM / scrobble refresh write collision
...
Set busy_timeout: 5_000 on MusicLibrary.Repo so SQLite waits up to
5 seconds on lock contention instead of throwing SQLITE_BUSY
immediately (default is 0).
Move RepoVacuum from 0 3 to 3 3 (3:03 AM London) to avoid the
deterministic collision with RefreshScrobbles which fires on the
every-5-min cadence at the hour mark.
2026-05-19 16:46:37 +01:00
Claudio Ortolina
d8b0dd2327
Update ui-framework skill with LV stream gotcha
2026-05-19 15:18:00 +01:00
Claudio Ortolina
78670268d5
ML-169.5: cancel task as it breaks functionality
2026-05-19 15:16:55 +01:00
Claudio Ortolina
be371cbf4e
ML-169.11: add correlated subquery fix task
2026-05-19 12:51:36 +01:00
Claudio Ortolina
ab8062ddc6
ML-169.9: add pagination stream reset fix task
2026-05-19 12:51:29 +01:00
Claudio Ortolina
e42e28992a
ML-169.10: add optimistic delete UI fix task
2026-05-19 12:51:19 +01:00
Claudio Ortolina
96248231fa
ML-169.7: add scrobble stream reset fix task
2026-05-19 12:51:05 +01:00
Claudio Ortolina
c9f00c9360
ML-169.8: add StatsLive TTFB performance fix task
2026-05-19 12:50:56 +01:00
Claudio Ortolina
e458f605c5
ML-169.6: add redundant stream reload fix task
2026-05-19 12:50:36 +01:00
Claudio Ortolina
0ec4b989c9
ML-169.5: add display toggle performance fix task
2026-05-19 12:50:09 +01:00
Claudio Ortolina
f1fde63d42
ML-189: simplify release-component notifications
...
- Use a tagged type
- Leave skipping responsibility to subscribed process
2026-05-19 12:18:07 +01:00
Claudio Ortolina
73046bb0f5
ML-190: fix record subscription lifecycle
2026-05-19 12:10:34 +01:00