Repository navigation
Mail: eigener Tab für GateControl Mail (Phase 1) - #156
Merged
Merged
Conversation
added 3 commits
October 30, 2026 18:54
Tab „Mail“ für das Plugin gatecontrol-mail nach Vertrag D: Posteingang mit Alle/Konto, Relevant/Sonstige und Wischgesten, Seitenmenü mit Konten und Ordnern, Lesen mit KI-Leiste, Drive-Ablage und abgesicherter HTML-Anzeige (WebView ohne JavaScript, Anfragen abgefangen), Schreiben mit Empfänger- Vorschlägen, Anhängen vom Gerät oder aus Drive, 10-s-Rückgängig und Senden planen, Zum Ablegen, Postausgang, Konto hinzufügen (inkl. Microsoft-Anmeldung mit PKCE über Custom Tabs und msauth-Redirect), Einstellungen, Push (Kanal „Mail“), Realtime-Events und Offline-Kopie. Als Seite neben Start anheftbar. Ohne Plugin ändert sich nichts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
- Bilder im WebView: img/<token> liefert JSON mit Base64, cid/… die mediaId
(Bild aus der Plugin-Media); nur Rasterbilder, SVG wird abgelehnt.
- Message.bodyMissing mit Hinweis und „Erneut versuchen“.
- KI erneut fragen mit { again: true }.
- Gerätedatei als Att { mediaId, name }.
- Neue Fehlercodes (microsoft_off, attachments_unsupported, images_blocked,
images_off, drive_unavailable, no_folder, not_waiting, exists,
links_disabled) mit Texten DE/EN.
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 30, 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.
GateControl Mail – Android (Phase 1, Vertrag D)
Neuer Tab Mail für das Plugin
gatecontrol-mail(Tab-Idmail), gebaut strikt gegen den Vertrag C2. Ohne installiertes Plugin (bzw. ohne Tab für die Person) ändert sich in der App nichts.Was drin ist
PluginAvailability.mail(Plugin gelistet mit Tab = installiert und freigeschaltet), Tab nach Chats, Seiten-Idmail(StartPages.MAIL), anheftbar wie die anderen Tabs, Redirect auf die Pager-Seite, eigene Routen innavigation/MailNavigation.kt.settings(auch als Bedienungshilfe-Aktionen), Aktionen per langem Druck (gelesen, markieren, Relevant/Sonstige, archivieren, verschieben, Spam, löschen), Pull-to-Refresh, Nachladen, Menü mit Zum Ablegen, Postausgang, Konten mit Ordnern, Speicherbelegung, Konto hinzufügen, Einstellungen. Kein Kalender/Ressourcen.img/<token>undcid/<mail>/<anhang>werden mit der Client-Anmeldung über die Plugin-API geladen (cid:wird umgeschrieben), alles andere bleibt leer; Links extern,mailto:im Schreiben.contacts), Cc/Bcc, Betreff, Text + Zitat, Anhänge vom Gerät (Plugin-Media, ≤ 25 MB) oder „Aus Drive“ (Drive-Suche, je Datei Kopie/Link), Server-Warnungen, laufendes Speichern als Entwurf, Senden mit 10-s-Rückgängig-Leiste im Posteingang, Senden planen (morgen 8 Uhr, Montag 8 Uhr, frei).filingmit Vorschlag und Sicherheit, Ablegen / Anderer Ordner / Nicht ablegen, Alle ablegen.msauth://com.gatecontrol.client/<URL-kodierter Base64-SHA-1 der Signatur>zur Laufzeit aus der App-Signatur;MailSigninActivity(exportiert, aber erst mit Plugin aktiviert). Einstellungen (Unterhaltungen, Wischen) und Konto-Seite (Name, Farbe, Art, Push, KI, Anhänge, Signatur, Passwort/Neu anmelden, Entfernen), Postausgang.mailöffnet die Mail (Kanal „Mail“),mail_failedden Postausgang; Realtime-Eventmaillädt Listen neu.noBackupFilesDir/mail; gelöscht bei Plugin weg, Login-Wechsel oder 401 (Fernlöschen), samt geöffneter Anhänge.aikeine KI-Leiste, ohnedrivekeine Drive-Knöpfe/kein „Zum Ablegen“, ohnemicrosoftMicrosoft mit „noch nicht eingerichtet“, ohneimageskein „Bilder laden“, ohnefamilyCalendarkein Familienkalender.docs/FEATURES.md.Tests
Neue Unit-Tests:
MailJsonTest,MailLogicTest,MailMicrosoftTest(RFC-7636-Vektor, Redirect-Hash),MailPushCacheTest, dazuMainTabsTest(Tab-Reihenfolge, Seiten, Routen) undManifestSecurityTest(msauth-Redirect, FileProvider-Pfad).Lokal:
:app:testDebugUnitTest,:app:lintRelease,:app:assembleDebug,:app:minifyReleaseWithR8.Abgleich mit dem fertigen Plugin (gatecontrol-plugins#121)
GET img/<token>liefert{ mime, size, data }(Base64) → wird im WebView dekodiert ausgeliefert;GET cid/…liefert{ mediaId, … }→ Bild aus der Plugin-Media; nur Rasterbilder, SVG abgelehnt.bodyMissingmit Hinweis, KI erneut fragen mit{ again: true }, Gerätedatei alsAtt { mediaId, name }, vorhandene Anhänge beimPUT draftsals{ id }.POST messages/flags { unread: false }beim Öffnen; Signatur setzt die App oben in neue Mails, Antworten und Weiterleitungen.too_largemit Servertext,409 attachments_unsupportedverständlich erklärt; alle neuen Fehlercodes mit Texten.counts= ungelesene je Tab („Sonstige · n“), Ordnerlisten laden übernextältere Mails nach.https://claude.ai/code/session_016xX1efcZF1f6G9rhmaJNLD
Generated by Claude Code