Releases: bitsycore/compose-desktop-native
Releases · bitsycore/compose-desktop-native
Release list
v0.4.2 - Windows text fidelity, SDL 3.4.14, dual maven publishing
Text & rendering (Windows)
- Repaired the fork's
LineMetricsascent/descent decode — Windows text fidelity verified against upstream. - Tab characters are normalized before shaping so the Windows fork no longer renders
.notdefboxes. - Pointer coordinates carried as
Floatend-to-end — no more HiDPI caret quantization. - Intrinsics-pass shaped paragraph is reused for final layout (one shaping pass saved per text).
- Inline-content placeholders:
Text(inlineContent = …)reserves space correctly. - OS IME candidate window is positioned on focus gain.
Foundation
- Vendored the upstream desktop
Scrollbar(androidx.compose.foundation) and deleted the project reimplementation. LocalPlatformScreenReaderdefaults to an inactive no-op instead of throwing.
Build & tooling
- SDL updated to release-3.4.14, unused subsystems disabled and unreferenced macOS frameworks dropped from
sdl3.def(slimmer static lib). - Windows common-metadata compile unblocked under K2 (
@file:Suppress).
Publishing
- Artifacts now publish to maven.bitsycore.com (no authentication) alongside GitHub Packages.
- The skiko fork is republished as
com.bitsycore.skiko:skiko-mingwx64:0.150.1-mingw.2on both repos — the bridge plugin now defaults to it, so a consumer can build every target without any GitHub Packages credentials.
See the bridge README for the updated (auth-free) repositories {} setup.
v0.4.1
v0.3.1
v0.3.1 — Skia everywhere + upstream skiko text (fixes apidemo app build)
v0.2.2
v0.2.1 - Renderer refactor
v0.2.1 — fix mingwX64 demo compile (currentResidentMb popen)
v0.2.0
feat(bridge): expose the Compose versions the port tracks; catalog as…
v0.1.20
fix(sdl): stop re-rasterizing text at device size — popup/dialog text…
v0.1.19
docs(roadmap): record demo 70fps cause (draw-bound sidebar re-tessell…
v0.1.18
docs(CLAUDE): document the parity harness + how to read the %differ Explains running scripts/parity, the one-process JVM / per-screen native mechanics, the build/parity outputs, and — the load-bearing part — what the number means: it's a font-drift-inflated ranking signal, not a pass/fail score. Ghosted text + dark shapes = normal; a solid bright block or one-sided shape = regression. Baseline gradient ~2%..32%; known SDL gaps (solid gradients, effects) inflate specific screens.
v0.1.17
docs(bridge): document settings-wide vs per-module application
Both worked since the plugin is Plugin<Any> branching on Settings vs
Project, but the module-level path was undocumented and untested —
verified now with the example applied compose-plugin style. Also spells
out that a pluginManagement plugins{} entry only pins the version while
the settings-level plugins{} block is what applies build-wide.