JS-spezifische Module und Dateien entfernt, Multiplattform-Targets korrigiert

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-18 14:16:22 +02:00
parent 7bbb991e69
commit e91b10daa3
169 changed files with 2128 additions and 824 deletions
@@ -0,0 +1,25 @@
# Journal: Korrektur der Multiplatform-Targets (18.04.2026)
## 🎯 Ziel
Sofortige Korrektur der fälschlicherweise eingeführten `jsMain`-Struktur im Modul `device-initialization`.
## 🛠️ Durchgeführte Maßnahmen
1. **Gradle-Bereinigung:** Entfernung der `js(IR)`-Konfiguration aus
`frontend/features/device-initialization/build.gradle.kts`.
2. **Dateisystem-Bereinigung:** Vollständiges Löschen des Verzeichnisses `src/jsMain/` im Modul `device-initialization`.
3. **Fokus-Wahrung:** Sicherstellung, dass nur `jvmMain` (Desktop) und `wasmJsMain` (Web) als valide Targets im
Frontend-Feature existieren.
## 🧐 Analyse
Der Fehler entstand durch eine automatisierte Generierung während des Refactorings auf die `expect/actual`-Struktur.
Dies widersprach der strategischen Ausrichtung (Desktop: JVM, Web: WASM).
## ✅ Ergebnis
Das Modul ist nun wieder konform zur Architekturvorgabe. Keine unerwünschten JS-Altlasten mehr vorhanden.
---
🏗️ **[Lead Architect]** & 🧹 **[Curator]**
@@ -0,0 +1,56 @@
# Journal: Feature-Modul `device-initialization` (Plug-and-Play)
**Datum:** 18. April 2026
**Agent:** 🏗️ [Lead Architect] / 🎨 [Frontend Expert]
## 🎯 Zielsetzung
Umstellung des Onboarding-Prozesses auf die neue **Plug-and-Play Struktur (ADR-0024)**. Ziel ist die Kapselung der
Geräte-Initialisierung in ein autarkes Feature-Modul mit sauberem State-Management.
## 🛠️ Durchgeführte Änderungen
### 1. Neues Feature-Modul: `device-initialization`
* Erstellung von `frontend/features/device-initialization`.
* Implementierung der Multiplatform-Struktur (Common + JVM).
* **Domain:** `DeviceInitializationSettings`, `NetworkRole`, `DeviceInitializationValidator`.
* **Presentation:** `DeviceInitializationViewModel` (StateFlow-basiert), `DeviceInitializationUiState`.
* **DI:** `DeviceInitializationModule.kt` für Koin.
### 2. UI-Refactoring
* Extraktion der UI aus `OnboardingScreen` in zustandslose Composables.
* `DeviceInitializationScreen` im `commonMain` für den Rahmen.
* `DeviceInitializationConfig.jvm.kt` im `jvmMain` für plattformspezifische UI (z.B. `JFileChooser`).
* Umstellung der Nomenklatur von "Onboarding" auf **"Geräte-Initialisierung"** (DeviceInitialization).
### 3. Integration in Desktop-Shell
* Registrierung des Moduls in `settings.gradle.kts`.
* Abhängigkeit in `meldestelle-desktop/build.gradle.kts` hinzugefügt.
* Koin-Modul in `main.kt` registriert.
* `DesktopApp.kt` und `DesktopMainLayout.kt` auf das neue ViewModel und den neuen Screen umgestellt.
* Einführung des `DeviceInitializationSettingsManager`.
## ⚠️ Bekannte Themen (Cleanup)
* Die alten Klassen `OnboardingScreen`, `OnboardingSettings`, `OnboardingValidator` und `SettingsManager` in
`at.mocode.desktop.screens.onboarding` sind noch vorhanden und müssen in einer folgenden Session gelöscht werden,
sobald die Referenzen stabil sind.
* IDE-Referenzfehler bei neuen KMP-Modulen erfordern oft einen Gradle-Sync/Rebuild.
## 🏁 Fazit
Der erste Schritt des "Schritt-für-Schritt"-Umbaus ist abgeschlossen. Die Startseite der App folgt nun dem Plug-and-Play
Prinzip und ist fachlich präzise benannt.
## 🧹 Update (Nach-Korrektur)
* **ViewModel-Fix:** `DeviceInitializationViewModel` erbt nun von `androidx.lifecycle.ViewModel`, was die Integration in
`koinViewModel` ermöglicht.
* **DesktopMainLayout:** Syntaxfehler beim `koinViewModel`-Aufruf behoben und Typos (`geraetName` -> `deviceName`)
korrigiert.
* **Multiplatform-Härtung:** `DeviceInitializationSettingsManager` und `DeviceInitializationConfig` auf `expect/actual`
umgestellt, um JVM-Lecks im Common-Code zu vermeiden und JS/WasmJS Kompatibilität (via Stubs) sicherzustellen.
* **UI-Cleanup:** Code-Duplikate in der Desktop-Konfiguration durch `MsSettingsField` reduziert.
@@ -0,0 +1,54 @@
# Journal: Umstellung auf JVM + wasmJs (Welle 1-3)
**Datum:** 18. April 2026
**Status:** Abgeschlossen
**Agent:** 🏗️ [Lead Architect] & 🧹 [Curator]
## 🎯 Zielsetzung
Vollständige Eliminierung des redundanten `js(IR)` Targets aus allen Modulen des Projekts. Strategische Fokussierung auf
**JVM (Desktop)** und **wasmJs (Web)** gemäß der "Meldestelle"-Architekturvorgaben.
## 🛠️ Durchgeführte Maßnahmen
### 1. Gradle-Bereinigung (Entfernung `js(IR)`)
In den folgenden Modul-Kategorien wurde der `js(IR) { ... }` Block sowie JS-spezifische Dependencies aus den
`build.gradle.kts` Dateien entfernt:
- **Core-Module:** `auth`, `domain`, `local-db`, `network`, `core-domain`, `design-system`, `navigation`, `sync`,
`core-utils`.
- **Feature-Module:** `billing`, `funktionaer`, `nennung`, `pferde`, `ping`, `profile`, `reiter`, `turnier`,
`veranstalter`, `veranstaltung`, `verein`, `zns-import`, `device-initialization`.
- **Contracts & Backend-Common:** `ping-api`, `entries-api`, `entries-domain`, `masterdata-domain`, `billing-domain`,
`events-common`, `zns-parser`.
- **Shells:** `meldestelle-web`, `meldestelle-desktop`.
### 2. Quellcode-Migration & Cleanup
- Alle `src/jsMain/` und `src/jsTest/` Verzeichnisse wurden in den oben genannten Modulen gelöscht.
- Logik wurde (falls noch nicht geschehen) nach `wasmJsMain` migriert.
- Veraltete JS-spezifische Ktor-Client Abhängigkeiten wurden entfernt.
### 3. Stabilität & Bugfixes (KMP & Yarn)
- **Network-Modul:** Die `NoOpDiscoveryService`-Implementierung in `wasmJsMain` wurde aktualisiert, um dem
`NetworkDiscoveryService`-Interface (`commonMain`) zu entsprechen.
- **Yarn Lock:** Korrektur des `yarn.lock` für WASM via `kotlinWasmUpgradeYarnLock` nach Wegfall der JS-Targets.
- **Dependency Resolution:** Beseitigung aller KMP-Fehlermeldungen ("Unresolved platforms: [js]") durch vollständige
Bereinigung der Target-Ketten.
## ✅ Verifizierung
- `./gradlew clean build`: **ERFOLGREICH** (keine KMP-Auflösungsfehler mehr)
- `./gradlew :frontend:shells:meldestelle-desktop:jvmJar`: **ERFOLGREICH**
- `./gradlew :frontend:shells:meldestelle-web:wasmJsBrowserDistribution -PenableWasm=true`: **ERFOLGREICH**
## 📝 Fazit
Die technische Schuld der redundanten JS-Targets wurde getilgt. Das Projekt verfügt nun über eine saubere, zweigleisige
Architektur (JVM & WASM), was die Build-Stabilität erhöht und die Komplexität der Plattform-Implementierungen (
`expect/actual`) reduziert.
---
*Dokumentiert durch den Curator am 18.04.2026.*
@@ -0,0 +1,51 @@
# Journal: Welle 1 - WASM-Only Transition
**Datum:** 18. April 2026
**Status:** Welle 1 abgeschlossen
**Agent:** 🏗️ [Lead Architect] & 🧹 [Curator]
## 🎯 Ziel
Vollständige Entfernung des `js(IR)`-Targets aus den Core-Modulen und Umstellung auf ein reines **JVM (Desktop)** + *
*wasmJs (Web)** Modell.
## 🛠️ Durchgeführte Änderungen
### 1. Gradle-Bereinigung (Entfernung `js(IR)`)
In folgenden Modulen wurde der `js(IR) { ... }` Block und die entsprechenden JS-Dependencies aus den `sourceSets`
entfernt:
- `core/core-domain`
- `frontend/core/auth`
- `frontend/core/domain`
- `frontend/core/local-db`
- `frontend/core/network`
- `frontend/core/design-system`
- `frontend/core/navigation`
- `frontend/shells/meldestelle-web`
### 2. Quellcode-Migration & Bereinigung
- **Löschung:** Alle `src/jsMain/` und `src/jsTest/` Verzeichnisse in den oben genannten Modulen wurden gelöscht.
- **Migration:**
- Logik aus `OidcCallback.js.kt` wurde bereits zuvor weitgehend in `OidcCallback.wasmJs.kt` übernommen.
- In `local-db` wurde die `DatabaseDriverFactory.wasmJs.kt` auf einen stabilen Rumpf-Stand gebracht (
WebWorkerDriver-Migration ist aufgrund fehlender DOM-Libraries für WASM aktuell noch blockiert).
- **Konsolidierung:** Dependencies wie `kotlinx-coroutines-core`, die zuvor in `jsMain` lagen, wurden nach `commonMain`
oder `wasmJsMain` verschoben.
## 🛡️ Verifizierung
- `./gradlew clean`: **Erfolgreich**
- `./gradlew :frontend:shells:meldestelle-desktop:jvmJar`: **Erfolgreich** (Desktop-Shell baut stabil).
- Build-Check für WASM (`meldestelle-web`) zeigt noch Fehler in den Feature-Modulen (Welle 2), was erwartungskonform
ist, da diese noch `js(IR)` referenzieren.
## 🚀 Nächste Schritte
- **Welle 2:** Systematische Bereinigung aller `frontend/features/*` Module.
- **Welle 3:** Finalisierung der Web-Shell und vollständige Entfernung aller JS-Leichen im Projekt.
---
*Dokumentiert durch den Curator.*