Ketoy

← Platform updates

New

Ketoy 0.3.4-alpha is here

May 19, 2026 · Platform · 0.3.4-alpha

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 @KetoyComposable source.
  • Image(painterResource(R.drawable.X), …) ships through the new IMAGE adapter. 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 specific KBCParamSet getter 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.