github suqi8/OShin v16.11.1585(1452)

3 hours ago

🪟 分屏与浮窗

  • 💥 移除 Android-分屏多窗口-流体云开发者注册绕过的注册链路、Hook 实现与多语言文案 @suqi8 (3edaa249)
  • 💥 移除 Android-分屏多窗口-流体云页 UI 中残留的开发者注册绕过开关与 hook 调用 @suqi8 (194fc534)
  • 💥 移除 Android-分屏多窗口-OShinHookRegistry 中 pantanalums / assistantscreen 模块入口与 statusbar FluidCloud.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_jump extra @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 路径改造:当原背景是 OPPO AutoBlurDrawable 而新进 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.init after-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 字段与 OPlus AudioServiceExtImpl.mMaxStreamVolume 始终共享同一份数据,重启后 rescaleIndex 两端一致,不再被拉到最大 @suqi8 (6e7489d5)

🧰 侧边栏

  • 🩹 修复 智能侧边栏-解除应用添加限制-去掉自定义 performAdd,仅 replaceToTrue 放行 UserPanelView.canAdd / PanelMainView.canAdd,新版本 setUserData 编辑态分支不再吞掉新数据 @suqi8 (f7050657)
  • 🩹 修复 智能侧边栏-performAdd.beforemPanelData 末尾追加 mEditOccupancyData 占位,保证 indexOf(EDIT_OCCUPANCY) ≥ 0,新加 user 写入末尾占位,已有 user 不再被顶替 @suqi8 (f7050657)
  • 💥 移除 智能侧边栏-sidebar_limit_bypass DexKit 段(readUserBeans / not finished 字符串特征在新版本不存在,且新版本读取层已不再做 20 条截断) @suqi8 (f7050657)

📲 应用详情

  • 🩹 修复 应用详情-自动点击继续安装按钮-不再依赖混淆类名,改为 hook View.setOnClickListener,按 resource entry name view_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-OShinHookRegistry pantanalums/assistantscreen module entry and hookDeveloperRegistrationBypass implementation in statusbar FluidCloud.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 currentStartPackage cached by adjustOptionsForSmartMultiWindow, 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-adjustOptionsForSmartMultiWindow changed 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_jump extra @suqi8 (e10e2894)
  • 🩹 Fix Android-Split Screen Multi-Window-Launcher source identification adds fallback for com.android.launcher / com.android.launcher3 / com.oplus.launcher packages @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 / splitTaskViewCornerRadius fields in the after hook of OplusTaskThumbnailViewImpl.calculateCornerRadius and trigger resetCornerRadiusArray, 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 @Volatile setting 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 ColorMatrixColorFilter is 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.updateBackground path revamped: when the original background is OPPO's AutoBlurDrawable and the incoming drawable is not, the active color block uses view.foreground, while the closed state still uses setBackground and 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 getBgView in the after-hook of NotificationBackgroundViewExtImp.init changed to search up the parent class hierarchy, fixing NoSuchMethodException caused 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-onMeasure changed to OnLayoutChangeListener, avoiding rebuilding listeners on every measure @suqi8 (b0e96416)

🔋 Status Bar Battery Bar

  • ⚡️ Optimize Status Bar-Battery Bar-Replaced BlurMaskFilter with setShadowLayer, 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 @string references for internationalization @suqi8 (77a08b6d)

📱 System UI

  • ⚡️ Optimize SystemUI-Navigation Bar Background Blur-Cached ViewRootManager per View, reusing the same BackgroundBlurDrawable across onLayout, modifying only via setter when parameters change @suqi8 (5f562925)
  • ⚡️ Optimize SystemUI-Side Back Gesture-File stat in onDraw rate-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 BlurDrawableCache to reuse ViewRootManager per View, actively clearing holder when view detaches, fixing SurfaceFlinger native blur layer memory leaks caused by creating new ViewRootManager + BackgroundBlurDrawable on every onLayout @suqi8 (0bd9d5c4)
  • 💥 Remove SystemUI-Cleaned up unregistered ToastBlur dead code (replaced by ToastCustomizationHook, avoiding falling into the old "new ViewRootManager on every onLayout" trap again) @suqi8 (87c06926)

