Repository navigation
m-ui v0.2.2
v0.2.2 fixes subscriptions for panels that use IP certificates, fixes the expiry date some clients show for subscriptions that never expire, and rebuilds the Liquid Glass interface on top of a faithful port of the native iOS 26 / macOS 26 behaviour.
Fixes
- Subscriptions over IP certificates. Mihomo Party and FlClash failed to fetch subscriptions with
unable to verify the first certificatewhen the panel served only the leaf certificate. That typically happens with Let's Encrypt IP certificates. Browsers and iOS clients fetch the missing intermediate on their own; Node.js and Go/Dart clients do not.- The panel and subscription listeners now complete a leaf-only certificate chain automatically. The intermediate comes from, in order: the matching acme.sh
fullchain.cer, aca/chainfile next to the certificate, or the certificate's AIA issuer URL. - If the chain still cannot be completed, the panel shows a warning banner in every supported language.
install.shandm-ui.shnow check that the installed certificate file contains an intermediate. If it does not, they fall back to acme.sh'sfullchain.cer.m-ui settingsnow printscert-fileandkey-file, so you can see which certificate the panel uses.
- The panel and subscription listeners now complete a leaf-only certificate chain automatically. The intermediate comes from, in order: the matching acme.sh
- "Expires 1970-01-01" in Clash Mi. Subscriptions set to never expire used to send
expire=0inSubscription-Userinfo, which Clash Mi read as a Unix timestamp. Theexpirefield is now omitted when there is no expiry. Other clients are unaffected.
Liquid Glass interface
The controls are now ported from liquid-glass-webgl (Apache-2.0, a web port of Kyant0/AndroidLiquidGlass). The springs, lens refraction, chromatic dispersion and highlights follow the reference, replacing the earlier "jelly" effects. Wide screens get macOS-sized controls and narrow screens get iOS-sized ones.
- Switches. At rest the knob is a white capsule. While you press or drag it, it grows into a clear glass lens that bends the track colour, with a faint rainbow at its edge. Taps no longer wobble. The lens stays up while you hold it.
- Tab bars (panel settings, Mihomo settings, inbound status filter, outbound editor).
- At rest the selected tab sits under a dim capsule, and only the part it covers turns blue.
- Press and drag the selected tab to grow it into a glass lens. The lens refracts the labels and the track edge, and the highlight follows the capsule while it slides.
- The real text stays in the page, so translation, keyboard navigation and screen readers keep working.
- Sidebar. The selected item is a quiet gray rounded rectangle with a blue icon and label, matching macOS.
- Buttons.
- Primary actions are tinted blue glass and destructive actions red. Secondary buttons use a gray fill, and floating buttons are white glass.
- Pressing gives a springy scale-up with a glow under the finger.
- Destructive icon buttons keep the glass and only turn the icon red.
- Dialogs and the Add Inbound sheet. A frosted glass card over a flat dimmed background, with larger corners and the Apple sheet entrance animation.
- Menus. Frosted macOS menus: the hovered item gets a blue highlight, and destructive items use red text.
- Toolbar. Content that scrolls under the toolbar is now blurred instead of colliding with the title, and a soft scroll-edge fade was added.
- Dark mode. The sidebar and login card no longer glow bright blue.
- Subscription page. The client buttons, the settings button and the client menus use the new style.
Other fixes found while testing:
- The security options added by protocols (ShadowTLS, RestTLS, TLSMirror, JLS, Trojan SS) were grayed out and could not show as selected.
- The auto-refresh menu showed the page through it, and its switch was drawn at the wrong size.
- The sidebar selection could occasionally jump away from the selected item.
- The tab bar capsule could teleport when switching to a wider tab.
Notes
- No configuration changes are needed. Upgrade as usual.
- If your panel uses a certificate file that contains only the leaf, restart the panel after upgrading so it can complete the chain.
- Third-party attribution is listed in
NOTICE. Implementation notes are inLIQUID-GLASS.md.
v0.2.2 修复了使用 IP 证书时订阅无法拉取的问题,修复了永不过期的订阅在部分客户端里过期时间显示错误的问题,并且参照原生 iOS 26 / macOS 26 的行为,重做了液态玻璃界面。
问题修复
- 使用 IP 证书时订阅拉取失败。 面板只下发叶子证书时,Mihomo Party、FlClash 拉取订阅会报
unable to verify the first certificate。使用 Let's Encrypt IP 证书时最常出现这种情况。浏览器和 iOS 客户端会自己补下载中间证书,Node.js 和 Go/Dart 写的客户端不会。- 面板和订阅服务现在会自动补全只有叶子的证书链。中间证书依次从以下来源查找:acme.sh 里对应的
fullchain.cer、证书同目录下的ca/chain文件、证书里 AIA 字段指向的签发者地址。 - 仍然补不全时,面板会显示一条警告提示,所有语言都已翻译。
install.sh和m-ui.sh安装证书后会检查证书文件里有没有中间证书,没有就改用 acme.sh 的fullchain.cer。m-ui settings现在会显示cert-file和key-file,方便确认面板实际用的是哪个证书文件。
- 面板和订阅服务现在会自动补全只有叶子的证书链。中间证书依次从以下来源查找:acme.sh 里对应的
- Clash Mi 显示"1970-01-01 过期"。 永不过期的订阅原来在
Subscription-Userinfo里写的是expire=0,Clash Mi 会把它当成时间戳来解析。现在永不过期时不再输出expire这一项,其他客户端不受影响。
液态玻璃界面
控件改为移植 liquid-glass-webgl(Apache-2.0,AndroidLiquidGlass 的网页移植版)的实现,弹簧、透镜折射、色散和高光都照参考项目来做,取代了之前那种"果冻"效果。宽屏用 macOS 尺寸,窄屏用 iOS 尺寸。
- 开关:静止时旋钮是白色胶囊。按住或拖动时会放大成透明的玻璃透镜,折射下面轨道的颜色,边缘带淡淡的彩色光晕。单击时不再果冻式晃动,按住期间透镜保持不收回。
- 标签栏(面板设置、Mihomo 设置、入站状态筛选、出站编辑器):
- 静止时,选中项是一块淡色胶囊,只有被它盖住的内容显示为蓝色;
- 按住选中项拖动时,胶囊放大成玻璃透镜,会折射标签文字和轨道边缘,高亮也跟着胶囊一起移动;
- 标签仍然是页面上的真实文字,多语言切换、键盘操作、读屏都不受影响。
- 侧边栏:选中项改成 macOS 风格,一块淡灰色圆角矩形,图标和文字为蓝色。
- 按钮:
- 主要操作是蓝色玻璃,危险操作是红色;次要按钮是灰色底,浮在背景上的按钮是白色玻璃;
- 按下时会有弹性放大,手指位置有光晕;
- 删除类的图标按钮保持玻璃样式,只有图标变红。
- 对话框和"添加入站"面板:纯色压暗的背景,上面一张磨砂玻璃卡片,圆角更大,入场动画用的是 Apple 的 sheet 曲线。
- 菜单:macOS 风格的磨砂菜单,悬停项是蓝色高亮,删除类选项为红色文字。
- 工具栏:内容滚到工具栏下面时会被模糊,不再和标题叠在一起;另外加了一层柔和的滚动边缘渐隐。
- 深色模式:侧边栏和登录卡片不再发出亮蓝色的光。
- 订阅页:客户端按钮、设置按钮和客户端菜单都换成了新样式。
测试过程中顺带修复的问题:
- 协议额外加进来的安全选项(ShadowTLS、RestTLS、TLSMirror、JLS、Trojan SS)显示成灰色,选中后也不会高亮。
- 自动刷新小菜单会透出下面的页面,里面的开关尺寸也画错了。
- 侧边栏的选中底块偶尔会跳到别的位置。
- 切换到较宽的标签时,胶囊会瞬移过去。
说明
- 不需要改任何配置,照常升级即可。
- 如果你的面板用的证书文件里只有叶子证书,升级后重启一次面板,让它自动补全证书链。
- 第三方代码的署名见
NOTICE,实现细节见LIQUID-GLASS.md。
Full Changelog: v0.2.1...v0.2.2