Drop-in-Settings-UI für die lokalen LLM-Backends aus mana-swift-llm. Pendant zu ManaAuthUI — vorher hatte nur Memoro die UI handgeschrieben, die drei anderen Konsumenten (pageta, comicello, herbatrium) gar nichts. Komponenten: - ManaLLMSettingsView(context:) — Convenience-Wrapper, drei Sections - ManaLLMBackendPickerSection — Picker + Availability + Empfohlen-Badge - ManaLLMPrepareSection — Download/Init-Card mit Progress, gated für Gemma - ManaLLMDownloadPolicySection — WiFi-only-Toggle - ManaLLMSettingsState (@Observable, @MainActor) — geteilter State, delegiert an Stores aus mana-swift-llm 0.2.0 - ManaLLMContext(useCaseShort:useCaseLong:) — app-spezifischer Section-Text; .generic als Fallback Test-Target ManaLLMUITests bewusst noch nicht angelegt (Linter hat es aus Package.swift entfernt, Comment markiert TODO). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
72 lines
2.5 KiB
Swift
72 lines
2.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"]),
|
|
.library(name: "ManaLLMUI", targets: ["ManaLLMUI"]),
|
|
],
|
|
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"),
|
|
// ManaLLMUI baut auf den Backend-Schicht aus mana-swift-llm.
|
|
// Apps die nur die Backends headless brauchen, importieren
|
|
// weiter direkt `ManaLLM` — ManaLLMUI ist additiv für die
|
|
// Settings-Schicht (Picker, Prepare, Cellular-Toggle).
|
|
.package(path: "../mana-swift-llm"),
|
|
],
|
|
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"),
|
|
]
|
|
),
|
|
.target(
|
|
name: "ManaLLMUI",
|
|
dependencies: [
|
|
.product(name: "ManaLLM", package: "mana-swift-llm"),
|
|
.product(name: "ManaLLMShared", package: "mana-swift-llm"),
|
|
],
|
|
path: "Sources/ManaLLMUI",
|
|
swiftSettings: [
|
|
.enableExperimentalFeature("StrictConcurrency"),
|
|
]
|
|
),
|
|
.testTarget(
|
|
name: "ManaAuthUITests",
|
|
dependencies: ["ManaAuthUI"],
|
|
path: "Tests/ManaAuthUITests"
|
|
),
|
|
.testTarget(
|
|
name: "ManaWebShellTests",
|
|
dependencies: ["ManaWebShell"],
|
|
path: "Tests/ManaWebShellTests"
|
|
),
|
|
// ManaLLMUITests: deklariert, aber `Tests/ManaLLMUITests/`
|
|
// wurde nie angelegt — SPM verweigert Resolve. Entfernt
|
|
// 2026-05-22, wieder einfügen sobald die ersten ViewModel-
|
|
// Tests stehen.
|
|
]
|
|
)
|