📷 Camera

  • 🩹 Fix Camera-com.oplus.camera.configure.CameraConfig.(String,float)→float overload has been stripped in some ColorOS 16 devices, unified to use toClassOrNull + optional(silent = true) + firstMethodOrNull, missing overloads no longer interrupt subsequent hooks with NoSuchMethodException (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 @Volatile installation flag and runCatching for hooks on both system and settings sides, changed class lookup to toClassOrNull, 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's AudioServiceExtImpl.mMaxStreamVolume always share the same data. rescaleIndex is 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 only replaceToTrue to pass UserPanelView.canAdd / PanelMainView.canAdd. The new version's setUserData edit state branch no longer swallows new data @suqi8 (f7050657)
  • 🩹 Fix Smart Sidebar-performAdd.before appends an mEditOccupancyData placeholder at the end of mPanelData, ensuring indexOf(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_bypass DexKit segment (readUserBeans / not finished string 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 name view_bottom_guide_continue_install_btn. Once the listener is attached, it immediately triggers performClick (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.setInteger routes 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/max clamping @suqi8 (7bd138d3)
  • Add Screen Recording-Hook-MediaFormat.createVideoFormat rewrites 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.i debugging logs @suqi8 (134b7ad9)
  • 💥 Remove Android-Fluid Cloud Assistant Permissions-OplusServices page UI switch, Hook implementation, and android.kt registration (switch is no longer maintained, taken over by other channels) @suqi8 (843a2e7f)
  • 💥 Remove Fluid Cloud-Capsule Lyrics Display-Deprecating capsule lyrics feature, removed FluidCloudLyricsHook implementation, corresponding UI entries, call chains, and the fc_show_lyrics_in_capsule* strings across 7 language packs @suqi8 (bdc492ea)

🏠 App & Home

  • ⚡️ Optimize App-App Info-Registered ComponentCallbacks to listen for uiMode changes, 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 inJustDecodeBounds to get dimensions, then calculates inSampleSize downsampling 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 CoolapkFollowVerifier reflection @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_animation default 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.compose to ensure the InProgress state can still be read before onBackCompleted to finish predictive back animations @suqi8 (efb88c52)
  • ⚡️ Optimize App-Build-Excluded public version of androidx.navigationevent to avoid class conflicts @suqi8 (efb88c52)
  • ⚡️ Optimize App-UI-Split AppNavHost into SharedElementNavDisplay / PredictiveBackNavDisplay dual paths, toggled via LocalPageSharedAnimationDisabled @suqi8 (efb88c52)
  • ⚡️ Optimize App-UI-Miuix Handler decorator now comes with rounded corner clipping + background dim + zoom, bridging the visual gap missing in NavDisplayTransitionEffects from 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 reportMissingTranslationsXml output @suqi8 (b1e606c4)
  • 📝 Update Multi-language-Filled Japanese translation gaps based on reportMissingTranslationsXml output @suqi8 (b1e606c4)
  • 📝 Update Multi-language-Filled Korean translation gaps based on reportMissingTranslationsXml output @suqi8 (b1e606c4)
  • 📝 Update Multi-language-Filled Russian translation gaps based on reportMissingTranslationsXml output @suqi8 (b1e606c4)
  • 📝 Update Multi-language-Filled Turkish translation gaps based on reportMissingTranslationsXml output @suqi8 (b1e606c4)
  • 📝 Update Multi-language-Filled ACG (Meme) translation gaps based on reportMissingTranslationsXml output @suqi8 (b1e606c4)
  • 🛠️ Change Build-Updated manualVersionCode to 1452, versionName to 16.11 @suqi8 (928ea204)

Don't miss a new OShin release

NewReleases is sending notifications on new releases.