Swift-Package-Plattform für alle nativen mana-e.V.-Apps. ManaCore (Auth, Transport) + ManaTokens (Vereins-Design). SOT: mana/docs/MANA_SWIFT.md — Apache-2.0, Spiegel des Vereins mana.
Find a file
Till JS f9f740ff98 ManaCore 1.16.0: Shared-Keychain-Logout-Kaskade gefixt
Alle 16 nativen mana-Apps teilen EINEN Keychain (ev.mana.session) — ein
keychain.wipe() loggt die ganze Flotte aus. Vier zusammenhängende Ursachen:

- Default RefreshFailurePolicy .immediateWipe → .softFirst (13/16 Apps
  liefen auf dem gefährlichen Default).
- softFirst korrigiert: zählt rein Failure-Count, erst der zweite
  invalidierende Fehler in Folge wiped. refreshOnceSucceeded triggert
  keinen Wipe mehr — der scenePhase-Heartbeat setzte es beim App-Start
  sofort true und entwertete softFirst praktisch komplett (der Bug).
- performRefresh liest vor jedem Wipe den Keychain neu: hat ein anderer
  Prozess (App/Widget) frisch geschrieben, retry statt Flotten-Wipe.
- Transport refresht nur noch bei echtem JWT-Ablauf (JWT.expiry > 60s →
  401 durchreichen) statt blind bei jedem 401.

Plus TokenResponse.refreshToken optional (best-effort get-session kann
fehlen → kein DecodingError-Loop). Keine API-Signatur-Änderungen.

4 neue/aktualisierte Tests in AuthClientGuestAndResilienceTests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 13:04:26 +02:00
devlog devlog: 2 Tage geschrieben (v1.0.0 → v1.5.0) 2026-05-15 22:21:46 +02:00
Sources ManaCore 1.16.0: Shared-Keychain-Logout-Kaskade gefixt 2026-06-02 13:04:26 +02:00
Tests ManaCore 1.16.0: Shared-Keychain-Logout-Kaskade gefixt 2026-06-02 13:04:26 +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 ManaCore 1.16.0: Shared-Keychain-Logout-Kaskade gefixt 2026-06-02 13:04:26 +02:00
CLAUDE.md v1.0.0 — initiale Extraktion aus memoro-native 2026-05-12 19:13:31 +02:00
Package.swift feat(ManaTokens): Marken-Schriften nativ (Inter/Source Serif 4/JetBrains Mono) 2026-05-29 17:10:35 +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.