Ketoy 0.3.4-alpha is here
We're excited to ship 0.3.4-alpha, a resource-resolver release that makes your KBC screens look the way you actually want them to. Custom typography. Real drawables. The two pieces that always made server-driven UI feel "almost there" are now first-class citizens in your Kotlin source.
Coordinates
build.gradle.kts
dependencies {
implementation(platform("dev.ketoy.vm:ketoy-bom:0.3.4-alpha"))
implementation("dev.ketoy.vm:ketoy-runtime")
implementation("dev.ketoy.vm:ketoy-hilt") // optional
implementation("dev.ketoy.vm:ketoy-adapters-material3")
}If you're already on 0.3.x, this is a drop-in upgrade, additive
properties on KetoyConfig, no breaking API changes.
What landed
FontFamily(Font(R.font.X))Image(painterResource(R.drawable.X))6 new bitwise Int opcodesparamResolver= directive
FontFamily(Font(R.font.X))works end-to-end in@KetoyComposablesource.Image(painterResource(R.drawable.X), …)ships through the newIMAGEadapter. Vector or bitmap, your choice.- Six new bitwise Int opcodes under the hood, so deeply-nested composables stop hitting interpreter ceilings. You don't need to do anything, it just works.
- Per-adapter typed-getter overrides via the
paramResolver=scan-roots directive, useful if you're authoring custom adapters and want a specificKBCParamSetgetter for a parameter type that the global classifier doesn't dispatch on.
What's next: more widgets, more polish
We're spending the next stretch on widget customizability, making more of the Material3 + Foundation surface area work the way you'd expect in plain Compose. More slot types, more overload coverage, more of the modifiers and defaults you reach for every day.