fix: reliable concerts (backend events cache) + web importer preview layout

- Backend now caches Ticketmaster events per artist and prefers the larger
  recent result, so a flaky partial/empty response can't shrink a good list;
  every client (web/Android) stays consistent (1h TTL self-heals).
- Web SoundCloud importer preview: add the missing .gtrack-num grid cell so
  the 4-column row no longer squeezes the cover/title (title was wrapping one
  char per line).
- CHANGELOG [2.3] opened for this batch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Opus 4.8 committed 2026-08-21 23:02:56 +02:00
1 parent f56d47800c
commit b584159568
3 files changed
+69 -5

No files matched your search

+35
View File
@@ -64,6 +64,41 @@ Versioning: two-part `MAJOR.MINOR` — each release bumps the minor (features an
---
## [2.3] — 2026-08-21
A cleanup-and-parity release: the **Song Importer moves into the Global Search field** (one field,
like Android), concert events become **reliable across web/Android**, and several Android gaps close.
### Added
- **Unified Global Search field (Web)** — the separate Song-Importer page/sidebar entry is gone. The
one search field now auto-detects: a **link** (Spotify/SoundCloud/YouTube) opens the importer
preview, plain **text** runs a Deezer search. Cleaner left nav, same behaviour as Android.
### Fixed
- **Concert events reliability (Web + Android)** — Ticketmaster's free `keyword` search intermittently
returns a partial subset (or none), so back-to-back calls disagreed (web showed 7, a later live
call got only 2, Android sometimes showed 0). The web had a private 30-min cache masking this; the
cache now lives **on the backend** and **prefers the larger recent result**, so a flaky response
can't shrink a good list and every client stays consistent (1 h TTL self-heals).
- **Concert date/time (Web + Android)** — shows the **venue-local** time (Ticketmaster's `localDate`/
`localTime`) instead of the UTC instant, so a 20:00 show no longer displayed as 08:00. Android
parses the naive local datetime (was crashing on zone-less values → missing times).
- **Concert rows uneven (Android)** — rebuilt each row with a fixed-width calendar-style date block
(day big, month/year + time small), so every row is the same height and the divider/venue align.
- **Concert load failures were silent (Android)** — the fetch swallowed errors and showed an empty
list. Errors now surface ("Konzerte konnten nicht geladen werden" + reason), with a request
timeout and non-2xx treated as a real failure.
- **Web importer preview layout** — the SoundCloud track row was missing its grid number-cell, so the
4-column `.gtrack-item` grid squeezed the cover into 28px and the title into 52px (title wrapped
one character per line). Added the missing cell.
- **Android artist albums incomplete** — `lookupArtistAlbums` filtered to `record_type == "album"`,
dropping EPs and singles that Deezer (and the web app) show. Now returns all, sorted album → EP →
single.
- **"Falscher Künstler?" pin button minimised (Web + Android)** — reduced to a small ⚙ icon-only pill
in the artist hero's corner instead of a full-width labelled button.
---
## [2.2] — 2026-08-19
Gets YouTube downloads working again after they broke on two independent fronts.