zitare-native/PLAN.md
Till 0bd59ed148 ζ-0 Setup: Repo-Skelett, iOS-Build grün, Healthz live
- project.yml mit Bundle ev.mana.zitare + Widget + ShareExt-Targets
- ManaSwiftCore (ManaCore + ManaTokens) + ManaSwiftUI (ManaAuthUI)
  als Package-Dependencies via path:
- Pure SwiftUI für Native-Surfaces, WKWebView nur für Lese-Tabs
  (Hybrid-Sonderfall vs cards/memoro/manaspur, dokumentiert im
  Playbook ZITARE_NATIVE_GREENFIELD.md)
- Theme: paper-Variant aus @mana/themes
- ZitareAPI.healthCheck via direct URLSession (öffentlicher
  Endpoint, kein AuthenticatedTransport-Gate)
- 6/6 AppConfigTests + 1/1 UI-Smoke grün auf iPhone 16e Simulator
- Live: zitare-api.mana.how/healthz → HTTP/2 200

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 12:15:22 +02:00

4.5 KiB

Plan — zitare-native (SwiftUI Hybrid)

Stand: 2026-05-14 — Phase ζ-0 Setup. Repo-Skelett, project.yml, CLAUDE.md, leerer Build steht aus. Vollständige Phasen-Begründung in ../mana/docs/playbooks/ZITARE_NATIVE_GREENFIELD.md.

SOT: das Greenfield-Playbook. Dieses File ist nur die App-lokale Status-Spur.

Aktueller Stand

🚧 ζ-0 — Setup (2026-05-14, in Arbeit)

  • Repo-Skelett unter ~/Documents/Code/zitare-native/
  • project.yml mit Bundle ev.mana.zitare, drei Targets (App + Widget + ShareExt), ManaSwiftCore + ManaSwiftUI via path: ../mana-swift-core / path: ../mana-swift-ui
  • .swiftformat, .swiftlint.yml, .gitignore
  • CLAUDE.md, README.md, PLAN.md
  • Source-Stubs (App, RootView, AppConfig, ZitareAPI, Log, ZitareTheme, Resources)
  • xcodegen generate lokal grün (2026-05-14)
  • swiftlint --strict 0 violations in 14 files
  • Leerer Build im iOS-Simulator (iPhone 16e, Xcode 26.2 SDK, xcodebuild ... -destination 'platform=iOS Simulator,name=iPhone 16e')
  • Unit-Tests grün (6/6 AppConfigTests) + UI-Smoke grün
  • Leerer Build auf macOS — blockiert auf Apple-Developer-Portal- Setup. App-Group group.ev.mana.zitare muss im Portal registriert werden, sonst Provisioning-Profile-Fehler. Same Blocker wie cards-native ζ-7 / memoro-native (siehe Memory project_memoro_native.md „Apple-Dev-Portal App-Group- Aktivierung nötig vor Test").
  • ManaCore-Login mit Founder-Account, JWT im Keychain (manueller Test im Simulator, nicht im CI)
  • /healthz-Probe gegen zitare-api.mana.how loggt 200 (live gegen Mac-Mini-API verifiziert 2026-05-14 12:14, HTTP/2 200, OSLog „Healthz: OK")
  • AASA auf https://zitare.com/.well-known/apple-app-site-association (Aufgabe ans Zitare-Web-Repo, blockiert ζ-1 nicht ζ-0)
  • Git-Repo git.mana.how/till/zitare-native (push)

ζ-0 Verifikations-Log

2026-05-14 12:08  xcodebuild iOS Simulator iPhone 16e — BUILD SUCCEEDED
                  (nach Fix: .iso8601withFractional war cards-native-
                  local; in zitare-native auskommentiert, ζ-3 Port-TODO)
2026-05-14 12:10  Unit-Tests: 6/6 AppConfigTests passed in 0.03s
2026-05-14 12:11  UI-Smoke: test_appLaunches passed in 5.79s
                  (nach Fix: Test suchte "Zitare" das nur im Account-
                  Tab ist, jetzt auf Default-Tab "Lesen" geändert)
2026-05-14 12:09  xcodebuild macOS — BUILD FAILED, blockiert auf
                  Apple-Dev-Portal App-Group-Registrierung
2026-05-14 12:14  iPhone 16e Simulator: App-Launch + Live-Healthz
                  gegen zitare-api.mana.how → HTTP/2 200, OSLog
                  "[ev.mana.zitare:app] Zitare starting — auth
                  status: signedOut" und "[ev.mana.zitare:api]
                  Healthz: OK" (Fix: AuthenticatedTransport rejecte
                  notSignedIn auf public Endpoint, jetzt direkter
                  URLSession-Call für /healthz)

Phasen-Übersicht

Phase Ziel Erfolg Status
ζ-0 Setup, leerer Build, Login iOS-Build + Tests , Mac + Login + Healthz Live offen 🚧 (90%)
ζ-1 WebShellView + Universal-Links UL öffnet App auf Quote-Detail
ζ-2 Snapshot-Sync + DailyQuoteWidget Widget auf realem Gerät zeigt Zitat
ζ-3 Submit-View nativ Founder submittet Quote, Draft in /admin/queue
ζ-4 Spotlight + ShareExt + App Intents Spotlight findet, ShareExt POSTet
ζ-5 Polish (Theme-Sync, iPad, A11y) Eine Woche ohne Safari-Tab nutzbar
ζ-6 App-Store-Submission Approved

Web-Vorbedingungen (Aufgabe an ../zitare/)

  • AASA-Eintrag auf https://zitare.com/.well-known/apple-app-site-association mit appID: QP3GLU8PH3.ev.mana.zitare
  • index-min.json als versionierter, ETag-versehener Endpoint (oder einigen, dass die Build-Output-Datei stabil bleibt)
  • POST /api/v1/share/receive mit mana/text-Envelope-Handler (Manifest registriert, Code TBD)
  • zitare.com Cloudflare-Zone-Onboarding (steht im zitare/STATUS.md als offen)
  • Cookie-SSO-Compat auf zitare.mana.how end-to-end testen (Phase 2.G im Web-Repo code-fertig, Live-Test offen)

Verifikations-Lücken

Wird nach jedem ζ-Schritt befüllt.

Quirks

Wird im Verlauf befüllt. Format-Vorbild: ../zitare/STATUS.md Sektion „Quirks".