Skip to content

fix(deps): update miuix to v0.9.3#53

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/miuix
Closed

fix(deps): update miuix to v0.9.3#53
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/miuix

Conversation

@renovate

@renovate renovate Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
top.yukonga.miuix.kmp:miuix-navigation3-ui 0.9.00.9.3 age confidence
top.yukonga.miuix.kmp:miuix-icons 0.9.00.9.3 age confidence
top.yukonga.miuix.kmp:miuix-preference 0.9.00.9.3 age confidence
top.yukonga.miuix.kmp:miuix-blur 0.9.00.9.3 age confidence
top.yukonga.miuix.kmp:miuix-ui 0.9.00.9.3 age confidence

Release Notes

compose-miuix-ui/miuix (top.yukonga.miuix.kmp:miuix-navigation3-ui)

v0.9.3

English | 中文

Highlights
  • New: Tooltip component — plain and rich tooltips shown on hover (desktop/web), long press (touch), or programmatically via TooltipState, with six anchor positions, automatic flipping, an optional caret, and single-tooltip-at-a-time behavior.
  • New: Badge / BadgedBox components — an error-colored dot or short-text pill, plus a new badge slot on NavigationBarItem, FloatingNavigationBarItem, and NavigationRailItem.
  • NavigationRail gains expand/collapse — a new NavigationRailState (via rememberNavigationRailState()) drives an animated transition between the compact rail and a 240dp expanded rail with pill-shaped items and a built-in toggle; the old display-mode API is removed (see Breaking Changes).
  • Snackbar redesigned — inverse-surface tone by default (dark bar in light theme, light bar in dark theme), smooth-corner background with a soft shadow, a filled pill-style action button, and layout-driven stack animations.
  • TabRow redesigned — unselected tabs now draw a subtle outline, and the selection indicator snaps to the selected tab instead of tweening.
  • PullToRefresh reworkedisRefreshing is now the source of truth in both directions: setting it to true shows the indicator programmatically, and the stuck-refresh bug is fixed (#​345).
  • Smoother interaction feedback — the default press/hover indication now animates with spring physics (folme springs) instead of a 120ms linear tween, and press feedback stays visible on fast clicks over hover (web/desktop).
  • miuix-squircle fixes & perf — content taller than the GPU texture limit no longer renders transparent; the SDF mask uploads as an ALPHA_8 texture, is sampled with hardware linear filtering, and per-frame allocations were removed.
  • Icons — new extended Home icon (all five weights), new built-in Close and Sidebar icons, and an optical realignment pass across the 62 extended icons.
⚠️ Breaking Changes
1. NavigationRail: display-mode API removed, replaced by an expandable-rail state API

NavigationRail was reworked into an expandable rail. The following were removed with no deprecation shims:

  • the mode: NavigationRailDisplayMode parameter
  • the NavigationRailDisplayMode enum and the LocalNavigationRailDisplayMode CompositionLocal
  • NavigationRailDefaults.TextOnlyFontSize, TextOnlyVerticalPadding, SelectedPressedAlpha, UnselectedPressedAlpha, UnselectedAlpha

A new state: NavigationRailState? = null parameter is inserted as the second parameter (right after modifier), so fully positional call sites passing header or later arguments no longer compile — use named arguments.

// Old
NavigationRail(
    mode = NavigationRailDisplayMode.IconAndText,
) { /* items */ }

// New — classic fixed rail (always icon + label)
NavigationRail { /* items */ }

// New — expandable rail with a built-in toggle
val railState = rememberNavigationRailState()
NavigationRail(
    state = railState,
    expandedWidth = NavigationRailDefaults.ExpandedWidth, // 240.dp
) { /* items */ }

The classic rail (state = null) always renders icon + label; the icon-only and text-only presets have no direct replacement. By design, the selected item in the classic layout is now flat (no bold/alpha tint) — the expanded layout's pill is the selection visual — and press feedback comes from LocalIndication.

2. Navigation bars: TextOnly display mode removed

NavigationBarDisplayMode.TextOnly and NavigationBarDefaults.TextFontSize were removed: navigation items now anchor badges to their icon, and a text-only item has no icon to anchor to. The enum keeps IconAndText, IconOnly, and IconWithSelectedLabel. Exhaustive when branches over the enum need updating.

3. Snackbar: SnackbarColors gained a required actionContainerColor

The SnackbarColors data class has a new fifth constructor property actionContainerColor: Color (background of the new pill-style action button) with no default value. Direct constructions must add it; the SnackbarDefaults.snackbarColors() factory keeps compiling unchanged (the new parameter is trailing with a default).

// Old
SnackbarColors(
    containerColor = …,
    contentColor = …,
    actionContentColor = …,
    dismissActionContentColor = …,
)

// New
SnackbarColors(
    containerColor = …,
    contentColor = …,
    actionContentColor = …,
    dismissActionContentColor = …,
    actionContainerColor = …, // background of the action pill
)

Note the redesigned default appearance: snackbarColors() defaults switched to an inverse-surface palette, SnackbarDefaults.CornerRadius changed 12dp → 16dp, and InsideMargin changed to PaddingValues(all = 12.dp). Unstyled snackbars look substantially different after upgrading; pass explicit colors/values to keep the old look.

4. TextButton: textStyle parameter inserted mid-signature

textStyle: TextStyle? = null was inserted between insideMargin and interactionSource. Only fully positional call sites that pass interactionSource or indication positionally are affected; named-argument call sites compile unchanged.

5. PullToRefresh (behavioral): isRefreshing is now the source of truth in both directions

No signature changed, but the state-sync contract did:

  • Setting isRefreshing = true while the indicator is idle now shows the indicator programmatically (previously a silent no-op) — enabling refresh-on-entry patterns.
  • Releasing a pull while isRefreshing is already true now joins the in-progress refresh instead of invoking onRefresh a second time.
  • A sub-frame true → false pulse no longer latches the indicator in the refreshing state forever (#​345).

Adjust any code that relied on the old edge-triggered semantics.

Binary compatibility note: several public functions gained defaulted parameters (SnackbarDefaults.snackbarColors, NavigationRail, folmeSpring), which changes their compiled signatures. Libraries precompiled against 0.9.2 should be recompiled against 0.9.3.

What's Changed
New Features
Improvements

Components

miuix-squircle

Bug Fixes
Example & Docs
Dependencies

Full Changelog: compose-miuix-ui/miuix@v0.9.2...v0.9.3


亮点
  • 新增:Tooltip 组件 — 普通与富文本工具提示,支持悬停(桌面/网页)、长按(触屏)或通过 TooltipState 编程触发;六个锚定方位自动翻转、可选尖角、全局同一时刻仅显示一个。
  • 新增:Badge / BadgedBox 组件 — 错误色圆点或短文本药丸角标;NavigationBarItemFloatingNavigationBarItemNavigationRailItem 新增 badge 插槽。
  • NavigationRail 支持展开 / 收起 — 新的 NavigationRailStaterememberNavigationRailState())驱动侧栏在紧凑布局与 240dp 展开布局(药丸样式条目 + 内置切换按钮)之间动画过渡;原显示模式 API 已移除(见破坏性更改)。
  • Snackbar 重设计 — 默认反色表面配色(浅色主题深色条 / 深色主题浅色条)、平滑圆角背景与柔和投影、药丸样式操作按钮、布局驱动的堆叠动画。
  • TabRow 重设计 — 未选中标签改为细描边样式,选择指示器改为直接切换而非补间动画。
  • PullToRefresh 重构isRefreshing 成为双向数据源:置 true 可编程式展示刷新指示器,并修复卡死在刷新态的问题 (#​345)。
  • 交互反馈更顺滑 — 默认按压 / 悬停指示动画由 120ms 线性补间改为弹簧物理(folme 弹簧);快速点击时按压反馈不再被悬停态吞掉(网页/桌面)。
  • miuix-squircle 修复与性能 — 修复超过 GPU 纹理上限的超高内容渲染透明的问题;SDF 遮罩改用 ALPHA_8 纹理上传、硬件线性过滤采样,并消除每帧分配。
  • 图标 — 扩展图标集新增 Home(全部五个字重)、内置基础图标新增 CloseSidebar,并对 62 个扩展图标完成光学对齐。
⚠️ 破坏性更改
1. NavigationRail:显示模式 API 移除,替换为可展开侧栏状态 API

NavigationRail 重构为可展开侧栏。以下 API 被直接移除(无弃用过渡):

  • mode: NavigationRailDisplayMode 参数
  • NavigationRailDisplayMode 枚举与 LocalNavigationRailDisplayMode CompositionLocal
  • NavigationRailDefaults.TextOnlyFontSizeTextOnlyVerticalPaddingSelectedPressedAlphaUnselectedPressedAlphaUnselectedAlpha

新增的 state: NavigationRailState? = null 参数插入在第二位(紧随 modifier),因此以位置参数传入 header 及之后参数的调用将无法编译——请改用具名参数。

//
NavigationRail(
    mode = NavigationRailDisplayMode.IconAndText,
) { /* items */ }

// 新 — 经典固定侧栏(始终图标 + 标签)
NavigationRail { /* items */ }

// 新 — 可展开侧栏(内置切换按钮)
val railState = rememberNavigationRailState()
NavigationRail(
    state = railState,
    expandedWidth = NavigationRailDefaults.ExpandedWidth, // 240.dp
) { /* items */ }

经典侧栏(state = null)始终渲染图标 + 标签;仅图标与仅文本预设没有直接替代。按新设计语言,经典布局下选中项不再加粗 / 透明度着色(展开布局的药丸即选中视觉),按压反馈改由 LocalIndication 提供。

2. 导航栏:TextOnly 显示模式移除

NavigationBarDisplayMode.TextOnlyNavigationBarDefaults.TextFontSize 已移除:导航项现在将角标锚定到图标上,而仅文本条目没有图标可供锚定。枚举保留 IconAndTextIconOnlyIconWithSelectedLabel。对该枚举做穷举 when 的代码需要更新。

3. SnackbarSnackbarColors 新增必填属性 actionContainerColor

SnackbarColors 数据类新增第五个构造属性 actionContainerColor: Color(新药丸样式操作按钮的背景色),无默认值。直接构造 SnackbarColors(...) 的代码必须补上该参数;SnackbarDefaults.snackbarColors() 工厂函数保持源码兼容(新参数位于末尾且带默认值)。

//
SnackbarColors(
    containerColor = …,
    contentColor = …,
    actionContentColor = …,
    dismissActionContentColor = …,
)

//
SnackbarColors(
    containerColor = …,
    contentColor = …,
    actionContentColor = …,
    dismissActionContentColor = …,
    actionContainerColor = …, // 操作按钮药丸的背景色
)

另请注意默认外观已重设计:snackbarColors() 的默认值切换为反色表面配色,SnackbarDefaults.CornerRadius 由 12dp 改为 16dp,InsideMargin 改为 PaddingValues(all = 12.dp)。未自定义样式的 Snackbar 升级后观感会明显不同;如需保留旧观感请显式传入颜色与尺寸。

4. TextButtontextStyle 参数插入签名中部

textStyle: TextStyle? = null 插入在 insideMargininteractionSource 之间。仅影响以位置参数传入 interactionSource / indication 的完全位置式调用;具名参数调用不受影响。

5. PullToRefresh(行为变更):isRefreshing 成为双向数据源

签名未变,但状态同步契约改变:

  • 指示器空闲时置 isRefreshing = true 现在会编程式展示刷新指示器(此前静默忽略)——支持进入页面即刷新等模式。
  • isRefreshing 已为 true 时松开下拉手势会并入进行中的刷新,不再第二次调用 onRefresh
  • 亚帧级的 true → false 脉冲不再导致指示器永久卡死在刷新态 (#​345)。

依赖旧的边沿触发语义的代码需要调整。

二进制兼容性说明:若干公开函数新增了带默认值的参数(SnackbarDefaults.snackbarColorsNavigationRailfolmeSpring),其编译后签名发生变化。基于 0.9.2 预编译的库需针对 0.9.3 重新编译。

更新内容
新功能
改进

组件

miuix-squircle

Bug 修复
示例与文档
依赖更新

完整更新日志: compose-miuix-ui/miuix@v0.9.2...v0.9.3

v0.9.2

English | 中文

Highlights
  • Upgraded to Kotlin 2.4.0 and Compose Multiplatform 1.11.1 — tracks the latest stable releases.
  • New miuix-shader module — a cross-platform runtime shader / render-effect abstraction, extracted from miuix-blur and now published standalone.
  • New miuix-squircle module — squircle (smooth rounded corner) shapes with a pre-baked SDF and a global LocalSquircleEnabled toggle; now backs miuix-ui surfaces.
  • New: SliderPreference / RangeSliderPreference — slider-based preference rows in miuix-preference.
  • Text gains ColorProducer overloads — drive a frequently-changing text color from the draw phase without recomposition.
  • miuix-blur refinements — cross-fade downscale transitions, render-effect/Gaussian-key caching, fewer per-frame allocations; Android minSdk bumped 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.isRuntimeShaderSupported

isRenderEffectSupported() now lives only in top.yukonga.miuix.kmp.shader.

What's Changed
New Features
Improvements

Components

miuix-blur

Bug Fixes
Example & Docs
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: compose-miuix-ui/miuix@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 / RangeSliderPreferencemiuix-preference 中基于滑块的偏好项。
  • Text 新增 ColorProducer 重载 — 在绘制阶段驱动频繁变化的文字颜色,避免重组。
  • miuix-blur 优化 — 降采样档位交叉淡化过渡、渲染效果 / 高斯键缓存、减少每帧分配;Android minSdk 由 32 提升至 33。
  • 无障碍 — 修复 TalkBack 双读问题,并为导航 / 标签项播报所在位置。
⚠️ 破坏性更改
1. miuix-blurminSdk 由 32 提升至 33

miuix-blur 现要求 Android API 33+,低于该版本的设备会自动回退至无模糊渲染(着色器路径由 isRuntimeShaderSupported() 守卫)。

2. 运行时着色器 / 渲染效果工具迁移至 miuix-shader

RuntimeShader / RenderEffect 抽象已从 miuix-blur 拆分到新的 miuix-shader 模块(miuix-blur 会传递依赖它,无需额外添加依赖)。为兼容现有代码,RuntimeShaderasComposeShader()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.isRuntimeShaderSupported

isRenderEffectSupported() 现仅存在于 top.yukonga.miuix.kmp.shader

更新内容
新功能
改进

组件

miuix-blur

Bug 修复
示例与文档
构建
依赖更新
  • 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

完整更新日志: compose-miuix-ui/miuix@v0.9.1...v0.9.2

v0.9.1

English | 中文

Highlights
  • Upgraded to Compose Multiplatform 1.11.0 — tracks the latest stable release.
  • miuix-shapes removed — performance cost outweighed visual gain.
  • New: Cascading two-level ListPopup / DropdownMenuOverlayCascadingListPopup, WindowCascadingListPopup, OverlayIconCascadingDropdownMenu, WindowIconCascadingDropdownMenu.
  • New: Highlight support in miuix-blurModifier.drawBackdrop() / Modifier.textureBlur() accept a highlight parameter for overlay highlight effects.
  • miuix-blur API changes — DSL gaussianBlur(...) renamed to blur(...); Modifier.textureBlur blurRadius is now interpreted as dp (auto density conversion); Android minSdk bumped 31 → 32.
  • Dropdown / Spinner unifiedSpinnerPopup merged into OverlayDropdownPopup; per-item callbacks enable multi-select.
  • Compose stability & render-path optimizationsButton, Surface, TextField, BasicComponent, TabRow, Snackbar, ColorPicker, NavigationBar/Rail, Overscroll.
⚠️ Breaking Changes
1. miuix-shapes module removed

Drop the dependency and switch to androidx.compose.foundation.shape:

// Old
implementation("top.yukonga.miuix.kmp:miuix-shapes:<version>")
import top.yukonga.miuix.kmp.shapes.SmoothRoundedCornerShape
val shape = SmoothRoundedCornerShape(16.dp)

// New
import androidx.compose.foundation.shape.RoundedCornerShape
val shape = RoundedCornerShape(16.dp)
2. miuix-blur: minSdk 31 → 32

miuix-blur now requires Android API 32+. Earlier devices fall back to non-blur rendering automatically.

3. miuix-blur: blur DSL renamed, textureBlur radius now dp

The BackdropEffectScope.gaussianBlur(...) DSL is renamed to blur(...). Parameters and units stay the same (Float pixels):

// Old
Modifier.drawBackdrop(...) { gaussianBlur(20f * density) }

// New
Modifier.drawBackdrop(...) { blur(20f * density) }

Modifier.textureBlur(blurRadius = ...) keeps the Float type but its meaning changed from pixels to dp (internally converted using display density). Numeric values should be reduced accordingly:

// Old (v0.9.0): 60 was in pixels
Modifier.textureBlur(backdrop, shape, blurRadius = 60f)

// New (v0.9.1): 20 is in dp; ≈ 60 px on a 3x-density screen
Modifier.textureBlur(backdrop, shape, blurRadius = 20f)

BlurDefaults.BlurRadius and BlurDefaults.MaxBlurRadius are also now dp-based (defaults: 20f, 150f).

4. FloatingNavigationBar simplified to icon-only

The mode: FloatingNavigationBarDisplayMode parameter is removed; the FloatingNavigationBarDisplayMode enum (and its IconAndText / TextOnly / IconOnly cases) is deleted. The component is now always icon-only. If you relied on IconAndText or TextOnly, migrate to NavigationBar or compose a custom layout.

5. Dropdown / Spinner unified
  • SpinnerEntry is now a deprecated typealias for DropdownItem; SpinnerColors is a deprecated typealias for DropdownColors.
  • SpinnerDefaults is deprecated — use DropdownDefaults instead.
  • The previous DropdownPopup / SpinnerPopup are merged into a single OverlayDropdownPopup (with OverlayDropdownDialog covering the dialog mode); the Window-side equivalents live in WindowDropdownPopup / WindowDropdownDialog.
  • WindowDropdownPreference / WindowSpinnerPreference (and their Overlay* counterparts) now manage their options via the unified DropdownEntry / DropdownItem types.
  • New menu wrappers added under miuix-preference: OverlayDropdownMenu, OverlayIconDropdownMenu, WindowDropdownMenu, WindowIconDropdownMenu, plus the cascading *IconCascadingDropdownMenu variants.
  • DropdownItem gains a selected: Boolean field and an optional onClick: (() -> Unit)? callback so each row can drive its own selection state, enabling multi-select.
What's Changed
New Features

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "before 6am on Monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@Miuzarte Miuzarte closed this Jul 13, 2026
@renovate

renovate Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update (0.9.3). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate
renovate Bot deleted the renovate/miuix branch July 13, 2026 04:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant