mirror of
https://github.com/praktimarc/kst4contest.git
synced 2026-10-19 22:02:57 +02:00
Remove JavaFX
The second half of Etappe 6 (61 commits). grep -rl "javafx\." over both main source trees is empty, nothing imports javafx, neither classpath resolves it, and org.openjfx is out of the build and the version catalog. The finding that shaped the work: the JavaFX main window was built on every start and never shown -- primaryStage's setScene and show were both commented out. Most of those 11,655 lines were dead weight rather than a port. But not all of them, and that is the trap this commit is really about: dead-looking methods still fed live Compose sinks. They were cut at their seams instead of deleted, and a sweep script that follows calls was written to find them, because reading the code does not reveal them. In order: the colour derivation frozen as checked-in test data, so the pin survives JavaFX being removed instead of silently comparing against itself; the live feeds lifted out of the never-shown window and given names and tests; the dead scaffolding deleted in slices; then the lifecycle. UiDispatcher now delivers to the AWT event dispatch thread, the ten Alerts are modal Compose dialogs, HostServices gives way to java.awt.Desktop with the mailto/http split JavaFX did not need, and extends Application, start(Stage), stop and launch are gone -- main builds the runtime and a shutdown hook replaces stop(). An independent review found two deadlocks in that move, both the same failure class, both invisible to the build: a blocking wait on the event thread for work that can only advance on the event thread. The profile picker waited on a latch and froze the client for good; ComposeWindowHost.close waited on Thread.join and returned with the window still marked open, which made a profile switch raise the dead runtime's window and leave the rebuilt profile without its Connect button. A third came out of fixing them: a ComposeDialog built off the event thread cannot create its GL context and never paints. Three defects only a GUI run showed, never the build: an NPE on a deleted field, a Compose menu still hanging on deleted MenuItems, and a category bookkeeping field that looked dead but is read by the outgoing-message category resolution -- deleting it would have sent messages in the wrong category. The binding docs and the manual no longer describe a JavaFX client.
This commit is contained in:
70 files changed
+11228
-15201
No files matched your search
@@ -28,6 +28,10 @@ sind über beide Module hinweg dieselben.
|
||||
## Laufende Arbeit
|
||||
|
||||
Spezifikationen liegen unter `docs/superpowers/specs/`, Umsetzungspläne unter
|
||||
`docs/superpowers/plans/`. Der aktuelle Umbau ist die Ablösung von JavaFX durch
|
||||
Compose Multiplatform in neun Etappen; Etappe 1 (Gradle, zwei Module, JPMS raus)
|
||||
ist abgeschlossen.
|
||||
`docs/superpowers/plans/`. Die Ablösung von JavaFX durch Compose Multiplatform ist
|
||||
**abgeschlossen**: unter `src/main` steht kein `javafx.` mehr, und `org.openjfx` ist
|
||||
aus `app-desktop/build.gradle.kts` und `gradle/libs.versions.toml` entfernt. Die
|
||||
Begründungen und die harten Lehren stehen in
|
||||
`docs/superpowers/notes/2026-10-01-javafx-lebendbefund.md`; die wichtigste: ein
|
||||
blockierendes Warten auf dem AWT-Ereignisfaden verklemmt die Oberfläche, und der grüne
|
||||
Build sagt über Fadenzugehörigkeit nichts.
|
||||
Reference in new issue
Block a user