Geteilte Glance-Widget-Bausteine (Theme-Bridge + Boilerplate) der mana-e.V.-Android-Flotte — Apache-2.0, Spiegel des Vereins mana.
Find a file
Till JS 43bdc6c9d0 build: Abhaengigkeiten auf die heutigen Quellstaende, mavenLocal ergaenzt
🔴 Die Bibliotheks-Kette war aus den QUELLEN nicht baubar. Jede Klammer
zeigte auf eine aeltere Version, als die Quelle des Nachbarn traegt —
diese Staende existieren nur als veroeffentlichte Artefakte, und die
Repos haben keine einzige Git-Marke. Der Build fiel deshalb auf Forgejo
Packages zurueck, und das antwortet seit dem 2026-08-14 mit 401, auch
anonym. Ergebnis: auf einem frischen Rechner ging gar nichts.

Behoben, indem die Klammern auf die Staende gehoben wurden, die im Baum
liegen. Zwei Bibliotheken hatten ausserdem **kein `mavenLocal()`** in
ihrer Repository-Liste — sie konnten per Bauart nur aus dem Registry
ziehen, waehrend die Schwesterbibliotheken es laengst hatten.

Bewiesen, nicht behauptet: alle neun Artefakte liegen nach diesem Stand
in mavenLocal, und die Kartomo-Android-App baut daraus durch
(BUILD SUCCESSFUL, APK `ev.mana.kartomo`).

Sitzung: 5810ba55
2026-08-14 12:31:12 +02:00
devlog/2026-06-09 devlog: Repo-Historie nachgezogen (spieler+macher) 2026-06-16 01:44:31 +02:00
gradle build: Abhaengigkeiten auf die heutigen Quellstaende, mavenLocal ergaenzt 2026-08-14 12:31:12 +02:00
src/main/kotlin/ev/mana/widget mana-kotlin-widget 0.1.0 — geteilte Glance-Widget-Bausteine 2026-06-09 15:36:32 +02:00
.gitignore mana-kotlin-widget 0.1.0 — geteilte Glance-Widget-Bausteine 2026-06-09 15:36:32 +02:00
build.gradle.kts build: Maven-Registry till/maven -> mana/maven (Namespace-Vereinheitlichung) 2026-06-17 18:05:29 +02:00
gradle.properties mana-kotlin-widget 0.1.0 — geteilte Glance-Widget-Bausteine 2026-06-09 15:36:32 +02:00
gradlew mana-kotlin-widget 0.1.0 — geteilte Glance-Widget-Bausteine 2026-06-09 15:36:32 +02:00
gradlew.bat mana-kotlin-widget 0.1.0 — geteilte Glance-Widget-Bausteine 2026-06-09 15:36:32 +02:00
LICENSE Apache-2.0: LICENSE + NOTICE 2026-08-03 23:05:06 +02:00
NOTICE Apache-2.0: LICENSE + NOTICE 2026-08-03 23:05:06 +02:00
README.md build: Maven-Registry till/maven -> mana/maven (Namespace-Vereinheitlichung) 2026-06-17 18:05:29 +02:00
settings.gradle.kts build: Abhaengigkeiten auf die heutigen Quellstaende, mavenLocal ergaenzt 2026-08-14 12:31:12 +02:00

mana-kotlin-widget

Geteilte Bausteine für Home-Screen-Widgets (Jetpack Glance) der mana- Android-Flotte. Schwesterlib zu mana-kotlin-tokens / -ui / -core, publiziert auf dem Forgejo-Maven (git.mana.how/api/packages/mana/maven, anonym lesbar).

Warum

Jede App, die ein Widget hatte (memoro, nutriphi, stetick, wordeck, zitare), hat Farben hart kodiert und den Glance-Boilerplate (Receiver, Intents) kopiert. Diese Lib zieht den teilbaren Teil heraus — vor allem die Theme-Brücke: Glance kann das Material-3-Theme der App nicht mitbenutzen, also rechnet diese Lib eine ManaTheme-Variant in Glance-taugliche, Hell/Dunkel-umschaltende Farben um.

Was nicht geteilt wird: das Datenladen (jede App liest ihr eigenes Repository) und bewusst eigene Paletten (z. B. Zitares Pergament-Optik).

API

Symbol Zweck
ManaGlanceTheme(theme) { … } GlanceTheme-Wrapper; innen liefert GlanceTheme.colors.* die Variant-Farben.
ManaTheme.toGlanceColors() Die 12 Tokens als ColorProvider (Auto-Hell/Dunkel) — für kleine Widgets, die Farben direkt setzen.
ManaTheme.glanceColorProviders() Variant als Glance-ColorProviders (für eigene GlanceTheme-Aufrufe).
openAppAction(ctx, Activity::class.java) Tap → App öffnen (NEW_TASK | CLEAR_TOP).
openAppAction(ctx, …, action, extras) App öffnen mit Action/String-Extras.
deepLinkAction(ctx, "app://…", Activity::class.java) Tap → Deep-Link öffnen.
ManaGlanceWidgetReceiver(MyWidget()) Receiver-Basis (spart die override-Zeile).

Beispiel

class DueWidget : GlanceAppWidget() {
    override suspend fun provideGlance(context: Context, id: GlanceId) {
        val due = withContext(Dispatchers.IO) {
            (context.applicationContext as MyApp).container.repo.dueCount()
        }
        provideContent {
            ManaGlanceTheme(ManaTheme.SKYLIGHT) {
                Column(GlanceModifier.fillMaxSize().background(GlanceTheme.colors.surface).padding(12.dp)) {
                    Text("Wordeck", style = TextStyle(color = GlanceTheme.colors.primary))
                    Text(if (due > 0) "$due fällig" else "Nichts fällig")
                }
            }
        }
    }
}

class DueWidgetReceiver : ManaGlanceWidgetReceiver(DueWidget())

Build / Publish

Wie die anderen Kotlin-Libs auf der GPU-Box (Java/Android SDK):

FORGEJO_TOKEN=… ./gradlew publishReleasePublicationToForgejoRepository

Versionen: Glance 1.1.1, Compose BOM 2024.12.01, mana-kotlin-tokens 0.2.0 — deckungsgleich mit den App-Modulen, damit das Artefakt binär passt.