Lift von Hybrid (WKWebView für Lesen/Erkunden) auf fully-native ist beschlossen. Diese Phase entfernt die WebShell-Infrastruktur; das volle native Read-Surface folgt in η-2..η-5 nach docs/NATIVE_LIFT_PLAN.md. - ManaWebShell-Dep raus aus project.yml - Sources/Core/WebShell/CookieBridge.swift gelöscht - RootView auf vier native Tabs (Lesen + Erkunden = Platzhalter, Submit + Konto unverändert nativ) - DocComments in DeepLinkRouter / AppConfig / Account / Settings von WebView-Verweisen befreit - CLAUDE.md Invarianten von Hybrid auf η umgestellt (13 Invarianten, pure SwiftUI + Offline-first + SafariView-Ausnahme für Legal) - PLAN.md auf η-0 + Phasenübersicht η-0..η-10 - AppConfigTests.test_keychainService_matchesSharedGroup auf ManaSharedKeychainGroup aktualisiert (war drift seit Cross-App-SSO) Verifikation: - xcodebuild iOS-Simulator iPhone 16e: BUILD SUCCEEDED - nm ZitareNative | grep WKWebView: 0 Referenzen - otool -L: kein WebKit-Framework-Link - 20/20 Tests grün Cross-Repo-Follow-up (η-1 Blocker): - zitare/apps/zitare/ muss index-full.json + 7 Stammdaten-JSONs liefern - zitare/apps/api/ Volltext-Search-Endpoint bestätigen/ergänzen Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
58 lines
2.6 KiB
Swift
58 lines
2.6 KiB
Swift
import Foundation
|
|
import ManaCore
|
|
|
|
/// App-spezifische Konfiguration für Zitare. Implementiert
|
|
/// `ManaAppConfig` aus ManaCore und ergänzt die Zitare-eigene
|
|
/// `apiBaseURL` (api.zitare.com, getrennt von mana-auth) sowie
|
|
/// `webBaseURL` (zitare.com, für Universal-Links + Snapshot-Pull +
|
|
/// SafariView auf Legal-Seiten) und `appBaseURL` (app.zitare.com,
|
|
/// historisch SPA-Surface — η-0+ nicht mehr vom Native-Client geladen).
|
|
///
|
|
/// Cutover zu .zitare.com-Subdomains am 2026-05-20. zitare.mana.how
|
|
/// ist abgeschaltet; zitare-api.mana.how bleibt als Back-Compat-
|
|
/// Surface erreichbar, der native Client nutzt sie aber nicht mehr.
|
|
enum AppConfig {
|
|
/// App-Group für Daten-Sharing zwischen App ↔ Widget ↔ ShareExt.
|
|
/// Single-Source: wird in ``manaAppConfig`` und in
|
|
/// `SnapshotModels.appGroup` (Widget-shared) gespiegelt.
|
|
static let appGroup = "group.ev.mana.zitare"
|
|
|
|
static let manaAppConfig: ManaAppConfig = DefaultManaAppConfig(
|
|
authBaseURL: URL(string: "https://auth.mana.how")!,
|
|
keychainService: ManaSharedKeychainGroup,
|
|
// Explizit auf TeamID.BundleID, statt nil. Vermeidet Logout
|
|
// bei TestFlight-Cert-Drift (siehe mana-swift-core v1.5.1).
|
|
keychainAccessGroup: ManaSharedKeychainGroup,
|
|
appGroup: appGroup
|
|
)
|
|
|
|
/// `api.zitare.com` — API-Backend (Hono+Bun).
|
|
static let apiBaseURL = URL(string: "https://api.zitare.com")!
|
|
|
|
/// `zitare.com` — öffentliche statische Korpus-Domain (CC-BY-SA).
|
|
/// Universal-Link-Domain für AASA.
|
|
static let publicWebURL = URL(string: "https://zitare.com")!
|
|
|
|
/// `app.zitare.com` — SPA-Surface, eingeloggte Pfade (Submit,
|
|
/// Edit, Admin, Me).
|
|
static let appBaseURL = URL(string: "https://app.zitare.com")!
|
|
|
|
/// Default-Web-URL (öffentliches Lese-Surface, Snapshot, AASA).
|
|
/// η-0+: kein WebView mehr, aber bleibt Universal-Link-Domain und
|
|
/// SafariView-Ziel für Legal-Seiten.
|
|
static let webBaseURL = publicWebURL
|
|
|
|
/// Endpoint für den Korpus-Snapshot (heute Phase ζ-2: `index-min.json`,
|
|
/// in η-1 ersetzt durch `index-full.json` + Stammdaten-Collections,
|
|
/// siehe `docs/NATIVE_LIFT_PLAN.md`). Bis das im Web-Repo gebaut ist,
|
|
/// schlägt der Pull mit 404 fehl und `SnapshotSync.tryRefresh()` macht
|
|
/// fail-soft no-op.
|
|
static let snapshotURL = webBaseURL.appendingPathComponent("index-min.json")
|
|
|
|
// User-Agent-Suffix für URLSession-API-Calls.
|
|
#if os(macOS)
|
|
static let userAgent = "ZitareNative/0.1 (macOS)"
|
|
#else
|
|
static let userAgent = "ZitareNative/0.1 (iOS)"
|
|
#endif
|
|
}
|