mana-kotlin-core/devlog/2026-06-04/macher.md
Till JS d29c487832 devlog: Repo-Historie nachgezogen (spieler+macher)
Erste Devlog-Befüllung; geerdet in den realen Commits, data.json via @mana/devlog-gen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 01:44:26 +02:00

35 lines
1.6 KiB
Markdown

---
date: 2026-06-04
day: 1
view: macher
weekday: Donnerstag
commits: 2
review: auto
---
# Donnerstag, 2026-06-04 — Tag 1 (Macher-Sicht)
Geburtstag der Library. `b8484ce` legt `mana-kotlin-core v0.1` an — den
wiederverwendbaren Kotlin-Kern für die nativen Android-Apps, das Pendant zu
`ManaCore` aus `mana-swift-core`. Bewusst eine reine Kotlin/JVM-Library ohne
Android-SDK-Abhängigkeit, damit sie eigenständig gebaut und getestet werden
kann und später optional KMP-fähig wird; die App zieht sie als normale
Maven-Dependency.
Inhalt v0.1: `auth.AuthClient` (Login/Refresh/Logout gegen mana-auth unter
`/api/v1/auth/*`) portiert das Resilienz-Verhalten aus dem Swift-Core —
Single-Flight-Refresh, proaktiver Refresh vor Ablauf, Soft-Fail (Tokens nur
bei wirklich invalidierter Sitzung wischen, nicht bei 5xx/429).
`auth.TokenStore` als plattform-neutrales Persistenz-Interface
(`InMemoryTokenStore` für Tests; die App implementiert es über
DataStore+Keystore). `auth.Jwt` liest `exp`/`sub`/`tier` ohne
Signatur-Prüfung — die bleibt Server-Sache via JWKS.
`net.AuthenticatedApi` als Bearer-Transport mit einmaligem
401-Refresh-Retry, dazu `net.manaHttpClient`/`net.ManaJson` als
Ktor-Client-Factory und geteilte Json-Konfiguration, plus die `model`-Typen
(`Deck`, `Card`, `Tier`).
`7ff6f0d` zieht direkt `v0.2.0` nach: Identity-Accessors am `AuthClient`,
damit der kommende `mana-kotlin-event-sync`-Layer (Phase 2 des
Android-Plans) den eingeloggten Principal abgreifen kann, ohne das Token
selbst zu zerlegen. Stack: Kotlin 2.1, Ktor 3, kotlinx.serialization,
coroutines, kotlinx.datetime; Ziel-Bytecode JVM 17.