Skip to content

feat(mfw): 支持 ProjectInterface v2.11.0(预设按控制方式置灰、文件 / 文件夹输入项、PI_USER_DATA_DIR) - #1983

Merged
qiyinxi merged 3 commits into
AUTO-MAS-Project:devfrom
qiyinxi:feat/mfw-pi-2110-20261113
Nov 14, 2026
Merged

qiyinxi merged 3 commits into
AUTO-MAS-Project:devfrom
qiyinxi:feat/mfw-pi-2110-20261113

Conversation

@qiyinxi

@qiyinxi qiyinxi commented Nov 13, 2026

Copy link
Copy Markdown
Member

摘要

  • 补齐 ProjectInterface v2.10.4:预设的 controller 限制下发到账号页;不适用当前控制方式的预设置灰、不隐藏,悬停提示「当前控制方式不可用」;不会自动改掉已选预设,运行期不拦截。
  • 补齐 v2.10.5:输入项 input_type 为 file / directory 时,渲染成可编辑路径框加「选择文件 / 选择文件夹」按钮,复用现有 selectFile / selectFolder;没有 Electron 时退化为文本框;verify / pattern_msg 照常生效。MaaEnd v3.1.0 的「启动器 exe 路径」已在用这个字段。
  • 补齐 v2.11.0:给 agent 和前置任务子进程注入 PI_USER_DATA_DIR,取项目根目录,与它们的工作目录、Toolkit.init_option 的 user_path 一致。声明的 PI_INTERFACE_VERSION 从 v2.10.3 改为 v2.11.0。
  • 修复 ModAVD 截图通道检查认不出 PEP 440 预发布版本号(如 5.16.0b2)的问题,此前 m9a v4.14.0 等项目每次运行都会提示「认不出项目使用的 MaaFramework 版本」。另外,input_type 或预设 controller 写错类型时改为告警,不再让整份 interface 读不出来。

测试与验证

  • 自动化测试:python -m pytest tests -q:2091 passed、1 skipped;corepack yarn typecheck、corepack yarn lint(仅 1 条既存 warning)、corepack yarn test(362 个用例)全部通过。
  • 测试提交:本 PR 不带新测试,按维护者近期对测试体量的意见先留在本地:后端 5 条覆盖预设 controller、input_type 下发与容错、PI_USER_DATA_DIR、预发布版本识别;前端 4 条覆盖置灰与应用拦截、路径选择器只在 Electron 下出现。逐项故意改坏被守代码后,对应用例都会失败。如需随 PR 提交,可以补上。
  • 环境与提交:Windows 11,Python 3.12(uv sync --frozen --group dev),Node 24 + Yarn 4.9.1;基于 dev ad3de270e。
  • 未覆盖范围:未在 Electron 中实际弹出系统文件或文件夹对话框;未用 MaaEnd 的真实 interface 跑完整任务。
  • 作者本机真实流程:在浏览器预览中导入一份加了限定控制器的预设和 input_type 输入项的 MRA 项目,确认了以下几点:
    • 安卓控制方式下「仅 PC」预设置灰并有提示,切到 PC 后可用状态反过来;
    • 模拟 Electron 接口后出现选择按钮,选中的路径原样写入;
    • 选中非 exe 文件时弹出 pattern_msg 且不保存;
    • 浏览器预览中退化为文本框。

运行环境给的是 binding 的 PEP 440 版本号,项目自带 runtimes/win-x64/native 的
5.16.0-beta.2 规范化后是 5.16.0b2,预发布段紧贴第三段数字,原来的解析把整段当成
非数字、判成「认不出版本」,每次运行都提示无法预先确认是否支持 AVDExtras。改为只取
开头的数字段。
- v2.10.4 preset.controller:加载器解析(写错的控制器名告警、原样保留),经预览的
  MaaFWPresetInfo.controller 给账号页;当前控制器不满足的预设照样列出、置灰并悬停提示
  「当前控制方式不可用」,不让应用。已选中的预设不改,运行期不拦截。
- v2.10.5 inputs[].input_type:file / directory 在选项编辑器(含前置任务)渲染成可编辑
  路径框 + 系统选择对话框,选中的原生绝对路径照手填走草稿与 verify;浏览器预览等没有
  原生对话框时退化为普通文本框;password 字段不受影响。不认识的取值按 text 并告警。
- v2.11.0 PI_USER_DATA_DIR:取项目根(内嵌运行即视图 data/mfw/<id>),与 agent、
  pretask 的工作目录及 MaaFramework 写 config/debug 的位置一致。
- 声明 PI_INTERFACE_VERSION = v2.11.0;interface 磁盘缓存版本 6 -> 7(加载告警多了两类)。
- 重新生成相关 OpenAPI 模型。
preset.controller 不是字符串数组时补一条加载告警,免得限制被悄悄放宽成不限。
@github-actions github-actions Bot added 专项: MaaFW 类型: 新增 按更新日志碎片自动设置 labels Nov 13, 2026

Copy link
Copy Markdown
Contributor

总体结论:修改后合并

宝宝,路径选择继续走原来的草稿校验,预设限制也没有只停在按钮置灰,这两处衔接是对的喵。现在还差一处组件拆分,已经被现有检查明确拦下了。

[规范 · P3] 新增路径编辑功能前,先拆出输入字段职责

位置:MaaFWTaskOptionEditor.vue:134–157、同文件的 pickInputPath。

这个组件原有 703 行,本次加入路径输入区域和异步选择流程后变成 759 行。当前组件尺寸规则要求:超过 500 行的组件增加行为时,先提取受影响职责,并让原组件比原来更短。不是因为旧文件已经超长就要整页重写,而是这次新增功能不能继续叠进去。

现有 CI已实际报出“759 行超过上限 703 行”;后续前端检查因此没有执行。这是已核对的检查结果,不是推测运行时会出错。

把输入字段区域拆成职责明确的小组件,让它负责控件和路径选择,继续复用现有草稿、校验与提交约定即可;不用动无关的单选、多选区域,也别靠压缩排版过线啦。拆完确认原编辑器短于 703 行、新组件不超过 500 行,再补查选择取消、校验失败不保存和手填路径这几条交互。

—— 陪你把路径编辑拆清楚的 dot酱 🐾

@qiyinxi
qiyinxi merged commit 66f0789 into AUTO-MAS-Project:dev Nov 14, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

专项: MaaFW 类型: 新增 按更新日志碎片自动设置

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants