Repository navigation
Conversation
- ComboBoxItem 增加 labelKey/kind/scriptType/name,五个 combox 接口随选项下发结构化元数据;前端 comboxLabel.ts 统一拼装本地化文案,旧后端逐字回退 label - 调度台队列/脚本判断改用 kind,不再解析中文 label 前缀;标签页标题持久化 titleKey,切语言后重算 - 计划默认名、首页问候语、日志页、模拟器新标签名跟随界面语言;问候语 en/ja 各配一份文案 - 词表补全:ja-JP 回填缺失译文、en-US 补齐,并补上游 AUTO-MAS-Project#1573 新增 MaaEnd 启动键的 en/ja 译文 - locales.test 新增漏译、占位符一致性与 vue-i18n HTML 误判检测
脚本与账号编辑页、设置页、队列页的布尔配置统一用 a-switch 开关, 替换原来的「是/否」a-select;顺带移除开关上无效的 size 属性。
- Tabs 标签栏右侧插槽换用 #rightExtra,消除控制台弃用告警
- 电源倒计时弹窗的 :mask="{ blur: true }" 是无效属性,毛玻璃改由
遮罩层 CSS backdrop-filter 落地
去掉 as unknown as ElectronAPI 的整包强转,改为 Partial<ElectronAPI>: 已写成员的签名由 typecheck 保证,缺的成员要求调用方可选调用兜住。 补齐窗口控制与 Runtime 启动模式桩,TitleBar 相应改为可选调用。
- 新增用例:全路由巡检(含上游新页 /taskboard)、界面语言中文泄漏 巡检、下拉框选项语言、计划管理、模拟器配置、脚本创建向导、 脚本编辑页、配置生命周期 - 启动器加依赖/浏览器预检与空闲端口分配,产物目录按运行隔离, e2e:report 改为列出并打开最近报告;新增 README 说明用法 - 契约检查补齐:路由清单、标签登记(兼容裸 test 标题前缀)
打开缺失脚本/读取失败时,后端现状会把 KeyError 原样带回给前端, 断言兼容现状与未来的友好文案。
|
Sorry @1w1w11w1, your pull request is larger than the review limit of 150,000 diff characters |
|
建议先修复下面两项 P2,再合并;新增计划 E2E 的清理逻辑和本次组件规模规则也需要调整。 来自 dot 1. [P2] 英文、日文默认计划名重新加载后变成中文,还会绕过后续重名判断英文界面新建 MAA 计划时,handleAddPlan 会把 “New MAA plan” 保存到 Info.Name。离开再进入计划页面后,新增的 isDefaultPlanName 能识别这个英文默认名,但下一行 generateUniquePlanName 没有传翻译函数,会退回中文默认名。syncCurrentPlan 又优先采用这个列表名称,因此已保存的英文计划显示成中文。 更重要的是,再新建同类型计划时,getDefaultPlanName 只拿当前 planList 中的名称判重。列表里的第一个名称已经被换成中文,于是第二次又生成并保存 “New MAA plan”,两个实际计划变成同名。日文和其他计划类型有同一问题。 依据:创建与保存、列表名称参与判重、未传 translate 时的中文回退。 最小修复:加载时与创建时使用相同的翻译函数,或保留已有持久化名称,并用真实 Info.Name 做判重。补一条“英文/日文创建默认名 → 不改名直接重新进入 → 再建同类型计划”的回归,检查界面和持久化名称都正确且不重复。 2. [P2] 旧响应缺少 kind 时,调度台把队列当成脚本PR 明确保留旧后端 label 的展示回退,但队列分类改为仅判断 kind === 'queue'。旧格式的 { label: "队列 - 名称", value: 队列ID } 能正常显示,却会被判成脚本。 实际影响不只是文案:isQueueTask/isScriptTask 随后会拿队列 ID 请求脚本用户列表;循环队列配置加载 被跳过并回到 AutoProxy;启动参数 也不再带 queueUserIds。队列续跑和账号范围界面会走错分支。 触发条件限定为新版前端连接仍返回旧结构的后端,例如浏览器预览连接独立后端。已核对 Electron 有版本检查,不认为正常安装能任意混用旧版本;不过浏览器入口不经过该检查,且本 PR 没有改版本号,版本检查也不比较 commit。 最小修复:kind 存在时按 kind 判断;仅缺省时沿用原始 label 的队列前缀回退,集中放在这个 helper。验证新结构与旧结构的队列、脚本都走正确业务分支,不需要另建兼容层。 3. [P3] 新增计划 E2E 总把计划列表读成空,清理实际上不会执行位置:plan.pw.ts:25–37。 app.api.post 已经在 fixtures.ts:193 解包为 parsed.data;但 /api/plan/get 的 index 与 data 是同级字段。这里再读取 data.index,得到的不是顶层计划索引,因此无论有多少计划都会返回 []。 这使 deleteAllPlans 跳过所有删除请求,随后的“清理失败”断言仍通过。尤其“四种计划”用例创建的记录不会由 afterEach 清理;使用同一运行数据目录的后续用例会受到残留影响,读列表判断已删除的断言也失去证明力。 最小修复:本端点通过已有 raw 请求读取并检查完整响应中的 index,或采用等价的端点专用读取方式;不要改全局 post 的解包契约。补查“已有计划时能读到 UID、清理后真实 index 为空”。 规范方面的具体未满足项该 head 的 Component Size Policy 是强制规则,不是个人风格建议。按规则对完整 .vue 文件与上述 base 计数,以下既有超 500 行组件仍增长:
即使局部维护也要求不超过基线;涉及新增行为则要求先提取受影响职责。这里只建议按实际改动提取最小职责,不扩展为整页重构,也不能靠压缩空行达标。这属于规范问题,不把它说成运行故障。 审查范围与限制:已读取本 commit 的 AGENTS、mas-skills 及适用的前端规范/UI、代码规范、数据模型/配置框架、API 契约、计划调度和 E2E 规则引用。静态核对了 combox 生成到消费者、默认名保存与重载、布尔控件读写、语言切换和 E2E 启动/清理链路;性能检查覆盖选项映射、重复加载和测试资源收尾,没有性能实测。未执行项目代码、类型检查、构建或任何测试,也未验证真实 Electron 渲染;PR 描述中的通过结果属于作者报告,不是本次执行结果。 |
摘要
ComboBoxItem新增labelKey/kind/scriptType/name,五个 combox 接口随选项下发结构化元数据,前端经comboxLabel.ts统一拼装,旧后端逐字回退label;调度台队列/脚本判断改用kind,不再解析中文 label 前缀,标签页标题切语言后重算#rightExtra、Modal 遮罩毛玻璃无效属性)验证
frontend/下:yarn typecheck、yarn lint(0 警告 0 错误)、yarn format:check通过yarn test101 项通过(另有frontend/.local/下 5 项本地遗留草稿用例失败,为未跟踪文件,与本次改动无关、不在提交内)yarn e2e:check14/14 通过yarn e2e --grep "@routes|@i18n"31/31;--grep "@plan|@emulator|@config|@editors"全过(编辑页两条提示文案断言按后端现状放宽后 16/16);--grep "@queue|@scheduler|@settings|@recovery"通过(queue 首跑一次时序抖动,单独重跑通过)仓库根:
uv run ruff format --check与uv run ruff check(app/core/config.py、app/models/schema.py)通过