Skip to content

Start: Seiten neben Start statt Tabs - #151

Merged
CallMeTechie merged 1 commit into
mainfrom
feature/start-seiten
Oct 30, 2026
Merged

CallMeTechie merged 1 commit into
mainfrom
feature/start-seiten

Conversation

@CallMeTechie

Copy link
Copy Markdown
Owner

Überblick

Funktionen, die heute ein Tab sind (Chats, Vault, Drive, Netzwerk, Familie – soweit verfügbar), lassen sich wahlweise als Tab in der Leiste oder als Seite neben Start zeigen (abgenommenes Mockup „Start-Seiten“). Start wird dazu eine Seitenreihe (HorizontalPager): Start immer zuerst, rechts die angehefteten Seiten, ganz rechts die Plus-Seite „Seite anheften“. Dazu kommen Widget-Seiten („Widgets 2“, „Widgets 3“ …), die Schnellaktionen und Widgets wie Start aufnehmen.

  • Anheften: Plus-Seite → Sheet „Seite an Start anheften“ (Aus der Leiste / Mehr Platz für Widgets), Tab lange drücken → „An Start anheften“ / „Leiste und Seiten …“, Einstellungen → Darstellung → Leiste und Seiten, Seiten anordnen → „Anheften“. Snackbar mit Rückgängig.
  • Lösen: „⋯“ in der Kopfzeile der Seite → „Als Tab anzeigen“ bzw. bei Widget-Seiten „Seite entfernen“ (mit Rückfrage, wenn sie etwas enthält) und „Seiten anordnen“.
  • Angeheftete Seiten zeigen den echten Bildschirm des Tabs (gleiche Screens/ViewModels), ihr Symbol fehlt in Leiste und Rail. Seitenpunkte über der Leiste sind antippbar, tragen Zähler (ungelesene Chats, Remote online) und lesen „Seite X von N: Name“ vor.
  • Regeln: Start in der Leiste → erste Seite; Zurück auf einer anderen Seite → Start; Pushes/Links/alte Routen auf einen angehefteten Tab öffnen dessen Seite (bzw. den Unterbildschirm darüber, Zurück führt auf die Seite). Admin-Sperre (arrange_locked) sperrt Anheften/Lösen/Anordnen, die Seiten des Admins gelten.
  • Alles angeheftet und Schalter an → keine Leiste/Rail mehr, nur Seitenpunkte mit Namenszeile.

Speicherformat (ohne Server-Änderung)

Die Seiten stehen in der Liste start von GET/PUT /api/v1/client/layout als Trenn-Einträge page:<id> (page:chats, page:vault, page:drive, page:network, page:familie, page:w2 …). Alles vor dem ersten page: gehört zur Startseite, Einträge nach page:wN zu dieser Widget-Seite; Funktionsseiten haben keine Einträge (was hinter ihnen steht, gehört zur Seite davor). Beim Speichern mit Server-Kopie werden fremde Einträge anderer Geräte wie bisher behalten, aber ein hier gelöster Marker kommt nicht aus der Server-Kopie zurück (StartPages.keepForeign). Lokal wird wie bisher mitgespeichert (offline, ältere Server).

Schalter „Leiste ausblenden, wenn nur Start bleibt“: lokal pro Gerät (DataStore hide_bar_only_start, Standard an), nicht im Server-Layout – er ändert nur die Darstellung auf diesem Gerät (Tablet vs. Handy) und bleibt auch bei Admin-Sperre bedienbar.

Ältere App-Versionen: StartLayout.decode liefert für page: null → die Einträge werden übersprungen, alle Widgets/Schnellaktionen erscheinen wieder auf Start; beim Speichern bleiben die Marker über keepForeign erhalten (mit Tests abgesichert).

