v0.9.2
Highlights
- Upgraded to Kotlin 2.4.0 and Compose Multiplatform 1.11.1 — tracks the latest stable releases.
- New
miuix-shadermodule — a cross-platform runtime shader / render-effect abstraction, extracted frommiuix-blurand now published standalone. - New
miuix-squirclemodule — squircle (smooth rounded corner) shapes with a pre-baked SDF and a globalLocalSquircleEnabledtoggle; now backsmiuix-uisurfaces. - New:
SliderPreference/RangeSliderPreference— slider-based preference rows inmiuix-preference. TextgainsColorProduceroverloads — drive a frequently-changing text color from the draw phase without recomposition.miuix-blurrefinements — cross-fade downscale transitions, render-effect/Gaussian-key caching, fewer per-frame allocations; AndroidminSdkbumped 32 → 33.- Accessibility — fix TalkBack double-read and announce item position for navigation/tab items.
⚠️ Breaking Changes
1. miuix-blur: minSdk 32 → 33
miuix-blur now requires Android API 33+. Earlier devices fall back to non-blur rendering automatically (the shader paths are guarded by isRuntimeShaderSupported()).
2. Runtime shader / render-effect helpers extracted to miuix-shader
The RuntimeShader / RenderEffect abstraction moved out of miuix-blur into the new miuix-shader module (miuix-blur depends on it transitively, so no extra dependency is required). For source compatibility, RuntimeShader, asComposeShader(), asBrush(), and isRuntimeShaderSupported() remain available from top.yukonga.miuix.kmp.blur as back-compat re-exports; new code should import them from top.yukonga.miuix.kmp.shader instead:
// Old
import top.yukonga.miuix.kmp.blur.RuntimeShader
import top.yukonga.miuix.kmp.blur.isRuntimeShaderSupported
// New
import top.yukonga.miuix.kmp.shader.RuntimeShader
import top.yukonga.miuix.kmp.shader.isRuntimeShaderSupportedisRenderEffectSupported() now lives only in top.yukonga.miuix.kmp.shader.
What's Changed
New Features
- library: add miuix-shader and miuix-squircle modules by @YuKongA in 85ae469d
- feat(preference): add SliderPreference and RangeSliderPreference by @HChenX in #336
- library: add ColorProducer overloads to Text by @YuKongA in 94f1ff97
- library: pre-bake squircle SDF and add a global toggle by @YuKongA in 68352b1d
Improvements
Components
- library: use rememberSaveable for largeTitleHeight and optimize smallTitle animations by @lightsummer233 in #334
- library: refactor TopAppBar based on androidx-main by @YuKongA in eca8ed2f
- library: consolidate TextField colors and decoration by @YuKongA in a033aee2
- library: ListPopup uses popupClipReveal for vertical reveal by @YuKongA in 054e2a14
- library: disable animateTransition by @YuKongA in f32eece9
- library: improve Icon KDoc from androidx-main by @YuKongA in 540e474b
- library: update baseline profile by @YuKongA in a69894ad
miuix-blur
- library: miuix-blur: cache blur effect & lifecycle sensor by @YuKongA in 5e75455e
- library: miuix-blur: skip RuntimeShader effects when unsupported by @YuKongA in 132586a8
- library: cross-fade blur downscale transitions by @YuKongA in 50aa39ca
- library: miuix-blur: cache draw-path render effects and gaussian keys by @YuKongA in f8196d42
- library: miuix-blur: reduce per-frame allocations and blur record area by @YuKongA in d6e7c1ce
- library: miuix-blur: clarify render-effect uniform-caching comments by @YuKongA in 073428d2
Bug Fixes
- library: CascadingListPopup: fix secondary first/last row padding by @YuKongA in cb3956df
- library: fix TalkBack double-read and announce item position by @YuKongA in 4f69c942
- library: fix bottom sheet nested scroll dismissal by @wxxsfxyzm in #340
Example & Docs
- example: use constant lens refraction in iOS nav bar by @YuKongA in f3888d56
- example: Use
IconandLocalContentColorinLiquidGlassNavigationBarby @wxxsfxyzm in #327 - example: Update aboutlibraries.json by @YuKongA in daff7a6b
- example: refactor FPS monitor by @YuKongA in 7daae994
- example: refine pager padding by @YuKongA in 9a6fdc45
- example: shared BottomSheet UI by @YuKongA in 8c4ca7be
- example: defer frame-rate scroll reads in About page by @YuKongA in dd2fb73f
- example: round icon page top padding to whole pixels by @YuKongA in c24091c6
- example: simplify damped drag release settle flow by @YuKongA in 6cef2957
- example: drop redundant snapshot state for disabled sliders by @YuKongA in 4c17a46f
- example: rethrow cancellation in license loader by @YuKongA in ce892e49
- docs: align components/guides with current API by @YuKongA in 14e6f36f
- misc: update CLAUDE.md by @YuKongA in f6b2d802
Build
Dependencies
- fix(deps): update jetbrains.compose.multiplatform to v1.11.1 by @renovate in #338
- fix(deps): update kotlin monorepo to v2.4.0 by @renovate in #339
- fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.6.0 by @renovate in #337
- fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.5.1 by @renovate in #328
- fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.5.0 by @renovate in #326
- fix(deps): update dependency androidx.navigation3:navigation3-runtime to v1.1.2 by @renovate in #332
- fix(deps): update dependency io.nlopez.compose.rules:ktlint to v0.5.9 by @renovate in #333
- fix(deps): update about.libraries to v14.2.1 by @renovate in #335
Full Changelog: v0.9.1...v0.9.2
亮点
- 升级至 Kotlin 2.4.0 与 Compose Multiplatform 1.11.1 — 跟进至最新稳定版。
- 新增
miuix-shader模块 — 跨平台运行时着色器 / 渲染效果抽象,从miuix-blur中拆分并独立发布。 - 新增
miuix-squircle模块 — 平滑圆角(squircle)形状库,内置预烘焙 SDF 与全局LocalSquircleEnabled开关;miuix-ui的圆角表面现已基于它实现。 - 新增:
SliderPreference/RangeSliderPreference—miuix-preference中基于滑块的偏好项。 Text新增ColorProducer重载 — 在绘制阶段驱动频繁变化的文字颜色,避免重组。miuix-blur优化 — 降采样档位交叉淡化过渡、渲染效果 / 高斯键缓存、减少每帧分配;AndroidminSdk由 32 提升至 33。- 无障碍 — 修复 TalkBack 双读问题,并为导航 / 标签项播报所在位置。
⚠️ 破坏性更改
1. miuix-blur:minSdk 由 32 提升至 33
miuix-blur 现要求 Android API 33+,低于该版本的设备会自动回退至无模糊渲染(着色器路径由 isRuntimeShaderSupported() 守卫)。
2. 运行时着色器 / 渲染效果工具迁移至 miuix-shader
RuntimeShader / RenderEffect 抽象已从 miuix-blur 拆分到新的 miuix-shader 模块(miuix-blur 会传递依赖它,无需额外添加依赖)。为兼容现有代码,RuntimeShader、asComposeShader()、asBrush()、isRuntimeShaderSupported() 仍可从 top.yukonga.miuix.kmp.blur 以兼容别名导入;新代码请改从 top.yukonga.miuix.kmp.shader 导入:
// 旧
import top.yukonga.miuix.kmp.blur.RuntimeShader
import top.yukonga.miuix.kmp.blur.isRuntimeShaderSupported
// 新
import top.yukonga.miuix.kmp.shader.RuntimeShader
import top.yukonga.miuix.kmp.shader.isRuntimeShaderSupportedisRenderEffectSupported() 现仅存在于 top.yukonga.miuix.kmp.shader。
更新内容
新功能
- library: add miuix-shader and miuix-squircle modules by @YuKongA in 85ae469d
- feat(preference): add SliderPreference and RangeSliderPreference by @HChenX in #336
- library: add ColorProducer overloads to Text by @YuKongA in 94f1ff97
- library: pre-bake squircle SDF and add a global toggle by @YuKongA in 68352b1d
改进
组件
- library: use rememberSaveable for largeTitleHeight and optimize smallTitle animations by @lightsummer233 in #334
- library: refactor TopAppBar based on androidx-main by @YuKongA in eca8ed2f
- library: consolidate TextField colors and decoration by @YuKongA in a033aee2
- library: ListPopup uses popupClipReveal for vertical reveal by @YuKongA in 054e2a14
- library: disable animateTransition by @YuKongA in f32eece9
- library: improve Icon KDoc from androidx-main by @YuKongA in 540e474b
- library: update baseline profile by @YuKongA in a69894ad
miuix-blur
- library: miuix-blur: cache blur effect & lifecycle sensor by @YuKongA in 5e75455e
- library: miuix-blur: skip RuntimeShader effects when unsupported by @YuKongA in 132586a8
- library: cross-fade blur downscale transitions by @YuKongA in 50aa39ca
- library: miuix-blur: cache draw-path render effects and gaussian keys by @YuKongA in f8196d42
- library: miuix-blur: reduce per-frame allocations and blur record area by @YuKongA in d6e7c1ce
- library: miuix-blur: clarify render-effect uniform-caching comments by @YuKongA in 073428d2
Bug 修复
- library: CascadingListPopup: fix secondary first/last row padding by @YuKongA in cb3956df
- library: fix TalkBack double-read and announce item position by @YuKongA in 4f69c942
- library: fix bottom sheet nested scroll dismissal by @wxxsfxyzm in #340
示例与文档
- example: use constant lens refraction in iOS nav bar by @YuKongA in f3888d56
- example: Use
IconandLocalContentColorinLiquidGlassNavigationBarby @wxxsfxyzm in #327 - example: Update aboutlibraries.json by @YuKongA in daff7a6b
- example: refactor FPS monitor by @YuKongA in 7daae994
- example: refine pager padding by @YuKongA in 9a6fdc45
- example: shared BottomSheet UI by @YuKongA in 8c4ca7be
- example: defer frame-rate scroll reads in About page by @YuKongA in dd2fb73f
- example: round icon page top padding to whole pixels by @YuKongA in c24091c6
- example: simplify damped drag release settle flow by @YuKongA in 6cef2957
- example: drop redundant snapshot state for disabled sliders by @YuKongA in 4c17a46f
- example: rethrow cancellation in license loader by @YuKongA in ce892e49
- docs: align components/guides with current API by @YuKongA in 14e6f36f
- misc: update CLAUDE.md by @YuKongA in f6b2d802
构建
依赖更新
- fix(deps): update jetbrains.compose.multiplatform to v1.11.1 by @renovate in #338
- fix(deps): update kotlin monorepo to v2.4.0 by @renovate in #339
- fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.6.0 by @renovate in #337
- fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.5.1 by @renovate in #328
- fix(deps): update dependency com.diffplug.spotless:spotless-plugin-gradle to v8.5.0 by @renovate in #326
- fix(deps): update dependency androidx.navigation3:navigation3-runtime to v1.1.2 by @renovate in #332
- fix(deps): update dependency io.nlopez.compose.rules:ktlint to v0.5.9 by @renovate in #333
- fix(deps): update about.libraries to v14.2.1 by @renovate in #335
完整更新日志: v0.9.1...v0.9.2