mirror of
https://github.com/bitsycore/compose-desktop-native.git
synced 2026-10-05 18:57:26 +00:00
Coil 3.6.2 publishes linux + apple klibs for its core/network/svg modules but NO mingwX64 anywhere, and NO desktop-native artifact at all for the compose layer. The sources are target-agnostic, so the port re-declares the targets and rebuilds them: :coil:coil-core coil3.* core (Skia-based decoding) :coil:coil the singleton ImageLoader facade :coil:coil-compose-core AsyncImage / rememberAsyncImagePainter internals :coil:coil-compose the public compose entry points :coil:coil-svg SVG decoding via skiko SVGDOM :coil:coil-network-core shared network-fetcher plumbing :coil:coil-network-ktor3 Ktor 3 fetcher, on the port's existing ktor pin Vendored VERBATIM from coil-kt/coil @ 3.6.2 (new COIL_REF pin + manifests); 152 files, zero local edits - all of it compiled unmodified. SOURCE-SET COLLAPSE: the port has no android, jvm or js target, so upstream's nonAndroidMain / nonJvmCommonMain / nonJsCommonMain all apply to every target here. They do NOT merge into nativeMain though: several declare `expect`s whose `actual`s live in upstream nativeMain, and siblings in one source set is a hard error. So they keep their own level above it. TWO PARALLEL SKIKO BRANCHES in coil-core / coil-svg / coil-compose-core: upstream's non-android code uses org.jetbrains.skia.* directly, so the INTERMEDIATE source set holding it needs skiko on its own compile classpath (a shared-metadata compilation is a real compile). macOS/Linux take the official skiko and mingwX64 takes the bitsycore fork, and the two cannot share an intermediate - so mingw gets a parallel branch over the same srcDirs, the same shape :compose:ui:ui-graphics already uses. Kotlin emits no metadata compilation for the single-target fork branch, so the two never collide. coil-compose-core declares the whole ui / foundation family DIRECTLY rather than leaning on foundation's transitives - the granular-metadata trap from CLAUDE.md's "Common pitfalls": a substituted coord's transitives drop off the commonMain metadata classpath. Published as com.bitsycore.coil3:<module>; bridge substitution rules added so consumers keep declaring the official io.coil-kt.coil3 coordinates.