Skip to content

MuMu 外壳认实例编号时按根目录的 portBase 算端口 - #12

Merged
qiyinxi merged 1 commit into
ModAVD:mainfrom
qiyinxi:feat/shim-instance-index
Nov 12, 2026
Merged

qiyinxi merged 1 commit into
ModAVD:mainfrom
qiyinxi:feat/shim-instance-index

Conversation

@qiyinxi

@qiyinxi qiyinxi commented Nov 12, 2026

Copy link
Copy Markdown
Member

改了什么

MuMu 外壳 external_renderer_ipc.dll 收到小于 5554 的 index 时,把它当 ModAVD 的实例编号。以前固定按 20000 + 10×编号 算控制台端口,现在先看外壳所在的根目录:

  • ModAVD 包里会带上这个外壳,放在 <根目录>\mumu-shim\shell\sdk\。MAA 的 MuMu 路径填 <根目录>\mumu-shim,所以外壳从 MuMu 路径的上一级读 mas-avd.json;
  • 读到的 portBase 是 1100–65400 之间 100 的整数倍(ModAVD 认的端口段),就按 portBase + 10×编号 算;
  • 读不到、或者不合规,照旧用 20000。

只读 portBase 这一项,用简单扫描。这个文件是 ModAVD 自己写的,portBase 在里面是个数字。控制台端口(≥ 5554)和 MAA 界面从 emulator-<端口> 反推出来的值,照旧原样认。

这样用户在 MAA 里实例编号直接填 ModAVD 的编号就行,根目录改过端口段也不用自己算端口。

测试

  • build.ps1:test_core、test_shim 全过。test_shim 新增两组用例:
    • 合规的 portBase(含 BOM、CRLF、冒号前后有空白的写法)按实例编号连上,MuMu 路径末尾带不带分隔符都一样;
    • 不合规的不采用:1150、1000、65500、1100.5、字符串 "1100"、7 位数、键名大小写不对。
  • 测试只用 1100 段和 3000 号,算出来的端口(31100,退回默认时是 50000)离真实实例的端口很远,不会连到正在跑的模拟器。
  • 变异检查:
    • 改回固定 20000、去掉「100 的整数倍」、去掉下限、去掉小数判断、不去掉路径末尾的分隔符,都被测出来;
    • 「后面还有数字」那一处测不出来:7 位以上的数本来就超过上限,这处判断是多余的,已经删掉。
  • 实机:正式版 MaaCore v6.22.0 连一个 portBase 31000 的测试根目录的 1 号实例,index 填 1。外壳日志 connect index=1 port=31010,测速选中 MumuExtras 2 ms,截图是实例的桌面,没有失败。

