Skip to content

Feat/sync upstream 2.1.3.1 - #174

Merged
wm-develop merged 35 commits into
dev4harmony:ohosfrom
wm-develop:feat/sync-upstream-2.1.3.1
Sep 7, 2026
Merged

wm-develop merged 35 commits into
dev4harmony:ohosfrom
wm-develop:feat/sync-upstream-2.1.3.1

Conversation

@wm-develop

Copy link
Copy Markdown
Member

跟进上游 2.1.3.1(4d66b7b63)

一、逐提交处置

提交 标题 处置
828de30e9 opt: appFontWeight (bggRGjQaUbCoE#2787) 🟡 只跟 appFontWeight→appFontWeightV2 的键迁移与其余零散清理;「跟随系统字重」这一档保留鸿蒙实现,见第二节
5f9aa9ecf Declear ITSAppUsesNonExemptEncryption ✅ 全跟(ios/Runner/Info.plist,与鸿蒙无关,原样合入)
03dcaa746 configure audio normalization in audio page (bggRGjQaUbCoE#2598) 🟡 音频归一化抽成 AudioNormalizationMixin 全跟;「听视频」页的 player.open 保持鸿蒙的 Media(httpHeaders:),见第二节
f0e92f2ba Update build.yml ⛔ 上游 CI,鸿蒙有自己的 pr_check.yml/release.yml,build.yml 保持删除
4b91b4001 fix loudnormRegExp ✅ 全跟
6d3541dcd fix: prevent deleted accounts from being persisted (bggRGjQaUbCoE#2797) ✅ 全跟,含新增的 test/utils/accounts/deleted_account_test.dart(本地跑过,2 passed)
628031d4d fix: bind response cookies to request account (bggRGjQaUbCoE#2794) ✅ 全跟(被后面的 adc9a4b94 重写,最终态已落地)
adbf6f3f5 opt provider authorities ✅ 全跟(AndroidManifest.xml,原样合入)
f3f59775f fix bggRGjQaUbCoE#2816 ✅ 全跟,随之删掉 models_new/video/video_detail/video_detail_response.dart(全仓无引用)
95d299d30 fix account change ✅ 全跟
315068bbe bound danmaku download concurrency (bggRGjQaUbCoE#2800) ✅ 全跟(同样被 adc9a4b94 改过一处,取最终态)
c7458b1f3 apply orderType to follow tag api (bggRGjQaUbCoE#2772) ✅ 全跟
66d1f7d62 opt publish panel 🟡 主体全跟(基类新增 theme 字段、焦点监听替掉 Listener(onPointerUp:)、各页去掉 ThemeData theme 形参);直播发弹幕面板整份取上游,其余保留鸿蒙骨架,见第二节
adc9a4b94 opt: account (bggRGjQaUbCoE#2817) ✅ 全跟
42b6d5933 fix bggRGjQaUbCoE#2709 ✅ 全跟
ea10b4559 tweaks 🟡 whisper_detail/直播顶栏部分全跟;chat_list_view.dart 保持鸿蒙版,见第二节
99bf57b64 bound live chat messages 🟡 全跟;新文件 live_list_view.dart 的构造器按 3.41 SDK 改写,见第二节
5a6f3feae feat(comment): add latex to unicode converter (bggRGjQaUbCoE#2792) ✅ 全跟(1208 行 100% 落地,纯 Dart)
05cfb595d opt trim live chat message 🟡 全跟;rx_ext.dart 里的 rawValue 换成 value,见第二节
5c7cb99b6 feat(shutdown_timer_service): show remaining time (bggRGjQaUbCoE#2461) ✅ 全跟
294aa7161 fix(video): fix video quality availability (bggRGjQaUbCoE#2828) ✅ 全跟
77dcc826c opt init hasLater ✅ 全跟
25ec0faa7 add initialIndex support for live chat ✅ 全跟
b181b6fe1 Revert "fix: Linux window close handler" ✅ 原样合入(linux/ 目录,鸿蒙不构建,但仓库里跟踪着,跟上游同步省得每轮冲突)
8a282c85e upgrade deps 🟡 只取 analysis_options.yaml 的 lib/**/*.g.dart 排除;pubspec.lock/pubspec.yaml(依赖部分)/tool/jnigen.dart/bindings.g.dart 保持鸿蒙版
9cc3bb2c8 fix cupertino patch ⛔ 上游把补丁挪进了 lib/scripts/cupertino/,鸿蒙用的是自己那套扁平的 lib/scripts/*.patch,保持删除
837ef862f fix bggRGjQaUbCoE#2836 ✅ 全跟
4cc337b47 Implement live danmaku blocking (bggRGjQaUbCoE#2821) ✅ 全跟(弹幕屏蔽从服务端「全局屏蔽」改成客户端按关键词/UID 过滤;live_dm_block/view.dart 整份取上游,shield_rules.dart 随之删除)
3e6ac82e0 fix bggRGjQaUbCoE#2837 ✅ 全跟;鸿蒙原生顶栏红点那一行同步改成 countStr ?? '',见第二节
75c83af89 feat(linux): webview (bggRGjQaUbCoE#2843) ⛔ 不跟:整套依赖 desktop_webview_window(鸿蒙不变量明令禁止),且只在 Platform.isLinux 下生效。webview/view.dart、video/note/view.dart、login_utils.dart 保持鸿蒙版,新增的 lib/utils/linux_cookie_manager.dart 删除
edf0bf203 tweaks ✅ 全跟(PageUtils.handleWebview 去掉 off 形参,全仓无调用方传它)
3c07a28d0 upgrade deps ⛔ 不跟,pubspec.lock 与 HEAD 逐字节一致
edf8c55e2 Release 2.1.3 🟡 不跟上游版本号;鸿蒙侧本轮自己发 2.1.3.1-ohos(.vscode/build_env.dart + pubspec.yaml),见第二节末
4d66b7b63 fix find missing video qa ✅ 全跟

逐 hunk 落地核验(把每个提交新增的 lib/**.dart 行去空白后在最终工作区里找):除上表标 ⛔/🟡 的以外全部 100%;标 🟡 的逐条看过,未落地的行都是下列三类之一——刻意保留的鸿蒙版、被上游后续提交又改掉的中间态(如 628031d4d 的 bindRequestAccount、03dcaa746 的私有 _loudnormRegExp、4cc337b47 的 keywordList)、3.41 SDK 不支持的构造器写法。


二、取舍说明

828de30e9 opt: appFontWeight —— 保留鸿蒙的「跟随系统字重」

上游把 Pref.appFontWeight 从 int(-1 = 不覆盖字重)改成 FontWeight,存储键 appFontWeight → appFontWeightV2,并把字重滑块的 -1 档删掉(min: 0, divisions: 8)。

问题是鸿蒙这边 -1 不是「不覆盖」,而是一个真功能:34bec3431 添加自定义字体后,支持字体跟随系统字重 让 ThemeUtils.getThemeData 读 HarmonyChannel.systemFontWeightScale,按区间映射到 w100…w800; harmony_adapt/harmony_channel.dart 里也有 if (Pref.appFontWeight == -1) 的分支。直接跟进会静默丢掉这一档,且已设过它的用户会被迁移成 w400。

处置:跟键迁移,不跟去档。

文件 处置
utils/storage_key.dart 跟上游改成 appFontWeightV2
utils/storage_pref.dart static int get appFontWeight 保持 int,默认 -1;V1→V2 迁移原样搬运 -1(上游那版会把 -1 折成 .normal)
pages/setting/pages/font_setting.dart 以上游新版为基底,恢复 min: -1 / divisions: 9、跟随系统 标签、重置回 -1、预览区 -1 时用 .normal;保留上游新加的 secondaryTrackValue(标出 w400 的位置)
utils/theme_utils.dart 整段保留鸿蒙版(-1 走系统字重映射,fontFamily 恒为 FontUtils.fontFamily ?? HarmonyOS Sans,因此 textTheme/tabBarTheme 也一直要建)

同一提交里的其余改动(dialog.dart 提取 _statusItem、popup_menu.dart 简化泛型、switch_item.dart 去掉 appFontWeight 特判、rcmd/view.dart、font_utils.dart 的 assert 修正、marquee.dart 换 flutter/widgets.dart)全跟。 refresh_layout.dart 鸿蒙侧早已删除(全仓无引用),上游那处返回类型收窄不跟。

03dcaa746 音频归一化 —— 跟 mixin,播放器调用保持鸿蒙版

上游把 PlPlayerController 里的归一化逻辑抽成 AudioNormalizationMixin(models/common/audio_normalization.dart),顺带给「听视频」页也接上。抽取本身全跟,但 pages/audio/controller.dart 的两处调用鸿蒙的 media_kit fork 不支持:

上游 鸿蒙 原因
player.setMediaHeader(...)..open(Media(url, start:, extras:)) player.open(Media(url, start:, httpHeaders:, extras:), play: _autoplayOnOpen) fork(feat-ohos,762fdc63)没有 setMediaHeader;extras 挂到同一个 Media 上即可
PlayerConfiguration(options: {...}) PlayerConfiguration(ready: () async { setProperty(...) }) fork 的 PlayerConfiguration 没有 options 字段;'ao': Pref.audioOutput 是安卓的音频输出后端,鸿蒙不适用

另外 _start == null 才清 position、_autoplayOnOpen 这两处是鸿蒙「跨设备接续」(3e5ebb2ad)和「链路切换重算画质」(9599c0db8)的东西,保持不动。

顺手修的一个鸿蒙侧 bug:pl_player/controller.dart 里归一化那段之前被 f29f01beb / 06675503a「切换到直播或关闭听视频后残留旧音频」那一系列改动带到了 else(没有独立音频流)分支里,跟上游相反—— [aid1] 这个滤镜恰恰要有独立音轨才有意义。这次跟着 audioFilterExtras(volume, map: extras) 挪回了 if 分支,鸿蒙的「切回直播要清空 audio-files」注释与代码留在 else 里。(enableAudioNormalization 是 Platform.isAndroid && …,鸿蒙运行时恒为 false,所以这个 bug 在鸿蒙上没有可见表现,但本仓库的安卓构建会受影响)

66d1f7d62 opt publish panel —— 主体全跟,各页保留鸿蒙骨架

CommonPublishPageState 新增 late ThemeData theme(didChangeDependencies 里取)、focusNode 改成带 _onFocusChanged 监听(取代各页 Listener(onPointerUp:) 里的 updatePanelType(.keyboard)),子页的 ThemeData theme 形参全部删掉。这套全跟。

各页的取舍:

页面 处置
live_room/send_danmaku/view.dart 整份取上游(单行内联布局重写)。鸿蒙侧此前只有 BOM + 几处展开的枚举名,没有实质分歧;顺带把 d529e0a2d 那轮混进来的 UTF-8 BOM 去掉了
video/send_danmaku/view.dart、live_emote/view.dart、common_*_pub_page.dart 无冲突,全跟
dynamics_create/view.dart 只去形参;鸿蒙的 HarmonyChannel.setShellBarsHidden、controller.keepChatPanel()/restoreChatPanel()、const ClampingScrollPhysics()(80af10073 Revert 鸿蒙ScrollPhysics跟随ios)、ContextExtensions(context).isTablet 全部保留
dynamics_repost/view.dart 只去形参;鸿蒙的 AnimatedSize + _isMax/_isExpanded 骨架保留(上游那套 AnimatedHeight + _expanded 鸿蒙一直没跟)
whisper_detail/view.dart 只去形参;鸿蒙用 .constraintWidth() + Align(topCenter) 做限宽,不引上游的 _kConstraints/ConstrainedBox
video/reply_new/view.dart 只去形参 + 保留 ContextExtensions(context).isTablet

ea10b4559 / 99bf57b64 / 05cfb595d —— 直播聊天列表

  • chat_list_view.dart 保持鸿蒙版。上游把 ChatListView extends BoxScrollView 改成 extends ListView + super.separated(...) 转发。3.41 的 ListView.separated 把 itemBuilder/separatorBuilder/findItemIndexCallback 收成普通具名形参(不是字段), required super.itemBuilder 这种 super 形参用不了;3.41 也还没有 scrollCacheExtent,而且上游那版依赖鸿蒙没有的 sliver/sliver_constrained_cross_axis.dart(CenteredSliverConstrainedCrossAxis / maxExtent)。这次改动是纯去重,没有行为变化。
  • 新文件 live_list_view.dart 跟进,构造器按 3.41 改写:把那批 super 形参展开成普通形参再显式转发给 super.separated(...),去掉 scrollCacheExtent。RenderLiveSliverList.performLayout 与 3.41 SDK 的 RenderSliverList.performLayout 逐行比对过,只差 addInitialChild(index: initialIndex) 和被刻意删掉的「scrollOffset 归零时纠正回 index 0」那一段——正是 initialIndex 功能本身。
  • rx_ext.dart 的 fillRangeOnly 用了上游 getx fork 的 rawValue;鸿蒙锁的 fork (12c9d4d15)没有这个 getter,改用 value(返回的就是内部那个 List,下标赋值同样不触发 refresh())。live_dm_block/controller.dart 里的 keywordList.rawValue
    同理。

75c83af89 feat(linux): webview —— 不跟

整个特性建立在 desktop_webview_window 上(WebviewWindow.create、UserScript、dww.Webview),鸿蒙不变量里这个包是明令禁止的(和 jni/jnigen 同级),而且所有入口都由 Platform.isLinux 守卫。处置:

  • pages/webview/view.dart、pages/video/note/view.dart、utils/login_utils.dart 取鸿蒙版(其中 webview 的四处鸿蒙适配——ScaledWidgetsFlutterBinding.scaleFactor 进/退页归一、SafeArea(top: false)、onDownloadStartRequest 加 OS.isHarmony、useHybridComposition: false——原封不动);
  • 新增的 lib/utils/linux_cookie_manager.dart 删除。

唯一被一起放弃的非 Linux 改动是 webview 页把菜单抽成 _actions/_handleMenuItem 的重构,纯形态调整,没有行为差异。

3e6ac82e0 fix #2837

MainController.msgUnReadCount 从 RxString('') 改成 RxnString(null),红点判据从 isNotEmpty 变成 != null,并新增 clearUnreadMsg()。全跟。鸿蒙侧两处跟着改:

  • main/controller.dart:HarmonyChannel.setHomeUnreadCount(countStr) → countStr ?? ''(原生顶栏那侧的协议仍是空串表示无红点);
  • home/controller.dart:ArkTS 顶栏私信点击回调里的 ..msgUnReadCount.value = '' → ..clearUnreadMsg()。

8a282c85e 里唯一跟进的一行

analysis_options.yaml 加了 - lib/**/*.g.dart。跟进的理由:它只压制生成文件内部的诊断,调用方引用这些文件时仍然照常分析,所以 bindings.g.dart 存根一旦和调用点对不上还是会报错。pubspec.lock、pubspec.yaml、tool/jnigen.dart、 lib/utils/android/bindings.g.dart(这轮上游只改了一行 JNIGEN 版本注释)全部取鸿蒙版。

test/ 目录

6d3541dcd 带来了仓库里第一个测试文件 test/utils/accounts/deleted_account_test.dart。它是纯 Dart + hive_ce,跟平台无关,本地 flutter test 跑通(2 passed),所以留下了。
注意鸿蒙分支的 .gitignore 里有一条很宽的 test*(从 Flutter 仓库模板带来的),这个文件是被合并跟踪进来的,忽略规则对已跟踪文件不生效,git clean -xfd 也不会删它。

附:随本轮一起提交的鸿蒙侧改动(与上游无关)

1. lib/pages/main/view.dart —— 大屏横屏侧栏二次避让

_MainAppState._sideBar 之前的写法是「只在 padding.left > 0 时包一层 Padding(left:) + MediaQuery.removePadding(removeLeft: true)」,右侧的重复避让没管。

问题在于 NavigationDrawer 内部那层是 SafeArea(bottom: false)(见 SDK navigation_drawer.dart),左右两侧都吃;而这两侧的避让本页早就各自让过了:

  • 右侧 —— build 里包住整个 body 的 Padding(right: _padding.right);
  • 左侧 —— _sideBar 里这层 Padding(侧栏上方的头像/消息/搜索列不在 SafeArea 内,两组控件必须一起移,否则一个右移一个不动会错位,这也是原注释在说的事)。

于是右侧被让了两次。抽屉宽度是写死的 130,右边再让掉一次挖孔/手势区就只剩 100 出头,NavigationDrawerDestination 的选中底色跟着变窄、标签还会被 Stack 裁掉——大屏横屏且右侧有挖孔/安全区时最明显,竖屏没挖孔时完全看不出来。

改法:把 MediaQuery.removePadding 提到 left <= 0 的判断之外,且 removeLeft 与 removeRight 一起置 true;外层 Padding(left:) 仍只在 left > 0 时加。这样子树里不再有任何一侧的重复避让,头像/消息/搜索列与侧栏本体依旧同步左移。注释一并重写成现在的实际逻辑。

三、冲突处置

git merge 报 26 个文件冲突(上一轮 55 个)。分布:

类别 文件 处置
上游改、鸿蒙已删(modify/delete) .github/workflows/build.yml、lib/common/widgets/refresh_layout.dart、lib/scripts/cupertino/bottom_sheet_ios_flutter.patch、tool/jnigen.dart 全部保持删除(git rm)
固定取鸿蒙侧 pubspec.yaml、pubspec.lock、lib/utils/android/bindings.g.dart --ours
Linux webview lib/pages/webview/view.dart、lib/pages/video/note/view.dart --ours,另删 linux_cookie_manager.dart、还原 login_utils.dart
上游整份重写、鸿蒙无实质分歧 lib/pages/live_dm_block/view.dart、lib/pages/live_room/send_danmaku/view.dart --theirs
SDK 3.41 不支持 lib/common/widgets/flutter/chat_list_view.dart --ours
逐块取舍 其余 14 个 见第二节

「无冲突 ≠ 无问题」的三处(git 自动合并成功但需要人工收尾):

  1. lib/common/widgets/flutter/live_list_view.dart 是新增文件,git 直接落盘,但里面的 super.itemBuilder / scrollCacheExtent 在 3.41 上编译不过;
  2. lib/utils/extension/rx_ext.dart 同样是新增文件,用了 getx fork 的 rawValue;
  3. lib/pages/setting/pages/font_setting.dart 与 lib/utils/storage_pref.dart 干净合成了上游的 FontWeight 版本,把鸿蒙的「跟随系统」档一起吃掉了(theme_utils.dart 冲突了才暴露出来)。

四、下一轮注意

  • appFontWeight 是新的长期分歧点:鸿蒙的 Pref.appFontWeight 返回 int 且保留 -1(跟随系统),上游是 FontWeight。font_setting.dart 里的滑块段、storage_pref.dart 的 getter、theme_utils.dart 的字重块,以后每轮都要以鸿蒙版为基底。不变量脚本盯着这三处。
  • chat_list_view.dart / live_list_view.dart:只要上游继续往 ListView.separated 的 super 形参、scrollCacheExtent、CenteredSliverConstrainedCrossAxis 上走,这两个文件每轮都会冲突。固定思路是「performLayout 照抄上游,构造器按 3.41 展开」。要根治得先把 sliver/sliver_constrained_cross_axis.dart 和 .constraintWidth() 那套限宽方案统一掉。
  • rawValue:上游 getx fork 已经有了,鸿蒙锁的 12c9d4d15 没有。以后再出现就继续换成 value;哪天升 getx 可以一起消掉。
  • desktop_webview_window 从这轮起进入禁用清单(同 jni/jnigen),webview/view.dart 与 video/note/view.dart 成为「上游 Linux 特性未跟」的分歧点。
  • dynamics_repost/view.dart 的 AnimatedSize + _isMax/_isExpanded、whisper_detail/view.dart 的 .constraintWidth()、msg_feed_top/*、search/view.dart、dynamics/view.dart 仍是老分歧点,每轮都会在这些文件上冲突。
  • pubspec.lock 已经落后上游好几轮(上游本轮又 upgrade deps 两次),鸿蒙这边为了 OHOS fork 的 pin 一直不动;哪天要动得整体评估一次。
  • lib/utils/android/bindings.g.dart 存根本轮没有新方法,仍固定 --ours。
  • lib/pages/main/view.dart 的 _sideBar 现在是鸿蒙独有的避让逻辑(上游没有 HarmonyChannel.cutoutInsets 这套),上游一动这个文件就会冲突,固定以鸿蒙版为基底;不变量脚本可以加一条「_sideBar 里 removeLeft 与 removeRight 同时为 true」。

My-Responsitories and others added 30 commits August 30, 2026 22:43
* twk

* opt: appFontWeight

* update

Signed-off-by: dom <githubaccount56556@proton.me>

* fix appFont assert

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
* 安卓听视频页声音会比视频页大一点

从视频播放点进听视频会新开播放器,但没带上设置里的音频输出设备,音量均衡也只在视频页生效。同一条音频流换了输出通路,听着就不一样。听视频页现在跟视频页用同一套 ao 和 loudnorm。

* fix(android): 使用 PlayInfo 响度数据进行音量均衡

* fix(android): 修正听视频响度数据回退逻辑

* update

Signed-off-by: dom <githubaccount56556@proton.me>

* update

Signed-off-by: dom <githubaccount56556@proton.me>

* update

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
* fix: prevent deleted accounts from being persisted

* update

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
* fix: bind response cookies to request account

* update

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
* fix: bound danmaku download concurrency

* update

Signed-off-by: dom <githubaccount56556@proton.me>

* update

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
* 分组关注也支持排序

* refa

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Signed-off-by: yu.hu <yu.hu@happyelements.com>
Co-authored-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
* opt: account

* tweak

* fix

* fix
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
* feat(comment): add minimal latex to unicode converter

* feat(comment): wire latex to unicode toggle into reply input

* fix(comment): drop duplicate keep-original note from engine warnings

* feat(comment): complete latex to unicode converter (split glyph tables)

* feat(comment): frame matrix envs with box lines

* add `latex` rich type

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
* feat(shutdown_timer_service): 定时关闭剩余时间提示

- 视频页顶部和“定时关闭”菜单项显示剩余时间
- 音频页会显示 定时关闭剩余 xx:xx
- 直播全屏头部也会显示倒计时

* opt trim live chat message

Signed-off-by: dom <githubaccount56556@proton.me>

* refa

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
* fix video quality availability (bggRGjQaUbCoE#2810)

* fix missing lower video quality streams

* opt

---------

Co-authored-by: My-Responsitories <107370289+My-Responsitories@users.noreply.github.com>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
* Fix live danmaku blocking

* update

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
* Impl linux webview

* update

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
bggRGjQaUbCoE and others added 5 commits September 5, 2026 11:17
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
Signed-off-by: dom <githubaccount56556@proton.me>
@wm-develop
wm-develop merged commit 8098fe2 into dev4harmony:ohos Sep 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment