Zwei Probleme bei der großen Rennmausliste (und allen Infinite-Scroll-Listen) nach
Zurück-Navigation behoben:
1) Event- statt Timer-basiert: Die Scroll-Wiederherstellung hängt sich jetzt per
ResizeObserver an die Höhenänderung der Seite (Liste ist wieder da) und springt dann
zur gemerkten Position — statt auf einen festen Timer zu warten. Bricht bei eigener
Scroll-Eingabe ab; Sicherheitsnetz nach 15 s.
2) Infinite-Scroll baut Höhe wieder auf: useInfiniteList merkt sich (optionaler
restoreKey) die geladene Seitenzahl je Query und lädt sie nach einer Zurück-
Navigation wieder nach — sonst war die Liste nur 1 Seite hoch und die Position
unerreichbar. Aktiviert für Rennmäuse, Kontakte, Würfe, Becken, Anfragen, Verträge.
tsc/eslint/vitest grün; e2e (Listen + Navigation, 41) grün.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Neues FilterPanel-Muster (src/components/FilterPanel.tsx + filterPanel.css):
- Mobil (<768px): Suchfeld immer sichtbar; alle weiteren Filter hinter einem
'Filter (N)'-Button eingeklappt (Badge = Anzahl aktiver Nicht-Default-Filter).
Tippen öffnet/schließt den Drawer. 'Filter zurücksetzen' im Drawer.
- Desktop (>=768px): Toggle versteckt, Drawer als display:contents → alle Controls
inline in der bestehenden .filters-Flexzeile, wie bisher.
Auf GerbilsPage, WuerfeListPage und AnfragenPage ausgerollt.
BeckenPage/KontaktePage nur ein Suchfeld → kein Panel nötig.
e2e: filter-panel.spec.ts (8 Tests, phone+desktop); bestand/tiere/anfragen-Specs
erhalten openFilterPanel-Aufruf vor Drawer-Controls; fixtures.ts +openFilterPanel().
Vitest 78 / e2e 102 grün.
Mobil-Pass (390px, Durchsicht): Hauptproblem behoben. Beobachtete Restpunkte
für god (nicht selbst gefixed):
- .genotype-table in Genetik/Probeverpaarung: Genotyp-Strings können eng werden
- Stammbaum (react-d3-tree SVG): kein explizites mobile Viewport-Handling
- BreedingResultView Genotyp-Detail-Tabelle: ggf. horizontal scrollbar-los
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>