JS-spezifische Module und Dateien entfernt, Multiplattform-Targets korrigiert
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
@@ -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.*
|
||||
Reference in New Issue
Block a user