Vorbereitung für die Spiegelung nach git.mana.how/offen (Prüfliste QUELLOEFFNUNG.md §5): Sweep sauber, keine Privat-Marker, Apache-2.0 mit NOTICE seit Welle 1, Schriften mit OFL-Texten. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| devlog | ||
| gradle | ||
| src | ||
| .editorconfig | ||
| .gitignore | ||
| build.gradle.kts | ||
| CHANGELOG.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| NOTICE | ||
| README.md | ||
| settings.gradle.kts | ||
mana-kotlin-core
Wiederverwendbarer Kotlin-Kern für die nativen Android-Apps von mana
Das Kotlin-Pendant zu ManaCore aus mana-swift-core.
Reine Kotlin/JVM-Library (kein Android-SDK), damit sie unabhängig gebaut/getestet und später optional KMP-fähig gemacht werden kann. Die Android-App konsumiert sie als normale Maven-Dependency.
Was drin ist (v0.1)
auth.AuthClient— Login/Refresh/Logout gegen mana-auth (/api/v1/auth/*). Portiert das Resilienz-Verhalten aus dem Swift-Core: Single-Flight-Refresh, proaktiver Refresh vor Ablauf, Soft-Fail (Tokens nur bei tatsächlich invalidierter Sitzung wischen, nicht bei 5xx/429).auth.TokenStore— plattform-neutrale Token-Persistenz (Interface). Android-App implementiert das über DataStore+Keystore;InMemoryTokenStorefür Tests.auth.Jwt— liestexp/sub/tieraus dem Token (ohne Signatur- Prüfung — die ist Server-Sache via JWKS).net.AuthenticatedApi— Bearer-Transport mit einmaligem 401-Refresh-Retry, für die verbleibenden REST-Endpunkte (Marketplace,/me, dsgvo …).net.manaHttpClient/net.ManaJson— Ktor-Client-Factory + geteilte Json-Konfiguration.model—Deck,Card(5 text-only Typen),Tier.
Was NICHT drin ist (bewusst)
User-eigene Decks/Cards/Reviews laufen seit dem Event-Sync-Cutover
(2026-05-20) komplett über Event-Sync (sync2.mana.how), nicht über
REST. Die Server-CRUD-Endpunkte sind 410 Gone. Dieser Kern deckt nur
Auth + den authentifizierten REST-Transport ab; der Daten-Layer kommt in
mana-kotlin-event-sync (Phase 2 des Android-Plans).
SOT-Plan: mana/docs/playbooks/WORDECK_ANDROID_GREENFIELD.md.
Bauen & Testen
# JDK kommt aus Android Studio (JBR); kein System-JDK nötig:
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew test
Veröffentlichen (Forgejo Packages)
./gradlew publish \
-PforgejoToken=<token> \
-PforgejoPackagesUrl=https://git.mana.how/api/packages/mana/maven
Stack: Kotlin 2.1 · Ktor 3 · kotlinx.serialization · coroutines · kotlinx.datetime. Ziel-Bytecode: JVM 17 (AGP/compileSdk-36-kompatibel).
Bauen
Kotlin/Gradle. Die mana-Bibliotheken finden sich gegenseitig über
mavenLocal() — in dieser Reihenfolge veröffentlichen:
for r in mana-kotlin-core mana-kotlin-tokens mana-kotlin-event-sync \
mana-kotlin-widget mana-kotlin-event-sync-room mana-kotlin-ui; do
git clone https://git.mana.how/offen/$r.git && (cd $r && ./gradlew publishToMavenLocal)
done
Danach baut auch Pageta für Android.
Für Mitlesende
Dieses Repo gehört zum Ökosystem von mana und liegt offen, damit andere es lesen, einordnen und als Grundlage nutzen können — das spart Arbeit, egal ob ein Mensch oder ein Modell davorsitzt.
Was du erwarten darfst: den Code so, wie er tatsächlich in Gebrauch ist,
unter Apache-2.0 (siehe LICENSE und NOTICE). Keine Attrappe, kein
zurechtgeschnittener Auszug — samt seiner Geschichte.
Was du nicht erwarten darfst: Support, Antwortzeiten, Zusagen zur Abwärtskompatibilität oder die Übernahme von Änderungswünschen. Dieses Repo folgt dem, was die eigenen Anwendungen brauchen. Fehlermeldungen sind willkommen, eine Antwort ist nicht zugesagt.
Fork ist ausdrücklich erlaubt und oft der schnellere Weg als zu warten.