Swift-Package-Plattform für alle nativen mana-e.V.-Apps. ManaCore (Auth, Transport) + ManaTokens (Vereins-Design). SOT: mana/docs/MANA_SWIFT.md
Find a file
Till JS 573c93c104 fix(auth): ManaSharedKeychainGroup mit explizitem Team-ID-Prefix
Bug: Sec-Framework gibt -34018 (errSecMissingEntitlement) beim
ersten Keychain-Write — auf iPhone UND Mac, in werdrobe + nutriphi
+ vermutlich allen 12 Apps mit der heutigen Migration.

Root-Cause: Apple's `Security.framework` macht einen exakten
String-Match zwischen `kSecAttrAccessGroup` (was Swift übergibt)
und dem `keychain-access-groups`-Entitlement des Bundles (das
`$(AppIdentifierPrefix)` zur Build-Zeit auf den Team-Prefix
expandiert).

- Bundle-Entitlement: "QP3GLU8PH3.ev.mana.session" (mit Prefix)
- Swift-Code: "ev.mana.session" (ohne Prefix)
- → no match → -34018

Vor meiner Migration hatten die Apps explizit "QP3GLU8PH3.
ev.mana.<app>" als String (mit Prefix), beobachtbar im alten
herbatrium/wordeck/nutriphi-AppConfig. Mein Migrations-Skript hat
das Prefix wegrationalisiert ohne zu prüfen.

Fix: `ManaSharedKeychainGroup` = "QP3GLU8PH3.ev.mana.session"
hardcoded. Plus `ManaSharedKeychainGroupSuffix` = "ev.mana.session"
für Konstantanbedarf in Entitlement-Files (wo
$(AppIdentifierPrefix) zur Build-Zeit vorgestellt wird).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 22:09:45 +02:00
devlog devlog: 2 Tage geschrieben (v1.0.0 → v1.5.0) 2026-05-15 22:21:46 +02:00
Sources fix(auth): ManaSharedKeychainGroup mit explizitem Team-ID-Prefix 2026-05-18 22:09:45 +02:00
Tests feat(core): ManaAppLog + appGroup/logSubsystem in ManaAppConfig (v1.7.0) 2026-05-17 22:23:03 +02:00
.gitignore chore: untrack accidentally committed build/ + ignore 2026-05-14 01:07:55 +02:00
.swiftformat v1.0.0 — initiale Extraktion aus memoro-native 2026-05-12 19:13:31 +02:00
.swiftlint.yml v1.0.0 — initiale Extraktion aus memoro-native 2026-05-12 19:13:31 +02:00
CHANGELOG.md feat(core): ManaAppLog + appGroup/logSubsystem in ManaAppConfig (v1.7.0) 2026-05-17 22:23:03 +02:00
CLAUDE.md v1.0.0 — initiale Extraktion aus memoro-native 2026-05-12 19:13:31 +02:00
Package.swift v1.0.0 — initiale Extraktion aus memoro-native 2026-05-12 19:13:31 +02:00
README.md v1.0.0 — initiale Extraktion aus memoro-native 2026-05-12 19:13:31 +02:00

mana-swift-core

Swift-Package-Plattform für alle nativen mana-e.V.-Apps.

Geteilter Code zwischen memoro-native, cards-native, nutriphi-native und allen weiteren ev.mana.*-Apps. Analog zu @mana/* aus Verdaccio für die Web-Plattform.

Products

  • ManaCore — Auth (mana-auth-Login, JWT-Refresh, Keychain), Transport (URLSession-Wrapper mit 401-Retry).
  • ManaTokens — Verein-Designwerte: Farben, Spacings, Typography, Radius, SF-Symbol-Aliases. Spiegelt mana/docs/THEMING.md.

Verwendung

Im project.yml einer nativen App:

packages:
  ManaSwiftCore:
    url: https://git.mana.how/till/mana-swift-core
    from: 1.0.0

targets:
  YourApp:
    dependencies:
      - package: ManaSwiftCore
        product: ManaCore
      - package: ManaSwiftCore
        product: ManaTokens

Während Entwicklung lokal:

packages:
  ManaSwiftCore:
    path: ../mana-swift-core

Konventionen

Siehe CLAUDE.md für die vollständigen Regeln. Übergeordneter Plan: mana/docs/MANA_SWIFT.md.

Lokal entwickeln

swift build
swift test

iOS + macOS-Targets, Swift 6 strict concurrency, keine externen Dependencies.