外壳放在 <根目录>\mumu-shim\shell\sdk\ 时,从 MuMu 路径的上一级读 mas-avd.json 的 portBase(1100–65400 之间 100 的整数倍),按 portBase + 10×编号 算;读不到或不合规照旧用 20000。
@qiyinxi qiyinxi added the enhancement New feature or request label Nov 12, 2026
@qiyinxi
qiyinxi added this pull request to the merge queue Nov 12, 2026
Merged via the queue into ModAVD:main with commit 9c6f9df Nov 12, 2026
11 of 12 checks passed
qiyinxi added a commit to ModAVD/ModAVDManager that referenced this pull request Nov 12, 2026
* 没起名的实例显示「实例 N」;版本号和模拟器构建号分开 (#135)

* 没起名的实例显示「实例 N」;版本号不再要求中间那位等于 mas-N

- 界面:没起名的实例显示「实例 N」,新建和设置里的提示跟着改;卡片副标题照旧带文件名 mas_N。命令行 list 的名称列没起名时写「—」。盘上的 mas_N 不动。
- 版本:0.40 以后公开版本号单独往上加,模拟器构建号只写在 modavd-manifest.json 的 "build" 里。
  - 认本地版本:清单的 build 等于 Pkg.BuildId 就用清单的版本;没有 build 的老清单照旧按中间那位核对;对不上时只有 mas-40 及以前才退回 0.<build>.0。
  - 装包:清单的 build 只要求是正整数;核对模拟器时拿 Pkg.BuildId 和清单的 build 比(老包没有 build 就和中间那位比)。macOS 原生包同理。

* CI:decouple_test 只在 Windows 编、gofmt;没起名的卡片副标题照旧写编号

* 界面测试的 format.js 替身补上 ownTitle

* 电脑检查去掉「检查对象」下拉框 (#136)

#118 以后电脑检查不再查内存,所有实例结果都一样。删掉页面上的检查对象下拉框和相关提示,
GET /api/check 去掉 index 参数和 instance_index、memory_mb、root_ready,缓存不再按内存区分,
删掉只为跳过 memory 项的 CheckResult.RootReady()。

* 模拟器内存写进开机守护日志,问题包加模拟器和占内存最多的程序 (#138)

* 开机守护每 10 分钟把模拟器内存写进日志,问题包 summary 加模拟器进程的内存

* 问题包 summary 加「占内存最多的程序」一节

* 更新:根目录文件被别的程序占着时,换包前就停 (#137)

MAA 会载入根目录的 extras\modavd_extras.dll,ModAVD 包里还要带上
mumu-shim\shell\sdk\external_renderer_ipc.dll(MAA 的 MuMu 路径填
<根目录>\mumu-shim 时载入)。以前要换的文件被载入着,要到换完 sdk\emulator
以后替换它时才失败,根目录停在换了一半的状态,当场恢复也一样失败,直到关掉
MAA 才能收尾。

现在换包前(备份之后、写「换上中」状态之前)把要替换和要删的根目录文件
逐个试着以写方式打开,被占用(共享冲突、锁冲突)就停:什么都没动,暂存的
新版留着,提示是哪个文件、先关掉 MAA 之类载入它的程序再装。正在跑更新的
程序自己不算(它照旧先挪进回收目录)。

只读、不存在的文件不算占用;macOS、Linux 上载入的库不挡替换,不做这项检查。

Refs ModAVD/ModAVDExtras#12

* 没起名的实例默认显示 emu-N;卡片规格行不再写「盘自动扩」 (#139)

- 没起名的实例在界面显示 emu-N(原「实例 N」),新建和设置里的提示、占位跟着改;命令行 list 的名称列没起名时也写 emu-N。盘上的 mas_N 照旧不动。
- 卡片的规格行:自动扩盘是默认,不再写「盘自动扩」;指定大小的照旧写「盘 N GB」。

* 版本号改为 0.9.0

go generate ./cmd/modavd-gui 重新生成两份 syso,exe 文件属性里的版本号跟着变。

* 实例卡片显示数据盘实际占的电脑硬盘 (#140)

规格行末尾加「占 12.3 GB」:数据盘文件在电脑上现在实际占的大小(data_space.host_bytes,只算写进去的),读不到就不写。

* ModAVDManager v0.9.0 的说明和 SHA256SUMS

挑进 #140(实例卡片显示数据盘实际占的电脑硬盘)。

* 说明:随 ModAVD 0.40.1 进包(0.8.0 的更新只认版本中间那位等于构建号,这一版用 0.40.1)
qiyinxi added a commit to ModAVD/ModAVD that referenced this pull request Nov 12, 2026
* 发版工具:公开版本号和模拟器构建号脱钩 (#187)

0.41 起公开版本号单独往上加,不再从 mas-N 推出来。模拟器构建号照旧叫 mas-N
(Pkg.BuildId、sdk-masN、补丁目录 qemu/masN 不变),只记在 modavd-manifest.json
和公告机读行的 build 里。

- release_tools.py 加 --version(release.ps1 -Version):给了就用它当版本,
  不再和 --patch 一起用;没给照旧 0.<N>.<P>。版本要比 changelog 里已有的都新,
  这条排序检查不变。
- read_changelog、checks.py 的 check_announcement、check_manifest:build 不再
  要求等于版本中间那位,只要求是正整数;本版条目的 build 仍要等于 -Build。
  0.40 及以前的旧条目照样通过。删掉没人用的 build_of。
- BASE.md 版本表按构建号找已有的行(本来就是),版本号按整词比对,0.39.1 不会被
  0.39.10 当成已写过;同一构建再发一个版本(比如 0.41.0 配 mas-40)只在那一行补
  「;<版本> 相同」。
- release.ps1:发版分支按版本号前两位取(0.41.x 在 release/0.41),草稿标题改成
  「ModAVD <版本>」,带 -Version 时默认输出目录是 masNN-v<版本>。
- 文档:tools/pubrel/README.md、RELEASING.md、README 改成新规矩,0.40 及以前的
  旧规矩各写一句。
- 测试补上版本和构建号不同的用例(0.41.0 配 mas-40、0.42.0 配 mas-41、
  0.41.1 配 mas-40),旧用例照过。

管理器那边是 ModAVD/ModAVDManager#135。

* 发版:包里不再带说明.txt (#190)

用法在管理器和文档站里都有。assemble 不再复制、改写说明.txt,预检不再要求它;NOTICE 里把它从「ModAVD scripts and documents」条目拿掉。已有根目录整包更新时按旧清单自动删掉它。

* 发版工具:包里带上 MuMu 兼容外壳 (#189)

* 发版工具:包里带上 MuMu 兼容外壳

ModAVDExtras 的 external_renderer_ipc.dll 放成
mumu-shim/shell/sdk/external_renderer_ipc.dll。单独装的 MAA 只认 MuMu 的
截图接口,会到 MuMu 路径下载入 shell\sdk\external_renderer_ipc.dll;
在 MAA 里把 MuMu 路径填成 <ModAVD 根目录>\mumu-shim 就能连 ModAVD 的实例。
这是 MAA、MaaFramework 原生支持 ModAVD 以前的过渡办法。

- release.ps1 加 -MumuShim,release_tools.py 加 --mumu-shim、MUMU_SHIM。
  外壳只能和 -ExtrasDll 一起给,两个文件按 ModAVDExtras 同一个提交的
  release/<EXTRAS_VERSION>.SHA256SUMS.txt 核对,所以出自同一版。
- components.SHA256SUMS.txt 允许钉这个路径;截图库钉了而外壳没钉,预检就停,
  两个总是一起带(已发过的文件不能从下一版消失)。外壳的哈希等
  ModAVDExtras v0.1.3 发布后再补,补之前打包会停在这一步。
- NOTICE.txt / NOTICE.csv 加外壳的 LGPL-3.0-or-later 条目,带它时同样检查
  LICENSES 里的 LGPL-3.0、GPL-3.0 全文;SOURCES.txt 和 modavd-src 的 NOTICE
  写上它的源码;说明.txt 加一句 MAA 的 MuMu 路径怎么填。
- 组件复制拆成 copy_pinned_components,组包后的路径有了单测。
- 文档:tools/pubrel/README.md、RELEASING.md、THIRD_PARTY.md。

Refs ModAVD/ModAVDExtras#12

* 钉上 ModAVDExtras v0.1.3 的截图库和 MuMu 兼容外壳

两个哈希取 ModAVD/ModAVDExtras#13 的 CI 编出的文件,和它的 release/0.1.3.SHA256SUMS.txt 一致;EXTRAS_VERSION 改成 0.1.3。

* 发版:ModAVD 0.41.0 的说明草稿和 changelog

* 这一版改叫 0.40.1:0.40.0 带的管理器 0.8.0 只认版本中间那位等于构建号

* 发版:0.40.1 的发布前回归

* 回归:手动覆盖退出托盘后全部换上

* 发版:ModAVD 0.40.1 的说明、校验表和资产记录
qiyinxi added a commit to ModAVD/ModAVDManager that referenced this pull request Nov 13, 2026
* 实例卡片显示数据盘实际占的电脑硬盘 (#140)

规格行末尾加「占 12.3 GB」:数据盘文件在电脑上现在实际占的大小(data_space.host_bytes,只算写进去的),读不到就不写。

* 发版:ModAVDManager v0.9.0(随 ModAVD 0.40.1) (#142)

* 没起名的实例显示「实例 N」;版本号和模拟器构建号分开 (#135)

* 没起名的实例显示「实例 N」;版本号不再要求中间那位等于 mas-N

- 界面:没起名的实例显示「实例 N」,新建和设置里的提示跟着改;卡片副标题照旧带文件名 mas_N。命令行 list 的名称列没起名时写「—」。盘上的 mas_N 不动。
- 版本:0.40 以后公开版本号单独往上加,模拟器构建号只写在 modavd-manifest.json 的 "build" 里。
  - 认本地版本:清单的 build 等于 Pkg.BuildId 就用清单的版本;没有 build 的老清单照旧按中间那位核对;对不上时只有 mas-40 及以前才退回 0.<build>.0。
  - 装包:清单的 build 只要求是正整数;核对模拟器时拿 Pkg.BuildId 和清单的 build 比(老包没有 build 就和中间那位比)。macOS 原生包同理。

* CI:decouple_test 只在 Windows 编、gofmt;没起名的卡片副标题照旧写编号

* 界面测试的 format.js 替身补上 ownTitle

* 电脑检查去掉「检查对象」下拉框 (#136)

#118 以后电脑检查不再查内存,所有实例结果都一样。删掉页面上的检查对象下拉框和相关提示,
GET /api/check 去掉 index 参数和 instance_index、memory_mb、root_ready,缓存不再按内存区分,
删掉只为跳过 memory 项的 CheckResult.RootReady()。

* 模拟器内存写进开机守护日志,问题包加模拟器和占内存最多的程序 (#138)

* 开机守护每 10 分钟把模拟器内存写进日志,问题包 summary 加模拟器进程的内存

* 问题包 summary 加「占内存最多的程序」一节

* 更新:根目录文件被别的程序占着时,换包前就停 (#137)

MAA 会载入根目录的 extras\modavd_extras.dll,ModAVD 包里还要带上
mumu-shim\shell\sdk\external_renderer_ipc.dll(MAA 的 MuMu 路径填
<根目录>\mumu-shim 时载入)。以前要换的文件被载入着,要到换完 sdk\emulator
以后替换它时才失败,根目录停在换了一半的状态,当场恢复也一样失败,直到关掉
MAA 才能收尾。

现在换包前(备份之后、写「换上中」状态之前)把要替换和要删的根目录文件
逐个试着以写方式打开,被占用(共享冲突、锁冲突)就停:什么都没动,暂存的
新版留着,提示是哪个文件、先关掉 MAA 之类载入它的程序再装。正在跑更新的
程序自己不算(它照旧先挪进回收目录)。

只读、不存在的文件不算占用;macOS、Linux 上载入的库不挡替换,不做这项检查。

Refs ModAVD/ModAVDExtras#12

* 没起名的实例默认显示 emu-N;卡片规格行不再写「盘自动扩」 (#139)

- 没起名的实例在界面显示 emu-N(原「实例 N」),新建和设置里的提示、占位跟着改;命令行 list 的名称列没起名时也写 emu-N。盘上的 mas_N 照旧不动。
- 卡片的规格行:自动扩盘是默认,不再写「盘自动扩」;指定大小的照旧写「盘 N GB」。

* 版本号改为 0.9.0

go generate ./cmd/modavd-gui 重新生成两份 syso,exe 文件属性里的版本号跟着变。

* 实例卡片显示数据盘实际占的电脑硬盘 (#140)

规格行末尾加「占 12.3 GB」:数据盘文件在电脑上现在实际占的大小(data_space.host_bytes,只算写进去的),读不到就不写。

* ModAVDManager v0.9.0 的说明和 SHA256SUMS

挑进 #140(实例卡片显示数据盘实际占的电脑硬盘)。

* 说明:随 ModAVD 0.40.1 进包(0.8.0 的更新只认版本中间那位等于构建号,这一版用 0.40.1)

* 关窗口、安卓里关机时实例报关机中,不再显示开机中 (#144)

不经 modavd 的关机没有关机锁:安卓先停、qemu 晚几秒才退,这段原来落到 starting。
现在实例在跑、没开完、没有任何锁时,adb 已够不到客体、又没有这个 qemu 没做完的
modavd 开机(设置标记),就报 busy=stopping;status 照旧是 starting。

* 实例卡片去掉运行时长;新建实例去掉「比如:」和编号选项 (#145)

* 实例卡片不再显示运行时长,和「运行中」标签重复

* 新建实例:名称占位去掉「比如:」,去掉编号选项(一律自动)

* 装执行桥时准备阶段的开机一律无头,最后一次才带窗口 (#146)

带窗口开机的实例要先装 arm64 执行桥时,以前装桥前后的每次冷启动都沿用带窗口,
模拟器窗口会弹出、关掉、再弹出好几次。现在:

- 开机:实例还没有执行桥的开机标记(一定要装桥)时,第一次开机就无头;有标记的
  要开起来才知道装没装,第一次照样按要求开。
- 装桥的冷启动:系统还不可写(脚本退出码 3)后的那次只做准备,无头;脚本装好
  (退出码 0)后要加载桥的那次按调用方要的方式开。
- 收尾:要窗口而实例最后还是无头的(准备阶段开的、或装桥没成),正常关机
  (先 sync)后再冷启动一次,带窗口;运行中不切换(Mgr#33)照旧,不接管无头的 qemu。
- modavd bridge install 重开一台带窗口、没装桥的实例时同样处理;uninstall 中间那次
  后面还要再冷启动的开机无头,第二次没来时补一次带窗口的。
- 更新执行桥、Play 商店、GLES 3.2 只冷启动一次,就是最后那次,不变;新建不变。

加了 TestBridgePrepLaunch、TestStartBridgePrepHeadless、
TestBridgeUninstallRestoresWindow,改了 TestBridgeKeepsWindowMode 的预期;
README、API.md 跟着改。

* test: stop reading the local production root (#150)

TestMatchesProductionInstance compared against the installed mas_1 and broke once
the bridge added hw.gltransport=asg; it now uses a 10-16 snapshot in a temp root.
The real-adb tests no longer fall back to the installed root's adb.exe; they need
MODAVD_TEST_SDK.

* 支持双击托盘隐藏和恢复管理器窗口 (#148)

* 支持双击托盘隐藏和恢复管理器窗口

单击等系统双击间隔后恢复实例窗口,双击只切换独立 Edge 配置里的管理器窗口。退出时恢复隐藏窗口,并阻止晚到的回调再次隐藏。

Refs ModAVD/ModAVD#188

* 补充前台权限对照,区分消息注入与真实输入

记录 Windows 激活请求的返回值。用独立测试窗口授予本次测试进程前台权限,对照原生请求和托盘回调的激活结果,并核对窗口身份、消息应答与最近输入。

Refs ModAVD/ModAVD#188

* 更新:换包前查出只读 DLL 和禁止删除的占用 (#149)

* 换包前查出只读 DLL 和禁止删除的占用

目录链接下的占用检查、自更新和恢复统一比较真实路径。先查占用再备份,被挡住时保留已核对的暂存包。

* 占用检查把模块短名也解析成真实路径

* 修正区间更新的清单来源、整包回退和大文件内存占用 (#147)

* fix(update): 修正区间更新的清单来源和整包回退

清单始终从远端取。变更太多时只记录日志,本地创建、写入、关闭或复制失败时直接报错。

大文件分块写入临时文件,重试前重置内容,解包后关闭并删除。保留区间响应、超时、取消、CRC 和清单核对。

Refs ModAVD/ModAVD#182

* fix(update): 保留核对失败时的本地文件错误

读取清单、文件哈希和模拟器信息失败时直接报错,避免把本地错误当成包损坏后重新下载整包。构建暂存目录也要保留清单读取错误。

目标文件关闭失败时优先返回本地错误,避免被同时发生的 ZIP 读取错误盖掉。补充失败回归,保留坏包回退和旧版包兼容。

Refs ModAVD/ModAVD#182

* fix(update): 区分包里的目录和本地读取错误

先确认清单和模拟器所需的路径是不是普通文件。包里把文件做成目录时仍按坏包拒绝,删除无效缓存并恢复 Mirror 酱到 GitHub 的回退。

真实本地读取错误仍直接返回并保留有效缓存。旧版可选清单继续使用原有的 ZIP 校验回退。补齐整包、部分增量和旧版的成功、失败与缓存回归。

Refs ModAVD/ModAVD#182

* 测试:TestPollTakesGuestArchFromListedConfig 比较前去掉剩余磁盘空间,不再偶发失败 (#151)

* 更新:修复 junction 入口下的自更新和恢复 (#152)

* 每分钟采样模拟器内存,变化大时提前记录并在退出时汇总 (#153)

Refs ModAVD/ModAVD#159

* 修复管理器离线更新和交接结果重复提示 (#154)

* 开机守护把实例也登记到默认的 adb server(5037) (#155)

用默认 adb server 找设备的工具(adb devices、MAA 的自动检测)原来看不到 ModAVD 的实例。开机守护每 30 秒看一次:5037 上有 server 又没列出这台,就替它发 host:emulator 登记;不起 adb.exe、不替别人起 server。mas-avd.json 写 shareDefaultAdbServer: false 可以关掉。

Refs ModAVD/ModAVD#196

* 发版:ModAVDManager v0.10.0(随 ModAVD 0.41.0)

* v0.10.0:发版说明补上托盘单击的变化

* v0.10.0:重新生成两个 exe 的版本资源,哈希跟着换

---------

Co-authored-by: 几毛菜 <44921326+jinghero@users.noreply.github.com>
qiyinxi added a commit to ModAVD/ModAVD that referenced this pull request Nov 13, 2026
* 发版:ModAVD 0.40.1(mas-40,管理器 0.9.0) (#192)

* 发版工具:公开版本号和模拟器构建号脱钩 (#187)

0.41 起公开版本号单独往上加,不再从 mas-N 推出来。模拟器构建号照旧叫 mas-N
(Pkg.BuildId、sdk-masN、补丁目录 qemu/masN 不变),只记在 modavd-manifest.json
和公告机读行的 build 里。

- release_tools.py 加 --version(release.ps1 -Version):给了就用它当版本,
  不再和 --patch 一起用;没给照旧 0.<N>.<P>。版本要比 changelog 里已有的都新,
  这条排序检查不变。
- read_changelog、checks.py 的 check_announcement、check_manifest:build 不再
  要求等于版本中间那位,只要求是正整数;本版条目的 build 仍要等于 -Build。
  0.40 及以前的旧条目照样通过。删掉没人用的 build_of。
- BASE.md 版本表按构建号找已有的行(本来就是),版本号按整词比对,0.39.1 不会被
  0.39.10 当成已写过;同一构建再发一个版本(比如 0.41.0 配 mas-40)只在那一行补
  「;<版本> 相同」。
- release.ps1:发版分支按版本号前两位取(0.41.x 在 release/0.41),草稿标题改成
  「ModAVD <版本>」,带 -Version 时默认输出目录是 masNN-v<版本>。
- 文档:tools/pubrel/README.md、RELEASING.md、README 改成新规矩,0.40 及以前的
  旧规矩各写一句。
- 测试补上版本和构建号不同的用例(0.41.0 配 mas-40、0.42.0 配 mas-41、
  0.41.1 配 mas-40),旧用例照过。

管理器那边是 ModAVD/ModAVDManager#135。

* 发版:包里不再带说明.txt (#190)

用法在管理器和文档站里都有。assemble 不再复制、改写说明.txt,预检不再要求它;NOTICE 里把它从「ModAVD scripts and documents」条目拿掉。已有根目录整包更新时按旧清单自动删掉它。

* 发版工具:包里带上 MuMu 兼容外壳 (#189)

* 发版工具:包里带上 MuMu 兼容外壳

ModAVDExtras 的 external_renderer_ipc.dll 放成
mumu-shim/shell/sdk/external_renderer_ipc.dll。单独装的 MAA 只认 MuMu 的
截图接口,会到 MuMu 路径下载入 shell\sdk\external_renderer_ipc.dll;
在 MAA 里把 MuMu 路径填成 <ModAVD 根目录>\mumu-shim 就能连 ModAVD 的实例。
这是 MAA、MaaFramework 原生支持 ModAVD 以前的过渡办法。

- release.ps1 加 -MumuShim,release_tools.py 加 --mumu-shim、MUMU_SHIM。
  外壳只能和 -ExtrasDll 一起给,两个文件按 ModAVDExtras 同一个提交的
  release/<EXTRAS_VERSION>.SHA256SUMS.txt 核对,所以出自同一版。
- components.SHA256SUMS.txt 允许钉这个路径;截图库钉了而外壳没钉,预检就停,
  两个总是一起带(已发过的文件不能从下一版消失)。外壳的哈希等
  ModAVDExtras v0.1.3 发布后再补,补之前打包会停在这一步。
- NOTICE.txt / NOTICE.csv 加外壳的 LGPL-3.0-or-later 条目,带它时同样检查
  LICENSES 里的 LGPL-3.0、GPL-3.0 全文;SOURCES.txt 和 modavd-src 的 NOTICE
  写上它的源码;说明.txt 加一句 MAA 的 MuMu 路径怎么填。
- 组件复制拆成 copy_pinned_components,组包后的路径有了单测。
- 文档:tools/pubrel/README.md、RELEASING.md、THIRD_PARTY.md。

Refs ModAVD/ModAVDExtras#12

* 钉上 ModAVDExtras v0.1.3 的截图库和 MuMu 兼容外壳

两个哈希取 ModAVD/ModAVDExtras#13 的 CI 编出的文件,和它的 release/0.1.3.SHA256SUMS.txt 一致;EXTRAS_VERSION 改成 0.1.3。

* 发版:ModAVD 0.41.0 的说明草稿和 changelog

* 这一版改叫 0.40.1:0.40.0 带的管理器 0.8.0 只认版本中间那位等于构建号

* 发版:0.40.1 的发布前回归

* 回归:手动覆盖退出托盘后全部换上

* 发版:ModAVD 0.40.1 的说明、校验表和资产记录

* 发版工具:截图库和外壳不再钉版本和哈希,发版时从 ModAVDExtras 的发版分支取 (#198)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant