feat(web+android): Warteschlange bearbeiten — ziehen und entfernen
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
77a3bb33f0
commit
d5b5c8cf84
9 files changed
+330
-7
No files matched your search
+28
-1
@@ -16,6 +16,7 @@ Die Android-App zählt eigenständig weiter (mehrere APKs pro Release). Welche d
|
||||
| Music playback (Navidrome) | ✅ | ✅ |
|
||||
| Seek bar / scrubbing | ✅ | ✅ |
|
||||
| Queue management | ✅ | ✅ |
|
||||
| Warteschlange bearbeiten (ziehen/löschen) | ✅ | ✅ |
|
||||
| Shuffle / Repeat | ✅ | ✅ |
|
||||
| Radio mode (similar songs) | ✅ | ✅ |
|
||||
| Now Playing overlay | ✅ | ✅ |
|
||||
@@ -79,7 +80,33 @@ Die Android-App zählt eigenständig weiter (mehrere APKs pro Release). Welche d
|
||||
|
||||
## [3.1] — 2026-09-22
|
||||
|
||||
**Android:** 1.15 (versionCode 18) → 1.18 (versionCode 21). 1.16 brachte den Rollbalken, 1.17 und 1.18 machten ihn tatsächlich bedienbar.
|
||||
**Android:** 1.15 (versionCode 18) → 1.19 (versionCode 22). 1.16 brachte den Rollbalken, 1.17 und 1.18 machten ihn bedienbar, 1.19 bringt das Bearbeiten der Warteschlange.
|
||||
|
||||
### Added
|
||||
- **Die Warteschlange lässt sich bearbeiten (Web + Android)** — bisher war sie eine reine Anzeige:
|
||||
reinlegen ging, umsortieren oder wieder herausnehmen nicht. Jetzt trägt jede Zeile einen Griff
|
||||
zum Ziehen und ein ✕ zum Entfernen, auf beiden Plattformen und in beiden Web-Listen (Seitenleiste
|
||||
und Now-Playing).
|
||||
- **Der Zeiger auf den laufenden Titel wandert mit.** Das ist der Teil, bei dem ein Fehler nicht
|
||||
auffällt, sondern später den falschen Song spielt: fällt ein Titel **vor** dem laufenden weg,
|
||||
rutscht dieser eine Stelle vor; trifft es den laufenden selbst, rückt der nächste nach (am
|
||||
Ende der Liste der davor); beim Verschieben wird der Zeiger über die **Position** des laufenden
|
||||
Titels neu bestimmt statt gerechnet — das stimmt auch, wenn er selbst gezogen wurde.
|
||||
- Diese Rechnung liegt im Web als reines Modul ohne Importe in `src/player/queueMath.js`, damit
|
||||
sie ohne DOM und ohne Wiedergabe prüfbar ist: **12 Fälle, alle grün.**
|
||||
- **Web: Zeiger-Ereignisse statt HTML5-Drag-and-Drop.** Dessen `dragstart` gibt es auf
|
||||
Touch-Geräten gar nicht — die Warteschlange wäre am Handy unbearbeitbar geblieben.
|
||||
`setPointerCapture` bedient Maus und Finger über denselben Weg. Die Zeilen zwischen Start und
|
||||
Ziel weichen aus, damit die Lücke dorthin wandert, wo man loslässt.
|
||||
- **Android: getauscht wird laufend**, sobald der Finger eine Zeilenhöhe zurückgelegt hat — so
|
||||
braucht es kein Geisterbild, die Liste zeigt die neue Reihenfolge sofort. Gezogen wird am
|
||||
Griff, nicht an der Zeile, sonst ließen sich Ziehen und Scrollen nicht auseinanderhalten; und
|
||||
der erste Fingerkontakt wird verbraucht, sonst beansprucht die `LazyColumn` die Geste (dieselbe
|
||||
Falle wie beim Rollbalken).
|
||||
- Im Player laufen die lokale Liste und Media3 im Gleichschritt (`moveMediaItem`,
|
||||
`removeMediaItem`). Liefen sie auseinander, zeigte die Oberfläche den falschen Song an, weil
|
||||
der laufende Index vom Controller kommt, der Titel dazu aber aus der lokalen Liste.
|
||||
|
||||
|
||||
### Changed
|
||||
- **Der Rollbalken ist greifbar (Web)** — er war 4 px breit. Sichtbar reichte das, mit der Maus war
|
||||
|
||||
Reference in new issue
Block a user