Wisch-Konflikte

  • Der Pager wechselt die Seite per waagerechtem Wischen. Auf angehefteten Seiten wechseln innere Reiter nur per Tippen: Drive Dateien/Fotos (userScrollEnabled aus), Schul-Tage (Wischen aus); Netzwerk-Segmente waren schon nur antippbar. Gesteuert über LocalInStartPager, als Tab bleibt alles wie bisher.
  • Waagerecht scrollende Inhalte (Chip-Leisten, Info-/Verbrauchskarte auf Start) und Slider in Widgets behalten ihre Geste (Kind zuerst); am Ende einer Liste/Karte reicht Nested Scroll an den Seitenwechsel weiter. Swipe-Gesten in Listen werden vom Pager nicht geschluckt.

Bewusst anders / nicht umgesetzt

  • Anheften aus Einstellungen und „Seiten anordnen“ zeigt die Snackbar, springt aber nicht zum Pager (man bleibt in der Liste); aus Plus-Seite und Tab-Menü springt Start auf die neue Seite.
  • „Seite entfernen“ einer Widget-Seite legt ihre Schnellaktionen/Widgets zurück auf Start (nichts wird gelöst, Rückgängig stellt die Seite wieder her); die Rückfrage sagt das.
  • Blöcke lassen sich nicht zwischen Seiten verschieben; was auf einer Widget-Seite angeheftet wird (über ihr „Schnellaktionen und Widgets“ bzw. lange drücken), landet dort.
  • Info- und Verbrauchskarte bleiben auf Start und behalten ihr eigenes Wischen (Karussell, am Ende geht es zur nächsten Seite).
  • „Seiten anordnen“ hat zusätzlich einen Eintrag in „Leiste und Seiten“, weil der Mockup-Text darauf verweist.

Tests

  • StartPagesTest (Kodieren/Zerlegen, Anheften/Lösen, Widget-IDs, Reihenfolge, Merge der Pins pro Seite, syncPins mit Zielseite, Server-Regex, Verhalten älterer Apps, keepForeign mit gelösten Markern)
  • MainTabsTest (Seite ↔ Route, pageFor/arg für Deep Links, sichtbare Tabs, Leiste ausblenden)
  • TabLayoutRepositoryTest (gelöste Seite kommt nicht aus der Server-Kopie zurück, Admin-Sperre)

Doku: docs/FEATURES.md, docs/ARCHITECTURE.md, docs/LARGE_SCREENS.md. Keine Versionsanhebung.


Generated by Claude Code

- Start wird eine Seitenreihe (HorizontalPager): Start immer zuerst, dann
  die angehefteten Seiten, ganz rechts die Plus-Seite „Seite anheften“
- Chats, Vault, Drive, Netzwerk und Familie wahlweise als Tab oder als
  Seite neben Start (echter Bildschirm des Tabs, „⋯“ in dessen Kopfzeile);
  angeheftet verschwindet das Symbol aus Leiste und Navigationsleiste
- Widget-Seiten („Widgets 2“ …) mit Schnellaktionen und Widgets wie Start:
  lange drücken → Bearbeiten, Anordnen; leer mit gestricheltem Rahmen
- Seitenpunkte über der Leiste (antippbar, Zähler für Chats/Remote),
  ohne Leiste mit Namenszeile
- Anheften über Plus-Seite, langes Drücken auf einen Tab, „Seiten
  anordnen“ und Einstellungen → „Leiste und Seiten“; Snackbar mit
  Rückgängig; Admin-Sperre wie beim Anordnen
- Start in der Leiste → erste Seite, Zurück auf einer Seite → Start;
  Pushes und Routen auf angeheftete Tabs öffnen deren Seite
- Inneres Wischen auf Seiten nur noch per Tippen (Drive Dateien/Fotos,
  Schul-Tage)
- Speicherung als page:<id>-Einträge in der Start-Reihenfolge (ohne
  Serveränderung, ältere Apps behalten sie); Schalter „Leiste ausblenden,
  wenn nur Start bleibt“ lokal pro Gerät
- Reine Logik in StartPages/MainTabs mit Unit-Tests, Doku ergänzt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
@CallMeTechie
CallMeTechie merged commit b5e6114 into main Oct 30, 2026
9 checks passed
CallMeTechie pushed a commit that referenced this pull request Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants