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
56d9d6bfd7
Use MDEx streaming to render chat content
2026-03-20 23:42:10 +00:00
Claudio Ortolina
529a9c181d
Replace PhoenixHTMLHelpers with Markdown rendering
2026-03-20 15:58:35 +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
ccc929e939
Deduplicate tracks in ListeningStats queries
...
When multiple records share MusicBrainz release IDs, the left joins in
ListeningStats fan out — producing duplicate rows per scrobbled track.
Fix by grouping release subqueries on release_id with MIN(record_id)
before joining, so each release maps to exactly one record.
2026-03-20 12:48:40 +00:00
Claudio Ortolina
ec318607f1
Fix button/icon sizes in record set show
2026-03-20 10:35:52 +00:00
Claudio Ortolina
715a1e1f69
Consolidate handling of artist joinphrases
2026-03-19 15:09:34 +00:00
Claudio Ortolina
7d55dfd9ae
Have the AI always provide at least one link when answering questions
2026-03-19 14:30:04 +00:00
Claudio Ortolina
1001610472
First pass at having a chat count in the entity pages
2026-03-19 12:28:58 +00:00
Claudio Ortolina
97f0c5bfc3
Improve scrobbled tracks/album metadata tooltips design
2026-03-18 18:31:55 +00:00
Claudio Ortolina
1ee4d3465a
Move /dev/maintenance to /maintenance
2026-03-18 07:44:22 +00:00
Claudio Ortolina
5afb5f9533
Inline similar records in collection show view
2026-03-18 07:30:45 +00:00
Claudio Ortolina
16bcb1f36e
Use patch instead of navigate for similar records
2026-03-18 07:25:38 +00:00
Claudio Ortolina
63c95ff1e2
Move all chat related code under chats
2026-03-17 14:30:24 +00:00
Claudio Ortolina
5eb7ccd837
Fix overlapping buttons in chat
2026-03-17 14:10:31 +00:00
Claudio Ortolina
3f95aee7a7
Cap message content
2026-03-17 13:51:38 +00:00
Claudio Ortolina
a86c9ad6fc
Remove dead code
2026-03-17 13:50:34 +00:00
Claudio Ortolina
8fd8dde73d
Persist chat history
2026-03-17 13:50:01 +00:00
Claudio Ortolina
5a418248ad
Use same gaps in stats page
...
Closes #120
2026-03-16 19:30:52 +00:00
Claudio Ortolina
270762cdb6
Move maintenance menu item, remove redundant title
2026-03-16 19:28:47 +00:00
Claudio Ortolina
a459666126
Autosize all icon buttons
2026-03-16 15:09:05 +00:00
Claudio Ortolina
62359092d8
Uniform play icon sizes
...
Closes #121
2026-03-16 14:54:54 +00:00
Claudio Ortolina
3bae241d74
Uniform card corners/shadows
...
Closes #119
2026-03-16 14:51:04 +00:00
Claudio Ortolina
244e7734a5
Unify genre tag styling in record edit form
...
Use Fluxon .badge component instead of custom spans to match
the read view styling.
Closes #115
2026-03-16 14:34:35 +00:00
Claudio Ortolina
4370391265
Remove useless space-y directive
2026-03-16 14:15:45 +00:00
Claudio Ortolina
74a2b9bce8
Update and uniform styles for scrobble rules and online templates lists
2026-03-16 12:43:07 +00:00
Claudio Ortolina
f1e3b22f91
Make online store templates searchable
2026-03-16 11:56:39 +00:00
Claudio Ortolina
654b172ddb
Fix UI inconsistencies across templates
...
- Replace .separator with .dropdown_separator in 4 dropdown menus
- Change gray-* to zinc-* color classes in online store templates
- Wrap hardcoded page titles in gettext() in online store templates
- Add consistent dark:text-zinc-200 to maintenance h3 subsections
- Add text-zinc-900 dark:text-zinc-200 to scrobble section headers
- Fix heading hierarchy (h1/h2 → h2/h3) in record set items
- Align artist form modal header to text-lg font-semibold
- Use size="xs" prop instead of class override on format badge
- Add external link icon to wishlist online store buttons
2026-03-16 11:37:29 +00:00
Claudio Ortolina
028f111300
Stabilize rate limiter tests by using dependency injection
2026-03-16 11:21:24 +00:00
Claudio Ortolina
4a2b7f4e03
Extract dropdown_nav/1 component in Layouts
2026-03-16 11:13:45 +00:00
Claudio Ortolina
d59ee157db
Add current section border to top right menu sections
2026-03-16 11:09:31 +00:00
Claudio Ortolina
3fb6c93d9d
Add sorting optoins to scrobble rules page
2026-03-16 08:03:47 +00:00
Claudio Ortolina
6d6cf21047
Uniform scrobble rules layout
2026-03-16 08:00:17 +00:00
Claudio Ortolina
43b054b34a
Search scrobble rules, improved layout
2026-03-16 07:58:21 +00:00
Claudio Ortolina
ac2758aabf
Fix more margins
2026-03-15 21:09:52 +00:00
Claudio Ortolina
805f93cd3c
Improve wording and layout of scrobbled tracks order buttons
2026-03-15 21:03:11 +00:00
Claudio Ortolina
d2cccce9dc
Uniform margins
2026-03-15 20:58:50 +00:00
Claudio Ortolina
d815928f91
Fix SearchParser catch-all wiping valid filters
...
The `_, %{}` catch-all in `normalize/1` matched any map, so an
invalid filter (e.g. `format:vin`) would reset the accumulator
even when valid filters were already collected. Add a `map_size`
guard so it only returns `%{query: ""}` for a truly empty
accumulator. Also update the moduledoc.
2026-03-15 18:56:30 +00:00
Claudio Ortolina
4fb148e9db
Simplify signatures of scrobbling functions
2026-03-14 22:22:41 +00:00
Claudio Ortolina
69ff926aba
Allow WASM evaluation on prod
2026-03-14 18:02:27 +00:00
Claudio Ortolina
2dd6f10a7f
Fix CSP error for barcode detection
2026-03-14 17:38:04 +00:00
Claudio Ortolina
4d1ac9652c
Link the scrobbled count in stats
2026-03-14 09:59:09 +00:00
Claudio Ortolina
7cdd502701
Streamline print/scrobble buttons
2026-03-14 08:51:19 +00:00
Claudio Ortolina
3d66d7a6d7
Remove unnecessary spacing in the application footer
2026-03-14 07:17:08 +00:00
Claudio Ortolina
1dd7974cc7
Use socket assigns instead of threading IDs via JS.push
...
Extends the same optimization from the previous commit to
all remaining show page handlers across collection, wishlist,
and artist LiveViews. Also simplifies bare JS.push() calls
to plain phx-click strings.
2026-03-13 16:48:12 +00:00
Claudio Ortolina
0b9d008ecb
No need to thread the record ID when we can use the record directly
2026-03-13 16:29:11 +00:00
Claudio Ortolina
be563d8fca
Streamline record set items reordering query
2026-03-13 16:26:01 +00:00
Claudio Ortolina
002c81d3b8
Load Tidewave only in dev
2026-03-13 15:13:37 +00:00
Claudio Ortolina
854a6e1816
Allow worker blob URLs in CSP directives
...
canvas-confetti creates web workers from blob URLs,
which requires an explicit worker-src directive.
2026-03-13 15:01:28 +00:00