Native SwiftUI-Universal-App (iOS / iPadOS / macOS) für Zitare — Hybrid (WKWebView + Widget + ShareExt + native Submit) unter ev.mana.zitare.
Find a file
Till JS 53f8043a2d ζ-3.5b: Pending-Queue-UI + NWPathMonitor-Reconnect-Flush
Pending-Queue-UI:
- AccountView.pendingQueueCard listet alle wartenden Submissions
  mit Text-Preview (120c), Author, createdAt, retryCount, lastError
- "Jetzt versuchen"-Button triggert tryFlush(api:)
- Trash-Icon pro Row löscht einzeln aus der Queue
- Pull-to-Refresh aktualisiert beide Listen
- Card-View nur sichtbar wenn Queue-Tiefe > 0

ReachabilityWatcher:
- NWPathMonitor erkennt Reconnect-Flanke (offline → online)
- Bei Reconnect: SubmissionQueue.tryFlush auf @MainActor
- Filtert reine Wifi↔Mobil-Switches raus (nur "wieder erreichbar"
  zählt)
- Lebt im App-Root, startet nach Launch via .task

Files:
- Sources/Core/Submit/ReachabilityWatcher.swift (neu)
- Sources/App/ZitareNativeApp.swift: reachability.start in .task
- Sources/Features/Account/AccountView.swift: pendingQueueCard

iOS + macOS BUILD SUCCEEDED.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 16:26:55 +02:00
devlog devlog: 2 Tage geschrieben (ζ-0 + ζ-1 + Launch-Flash-Fix) 2026-05-15 22:22:49 +02:00
docs docs: Cloudflare-TODO (DNS-CNAME + CNAME-Cleanup) + PLAN.md externe Blocker 2026-05-14 20:52:13 +02:00
scripts icon: vereinfachte Anführungszeichen-Glyphe als Platzhalter 2026-05-14 21:02:17 +02:00
ShareExtension ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live 2026-05-14 12:15:22 +02:00
Sources ζ-3.5b: Pending-Queue-UI + NWPathMonitor-Reconnect-Flush 2026-05-19 16:26:55 +02:00
Tests ζ-2 native: SwiftData-Snapshot-Cache + DailyQuoteWidget 2026-05-14 13:16:05 +02:00
Widgets/ZitareWidget feat(widget): #Preview-Macros fuer Small + Large ergaenzt 2026-05-17 23:46:24 +02:00
.gitignore ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live 2026-05-14 12:15:22 +02:00
.swiftformat ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live 2026-05-14 12:15:22 +02:00
.swiftlint.yml ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live 2026-05-14 12:15:22 +02:00
CLAUDE.md ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live 2026-05-14 12:15:22 +02:00
PLAN.md docs: Cloudflare-TODO (DNS-CNAME + CNAME-Cleanup) + PLAN.md externe Blocker 2026-05-14 20:52:13 +02:00
project.yml fix(account): Anmelden-Button + ManaAuthGate-Wiring 2026-05-19 15:28:08 +02:00
README.md ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live 2026-05-14 12:15:22 +02:00

zitare-native

Native SwiftUI-Universal-App (iOS / iPadOS / macOS) für Zitare, den öffentlichen Zitat-Korpus des Vereins mana e.V.

Hybrid-Architektur. Lese-Surfaces laufen im WKWebView gegen zitare.com. Native-Code ist nur dort, wo Native einen Distributions-Hebel hat: Home-Screen-Widget, ShareExtension, Spotlight-Index und Submit-View. Anders als cards-native, memoro-native und manaspur-native (alle „pure SwiftUI") — die Begründung steht im Playbook.

Status

Phase ζ-0 — Setup. Repo-Skelett, project.yml, leerer Build. Vollständiger 7-Phasen-Plan in ../mana/docs/playbooks/ZITARE_NATIVE_GREENFIELD.md. Phasen-Tracking in PLAN.md.

Lokal entwickeln

brew install xcodegen swiftformat swiftlint
xcodegen generate
open ZitareNative.xcodeproj

Voraussetzung: ../mana-swift-core/ und ../mana-swift-ui/ als Schwester-Verzeichnisse (Package-Dependencies via path:).

Bundle-IDs

Target Bundle
App ev.mana.zitare
Widget Extension ev.mana.zitare.widget
Share Extension ev.mana.zitare.share
App Group group.ev.mana.zitare

Cross-Refs