diff --git a/CHANGELOG.md b/CHANGELOG.md index 849b59f..53d5780 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,6 +77,30 @@ Die Android-App zählt eigenständig weiter (mehrere APKs pro Release). Welche d --- +## [3.1] — 2026-09-22 + +**Android:** unverändert bei 1.15 (versionCode 18) — beide Änderungen betreffen nur das Web. + +### Changed +- **Der Rollbalken ist greifbar (Web)** — er war 4 px breit. Sichtbar reichte das, mit der Maus war + er kaum zu treffen: in einer langen Playlist kam man nicht ans Ende, ohne zu scrollen. Jetzt 12 px + **Greiffläche** mit einem schmalen sichtbaren Balken darin (durchsichtiger Rand plus + `background-clip:content-box`), heller beim Überfahren und beim Ziehen — wie in Spotify. + - `min-height:44px` hält ihn auch bei sehr langen Listen greifbar; bei 1900 Titeln schrumpfte er + sonst auf wenige Pixel, also genau dort, wo man ihn am nötigsten hat. + - **Firefox bekommt nur die Farbe.** Dessen Standardbalken ist ohnehin breit genug; ein + `scrollbar-width:thin` hätte ihn wieder verschmälert. Die Ausnahmen, die bewusst keinen Balken + zeigen (waagerechte Kartenreihen, Lyrics, Chips), bleiben unangetastet. +- **„Neu von deinen Künstlern" sitzt jetzt in den Favoriten (Web)** — es stand links unter + *Entdecken*, in Android dagegen als Knopf „✨ Neu" in den Favoriten. Zwei Plattformen, zwei Orte + für dieselbe Sache. Das Web folgt jetzt Android: der Eintrag in der Seitenleiste ist weg, in der + Kopfzeile der Favoriten steht der Knopf — dort, wo auch die gefolgten Künstler stehen. + - Der Knopf erscheint nur, wenn man überhaupt jemandem folgt, genau wie in Android. + - Die Seite hat dafür einen Zurück-Knopf bekommen (vorher unnötig, weil sie über die Seitenleiste + erreichbar war) und zählt für die Seitenleiste jetzt zur Bibliothek statt zu Entdecken. + +--- + ## [3.0] — 2026-09-19 **Android:** 1.13 (versionCode 16) → 1.15 (versionCode 18). 1.13 brachte Folgen, Zeitleiste und diff --git a/index.html b/index.html index 1c6f26f..6057142 100644 --- a/index.html +++ b/index.html @@ -76,9 +76,6 @@ - @@ -265,7 +262,14 @@
- +
@@ -418,6 +422,7 @@
+ diff --git a/src/views/artistNews.js b/src/views/artistNews.js index 6170d28..13d513b 100644 --- a/src/views/artistNews.js +++ b/src/views/artistNews.js @@ -3,7 +3,7 @@ import { esc } from '../utils.js'; import { api } from '../api.js'; import { openDlModal } from '../ui/ui.js'; // Zirkulär — sicher, weil nur in Ereignisbehandlern aufgerufen -import { navigate } from './navigation.js'; +import { navigate, _navGoBack } from './navigation.js'; // ─── NEU VON DEINEN KÜNSTLERN ─────────────────────────────────────────────── // Zeitleiste der jüngsten Veröffentlichungen aller Künstler, denen man folgt. "Folgen" ist @@ -15,6 +15,10 @@ let _laeuft = false; export async function loadArtistNews(tage = _tage) { _tage = tage; + // Die Seite haengt an den Favoriten (Knopf "✨ Neu") und nicht mehr an der Seitenleiste, + // deshalb braucht sie einen Weg zurueck wie jede andere Unterseite. + const zurueck = document.getElementById('artist-news-back-btn'); + if (zurueck) zurueck.onclick = () => _navGoBack(); document.querySelectorAll('#artist-news-sort .sort-chip').forEach(c => c.classList.toggle('active', Number(c.dataset.days) === tage)); diff --git a/src/views/navigation.js b/src/views/navigation.js index 743057e..3bd9410 100644 --- a/src/views/navigation.js +++ b/src/views/navigation.js @@ -92,7 +92,7 @@ export function navigate(page, data=null) { document.querySelectorAll('.page').forEach(p => p.classList.remove('active')); document.querySelectorAll('.nav-item,.bnav-item').forEach(n => n.classList.remove('active','active-blue')); - const cls = ['discover','new-releases','recommendations','artist-news'].includes(page) ? 'active-blue' : 'active'; + const cls = ['discover','new-releases','recommendations'].includes(page) ? 'active-blue' : 'active'; document.querySelectorAll(`[data-page="${page}"]`).forEach(el => el.classList.add(cls)); const pageEl = document.getElementById(`page-${page}`); if(pageEl) { @@ -109,8 +109,10 @@ export function navigate(page, data=null) { } } closeSidebar(); - if(['discover','new-releases','recommendations','random','artist-news'].includes(page)) switchNavMode('discover'); - else if(['home','artists','albums','starred','playlists'].includes(page)) switchNavMode('library'); + // artist-news haengt jetzt an den Favoriten (Knopf "✨ Neu"), nicht mehr an Entdecken — + // deshalb bleibt die Seitenleiste in der Bibliothek stehen und Favoriten bleibt markiert. + if(['discover','new-releases','recommendations','random'].includes(page)) switchNavMode('discover'); + else if(['home','artists','albums','starred','playlists','artist-news'].includes(page)) switchNavMode('library'); if(page==='home') loadHomeData(!S._navJumping); // explicit Home click refreshes; back/forward keeps state if(page==='artists' && !document.getElementById('artists-grid').children.length) loadArtists(); diff --git a/src/views/playlists.js b/src/views/playlists.js index 6ea352a..93ddcd5 100644 --- a/src/views/playlists.js +++ b/src/views/playlists.js @@ -265,6 +265,10 @@ function _passendeAnzahl(wrap) { let _starredArtists = []; function _renderStarredArtists(artists) { _starredArtists = artists; + // "✨ Neu" fuehrt in die Zeitleiste und steht in der Kopfzeile der Favoriten — dieselbe + // Stelle wie in Android. Ohne gefolgte Kuenstler gaebe es dort nichts zu sehen. + const neuBtn = document.getElementById('starred-news-btn'); + if (neuBtn) neuBtn.style.display = artists.length ? '' : 'none'; const wrap = document.getElementById('starred-artists-section'); if (!wrap) return; wrap.innerHTML = ''; diff --git a/styles.css b/styles.css index 3a6cc3c..ed7613a 100644 --- a/styles.css +++ b/styles.css @@ -20,7 +20,20 @@ #app input,#app textarea,#app [contenteditable=true],#app .selectable, #app #np-lyrics-content,#app .lyrics-line,#app .lyrics-plain{-webkit-user-select:text;user-select:text} html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);overflow:hidden} -::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--surface2);border-radius:2px} +/* Rollbalken: 4 px waren zwar unauffaellig, aber mit der Maus kaum zu treffen — in einer langen + Playlist kam man nicht ans Ende. Jetzt 12 px Greiffläche mit einem schmalen sichtbaren Balken + (durchsichtiger Rand + background-clip), wie bei Spotify. min-height haelt ihn bei sehr langen + Listen greifbar, sonst schrumpft er bei 1900 Titeln auf wenige Pixel. */ +::-webkit-scrollbar{width:12px;height:12px} +::-webkit-scrollbar-track{background:transparent} +::-webkit-scrollbar-thumb{background:var(--surface2);border-radius:8px;border:3px solid transparent;background-clip:content-box;min-height:44px} +::-webkit-scrollbar-thumb:hover{background:var(--text3);background-clip:content-box} +::-webkit-scrollbar-thumb:active{background:var(--text2);background-clip:content-box} +::-webkit-scrollbar-corner{background:transparent} +/* Firefox kennt die ::-webkit-Regeln nicht. Dort NUR die Farbe setzen — der Standardbalken ist + ohnehin breit genug zum Greifen, "thin" wuerde ihn wieder verschmaelern. scrollbar-color wird + vererbt; die Ausnahmen (.scroll-row, Lyrics, Chips) setzen weiterhin scrollbar-width:none. */ +html{scrollbar-color:var(--surface2) transparent} /* ── SETUP ── */ html.ns-authed #setup-screen{display:none}