Claudio Ortolina
e64f2b12c4
ML-200: switch to a vertical chart
2026-05-31 22:02:12 +03:00
Claudio Ortolina
e67b172d64
ML-200: daily scrobble count charts
2026-05-31 21:52:06 +03:00
Claudio Ortolina
611ca7e386
Rename vertical_bar_chart -> horizontal_bar_chart
2026-05-31 21:13:53 +03:00
Claudio Ortolina
dd24258f33
Make stats formats and types counters sync
2026-05-27 23:45:29 +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
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
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
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
851cb36858
Fix dl accessibility violations on stats dashboard
2026-04-15 14:16:24 +01:00
Claudio Ortolina
405235e2b3
Add picker to create scrobble rules on the fly
2026-04-15 10:53:58 +01:00
Claudio Ortolina
888b5a68e6
Update all callers to use matching_records
...
Migrate StatsLive.Index, ScrobbledTracksLive.Index, and TopAlbums to
consume matching_records list instead of scalar record IDs. Remove the
derive_legacy_record_ids bridge function. TopAlbums now uses a dropdown
for multi-record badges with play count display.
2026-04-14 16:14:59 +01:00
Claudio Ortolina
40ea3aaa2a
Add fallback error images for scrobble activity
2026-04-05 08:35:23 +01:00
Claudio Ortolina
4e8f1fd6f0
Fix cover image distortion in scrobble activity
2026-04-01 21:14:18 +01:00
Claudio Ortolina
bb1c53c44f
Don't display some stats when there's no record
2026-03-29 08:48:30 +01:00
Claudio Ortolina
0e6760ea73
Fix display of latest record when db is empty
2026-03-29 08:39:13 +01:00
Claudio Ortolina
d45aff21ec
Rename refresh_lastfm_feed to refresh_scrobbles
2026-03-28 08:59:22 +00:00
Claudio Ortolina
61dd3f45c7
Move refresh config and callers to ListeningStats
2026-03-27 23:14:09 +00:00
Claudio Ortolina
88542cc537
Fix Tailwind layout and spacing issues
2026-03-27 16:11:05 +00:00
Claudio Ortolina
8c7f2f5703
Make sure toasts are synced
2026-03-24 14:01:56 +00:00
Claudio Ortolina
f3c50f05b8
Fix gaps and margins
2026-03-22 18:58:12 +00:00
Claudio Ortolina
9877751ff4
Reduce size of scrobble activity tabs list
2026-03-22 18:49:46 +00:00
Claudio Ortolina
87cbf55ee5
Uniform use of .section/1 across all stats components
2026-03-22 18:47:27 +00:00
Claudio Ortolina
a83efe9908
Extract an internal section/1 component
2026-03-22 18:37:24 +00:00
Claudio Ortolina
9aed3afd7a
Re-align buttons for scrobble activity
2026-03-22 17:38:38 +00:00
Claudio Ortolina
dcf89fbed3
Add missing attrs
2026-03-22 17:30:45 +00:00
Claudio Ortolina
710931dd4a
Refactor stats page with semantic components to experiment with alternative layouts
2026-03-22 17:15:48 +00:00
Claudio Ortolina
4c07eabd24
Move records on this day up on mobile
2026-03-22 11:03:46 +00:00
Claudio Ortolina
83c9d710ef
Change color of Top 20 release years chart
2026-03-21 20:57:40 +00:00
Claudio Ortolina
b85ce0831c
Move filters/selectors to the side of the title
2026-03-21 18:26:39 +00:00
Claudio Ortolina
19428b85f2
Move records on this day to the left, re-position filter
2026-03-21 18:12:00 +00:00
Claudio Ortolina
b12e70f471
Refactor charts to use plain HTML
...
More responsive, less edge cases, and simpler to maintain.
2026-03-21 18:00:06 +00:00
Claudio Ortolina
a479d60da3
Link top 20 years chart
2026-03-21 09:27:53 +00:00
Claudio Ortolina
5a27fc46ac
Add Top 20 Release Years widget
2026-03-21 09:02:25 +00:00
Claudio Ortolina
55aa7aa9d3
Move records on this day near top_* sections
2026-03-21 08:38:45 +00:00
Claudio Ortolina
47ca6fa1d2
Add canonical_tailwind to get correct formatting for tailwind classes
2026-03-20 13:02:32 +00:00
Claudio Ortolina
5a418248ad
Use same gaps in stats page
...
Closes #120
2026-03-16 19:30:52 +00:00
Claudio Ortolina
4d1ac9652c
Link the scrobbled count in stats
2026-03-14 09:59:09 +00:00
Claudio Ortolina
1a62360b21
Group records in records on this day widget
2026-03-12 09:09:25 +00:00
Claudio Ortolina
08f7565d44
Replace inspect(reason) with friendly error messages
...
Closes #81
2026-03-05 20:25:13 +00:00
Claudio Ortolina
871f4b3554
Extract ListeningStats out of ScrobbleActivity
2026-02-27 12:16:38 +00:00
Claudio Ortolina
e9b9717b08
Inline templates inside LV modules
2026-02-24 17:20:21 +00:00
Claudio Ortolina
857c981e1d
Improve display of scrobbled tracks in index
...
- Use proper time element
- Add tooltip with metadata
2025-12-09 15:01:16 +00:00
Claudio Ortolina
71f7a38fee
Don't use streams for records on this day
2025-11-26 18:50:35 +00:00
Claudio Ortolina
a597ff4032
Make application work with empty database
2025-11-19 10:16:21 +00:00
Claudio Ortolina
a12963cb0a
Always render cover hash for scrobbles if available
2025-10-23 13:53:10 +01:00
Claudio Ortolina
9542421229
Resolve date of today considering timezone
2025-10-07 01:27:40 +03:00
Claudio Ortolina
641ba3e1b7
Improve heuristics to render artist links for scrobbled tracks
2025-09-29 18:40:50 +03:00
Claudio Ortolina
2d1a99edfd
Can refresh feed from scrobbled tracks view
2025-09-28 10:14:44 +03:00
Claudio Ortolina
b462b8e53e
Do not try to use cover fallback when hash is nil
2025-09-27 21:15:07 +03:00