Repository navigation
Mail: Kalender und Kontakte im Mail-Tab (Phase 2) - #164
Merged
Merged
Conversation
added 3 commits
October 31, 2026 09:47
…/Kalender rechts) - Fuß der Mail-Seitenleiste wie Mockup „Seitenmenü neu“: links das Zahnrad (Mail-Einstellungen), rechtsbündig Kontakte und Kalender (je 44×44, aktiver Bereich im Akzent). Beide erscheinen nur mit features.contacts bzw. features.calendar und sobald die App den Bereich öffnen kann (folgt mit Kalender und Kontakten). - Das „+“ entfällt: ein Konto kommt nur noch über die Mail-Einstellungen dazu. „Konto hinzufügen“ im Leer-Zustand öffnet die Mail-Einstellungen mit „Konto hinzufügen“ darüber (Zurück führt in die Einstellungen). - Texte DE/EN, Unit-Test für die Feature-Abfrage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
Der Mail-Tab bekommt die Bereiche Kalender und Kontakte (Vertrag D2–D8, API C2/C3 von Mail 1.2.0, `series` aus Mail 1.3.0): - Seitenleiste je Bereich: Kalender mit Häkchen/Farbe, Gruppen GateControl / Konto / Eingeblendet, Optionen per langem Druck, „Kalender hinzufügen“, „iCal-Abo“; Kontakte mit Adressbüchern, Gruppen und Dubletten. Kalender und Kontakte lassen sich als Seite an Start anheften (ohne eigenen Tab). - Kalender: Tag, 3 Tage, Woche, Monat, Liste; Raster mit Überlappung, Ganztägigen, offenen Einladungen, Abgesagten, Einblendungen und Jetzt-Linie; Termin ansehen, anlegen, bearbeiten (Wiederholung, Zeitzone, Erinnerungen, Teilnehmer mit Vorschlägen, Ort, Teams/Link), „Nur dieser / ganze Serie“ (Serie über series.start), Antworten, „Meine Änderung erneut anwenden“ bei Konflikten, Einladungskarte in der Lese-Ansicht. - Kontakte: Liste mit Suche, Buchstaben, A–Z, Gruppen-Reiter; Kontakt mit Mail, Anrufen, Bearbeiten, letzten Mails und gemeinsamen Terminen; Bearbeiten mit Foto; Dubletten zusammenführen; vCard-Import und -Export. - Absender-Ansicht mit echtem Kontakt und „Als Kontakt speichern“; Empfänger-Vorschläge mit Kontakten und Gruppen. - Microsoft: Band „Kalender und Kontakte freigeben“ mit „Neu anmelden“ bei missingScopes, danach Hinweis mit adminConsentUrl. - Push (Erinnerung → Termin, Einladung), Live-Ereignisse calendar und contacts, Offline-Kopie wie bei Mail (nur lesen). - Parser MailPimJson über den Gson-Baum (keine Reflection), Texte DE/EN, Unit-Tests für Raster, Ganztägiges, RRULE-Text, Zeitzonen, Serienverschiebung, Merge, Parser und Push. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
…ontacts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
CallMeTechie
pushed a commit
that referenced
this pull request
Oct 31, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 2 von GateControl Mail in der App: Kalender und Kontakte im Mail-Tab (Vertrag D2–D8, API C2/C3; Server Mail 1.2.0,
seriesaus Mail 1.3.0). Baut auf #163 (Seitenleisten-Fuß) auf;mainist per Merge-Commit hereingeholt.Bereiche und Seitenleiste (D1/D2)
features.calendar/features.contacts); ein Tipp auf das aktive Symbol oder „Posteingänge“ führt zurück, ebenso „Zurück“.MenueNeu): Kalender mit Häkchen und Farbe, gruppiert „GateControl“ / je Konto / „Eingeblendet · nur ansehen“, Zustand je Kalender; lange drücken: Farbe, Erinnerungen an/aus, Umbenennen und Löschen (eigene); „Kalender hinzufügen“ und „iCal-Abo“. Kontakte: „Alle Kontakte“, Adressbücher mit Häkchen und Anzahl, Gruppen, „Dubletten“.calendar/contactshinter Mail. In „Leiste und Seiten“ heißt die Wahl dort „Im Mail-Tab | Seite“, „Seite entfernen“ lässt sie im Mail-Tab.Kalender (D3, Mockups
Kalender,Einladung)canOnline) oder Link, Erinnerungen bismaxReminders, Teilnehmer mit Vorschlägen aus Kontakten und Gruppen, frei/beschäftigt, privat, Beschreibung; Hinweis „Einladungen werden gesendet über “.series.start(Mail 1.3.0) um die Verschiebung des Vorkommens in Tagen und Minuten der Wanduhr verschoben (wieL.shiftSeriesim Portal); ohne Zeitänderung werden keine Zeitfelder geschickt. Ohneseries(Server 1.2.0) ist bei Zeitänderung nur „Nur dieser Termin“ wählbar. 400invalid { reason: 'series_shift' }→ verständlicher Hinweis.conflict { current }→ „Der Termin wurde inzwischen geändert“ mit „Neu laden“ und „Meine Änderung erneut anwenden“ (gleiches für Kontakte).Einladung): Zeit, Ort, Mini-Tagesraster mit Konflikten, Zusagen / Mit Vorbehalt / Absagen, Kommentar, „Neue Zeit vorschlagen“, „Eintragen in: “, Teilnehmer „3 von 5 zugesagt“; Zustände beantwortet („Ändern“), abgesagt („Aus Kalender entfernen“), Antwort erhalten, Gegenvorschlag (Übernehmen/Ablehnen), veraltet. Ohne Kalender-Scope: „Kalender freigeben“ (Neu anmelden). In der Liste das Etikett „Einladung“.Kontakte (D4, Mockups
Kontakte,Kontakt,KontaktBearbeiten)tel:), Bearbeiten; Adressen, Nummern, Anschrift (Karte), Geburtstag („wird 46“), Notiz, Gruppen; Letzte Mails („Alle Mails von …“ → Absender-Ansicht) und Gemeinsame Termine. Nur-lesend-Quelle ohne Bearbeiten.cards/draftvor, bei vorhandenem Kontakt „Zu hinzufügen“.CreateDocument).Absender, Schreiben, Microsoft (D5/D6)
cards/lookup(Foto, Position · Firma, Nummern zum Anrufen, „Kontakt öffnen“), sonst „Als Kontakt speichern“; ohnefeatures.contactswie bisher. „Als Kontakt speichern“ auch im Menü der Lese-Ansicht.missingScopes→ Band „Kalender und Kontakte von freigeben“ mit Neu anmelden (bestehenderrelogin-Ablauf vonMailAddAccountViewModel) im Kalender, in den Kontakten, im Konto-Dialog und an der Einladung. Bleibt der Scope danach fehlend, Hinweis, dass die Firma freigeben muss, mitadminConsentUrlzum Teilen.Push, Live, Offline (D7)
calendar_reminderöffnet den Termin (auch das Vorkommen),calendar_invitedie Einladung; Kanäle „Kalender“ und „Kalender-Einladungen“.calendar/contactsladen sichtbaren Zeitraum, Liste und Kontakt neu (eigeneMailPimRepository).MailCache, je Anmeldung, nicht im Backup, Abmelden/Fernlöschen löscht mit): Kalenderliste, Vorkommen −30 … +90 Tage, geöffnete Termine und Kontakte, alle Kontakt-Zusammenfassungen (since-Abgleich), Fotos (500, LRU). Offline nur lesen: Neu/Bearbeiten/Antworten aus, Hinweis „Offline – geht wieder mit Verbindung“.Technik
MailCalendarModels.kt,MailContactModels.kt; ParserMailPimJson(Gson-Baum wieMailJson, keine Reflection → R8 unkritisch;minifyReleaseWithR8lokal grün);MailJsonum die C2-Felder erweitert (missingScopes,calendar/contactsam Konto,adminConsentUrl,Summary.invite,Message.invite, Kontakt-/Gruppen-Vorschläge).null-Feldern (Leeren einer Regel, eines Links, eines Geburtstags) überpluginPatchRawmitserializeNulls.MailEvent,MailEventEdit,MailInvitation,MailContact,MailContactEdit,MailContactDuplicates,MailGroup.strings_pim.xml. Dunkle Darstellung über die bestehenden Theme-Farben.Tests
MailPimLogicTest(Wochen-/Monatsraster, Überlappung, über Mitternacht, ganztägig inklusiv, Agenda, Zeitzonen inkl. Sommerzeit, Serienverschiebung, RRULE-Text DE/EN, Erinnerungen, Buchstaben, lokale Suche,since-Abgleich, Merge, Geburtstage, Offline-Logik),MailPimJsonTest(alle Antworten, Konflikte, Request-Bodies, Push-Ziele), Ergänzungen inMainTabsTest.:app:testDebugUnitTest,:app:lintRelease,:app:assembleDebug,:app:minifyReleaseWithR8.Abweichungen
3day).Generated by Claude Code