🪟 分屏与浮窗
- 💥 移除 Android-分屏多窗口-流体云开发者注册绕过的注册链路、Hook 实现与多语言文案 @suqi8 (3edaa249)
- 💥 移除 Android-分屏多窗口-流体云页 UI 中残留的开发者注册绕过开关与 hook 调用 @suqi8 (194fc534)
- 💥 移除 Android-分屏多窗口-
OShinHookRegistry中 pantanalums / assistantscreen 模块入口与 statusbarFluidCloud.kt内的hookDeveloperRegistrationBypass实现 @suqi8 (0eba6ac9) - ✨ 添加 Android-分屏多窗口-应用过滤-排除系统应用,开启后不会对系统应用触发优先小窗逻辑 @suqi8 (b8552178)
- 🩹 修复 Android-分屏多窗口-应用过滤改为读取真正"被启动的目标包"(从
adjustOptionsForSmartMultiWindow缓存的currentStartPackage取,回退到 sourceTask 包) @suqi8 (e10e2894) - 🩹 修复 Android-分屏多窗口-黑白名单仅在"全局优先小窗"模式下生效,避免误干预通知 / 桌面跳转 @suqi8 (e10e2894)
- 🩹 修复 Android-分屏多窗口-排除系统应用对所有 force_* 模式都生效,UI 不再门控该开关 @suqi8 (e10e2894)
- 🩹 修复 Android-分屏多窗口-
adjustOptionsForSmartMultiWindow改为被动模式:仅在 OPPO 已决定走 zoom mode 时补 flags,避免主动构造 zoom options 触发"不生效 + 全屏动画"两个连锁问题 @suqi8 (e10e2894) - 🩹 修复 Android-分屏多窗口-通知触发浮窗时改用 flags=5,桌面触发浮窗补
key_flexible_smart_across_task_jumpextra @suqi8 (e10e2894) - 🩹 修复 Android-分屏多窗口-桌面来源识别新增对
com.android.launcher/com.android.launcher3/com.oplus.launcher包名的兜底 @suqi8 (e10e2894)
🖥️ 系统桌面
- ✨ 添加 桌面-文件夹-移除文件夹高度限制,允许文件夹按真实需要的高度展开(自定义行数后图标尺寸不再被屏幕高度压扁) @suqi8 (7be4ead5)
- 🩹 修复 桌面-最近任务-自定义任务圆角无效,改为在
OplusTaskThumbnailViewImpl.calculateCornerRadius的 after 中直接写入normalTaskViewCornerRadius/splitTaskViewCornerRadius字段并触发resetCornerRadiusArray,圆角立刻应用到分屏与单任务两侧 @suqi8 (d6a34b92)
🎛️ 控制中心
- ⚡️ 优化 控制中心-液态玻璃-传感器回调改读
@Volatile设置快照,加速度路径不再每帧回 prefs 取值 @suqi8 (4bd76301) - ⚡️ 优化 控制中心-液态玻璃-折射 / 高光 RuntimeShader 改为单例共享,按 view 实例化全部撤销 @suqi8 (4bd76301)
- ⚡️ 优化 控制中心-液态玻璃-Vibrancy
ColorMatrixColorFilter按饱和度缓存,相同饱和度下复用 @suqi8 (4bd76301) - ⚡️ 优化 控制中心-液态玻璃-前景 Drawable 复用
RectF/Path/BlurMaskFilter,绘制路径减少分配 @suqi8 (4bd76301) - ⚡️ 优化 控制中心-液态玻璃-通知卡片资格按 view 缓存,避免每帧上溯祖先链 @suqi8 (4bd76301)
- ⚡️ 优化 控制中心-液态玻璃-传感器回调单帧合并 invalidation @suqi8 (4bd76301)
- ✨ 添加 控制中心-液态玻璃-固定高光角度,关闭重力传感器后高光按设定角度显示,更省电 @suqi8 (4bd76301)
- ✨ 添加 控制中心-液态玻璃-固定高光角度值(0°-360°) @suqi8 (4bd76301)
- 🩹 修复 控制中心-液态玻璃-RecyclerView 复用导致的孤儿高光,host view detach 时主动清理 overlay foreground @suqi8 (989ee11e)
- 🩹 修复 控制中心-液态玻璃-补 hook
OplusQsBaseToggleSliderLayout/OplusToggleSliderView/SquareDeviceCardView/SquareEntranceCardView,亮度音量条与设备中心卡片现在也能拿到玻璃效果 @suqi8 (989ee11e) - 🩹 修复 控制中心-液态玻璃-激活态背景保留部分可见度,让 RuntimeShader 有内容可折射,不再变透明 @suqi8 (989ee11e)
- ✨ 添加 控制中心-液态玻璃-关闭态背景透明度(默认 0%) @suqi8 (989ee11e)
- ✨ 添加 控制中心-液态玻璃-开启态背景透明度(默认 80%) @suqi8 (989ee11e)
- 🩹 修复 控制中心-液态玻璃-
QsHighlightTileViewBackgroundProxyImpl.updateBackground路径改造:当原背景是 OPPOAutoBlurDrawable而新进 drawable 不是时,激活色块走view.foreground,关闭态仍走setBackground并清空 foreground,让小砖块在激活时也保留 AutoBlur @suqi8 (89959cf8) - 💥 移除 控制中心-液态玻璃-918edbe1 引入的 dark / active 层透明度滑杆(未对症,UI 噪音) @suqi8 (89959cf8)
- 💥 移除 控制中心-液态玻璃-亮度音量条 / 设备中心卡片的 standalone hook,避免把内部 view 包进 lens shader 造成内部变形 @suqi8 (3158ebfb)
- ✨ 添加 控制中心-液态玻璃-恢复并细化关闭态背景透明度(默认 100%) / 开启态背景透明度(默认 80%)滑杆,方便手调 AutoBlur 与激活态前景 @suqi8 (3158ebfb)
- 🩹 修复 控制中心-液态玻璃-
NotificationBackgroundViewExtImp.initafter-hook 中反射getBgView改为沿父类层级查找,修复 KavaRef 在子类直接命中失败的 NoSuchMethodException @suqi8 (a1321299)
🔊 状态栏
- ⚡️ 优化 状态栏-移动网络图标-添加电源管理检查跳过非交互态 @suqi8 (129ff9c0)
- ⚡️ 优化 状态栏-移动网络图标-绑定机制重构以优化网络图标更新 @suqi8 (6e4eba07)
- ♻️ 重构 状态栏-移动网络图标-收敛
IconViewBinder.bind参数类型 @suqi8 (2f33b5ef) - ⚡️ 优化 状态栏-流体云歌词-
onMeasure改为OnLayoutChangeListener,避免每次 measure 都重建监听 @suqi8 (b0e96416)
🔋 状态栏电量条
- ⚡️ 优化 状态栏-电量条-用
setShadowLayer替代BlurMaskFilter,移除强制软件层,画笔每帧不再触发 native blur 重建 @suqi8 (77a08b6d) - ✨ 添加 状态栏-电量条-居中显示,从屏幕中心向两侧延伸 @suqi8 (77a08b6d)
- ✨ 添加 状态栏-电量条-限制显示位置,仅在锁屏或通知中心展开时显示 @suqi8 (77a08b6d)
🎵 锁屏音乐频谱
- ⚡️ 优化 锁屏-音乐频谱可视化-重写
hasOverlappingRendering,空闲时跳过离屏缓冲区 @suqi8 (77a08b6d) - ✨ 添加 锁屏-音乐频谱可视化-采样速率滑杆(10%-100%) @suqi8 (77a08b6d)
- ✨ 添加 锁屏-音乐频谱可视化-渲染方式(自动) @suqi8 (77a08b6d)
- ✨ 添加 锁屏-音乐频谱可视化-渲染方式(分立柱状) @suqi8 (77a08b6d)
- ✨ 添加 锁屏-音乐频谱可视化-渲染方式(连续路径) @suqi8 (77a08b6d)
- ✨ 添加 锁屏-音乐频谱可视化-仅在媒体控制器存在时显示,避免无谓耗电 @suqi8 (77a08b6d)
- 🛠️ 更改 锁屏-音乐频谱可视化-频谱样式 / 颜色模式选项数组迁移到
@string引用以便国际化 @suqi8 (77a08b6d)
📱 系统界面
- ⚡️ 优化 SystemUI-导航栏背景模糊-按 View 缓存
ViewRootManager,跨 onLayout 复用同一个BackgroundBlurDrawable,参数变化时仅 setter 修改 @suqi8 (5f562925) - ⚡️ 优化 SystemUI-侧边返回手势-
onDraw内的文件 stat 限频到 1 秒,绘制热路径不再每帧触发 IO @suqi8 (5559d3bd) - 🩹 修复 SystemUI-导航栏 / 系统提示背景模糊-抽出
BlurDrawableCache按 View 复用 ViewRootManager,view detach 时主动清理 holder,修复每次 onLayout 新建 ViewRootManager + BackgroundBlurDrawable 导致的 SurfaceFlinger native blur 层泄漏 @suqi8 (0bd9d5c4) - 💥 移除 SystemUI-清理未注册的
ToastBlur死代码(已由ToastCustomizationHook替代,避免误用旧的"每次 onLayout 新建 ViewRootManager"模式再次踩坑) @suqi8 (87c06926)
📷 相机
- 🩹 修复 相机-
com.oplus.camera.configure.CameraConfig.(String,float)→float重载在 ColorOS 16 部分机型已被裁掉,统一改成toClassOrNull+optional(silent = true)+firstMethodOrNull,重载缺失不再 NoSuchMethodException 中断后续 hook(issue #108) @suqi8 (617c7615) - ⚡️ 优化 相机-prefs 改为 hook 安装时一次性快照成内存 Map,热路径只查 O(1),避开
XSharedPreferences.reload()反复触发文件 IO 与全 KV 解析(issue #108 卡顿主因) @suqi8 (617c7615)
🌃 暗色模式
- 🩹 修复 Android-暗色模式适配列表-system / settings 两侧 hook 增加
@Volatile安装标记与runCatching,类查找改toClassOrNull,避免定时切换暗色模式时 hook 重复装载 / 异常上抛触发 SystemUI 软重启 @suqi8 (f0231b32)
🔊 媒体音量
- 🩹 修复 Android-媒体音量步数-改为 in-place 修改原静态数组的
[STREAM_MUSIC]元素,让 static 字段与 OPlusAudioServiceExtImpl.mMaxStreamVolume始终共享同一份数据,重启后rescaleIndex两端一致,不再被拉到最大 @suqi8 (6e7489d5)
🧰 侧边栏
- 🩹 修复 智能侧边栏-解除应用添加限制-去掉自定义
performAdd,仅replaceToTrue放行UserPanelView.canAdd/PanelMainView.canAdd,新版本setUserData编辑态分支不再吞掉新数据 @suqi8 (f7050657) - 🩹 修复 智能侧边栏-
performAdd.before往mPanelData末尾追加mEditOccupancyData占位,保证indexOf(EDIT_OCCUPANCY) ≥ 0,新加 user 写入末尾占位,已有 user 不再被顶替 @suqi8 (f7050657) - 💥 移除 智能侧边栏-
sidebar_limit_bypassDexKit 段(readUserBeans/not finished字符串特征在新版本不存在,且新版本读取层已不再做 20 条截断) @suqi8 (f7050657)
📲 应用详情
- 🩹 修复 应用详情-自动点击继续安装按钮-不再依赖混淆类名,改为 hook
View.setOnClickListener,按 resource entry nameview_bottom_guide_continue_install_btn命中目标按钮,listener 装好后立刻performClick(attach 后再点击,附带去重 tag) @suqi8 (05c0c961)
📹 屏幕录制
- ✨ 添加 屏幕录制-视频-自定义视频码率(1-200 Mbps) @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-视频-自定义帧率(15-240 fps) @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-视频-自定义关键帧间隔(0-30s,0 = 每帧都是关键帧) @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-视频-强制视频编码-H.264 / AVC @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-视频-强制视频编码-H.265 / HEVC @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-视频-强制视频编码-AV1 @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-视频-高画质 QP 范围,放宽 OPPO 的 QP 钳制(0-51) @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-音频-自定义音频码率(32-1024 kbps) @suqi8 (7bd138d3)
- ✨ 添加 屏幕录制-Hook-
MediaFormat.setInteger按 mime 路由音/视频码率 @suqi8 (7bd138d3) - ✨ 添加 屏幕录制-Hook-放行
video-qp-i-min/max/video-qp-p-min/max/video-qp-b-min/max钳制 @suqi8 (7bd138d3) - ✨ 添加 屏幕录制-Hook-
MediaFormat.createVideoFormat按强制编码档位改写 mime @suqi8 (7bd138d3)
☁️ 流体云胶囊
- ⚡️ 优化 Android-流体云助手权限-精简权限检查 hook 逻辑,去掉冗余分支 @suqi8 (37ec1676)
- ⚡️ 优化 Android-流体云助手权限-移除
Log.i调试日志 @suqi8 (134b7ad9) - 💥 移除 Android-流体云助手权限-
OplusServices页 UI 开关、Hook 实现与android.kt注册(开关已不再维护,由其他通道接管) @suqi8 (843a2e7f) - 💥 移除 流体云-胶囊歌词显示-下线胶囊歌词功能,删除
FluidCloudLyricsHook实现及对应 UI 入口、调用链与 7 套语言包的fc_show_lyrics_in_capsule*文案 @suqi8 (bdc492ea)
🏠 应用与首页
- ⚡️ 优化 应用-应用信息-注册
ComponentCallbacks监听uiMode变化,主题切换后立即重置"未变更次数" @suqi8 (279b09c6) - ⚡️ 优化 应用-应用信息-连续 3 次未变更后跳过系统侧加载,命中磁盘缓存即返回 @suqi8 (279b09c6)
- ⚡️ 优化 应用-应用信息-图标解码先
inJustDecodeBounds取尺寸,再按目标 192px 计算inSampleSize下采样,降低图标解码内存与耗时 @suqi8 (279b09c6) - ⚡️ 优化 应用-欢迎页-酷安关注校验-请求构建抽出
buildCommonHeaders/buildAuthorizedRequest,避免 GET / HEAD 两路重复代码 @suqi8 (a44e9060) - 🛠️ 更改 应用-Proguard-增加
CoolapkFollowVerifier反射所需的保留规则 @suqi8 (a44e9060) - ✨ 添加 应用-界面-页面返回动画类型可选-AOSP 跨 Activity @suqi8 (efb88c52)
- ✨ 添加 应用-界面-页面返回动画类型可选-Miuix 默认 @suqi8 (efb88c52)
- ✨ 添加 应用-界面-页面返回动画类型可选-缩放 @suqi8 (efb88c52)
- ✨ 添加 应用-界面-页面返回动画类型可选-关闭返回动画 @suqi8 (efb88c52)
- ✨ 添加 应用-界面-页面返回退出方向-跟随手势(默认) @suqi8 (efb88c52)
- ✨ 添加 应用-界面-页面返回退出方向-始终向右 @suqi8 (efb88c52)
- ✨ 添加 应用-界面-页面返回退出方向-始终向左 @suqi8 (efb88c52)
- 🛠️ 更改 应用-界面-
disable_page_shared_animation默认值改为 true,元素共享默认关闭 @suqi8 (efb88c52) - ✨ 添加 应用-欢迎页-引入页面返回动画类型与退出方向选项 @suqi8 (efb88c52)
- ✨ 添加 应用-关于页-引入页面返回动画类型与退出方向选项 @suqi8 (efb88c52)
- ⚡️ 优化 应用-界面-重写
androidx.navigationevent.compose下 5 个文件,确保onBackCompleted之前仍能读到InProgress状态完成预测返回动画收尾 @suqi8 (efb88c52) - ⚡️ 优化 应用-构建-
androidx.navigationevent公版被 exclude,避免类冲突 @suqi8 (efb88c52) - ⚡️ 优化 应用-界面-
AppNavHost拆分为SharedElementNavDisplay/PredictiveBackNavDisplay双路径,按LocalPageSharedAnimationDisabled切换 @suqi8 (efb88c52) - ⚡️ 优化 应用-界面-Miuix Handler decorator 自带圆角夹切 + 后景 dim + 缩放,弥补 navigation3-ui 1.1.1 缺少
NavDisplayTransitionEffects的视觉断层 @suqi8 (efb88c52)
🔧 工程与发布
- 🛠️ 更改 CI-Release-在 GitHub Release 与 Telegram 推送中包含 commit body @suqi8 (176a3411)
- 📝 更新 多语言-按
reportMissingTranslationsXml输出补齐繁中翻译缺口 @suqi8 (b1e606c4) - 📝 更新 多语言-按
reportMissingTranslationsXml输出补齐日文翻译缺口 @suqi8 (b1e606c4) - 📝 更新 多语言-按
reportMissingTranslationsXml输出补齐韩文翻译缺口 @suqi8 (b1e606c4) - 📝 更新 多语言-按
reportMissingTranslationsXml输出补齐俄文翻译缺口 @suqi8 (b1e606c4) - 📝 更新 多语言-按
reportMissingTranslationsXml输出补齐土耳其文翻译缺口 @suqi8 (b1e606c4) - 📝 更新 多语言-按
reportMissingTranslationsXml输出补齐二次元(梗图)翻译缺口 @suqi8 (b1e606c4) - 🛠️ 更改 构建-更新
manualVersionCode至 1452、versionName 至 16.11 @suqi8 (928ea204)
🪟 Split Screen & Floating Window
- 💥 Remove Android-Split Screen Multi-Window-Fluid Cloud developer registration bypass registration chain, Hook implementation, and multi-language strings @suqi8 (3edaa249)
- 💥 Remove Android-Split Screen Multi-Window-Fluid Cloud page UI residual developer registration bypass switch and hook calls @suqi8 (194fc534)
- 💥 Remove Android-Split Screen Multi-Window-
OShinHookRegistrypantanalums/assistantscreen module entry andhookDeveloperRegistrationBypassimplementation in statusbarFluidCloud.kt@suqi8 (0eba6ac9) - ✨ Add Android-Split Screen Multi-Window-App Filtering-Exclude system apps. When enabled, priority small window logic will not trigger for system apps @suqi8 (b8552178)
- 🩹 Fix Android-Split Screen Multi-Window-App Filtering changed to read the actual "launched target package" (taken from
currentStartPackagecached byadjustOptionsForSmartMultiWindow, falling back to the sourceTask package) @suqi8 (e10e2894) - 🩹 Fix Android-Split Screen Multi-Window-Black/white lists only take effect in "Global Priority Small Window" mode, preventing accidental intervention with notifications or launcher jumps @suqi8 (e10e2894)
- 🩹 Fix Android-Split Screen Multi-Window-Exclude system apps now applies to all force_* modes, UI no longer gates this switch @suqi8 (e10e2894)
- 🩹 Fix Android-Split Screen Multi-Window-
adjustOptionsForSmartMultiWindowchanged to passive mode: only appends flags when OPPO has decided to use zoom mode, avoiding the chain issue of "no effect + full screen animation" caused by actively constructing zoom options @suqi8 (e10e2894) - 🩹 Fix Android-Split Screen Multi-Window-Notifications triggering floating window now use flags=5, launcher triggering floating window adds
key_flexible_smart_across_task_jumpextra @suqi8 (e10e2894) - 🩹 Fix Android-Split Screen Multi-Window-Launcher source identification adds fallback for
com.android.launcher/com.android.launcher3/com.oplus.launcherpackages @suqi8 (e10e2894)
🖥️ System Launcher
- ✨ Add Launcher-Folders-Remove folder height limit, allowing folders to expand to their actually needed height (icon sizes are no longer squashed by screen height after customizing row counts) @suqi8 (7be4ead5)
- 🩹 Fix Launcher-Recent Tasks-Custom task corner radius not working. Changed to directly write
normalTaskViewCornerRadius/splitTaskViewCornerRadiusfields in theafterhook ofOplusTaskThumbnailViewImpl.calculateCornerRadiusand triggerresetCornerRadiusArray, applying the corner radius immediately to both split screen and single task sides @suqi8 (d6a34b92)
🎛️ Control Center
- ⚡️ Optimize Control Center-Liquid Glass-Sensor callbacks now read
@Volatilesetting snapshots; acceleration path no longer fetches from prefs every frame @suqi8 (4bd76301) - ⚡️ Optimize Control Center-Liquid Glass-Refraction/highlight RuntimeShader changed to a shared singleton, revoking all per-view instantiations @suqi8 (4bd76301)
- ⚡️ Optimize Control Center-Liquid Glass-Vibrancy
ColorMatrixColorFilteris cached by saturation and reused for identical saturation values @suqi8 (4bd76301) - ⚡️ Optimize Control Center-Liquid Glass-Foreground Drawable reuses
RectF/Path/BlurMaskFilter, reducing allocations during drawing paths @suqi8 (4bd76301) - ⚡️ Optimize Control Center-Liquid Glass-Notification card eligibility is cached per view, avoiding tracing the ancestor chain every frame @suqi8 (4bd76301)
- ⚡️ Optimize Control Center-Liquid Glass-Sensor callbacks merge invalidations in a single frame @suqi8 (4bd76301)
- ✨ Add Control Center-Liquid Glass-Fixed highlight angle. When the gravity sensor is off, the highlight is displayed at the set angle to save power @suqi8 (4bd76301)
- ✨ Add Control Center-Liquid Glass-Fixed highlight angle value (0°-360°) @suqi8 (4bd76301)
- 🩹 Fix Control Center-Liquid Glass-Orphaned highlights caused by RecyclerView recycling. Actively clean up overlay foreground when host view detaches @suqi8 (989ee11e)
- 🩹 Fix Control Center-Liquid Glass-Added hooks for
OplusQsBaseToggleSliderLayout/OplusToggleSliderView/SquareDeviceCardView/SquareEntranceCardView. Brightness/volume sliders and device center cards can now also get the glass effect @suqi8 (989ee11e) - 🩹 Fix Control Center-Liquid Glass-Active state background retains partial visibility so RuntimeShader has content to refract, preventing it from becoming completely transparent @suqi8 (989ee11e)
- ✨ Add Control Center-Liquid Glass-Closed state background opacity (Default 0%) @suqi8 (989ee11e)
- ✨ Add Control Center-Liquid Glass-Active state background opacity (Default 80%) @suqi8 (989ee11e)
- 🩹 Fix Control Center-Liquid Glass-
QsHighlightTileViewBackgroundProxyImpl.updateBackgroundpath revamped: when the original background is OPPO'sAutoBlurDrawableand the incoming drawable is not, the active color block usesview.foreground, while the closed state still usessetBackgroundand clears the foreground, allowing small tiles to retain AutoBlur when active @suqi8 (89959cf8) - 💥 Remove Control Center-Liquid Glass-Dark/active layer opacity sliders introduced in 918edbe1 (ineffective, UI noise) @suqi8 (89959cf8)
- 💥 Remove Control Center-Liquid Glass-Standalone hooks for brightness/volume sliders and device center cards, preventing internal views from being wrapped in the lens shader and causing internal distortion @suqi8 (3158ebfb)
- ✨ Add Control Center-Liquid Glass-Restored and refined closed state background opacity (Default 100%) / active state background opacity (Default 80%) sliders for easier manual tuning of AutoBlur and active state foreground @suqi8 (3158ebfb)
- 🩹 Fix Control Center-Liquid Glass-Reflection of
getBgViewin the after-hook ofNotificationBackgroundViewExtImp.initchanged to search up the parent class hierarchy, fixingNoSuchMethodExceptioncaused by KavaRef failing to directly hit the subclass @suqi8 (a1321299)
🔊 Status Bar
- ⚡️ Optimize Status Bar-Mobile Network Icon-Added power management check to skip non-interactive states @suqi8 (129ff9c0)
- ⚡️ Optimize Status Bar-Mobile Network Icon-Binding mechanism refactored to optimize network icon updates @suqi8 (6e4eba07)
- ♻️ Refactor Status Bar-Mobile Network Icon-Converged parameter types for
IconViewBinder.bind@suqi8 (2f33b5ef) - ⚡️ Optimize Status Bar-Fluid Cloud Lyrics-
onMeasurechanged toOnLayoutChangeListener, avoiding rebuilding listeners on every measure @suqi8 (b0e96416)
🔋 Status Bar Battery Bar
- ⚡️ Optimize Status Bar-Battery Bar-Replaced
BlurMaskFilterwithsetShadowLayer, removed forced software layer, the paint no longer triggers native blur rebuilds every frame @suqi8 (77a08b6d) - ✨ Add Status Bar-Battery Bar-Center display, extending from the center of the screen to both sides @suqi8 (77a08b6d)
- ✨ Add Status Bar-Battery Bar-Restrict display position, showing only on the lock screen or when the notification center is expanded @suqi8 (77a08b6d)
🎵 Lock Screen Music Spectrum
- ⚡️ Optimize Lock Screen-Music Spectrum Visualization-Overrode
hasOverlappingRendering, skipping off-screen buffers when idle @suqi8 (77a08b6d) - ✨ Add Lock Screen-Music Spectrum Visualization-Sampling rate slider (10%-100%) @suqi8 (77a08b6d)
- ✨ Add Lock Screen-Music Spectrum Visualization-Rendering mode (Auto) @suqi8 (77a08b6d)
- ✨ Add Lock Screen-Music Spectrum Visualization-Rendering mode (Discrete bars) @suqi8 (77a08b6d)
- ✨ Add Lock Screen-Music Spectrum Visualization-Rendering mode (Continuous path) @suqi8 (77a08b6d)
- ✨ Add Lock Screen-Music Spectrum Visualization-Only show when a media controller exists, avoiding unnecessary power consumption @suqi8 (77a08b6d)
- 🛠️ Change Lock Screen-Music Spectrum Visualization-Spectrum style/color mode option arrays migrated to
@stringreferences for internationalization @suqi8 (77a08b6d)
📱 System UI
- ⚡️ Optimize SystemUI-Navigation Bar Background Blur-Cached
ViewRootManagerper View, reusing the sameBackgroundBlurDrawableacrossonLayout, modifying only via setter when parameters change @suqi8 (5f562925) - ⚡️ Optimize SystemUI-Side Back Gesture-File stat in
onDrawrate-limited to 1 second, the drawing hot path no longer triggers IO every frame @suqi8 (5559d3bd) - 🩹 Fix SystemUI-Navigation Bar / System Prompt Background Blur-Extracted
BlurDrawableCacheto reuseViewRootManagerper View, actively clearing holder when view detaches, fixing SurfaceFlinger native blur layer memory leaks caused by creating new ViewRootManager + BackgroundBlurDrawable on everyonLayout@suqi8 (0bd9d5c4) - 💥 Remove SystemUI-Cleaned up unregistered
ToastBlurdead code (replaced byToastCustomizationHook, avoiding falling into the old "new ViewRootManager on every onLayout" trap again) @suqi8 (87c06926)
📷 Camera
- 🩹 Fix Camera-
com.oplus.camera.configure.CameraConfig.(String,float)→floatoverload has been stripped in some ColorOS 16 devices, unified to usetoClassOrNull+optional(silent = true)+firstMethodOrNull, missing overloads no longer interrupt subsequent hooks withNoSuchMethodException(issue #108) @suqi8 (617c7615) - ⚡️ Optimize Camera-Prefs changed to a one-time snapshot into an in-memory Map at hook installation, hot paths only perform O(1) lookups, avoiding repeated file IO and full KV parsing triggered by
XSharedPreferences.reload()(main cause of stuttering in issue #108) @suqi8 (617c7615)
🌃 Dark Mode
- 🩹 Fix Android-Dark Mode Adaptation List-Added
@Volatileinstallation flag andrunCatchingfor hooks on both system and settings sides, changed class lookup totoClassOrNull, avoiding repeated hook loading/exceptions triggering SystemUI soft reboots during scheduled dark mode switches @suqi8 (f0231b32)
🔊 Media Volume
- 🩹 Fix Android-Media Volume Steps-Changed to in-place modification of the
[STREAM_MUSIC]element in the original static array, ensuring the static field and OPlus'sAudioServiceExtImpl.mMaxStreamVolumealways share the same data.rescaleIndexis consistent on both ends after reboot, preventing volume from maxing out @suqi8 (6e7489d5)
🧰 Smart Sidebar
- 🩹 Fix Smart Sidebar-Remove App Addition Limit-Removed custom
performAdd, using onlyreplaceToTrueto passUserPanelView.canAdd/PanelMainView.canAdd. The new version'ssetUserDataedit state branch no longer swallows new data @suqi8 (f7050657) - 🩹 Fix Smart Sidebar-
performAdd.beforeappends anmEditOccupancyDataplaceholder at the end ofmPanelData, ensuringindexOf(EDIT_OCCUPANCY) ≥ 0. Newly added users are written to the trailing placeholder, preventing existing users from being overwritten @suqi8 (f7050657) - 💥 Remove Smart Sidebar-
sidebar_limit_bypassDexKit segment (readUserBeans/not finishedstring signatures no longer exist in new versions, and the reading layer no longer enforces a 20-item truncation) @suqi8 (f7050657)
📲 App Details
- 🩹 Fix App Details-Auto Click Continue Install Button-No longer relies on obfuscated class names, changed to hook
View.setOnClickListener, targeting the button by resource entry nameview_bottom_guide_continue_install_btn. Once the listener is attached, it immediately triggersperformClick(clicks after attach, with a deduplication tag) @suqi8 (05c0c961)
📹 Screen Recording
- ✨ Add Screen Recording-Video-Custom video bitrate (1-200 Mbps) @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Video-Custom frame rate (15-240 fps) @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Video-Custom keyframe interval (0-30s, 0 = all frames are keyframes) @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Video-Force video encoding-H.264 / AVC @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Video-Force video encoding-H.265 / HEVC @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Video-Force video encoding-AV1 @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Video-High quality QP range, relaxing OPPO's QP clamping (0-51) @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Audio-Custom audio bitrate (32-1024 kbps) @suqi8 (7bd138d3)
- ✨ Add Screen Recording-Hook-
MediaFormat.setIntegerroutes audio/video bitrate by mime @suqi8 (7bd138d3) - ✨ Add Screen Recording-Hook-Bypass
video-qp-i-min/max/video-qp-p-min/max/video-qp-b-min/maxclamping @suqi8 (7bd138d3) - ✨ Add Screen Recording-Hook-
MediaFormat.createVideoFormatrewrites mime based on the forced encoding tier @suqi8 (7bd138d3)
☁️ Fluid Cloud Capsule
- ⚡️ Optimize Android-Fluid Cloud Assistant Permissions-Simplified permission check hook logic, removing redundant branches @suqi8 (37ec1676)
- ⚡️ Optimize Android-Fluid Cloud Assistant Permissions-Removed
Log.idebugging logs @suqi8 (134b7ad9) - 💥 Remove Android-Fluid Cloud Assistant Permissions-
OplusServicespage UI switch, Hook implementation, andandroid.ktregistration (switch is no longer maintained, taken over by other channels) @suqi8 (843a2e7f) - 💥 Remove Fluid Cloud-Capsule Lyrics Display-Deprecating capsule lyrics feature, removed
FluidCloudLyricsHookimplementation, corresponding UI entries, call chains, and thefc_show_lyrics_in_capsule*strings across 7 language packs @suqi8 (bdc492ea)
🏠 App & Home
- ⚡️ Optimize App-App Info-Registered
ComponentCallbacksto listen foruiModechanges, immediately resetting "unchanged count" after a theme switch @suqi8 (279b09c6) - ⚡️ Optimize App-App Info-Skips system-side loading after 3 consecutive unchanged queries, returning immediately upon hitting disk cache @suqi8 (279b09c6)
- ⚡️ Optimize App-App Info-Icon decoding first uses
inJustDecodeBoundsto get dimensions, then calculatesinSampleSizedownsampling based on the target 192px, significantly reducing icon decoding memory and time @suqi8 (279b09c6) - ⚡️ Optimize App-Welcome Screen-Coolapk Follow Verification-Extracted request building to
buildCommonHeaders/buildAuthorizedRequest, avoiding duplicate code for GET / HEAD paths @suqi8 (a44e9060) - 🛠️ Change App-Proguard-Added retention rules required for
CoolapkFollowVerifierreflection @suqi8 (a44e9060) - ✨ Add App-UI-Page back animation type selectable-AOSP Cross-Activity @suqi8 (efb88c52)
- ✨ Add App-UI-Page back animation type selectable-Miuix Default @suqi8 (efb88c52)
- ✨ Add App-UI-Page back animation type selectable-Zoom @suqi8 (efb88c52)
- ✨ Add App-UI-Page back animation type selectable-Disable back animation @suqi8 (efb88c52)
- ✨ Add App-UI-Page back exit direction-Follow gesture (Default) @suqi8 (efb88c52)
- ✨ Add App-UI-Page back exit direction-Always right @suqi8 (efb88c52)
- ✨ Add App-UI-Page back exit direction-Always left @suqi8 (efb88c52)
- 🛠️ Change App-UI-
disable_page_shared_animationdefault value changed to true, shared elements are disabled by default @suqi8 (efb88c52) - ✨ Add App-Welcome Screen-Introduced page back animation type and exit direction options @suqi8 (efb88c52)
- ✨ Add App-About Screen-Introduced page back animation type and exit direction options @suqi8 (efb88c52)
- ⚡️ Optimize App-UI-Rewrote 5 files under
androidx.navigationevent.composeto ensure theInProgressstate can still be read beforeonBackCompletedto finish predictive back animations @suqi8 (efb88c52) - ⚡️ Optimize App-Build-Excluded public version of
androidx.navigationeventto avoid class conflicts @suqi8 (efb88c52) - ⚡️ Optimize App-UI-Split
AppNavHostintoSharedElementNavDisplay/PredictiveBackNavDisplaydual paths, toggled viaLocalPageSharedAnimationDisabled@suqi8 (efb88c52) - ⚡️ Optimize App-UI-Miuix Handler decorator now comes with rounded corner clipping + background dim + zoom, bridging the visual gap missing in
NavDisplayTransitionEffectsfrom navigation3-ui 1.1.1 @suqi8 (efb88c52)
🔧 Engineering & Release
- 🛠️ Change CI-Release-Include commit body in GitHub Release and Telegram pushes @suqi8 (176a3411)
- 📝 Update Multi-language-Filled Traditional Chinese translation gaps based on
reportMissingTranslationsXmloutput @suqi8 (b1e606c4) - 📝 Update Multi-language-Filled Japanese translation gaps based on
reportMissingTranslationsXmloutput @suqi8 (b1e606c4) - 📝 Update Multi-language-Filled Korean translation gaps based on
reportMissingTranslationsXmloutput @suqi8 (b1e606c4) - 📝 Update Multi-language-Filled Russian translation gaps based on
reportMissingTranslationsXmloutput @suqi8 (b1e606c4) - 📝 Update Multi-language-Filled Turkish translation gaps based on
reportMissingTranslationsXmloutput @suqi8 (b1e606c4) - 📝 Update Multi-language-Filled ACG (Meme) translation gaps based on
reportMissingTranslationsXmloutput @suqi8 (b1e606c4) - 🛠️ Change Build-Updated
manualVersionCodeto 1452, versionName to 16.11 @suqi8 (928ea204)