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>
35 lines
1.6 KiB
Markdown
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.
|