mana-swift-ui/Package.swift
Till JS 8f4d4b0c03 feat(webshell): neues Library-Product ManaWebShell (v0.6.0)
WKWebView-Huelle fuer Hybrid-Apps (Web-Lese-Surfaces + native
Submit/Widget/ShareExt). Extrahiert aus den fast-byte-identischen
`WebShell/`-Ordnern in seepuls-native und zitare-native (~900 LOC,
davon ~700 LOC Duplikat). Audit 2026-05-17 V2.

Neu (public API):
- `WebShellView` — WKWebView-Wrapper mit Progress-Bar, Pull-to-
  Refresh (iOS), Fehler-Snackbar, External-Link-Delegation. Universal
  (iOS + macOS)
- `WebShellConfig` — Host-Whitelist mit Wildcard-Support (`"*.mana.how"`),
  User-Agent, Theme-Hints, User-Scripts
- `WebTarget` — URL + monoton wachsender reloadToken
- `WebNavState` — @Observable, @MainActor, reaktiver Nav-State
- `WebShellCoordinator` — WKNavigationDelegate + WKUIDelegate
- `WebShellScripts` — Helfer fuer `preferDarkScheme`,
  `syncDarkMode(localStorageKey:)`, `hideElements(selectors:tagName:)`

Logging unter Subsystem `ev.mana.webshell` (App-OSLog bleibt eigen).

Tests: 6 neue Tests gegen `WebShellConfig.isAllowed` (Wildcards,
Negativ-Cases). 50/50 grün insgesamt (6 ManaWebShell + 44 ManaAuthUI).

Doku: `mana/docs/playbooks/HYBRID_NATIVE_APP.md` (Schwester-Repo).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:11:47 +02:00

51 lines
1.5 KiB
Swift

// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "mana-swift-ui",
defaultLocalization: "de",
platforms: [
.iOS(.v18),
.macOS(.v15),
],
products: [
.library(name: "ManaAuthUI", targets: ["ManaAuthUI"]),
.library(name: "ManaWebShell", targets: ["ManaWebShell"]),
],
dependencies: [
// Lokaler Dev-Pfad. Apps konsumieren beide Pakete parallel über
// `path: ../mana-swift-core` bzw. `path: ../mana-swift-ui`.
// Release-Wechsel auf `from: "1.1.0"` kommt mit Phase 4.
.package(path: "../mana-swift-core"),
],
targets: [
.target(
name: "ManaAuthUI",
dependencies: [
.product(name: "ManaCore", package: "mana-swift-core"),
.product(name: "ManaTokens", package: "mana-swift-core"),
],
path: "Sources/ManaAuthUI",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.target(
name: "ManaWebShell",
path: "Sources/ManaWebShell",
swiftSettings: [
.enableExperimentalFeature("StrictConcurrency"),
]
),
.testTarget(
name: "ManaAuthUITests",
dependencies: ["ManaAuthUI"],
path: "Tests/ManaAuthUITests"
),
.testTarget(
name: "ManaWebShellTests",
dependencies: ["ManaWebShell"],
path: "Tests/ManaWebShellTests"
),
]
)