Compare commits

...

1473 Commits

Author SHA1 Message Date
zzyyyl
78c1ff3a5c docs: 公式格式 2025-09-26 15:56:14 +08:00
zzyyyl
53052833f4 docs: 增加 任务流程文档 - 表达式计算 小节中对运算符的描述;将虚任务移至表达式计算小节 2025-09-26 15:41:51 +08:00
zzyyyl
cd17cced22 feat: 不允许虚任务作为 @ 运算的左元 2025-09-26 15:41:35 +08:00
uye
a8ef1420b6 Release v5.26.0-beta.1 (#14231) 2025-09-26 14:13:39 +08:00
github-actions[bot]
1d7a893950 docs: Auto Update Changelogs of v5.26.0-beta.1 (#14232)
* docs: Auto Generate Changelog of Release v5.26.0-beta.1

* docs: Refactor CHANGELOG to remove duplicates and update entries

Removed duplicate entries and updated various documentation items in the CHANGELOG.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-09-26 14:11:43 +08:00
pre-commit-ci[bot]
ef8964e0a7 chore: Auto update by pre-commit hooks [skip changelog] 2025-09-26 06:02:15 +00:00
Wallsman
775c640dba docs: Update JP(#14227)
* Update readme.md

Doc: Text sync chinese.

* Update others.md

Doc: Sync text for Chinese.

* Update copilot.md

Doc: Sync Text for Chinese.

* Update reclamation-algorithm.md

Doc: Text sync for Chinese.

* Update rewards.md

Doc: Sync text for Chinese.

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-26 13:58:54 +08:00
github-actions[bot]
634ebb55db chore: Auto Templates Optimization
Triggered by 5ac171d40c

[skip changelog]
2025-09-26 05:58:00 +00:00
uye
5ac171d40c feat: 次生预案十里坡剑神 2025-09-26 13:57:33 +08:00
Constrat
0ae323c855 fix: Google Play Games Developer shutdown 2025-09-26 01:24:57 +02:00
MistEO
8aaba7d60e fix: manual set resource version time 2025-09-26 00:58:36 +08:00
github-actions[bot]
caed828770 chore: Auto Templates Optimization
Triggered by 3f252eb12e

[skip changelog]
2025-09-25 08:50:39 +00:00
github-actions[bot]
3f252eb12e chore: Auto Update Game Resources - 2025-09-25
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18002097304

[skip changelog]
2025-09-25 08:49:14 +00:00
Manicsteiner
e8051a6a39 chore: YostarJP Sarkaz roguelike StageEncounter (#14223) 2025-09-25 00:17:07 +02:00
Rbqwow
e0860ed779 docs: 补充vsc插件繁中文档
refer to a872081615
2025-09-23 14:32:12 +00:00
Rbqwow
1324165cfe docs: 修复文档站readme盾换行 2025-09-23 13:58:15 +00:00
Lucien Shaw
96aa7ada11 docs: 调整文档站的标题和尾注文本显示 (#14213)
* chore: 更新plume主题版本

* chore: 更新文档站尾注配置

* i18n: 调整多语言的默认网站标题

* docs: 调整首页的网页标题

* docs: 文档站首页MAA标题加阴影
2025-09-23 21:36:58 +08:00
Rbqwow
ca3160bd72 docs: 更新网页开发相关文档 (#14167)
* docs: vuepress-theme-hope --> vuepress-theme-plume

* docs: website --> docs

* chore: 添加 preview 图片

* feat: 添加回图片相关插件

* perf: logo 超级压缩

* perf: preview 也超级压缩

* docs: 找 GPT-5 Thinking 翻译了一下日语的本地部署

* chore: 预览图还是得走一下网页镜像

* i18n: JP

* docs: 修复损坏的超链接

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 这东西是怎么混进来的

---------

Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-23 17:49:19 +08:00
Manicsteiner
c3bac8b504 chore: YostarJP sami roguelike 720p (#14210) 2025-09-23 10:53:52 +02:00
zzyyyl
642c62498c docs: 完善任务流程协议文档 (#13232)
* docs: 完善任务流程协议文档

* docs: English version of task-schema.md

* docs: markdown-lint
2025-09-23 14:21:37 +08:00
zzyyyl
56cf52808d docs: markdown pre-commit 2025-09-23 14:16:39 +08:00
pre-commit-ci[bot]
5d47ede186 chore: Auto update by pre-commit hooks [skip changelog] 2025-09-23 13:52:02 +08:00
萨拉托加
a48fe44663 chore: 水月萨米肉鸽不期而遇避战
fix #14207
2025-09-23 13:32:47 +08:00
nekosu
a872081615 docs: add extension's evaluating feature 2025-09-23 11:43:42 +08:00
Constrat
485ef8fcbf fix: prettier 2025-09-23 00:28:47 +02:00
Manicsteiner
c450e596f7 chore: YostarJP Mizuki StageEncounter (#14206) 2025-09-22 23:27:18 +02:00
SherkeyXD
f9c16319a8 docs: 回调消息协议文档视觉更新 2025-09-23 03:01:56 +08:00
SherkeyXD
5db20fe2c4 docs: 集成文档视觉更新 2025-09-23 02:41:13 +08:00
SherkeyXD
e12c7f948d docs: 文档启用b站视频播放功能 2025-09-23 02:03:57 +08:00
SherkeyXD
cb546b4370 docs: 文档添加字段容器功能 2025-09-23 02:01:29 +08:00
SherkeyXD
c193b26b62 docs: 文档添加功能 2025-09-23 01:56:38 +08:00
SherkeyXD
91c8a22d1c docs: 更新文档编写指南 2025-09-23 01:56:38 +08:00
SherkeyXD
b8205b5593 docs: add telegram icon 2025-09-23 01:56:38 +08:00
MistEO
68248df197 docs: 标题MAA统一采用缩写 2025-09-23 01:41:48 +08:00
MistEO
db98bb370e chore: 再次调整文档站标题( 2025-09-23 01:35:56 +08:00
MistEO
bf2375a44f chore: 调整文档站标题 2025-09-23 01:32:20 +08:00
Rbqwow
d12fb7d565 refactor: devcontainer.json (#14169)
* chore: cleanup devcontainer.json

* chore: 配置devcontainer环境

* build: 更新conda配置

* chore: 更新pnpm包的安装允许列表

---------

Co-authored-by: Lucien Shaw <myxlc55@outlook.com>
2025-09-23 00:53:41 +08:00
Lucien Shaw
9838dec4fd fix: 文档首页语言选择按钮的宽度定义方式 (#14199) 2025-09-22 22:11:54 +08:00
uye
793d03d47b feat: 设置指引添加更新设置 2025-09-22 20:31:35 +08:00
uye
56d796c92e feat: 统一显示效果 2025-09-22 19:36:00 +08:00
uye
aae995aef5 feat: 设置指引添加性能设置 2025-09-22 19:36:00 +08:00
萨拉托加
9159e5d979 fix: 傀影肉鸽无法识别四结局 (#14193)
* fix: 傀影肉鸽无法识别四结局

既然MAA能打就加个模板比较好?

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 四结局必要不期而遇进战斗

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-22 16:27:54 +08:00
萨拉托加
705c5a4c68 fix: GamePassSkip2识别到错误的跳过
看录屏发现的,GamePassSkip1之后可能会出现一个一闪而过的GamePassSkip2被maa识别到,好抽象
2025-09-22 16:14:37 +08:00
Rbqwow
a563b14f47 refactor: 重写完成后动作仅一次的ui字符串 (#14196) 2025-09-22 14:44:49 +08:00
uye
400fd6bf53 chore: 贸易站没其他好用的人再用锏 2025-09-21 19:07:33 +08:00
萨拉托加
2915338cac fix: 萨米肉鸽不期而遇避战
fix #14192
2025-09-21 16:53:48 +08:00
uye
09dc393c98 docs: Update CHANGELOG with recent changes and fixes 2025-09-21 14:06:55 +08:00
uye
0650cdb64e Release v5.25.0 (#14184) 2025-09-21 13:54:51 +08:00
github-actions[bot]
385c521eb4 docs: Auto Update Changelogs of v5.25.0 (#14185)
* docs: Auto Generate Changelog of Release v5.25.0

* docs: 更新 v5.25.0 版本变更日志,增加自动战斗和基建换班功能的优化说明

* docs: 更新 v5.25.0 版本变更日志,增加对自动战斗和基建换班功能的详细说明

* docs: 修复 CHANGELOG.md 中的格式问题

* docs: 修复 CHANGELOG.md 中的拼写错误

* docs: Update dependencies and change CDN provider

Updated project dependencies and switched to a new CDN provider for improved access speed.

* docs: 更新依赖库并更换官网和 API 节点的 CDN 提供商,优化访问速度

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-09-21 13:54:32 +08:00
萨拉托加
a37a74a4e2 fix: 现买现印选项
fix #14188
2025-09-21 12:22:02 +08:00
MistEO
1d2d49920a chore: 整理文档站 social 链接 2025-09-21 11:40:23 +08:00
MistEO
da82e14efc chore: 删除文档站不知道有啥用的文件? 2025-09-21 11:36:01 +08:00
MistEO
ad9103ea12 docs: 修改文档站导航栏跳转 2025-09-21 11:35:47 +08:00
nekosu
26296b3b82 docs: Maa Pipeline Support 扩展文档 (#14110)
* doc: cache

* doc: vsc ext doc skeleton

* fix: svg ref

* doc: optimize

* docs: 在任务流程协议文档中添加扩展使用提示

* docs: add en translation

* docs: 补充跳转超链接

---------

Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
2025-09-21 04:31:14 +08:00
Constrat
72ba949f1c chore: remove comment on script 2025-09-20 21:22:47 +02:00
Constrat
1102771ea1 ci(tools): add stale cache cleanup script 2025-09-20 20:48:51 +02:00
Constrat
9d9f95ea4a i18n: fix english for main page 2025-09-20 20:48:36 +02:00
MistEO
0e33a53068 feat: add docs icon 2025-09-21 01:05:26 +08:00
uye
081c0b7597 chore: 调整 锏 基建技能效率 2025-09-20 19:46:52 +08:00
uye
e3de09ddcc Release v5.25.0-beta.5 (#14180)
准备发正式版了,这个之后先别进 pr
2025-09-20 14:19:34 +08:00
github-actions[bot]
81e22e5bf9 docs: Auto Update Changelogs of v5.25.0-beta.5 (#14181)
* docs: Auto Generate Changelog of Release v5.25.0-beta.5

* docs: Update CHANGELOG with recent fixes and enhancements

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-09-20 14:17:20 +08:00
uye
424687c3e1 fix: 成就列表解锁时间显示颜色错误 2025-09-20 14:08:34 +08:00
uye
94e6fabb76 fix: GO 导航 2025-09-20 14:02:41 +08:00
uye
8d346ed392 fix: 勾选启动后直接运行时无法自动切换基建排班表
fix #14173
2025-09-20 13:51:16 +08:00
soundofautumn
fd3204e965 chore: fix build warning (#14176)
0>RunningState.cs(49,46): Warning CS8622 : “void RunningState.TimeoutReminderTimer_Elapsed(object sender, ElapsedEventArgs e)”的参数“sender”类型中引用类型的为 Null 性与目标委托“ElapsedEventHandler”不匹配(可能是由于为 Null 性特性)。
0>RunningState.cs(41,17): Warning CS8618 : 在退出构造函数时,不可为 null 的 事件 "TimeoutOccurred" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 事件 声明为可为 null。
0>RunningState.cs(80,46): Warning CS8625 : 无法将 null 字面量转换为非 null 的引用类型。
0>RunningState.cs(80,52): Warning CS8625 : 无法将 null 字面量转换为非 null 的引用类型。
0>RunningState.cs(38,37): Warning CS8618 : 在退出构造函数时,不可为 null 的 字段 "_instance" 必须包含非 null 值。请考虑添加 "required" 修饰符或将该 字段 声明为可为 null。
2025-09-20 13:43:07 +08:00
uye
7109310145 fix: 网络连接错误的情况下读取了本地缓存也提示了获取热更成功 2025-09-20 13:38:48 +08:00
soundofautumn
a424520a1d chore: rename RecognizerViewModel -> ToolboxViewModel (#14177)
* chore: rename RecognizerView -> ToolboxView

* chore: 重新排序顺序使得和ui顺序一致
2025-09-20 13:37:53 +08:00
github-actions[bot]
b98ae1be2d chore: Auto Update Game Resources - 2025-09-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17875323432

[skip changelog]
2025-09-20 04:31:07 +00:00
萨拉托加
5eaf466128 fix: 萨米肉鸽未通关结局时探寻前路卡住 2025-09-19 17:21:41 +08:00
github-actions[bot]
8dc7893459 chore: Auto Update Game Resources - 2025-09-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17853878149

[skip changelog]
2025-09-19 09:09:19 +00:00
MistEO
e891471750 ci: remove website aws config 2025-09-19 15:23:24 +08:00
Lucien Shaw
9014a20c25 fix: 文档站首页在窄屏下的响应式设计 (#14166) 2025-09-19 15:14:16 +08:00
Lucien Shaw
4280d9356a fix: 暂时修复无法读取过去的评论的问题 (#14163) 2025-09-19 14:41:33 +08:00
Manicsteiner
b8e739bcad chore: YostarJP ocr fix (#14134)
* chore: YostarJP ocr fix

* chore: item30165, ja-jp xaml, 随到随取

* i18n: RA task mode
2025-09-19 11:36:02 +08:00
Constrat
f9c76d4995 fix: Eye For an Eye encounter IS2 EN 2025-09-19 00:42:52 +02:00
Lucien Shaw
28ca820784 docs: 完善文档站的代码检查和涉及的文本替换 (#14156)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-18 23:53:59 +08:00
Lucien Shaw
d8dbec69ca docs: 完善自动肉鸽和其它文档中的部分内容 (#13924)
* docs: 在中文文档的连接设置中添加一处关于隐藏目录的提示

* docs: 在中文的自动肉鸽文档中完善关于蓝图测绘分队的提示

* i18n: EN is.md

* i18n: connetion for all

* docs: ko-kr is

* docs: kr fix typo

* docs: 完善了英文的自动肉鸽文档中的部分措辞

修改部分开局推荐提示的措辞和语法,使其和表格中的其它提示一致
使用罗马数字专用符号`Ⅱ`代替两个拉丁字母`II`

* docs: 更新繁体中文自动肉鸽文档中的开局推荐

* docs: 更正三种语言自动肉鸽文档中的傀影肉鸽开局推荐难度

更正简中、英文、韩文的自动肉鸽文档中傀影肉鸽开局推荐难度(繁中文档不适用;日文文档没有这一部分)

* docs: 只是改个语序

* i18n: JP

* docs: 调整简中和日语的自动肉鸽文档的表格缩进

* docs: 在繁中的自动肉鸽文档中添加最后更新日期

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-09-18 23:26:23 +08:00
SherkeyXD
ada9b0849b docs(rft): 切换文档主题至 vuepress-theme-plume (#13821)
Co-authored-by: Lucien Shaw <myxlc55@outlook.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
2025-09-18 18:26:14 +08:00
uye
99e64b3ea8 chore: 调整会客室中更容易获得线索板上尚未拥有的线索的技能优先级 2025-09-18 18:01:26 +08:00
uye
e7be333557 chore: 基建把 u酱 ban 了 2025-09-18 15:38:03 +08:00
github-actions[bot]
8da2271af1 chore: Auto Templates Optimization
Triggered by 7b58ddee5b

[skip changelog]
2025-09-18 07:01:41 +00:00
uye
7b58ddee5b fix: 为什么 mujikca 的图黑的不够纯粹 2025-09-18 14:51:36 +08:00
萨拉托加
fcfa9c033c fix: 肉鸽在结算界面卡死 (#14145)
* fix: 肉鸽通关后有概率无法跳过剧情导致卡死或出错

有概率无法跳过卡在Roguelike@ClickToStartPoint里

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 肉鸽还是卡结算界面,改一下ClickToStartPoint位置

* fix: 导航肉鸽时有概率识别到回弹动画状态的入口

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-18 14:41:41 +08:00
Loong
1992af7159 feat: cli 支持新版战斗列表以及悖论模拟 (#14154)
chore: bump maa-cli to 0.5.9
2025-09-18 14:38:54 +08:00
Constrat
a6b5101e0c ci: update cache scripts 2025-09-18 02:20:27 +02:00
github-actions[bot]
e03a96774d chore: Auto Update Game Resources - 2025-09-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17809390023

[skip changelog]
2025-09-17 20:08:55 +00:00
status102
261ddc49d9 fix(core): CopilotTask参数可选项存在性检查 2025-09-18 00:43:17 +08:00
Lucien Shaw
bb735b6ee7 feat: 为官网首页添加多语言支持 (#13943)
* build: 引入react i18n组件

* i18n: 加载多语言支持模块

* i18n: 添加语言切换按钮

* i18n: 添加网页下载按钮多语言支持

* build: 更新typescript依赖

* fix: 修复callback导致语言切换不生效的问题

* i18n: 完成首页所有元素的多语言支持

* chore: 删除冗余代码

* i18n: 优化了语言切换按钮的交互逻辑并添加多语言占位符

* chore: 规范了部分代码的格式并删除冗余代码

* i18n: ko-kr

* chore: kr 미러 to mirror

* fix: 修复检测和切换语言的问题

* chore: 调整了尾注用户协议部分的显示方式

* refactor: 更改首页尾注的显示方式

* style: 统一Trans元素为self-close样式

* i18n: zh-tw

* fix: 修复换行和块之间的空格问题并补上缺失的翻译

* feat: 更改首页语言也会同步更改文档按钮对应的链接

* refactor: 将弃用的MutableRefObject替换为RefObject

* feat: 语言切换按钮的选项使用对应的语言渲染

* feat: 统一管理所有语言信息并开放读取语言接口

* fix: 去除按钮在鼠标悬停时出现的下划线

* style: 统一不使用行尾分号

* build: 更新部分依赖

* fix: 修正不成对的Trans块对应的本地化文本

* feat: 移动设备横屏浏览时出现垂直滚动条

移动设备横屏时,可能仍能出现下载按钮,全部展开时可能过高,此时出现垂直滚动条,方便用户浏览所有内容

* i18n: JP

* fix: 强制隐藏下载链接容器的水平滚动条

* fix: 将下载链接容器设置为占满宽度

* i18n: JP edits

* fix: 修复滚动条引起的上端裁切问题

* feat: action按钮组根据实际宽度调整布局

不再依靠md:xxx的固定阈值区分小屏和中屏及以上,而是根据不同语言的按钮宽度动态计算是否溢出,从而决定排布方式

* feat: 使用上下文管理布局

使用layoutStateContext来管理布局相关状态,主要是宽度溢出检测

* fix: Copilot 说我们是小驼峰

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* perf: Copilot 说我们不再需要下划线和它的偏移
我还是第一次知道这里下划线这么难看

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: 把别的按钮样式抄到语言切换按钮上

* style: 复活 Prettier

这 Prettier 什么鬼情况
我没有要求你把所有文件都格式化,我不是恶魔,后面忘了,总之我可能得狠狠恢复你了。真的。
所以这缩进怎么又 2 又 4 的

* chore: Auto update by pre-commit hooks [skip changelog]

* refactor: 更改副标题和尾注的元素class以优化动画和显示

* style: 将typescript代码文件的缩进统一为2

* fix: 改正测速进行中的i18n key

* refactor: 删除link类的下划线css定义

* build: 更新prettier依赖和相关配置

* style: prettier美化

* chore: 尝试规避github ci找不到插件的错误

* chore: Auto update by pre-commit hooks [skip changelog]

* refactor: 使用.prettierrc.js管理官网相关文件的美化配置

* refactor: 暂时取消自动import排序美化

* fix: 下载按钮动画问题

* feat: 响应式设计测量宽度时,临时隐藏相关元素

* style: prettier

* refactor: 下载按钮组居中对齐

* feat: 让系统架构提示动画从上到下

* refactor: 优化第二行按钮动画

* refactor: 优化协议部分文本动画

* i18n: 为一句过长的日语添加换行符

* fix: 修复进度条样式

* refactor: 不将i18n作为触发器

* chore: 首页图片资源文件路径变更

* chore: 添加多语言图片占位

* i18n: 首页图片支持多语言切换

* chore: 更新日文的首页截图

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 在首页的文档链接后补全斜杠

* chore: 更新prettier的EOL设置

* style: prettier美化

* chore: pre-commit复活

* refactor: 统一languageFilename变量名

* refactor: 移除加载截图模块的dead code

* i18n: 为mirrorchyan的跳转链接添加多语言支持

mirrorchyan提供简中和英语,因此其他语言需要fallback到二者之一。
- 繁体中文跳转到简体中文
- 日语和韩语跳转到英文

* fix: dead code删除不彻底

* i18n: 去除除了简中以外的”海外源“字样

* i18n: 规范化简中和繁中的locale文本

* i18n:调整英文文本的语法和表达

* i18n: 规范化日文文本

* chore: prettier

* i18n: KR screenshot

* i18n: txwy screenshot

* chore: Auto update by pre-commit hooks [skip changelog]

* i18n: zh-tw tweak

* refactor: mirror酱相关的两处key更名

* docs: 优化中文和英文的部分语句表达方式

Linux 下载那句我怎么看怎么觉得怪
我想改成 `下载完成(Linux 版本仅包含动态库与资源文件)` `Download completed (Linux version includes dynamic libraries and resource files only)`
但感觉改完也很怪

感觉不如把这俩直接换成 CLI 的下载

* i18n: fix version info loading error message and pluralize downloads for zh-cn

* chore: update en-us screens dark and light

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: focus

* chore: Auto update by pre-commit hooks [skip changelog]

* refactor: 去除多余类型标记

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-09-17 21:19:07 +08:00
uye
c54b45c09f fix: SettingsViewModel Idle 2025-09-17 17:54:19 +08:00
萨拉托加
eb061dcc59 fix: 异格推王的基建加成错误 2025-09-17 16:32:14 +08:00
uye
bc7dc763fe feat: RunningState 统一状态变更事件 (#14141)
* feat: RunningState 统一状态变更事件

* feat: 统一 Inited 与 Stopping

* perf: 优化小工具中的stop
2025-09-17 14:06:51 +08:00
github-actions[bot]
3bfc2662e3 chore: Auto Update Game Resources - 2025-09-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17773963424

[skip changelog]
2025-09-16 17:29:14 +00:00
status102
f4c21be051 chore: file header 2025-09-17 00:57:06 +08:00
status102
2936006087 rft: 特征匹配过程函数拆入analyze() 2025-09-17 00:53:23 +08:00
github-actions[bot]
efa364043d chore: Auto Update Game Resources - 2025-09-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17772582080

[skip changelog]
2025-09-16 16:33:32 +00:00
Weiyou Wang
7b6dada3ea feat: 生息盐酸任务添加对错误模式 (有/无存档) 的提示 (#14131)
* feat: 生息盐酸任务添加对错误模式 (有/无存档) 的提示

* fix: callback 里任务名没有前缀
2025-09-17 00:26:28 +08:00
Weiyou Wang
be3b1a2057 fix: 调低 MacOS PlayCover 下对 InfrastControl 识别的阈值 (#14139) 2025-09-17 00:21:20 +08:00
status102
67ceb02116 fix: CurrentConfig未刷新 2025-09-17 00:07:32 +08:00
status102
aa7a2731e0 fix: CurrentConfig悬空 2025-09-17 00:07:32 +08:00
uye
df8f3786f0 fix: 拥有全干员的情况下重启后进入干员识别界面不会自动选中选项卡 2025-09-16 23:48:49 +08:00
uye
20b167119a fix: 修复 DataGrid 虚拟化下 Tab 导航异常 2025-09-16 23:44:27 +08:00
Constrat
b1f02a2eb5 fix(ci): download to v5 with necessary fix (#14122)
fix: specify path for download v5
2025-09-16 16:41:19 +02:00
HY
f9e424cd3b chore: 繁中服「相見歡」活動導航 (#14137)
* chore: 繁中服「相見歡」活動導航

* chore: 再改 再改
2025-09-16 16:37:22 +02:00
萨拉托加
5eecbe21c1 fix: 萨卡兹肉鸽未通关结局时原初异途卡住
fix #14133
2025-09-16 18:38:49 +08:00
MistEO
32a3523bc4 feat: use coreml OCR for apple (#14108) 2025-09-16 18:20:10 +08:00
github-actions[bot]
7dd2dbdcbe chore: Auto Update Game Resources - 2025-09-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17759820697

[skip changelog]
2025-09-16 08:33:34 +00:00
github-actions[bot]
27f9df768d chore: Auto Update Game Resources - 2025-09-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17758555824

[skip changelog]
2025-09-16 07:44:48 +00:00
萨拉托加
2350a05fc4 fix: 肉鸽深入探索无法退出结算界面 (#14123) 2025-09-15 23:03:04 +08:00
soundofautumn
3ea9912802 chore: fix build warning (#14120) 2025-09-15 23:00:34 +08:00
uye
a9e31c75d0 Release v5.25.0-beta.4 (#14126) 2025-09-15 22:49:41 +08:00
uye
4e46a392a3 docs: Update CHANGELOG for v5.25.0-beta.4
Updated changelog for version 5.25.0-beta.4 with new features and fixes.
2025-09-15 22:48:52 +08:00
pre-commit-ci[bot]
2f09f9e591 chore: Auto update by pre-commit hooks [skip changelog] 2025-09-15 14:43:19 +00:00
uye
55f675fb8d fix: minitouch 触控 wait ms 2025-09-15 22:38:35 +08:00
uye
36fc9a8e0a fix: 复核自定义干员时等待游戏动画 2025-09-15 22:11:05 +08:00
Constrat
cfd463a7fd fix: wrong default on type number 2025-09-15 14:09:40 +02:00
uye
2884f2d0ae fix: 自动战斗无法读取下拉列表中的作业 2025-09-15 19:52:42 +08:00
MistEO
0af752b083 Release v5.25.0-beta.3 (#14115) 2025-09-15 16:50:34 +08:00
MistEO
212cb506d6 docs: changelog version 2025-09-15 16:50:13 +08:00
MistEO
6ed32b3344 docs: changelog 2025-09-15 16:49:32 +08:00
MistEO
4a2901c473 ci: fix minitouch scale 2025-09-15 16:43:58 +08:00
MistEO
18bec2504d ci: add create issue 2025-09-15 15:28:04 +08:00
MistEO
7c4002351e ci: use download-artifact v4 2025-09-15 15:28:04 +08:00
MistEO
4e0b5ace24 Release v5.25.0-beta.2 (#14111) 2025-09-15 15:00:10 +08:00
github-actions[bot]
acfb173cc3 docs: Auto Update Changelogs of v5.25.0-beta.2 (#14112)
* docs: Auto Generate Changelog of Release v5.25.0-beta.2

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
2025-09-15 14:58:02 +08:00
MistEO
feb7b6109f ci: fix win zip 2025-09-15 14:02:35 +08:00
MistEO
552d7784a2 ci: add zip for win ci and create issue if failed release 2025-09-15 13:37:59 +08:00
status102
b1d10a87dc perf: 加个try先 2025-09-15 13:19:19 +08:00
Constrat
30bb86bade ci(fix): try to color only [err] log as red 2025-09-15 01:36:04 +02:00
MistEO
80511c660f ci: split cmake file (#14109) 2025-09-15 04:18:40 +08:00
mistereo@hotmail.com
45ca28ed74 chore: remove SyncRes 2025-09-15 03:07:17 +08:00
MistEO
a208c1f03b ci: set hash version 2025-09-15 02:31:32 +08:00
Status102
5b33bc3f00 feat: 自动战斗多作业支持保存干员组内编入的干员 (#14095)
* chore: 加个存储先

* feat: 与旧编队比较

* feat: 快速编队

* fix: 计数

* fix: 缓存了旧的组名

* perf: 快速退出

* fix: 跳过编队后修改编队状态

* fix: 完事

* fix: err

* fix: 顺手一起修了
2025-09-15 01:27:51 +08:00
MistEO
6202eedeb3 refactor: use std::format instead of sprintf (#14107)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-15 01:07:05 +08:00
Constrat
a70502521d ci:. standardize cache key for nuget cache 2025-09-14 18:55:13 +02:00
Constrat
66a5095ede ci: standardize hash for windows maadeps 2025-09-14 18:52:20 +02:00
Constrat
5b750ca194 fix: smoke-testing script 2025-09-14 18:48:47 +02:00
uye
b18e4e6ff6 Release v5.25.0-beta.1 (#14100) 2025-09-15 00:41:06 +08:00
MistEO
31761d7e5d ci: refactor res_updater cmake (#14106)
* ci: refactor res_updater cmake

* ci: remove ResourceUpdater from main cmake

* ci: typos

* build: remove boost

* ci: fix deps and cmake config

* ci: add zsh script

* chore: fix res_updater

* chore: use -Wno-error for res_updater

* fix: perms for version.zsh

* fix: gitignore

* fix: script

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-09-14 18:33:40 +02:00
github-actions[bot]
c881362cb1 docs: Auto Update Changelogs of v5.25.0-beta.1 (#14101)
* docs: Auto Generate Changelog of Release v5.25.0-beta.1

* docs: Update CHANGELOG with recent changes and fixes

* docs: Update button click behavior in battle list settings

* docs: Update CHANGELOG with recent changes and fixes

* docs: changelog

* docs: Update CHANGELOG with recent changes and fixes

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
2025-09-15 00:32:40 +08:00
uye
00e5c1eb9f chore: 自定义基建配置时间仍在有效期内时不检查其他时间段 2025-09-15 00:26:33 +08:00
Constrat
7e3ab62aae fix: typo 2025-09-14 17:56:32 +02:00
Constrat
b0713bb9df Merge branch 'dev' of https://github.com/MaaAssistantArknights/MaaAssistantArknights into dev 2025-09-14 17:55:19 +02:00
Constrat
42343f8978 fix: type number for nightly ota 2025-09-14 17:55:12 +02:00
MistEO
e9383a7783 build: do not auto gen version for local build 2025-09-14 23:28:08 +08:00
status102
e0ee76115b feat: CustomTask增加任务存在检测 2025-09-14 21:45:43 +08:00
Constrat
d6bf677bb1 ci: add caching for macos maadeps 2025-09-14 14:32:51 +02:00
MistEO
746816c6c7 ci: try macos for smoke_test (#14104)
* ci: try macos for smoke_test

* ci: Remove concurrency from smoke-testing workflow

* ci: use ninjga build for macos testing

* ci: add trigger

* ci: fix macos parallel

* ci: update bash

* fix: zsh script

* fix: perms

* fix: zsh script regular array

* ci: add resource link for cache hit

* test: enable dev for testing

* test: revert test

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-09-14 14:22:15 +02:00
nekosu
4d74abfd8f feat: custom clang (#14102)
* feat: custom clang

* fix: version typo

* fix: version typo
2025-09-14 12:35:40 +02:00
萨拉托加
5853354357 chore: 界园萨卡兹肉鸽招募休谟斯优先级 2025-09-14 17:54:08 +08:00
Status102
022ab93c1c ci: 为smoke-testing使用cache时增加resource链接 (#14096)
Co-authored-by: MistEO <mistereo@hotmail.com>
2025-09-14 17:30:30 +08:00
github-actions[bot]
cd8d22d23e chore: Auto Update Game Resources - 2025-09-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17708701640

[skip changelog]
2025-09-14 08:30:48 +00:00
pre-commit-ci[bot]
da1170ecc9 chore: Auto update by pre-commit hooks [skip changelog] 2025-09-14 08:25:54 +00:00
uye
df46d6bcb0 chore: 更新基建技能效率 2025-09-14 16:20:15 +08:00
Litwak913
bf27a7fc86 fix: 修复 cmake copy_and_add_rpath_library 的失败逻辑 (#14097) 2025-09-14 06:39:06 +08:00
Constrat
482f21620e chore: remove -DINSTALL_RESOURCES 2025-09-13 18:01:40 +02:00
uye
1472d80c12 fix: 刷开局奖励只选票券时行为异常
fix #14079
2025-09-13 21:12:09 +08:00
Constrat
5bfc5fce9f fix: smoke testing upload logs 2025-09-13 15:05:52 +02:00
Constrat
dcd2d52a5a fix: move smoke testing working dir 2025-09-13 14:55:15 +02:00
uye
2c87975e52 feat: core 崩溃后下次启动时 ui 输出提示 (#14022)
* feat: core 崩溃后下次启动时 ui 输出提示

* style: space

* chore: ubuntu warning

* i18n: zh-tw

---------

Co-authored-by: momomochi987 <as99us301@gmail.com>
2025-09-13 20:28:56 +08:00
status102
e3245a4163 feat(wpf): allow single copilot task execution
有人炸就派uuu @ABA2396
2025-09-13 20:02:58 +08:00
status102
43ea1f94df perf(wpf): wpf自动战斗列表中作业设置按钮左键单击还原为解析指定作业,新增行为修改至右键,解析作业并关闭列表 2025-09-13 19:57:37 +08:00
status102
1077b08c19 fix: 自动编队缺少干员输出的额外换行 2025-09-13 19:53:18 +08:00
status102
d02393f174 fix(core): Copilot多任务编队时编队设置残留 2025-09-13 19:35:52 +08:00
uye
bc59477b24 fix: 自定义基建换班的班次不会随时间切换
fix #14092
2025-09-13 16:03:53 +08:00
uye
e4cb99c0c0 fix: "统一 WpfGui 工作目录"后,配置为外服无法运行 MAA
fix #14090
2025-09-13 15:42:39 +08:00
Status102
e65219efc5 fix: 移除 debug_demo (原Sample) 的对应 resource 额外查找逻辑 (#14081)
* rft: resource链接生成移动至cmake

* fix: smoke

* fix: smoke

* fix: smoke

* chore: 干脆移除掉好了

* chore: remove blank line

* fix: 移除多余链接创建

* perf: use DINSTALL_RESOURCE

* build: 整理cmake util函数

* chore: wpf link resource由cmake进行

* Revert "chore: wpf link resource由cmake进行"

This reverts commit 0e973734e7.

---------

Co-authored-by: MistEO <mistereo@hotmail.com>
2025-09-13 12:24:22 +08:00
uye
8bffeaa368 chore: 调整 y 存图时间间隔 2025-09-13 12:01:17 +08:00
uye
b017e90b6b feat: 给自定义任务添加 ScreenshotTaskPlugin 插件 2025-09-13 11:16:03 +08:00
MistEO
36da60ed9d fix: 统一 WpfGui 工作目录 (#14072)
* fix: 统一WpfGui工作目录

* chore: 漏了的cache目录

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 多了一层相对目录

* feat: wpf 创建软连接

* feat: 添加 PathsHelper,提取通用地址

* feat: 提取通用目录

* fix: Combine

* fix: 重构依赖后 MaaWpfGui 的 resource 路径丢失 (#14077)

fix: mklink

* chore: 删除弹窗

* chore: 自定义基建使用绝对路径

* perf: 简化命名

* fix: 遗漏的issue rp

* fix: 基建

* perf: config.new

* feat: 去除本地作业前缀

* chore: 怎么改名了

* rft: rename

添加一个Dir后缀, 直接using static

* fix: remove不再使用的../../../resrouce

* perf: 短点

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
2025-09-12 21:25:33 +08:00
uye
a71eb71eff fix: 逻辑写错了!
[skip changelog]
2025-09-12 19:04:21 +08:00
uye
283329f8ea chore: 调整定时器触发逻辑
fix #14083
2025-09-12 18:51:17 +08:00
Constrat
01eed2a376 ci: reduce building scope for resource updater + rm llvm.sh (#14084)
* test: pre target / component

* test: temp disable cache

* fix: add libcxx

* ci: remove llvm.sh after execution

* test: reconfigure cache
2025-09-12 12:46:26 +02:00
uye
a13212ea6e chore: 调整未检测到模拟器的输出 2025-09-12 17:21:23 +08:00
status102
cb31aa0dbd feat(wpf): 战斗列表点击作业时自动关闭列表, 原逻辑迁移至鼠标右键 2025-09-12 13:30:50 +08:00
nekosu
61265768e5 fix: add component for install libcxx only 2025-09-12 11:54:09 +08:00
Status102
85975d642c fix: 重构依赖后 MaaWpfGui 的 resource 路径丢失 (#14077)
fix: mklink
2025-09-12 00:55:40 +08:00
status102
8d5806b9e1 chore: gitignore
lnk for sln or other
2025-09-12 00:44:13 +08:00
Constrat
5b32c3a985 chore: where and how did this come from? 2025-09-11 18:22:00 +02:00
github-actions[bot]
4dc488229d chore: Auto Update Game Resources - 2025-09-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17650477221

[skip changelog]
2025-09-11 16:18:07 +00:00
Constrat
f021c66fa5 feat: convert ResourceUpdater to ubuntu-latest (#14076)
* feat: convert workflow to ubuntu-latest

* fix: missing toolchain

* fix: remove component specification

* fix: apparently I didn't push the deps changes

* fix: apparently I didn't push the cache changes

* fix: build everything

* chore: delete llvm

* fix: version.sh missing indentation

* fix: missing bash
2025-09-11 17:53:56 +02:00
github-actions[bot]
1bc06de043 chore: Auto Update Game Resources - 2025-09-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17644090943

[skip changelog]
2025-09-11 12:14:14 +00:00
Constrat
e278577435 chore: tweak workflow + remove .sln (#14074)
---------

Co-authored-by: nekosu <liao.hy@outlook.com>
2025-09-11 14:11:45 +02:00
Constrat
9911d82dce style: fix prettier 2025-09-11 13:49:32 +02:00
github-actions[bot]
ebcb4c561b chore: Auto Update Game Resources - 2025-09-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17642666189

[skip changelog]
2025-09-11 11:11:33 +00:00
Constrat
29c2f8f44e ci: temporarily revert changes to ResourceUpdater to allow caching exe 2025-09-11 13:09:07 +02:00
uye
d239cbad5c feat: 添加基建计划 ToolTip 提示 2025-09-11 16:40:05 +08:00
uye
5a25cf70a9 chore: 按时间切换基建配置不在任务运行中或任务开始前切换
fix #14060
2025-09-11 15:41:12 +08:00
uye
7144821351 style: 格式化 2025-09-11 15:28:51 +08:00
uye
68ff234848 chore: 调整刷新助战日志 2025-09-11 15:15:55 +08:00
uye
98e16bd915 chore: 调整界面颜色 2025-09-11 15:12:50 +08:00
uye
108979ef5f fix: 停止中或者空闲状态不允许点击停止按钮 2025-09-11 14:55:46 +08:00
萨拉托加
e42b1dde8f chore: 肉鸽丰川祥子招募策略 (#14035)
* chore: 肉鸽丰川祥子招募策略

* chore: 调整近卫招募策略
2025-09-11 14:45:03 +08:00
uye
ee8ceba005 fix: 鲍勃杂货店拥有四叶草化石且无抗干扰值时卡住
fix #14052
2025-09-11 14:44:20 +08:00
uye
1792dae76e perf: 优化更新设置中的徽标显示和逻辑 2025-09-11 14:19:00 +08:00
nekosu
7ac3851c71 ci: fix resource updater ignoring problem 2025-09-11 14:17:35 +08:00
github-actions[bot]
23acf4735a chore: Auto Update Game Resources - 2025-09-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17634608287

[skip changelog]
2025-09-11 05:09:14 +00:00
nekosu
1aaf852a80 ci: update resource updater pipeline
#14045
2025-09-11 12:50:20 +08:00
HY
c093cdeac8 chore: 繁中服「大荒」介面主題 (#14064)
* chore: 繁中服「大荒」介面主題

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-11 12:35:44 +08:00
nekosu
cc36807ec9 feat: support build resource updater
#14045
2025-09-11 12:09:33 +08:00
Constrat
ebbc9620d9 chore: remove ninja from ci.yml 2025-09-10 19:08:17 +02:00
Constrat
36e744dabf chore: restore older cache utilization for ci.yml (#14068)
* test: test cache speed

* chore: restore older cache utilization

* chore: rft
2025-09-10 19:05:58 +02:00
Constrat
5aa8f43d42 fix: prevent caching in non-dev branches 2025-09-10 17:54:09 +02:00
Constrat
54593075c3 ci: unify bootstrap step for ci.yml 2025-09-10 17:08:46 +02:00
Constrat
a3ad69e189 ci(perf): reimplement caching for smoke testing (linux version) 2025-09-10 17:07:00 +02:00
uye
71b2ce80a5 feat: 添加信息获取失败时的提示 2025-09-10 22:57:19 +08:00
Weiyou Wang
8d5459d7d2 refactor: 维护信用作战相关功能及其文档 (#14013)
* refactor: 维护信用作战相关功能及其文档

* docs: i18n

* docs: 格式美化

* fix: 我错了我错了

* fix: 怎么顺序也有关系啊

* docs: 编队 -> 编队栏围的编号; 分队->编队

* docs: hyphen -> en dash

* fix: 修复旧参数警告
2025-09-10 22:56:33 +08:00
Constrat
f74296a01a perf: remove resource from smoke testing
use the default location, do not duplicate
2025-09-10 16:54:21 +02:00
Constrat
139e79655d ci: split web and workflow codeql (#14067) 2025-09-10 16:25:55 +02:00
Constrat
694d78be1c ci(perf): update smoke testing to ubuntu runner (#14066)
* ci: update smoke testing to ubuntu runner

* fix: missing perms
2025-09-10 16:15:59 +02:00
nekosu
08562dc4e9 chore: update interface.json 2025-09-10 21:01:59 +08:00
Constrat
1acbcd493c perf: add --parallel to cmake workflows 2025-09-10 13:45:25 +02:00
Constrat
69fdf39f09 fix: stuck on max trust EN 2025-09-10 13:35:41 +02:00
nekosu
c94d2d55d7 fix: pthread linking problem
# 14045
2025-09-10 19:29:12 +08:00
MistEO
09bf0268ac ci: fix remove .h files 2025-09-10 15:24:42 +08:00
MistEO
a92f5eb354 ci: fix core version 2025-09-10 14:36:26 +08:00
nekosu
54031c5858 doc: update linux tutorial (en) 2025-09-10 11:55:22 +08:00
Constrat
51529ad257 i18n: EN 2025-09-09 15:35:09 +02:00
github-actions[bot]
14120ecc2b chore: Auto Update Game Resources - 2025-09-09
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17582157721

[skip changelog]
2025-09-09 12:13:01 +00:00
github-actions[bot]
01a36cf0be chore: Auto Templates Optimization
Triggered by c0da8956f8

[skip changelog]
2025-09-09 11:52:56 +00:00
uye
c0da8956f8 fix: 无法收取太鼓达人联动主题会客室信息板信用
fix #14007
2025-09-09 19:44:50 +08:00
uye
9ac783219d fix: cdk 过期时间超过 2038 年会爆炸(但 10000 年还是会爆炸 2025-09-09 18:59:37 +08:00
uye
950522fda0 feat: CDK 倒计时显示 2025-09-09 17:53:46 +08:00
MistEO
5a7030ad50 fix: nightly package zip 2025-09-09 17:08:21 +08:00
MistEO
907324370a ci: fix nightly build (#14050) 2025-09-09 17:05:22 +08:00
MistEO
03f6657244 fix: global resource path 2025-09-09 16:37:59 +08:00
uye
de60b0d05a feat: 成就设置中的图标颜色可以随着主题色动态更新 2025-09-09 16:14:39 +08:00
uye
37958ab9e5 feat: 添加 CDK 到期时间显示 2025-09-09 16:14:39 +08:00
uye
dab18e1964 feat: 添加 ResourceReferenceHelper,允许绑定 前后景色 key 2025-09-09 16:14:39 +08:00
MistEO
f4b7e39b01 ci: 删除codeql中的build 2025-09-09 13:47:40 +08:00
nekosu
91a0e51142 fix: linux cross compiling (#14048)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-09 13:22:53 +08:00
uye
2bbc7d6546 fix: maa 变成前文明产物了 2025-09-09 09:40:10 +08:00
MistEO
8e7a9e8691 ci: fix nightly, remove zip -d 2025-09-09 02:22:50 +08:00
MistEO
8082c9913b ci: fix nightly release 2025-09-09 01:52:54 +08:00
SherkeyXD
f00e580884 style: 添加换行
fuck pre commit
2025-09-09 01:50:31 +08:00
SherkeyXD
7c1b897caa chore: 更新 markdownlint 规则 2025-09-09 00:52:44 +08:00
dependabot[bot]
d799e8e800 ci: bump the github-actions group across 1 directory with 7 updates (#14041)
* ci: bump the github-actions group across 1 directory with 7 updates

Bumps the github-actions group with 7 updates in the /.github/workflows directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4` | `5` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `4` | `5` |
| [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `2.3.2` | `2.3.3` |
| [actions/github-script](https://github.com/actions/github-script) | `7` | `8` |
| [actions/setup-python](https://github.com/actions/setup-python) | `5` | `6` |
| [actions/stale](https://github.com/actions/stale) | `9` | `10` |
| [actions/setup-node](https://github.com/actions/setup-node) | `4` | `5` |



Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

Updates `actions/download-artifact` from 4 to 5
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

Updates `softprops/action-gh-release` from 2.3.2 to 2.3.3
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/v2.3.2...v2.3.3)

Updates `actions/github-script` from 7 to 8
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)

Updates `actions/setup-python` from 5 to 6
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

Updates `actions/stale` from 9 to 10
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v9...v10)

Updates `actions/setup-node` from 4 to 5
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: softprops/action-gh-release
  dependency-version: 2.3.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>

* ci: fix schema

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-09-08 18:51:43 +02:00
SherkeyXD
b22cfad361 docs: 修复序号问题 2025-09-09 00:48:57 +08:00
MistEO
f67a31224c docs: typo 2025-09-09 00:42:59 +08:00
MistEO
c0a5a9bd46 docs: 更新文档cmake配置 2025-09-09 00:33:15 +08:00
MistEO
74bf88523f docs: 微调文档 2025-09-09 00:31:10 +08:00
MistEO
3372c7c82a chore: 删除一些遗留文件 2025-09-09 00:24:04 +08:00
MistEO
069e159f33 chore: 再糊点注释 2025-09-09 00:22:02 +08:00
MistEO
b6552c19a6 chore: 糊点注释 2025-09-09 00:20:40 +08:00
MistEO
d4a79ba9db fix: 糊一下 debug_demo 资源路径读取 2025-09-09 00:19:53 +08:00
MistEO
523b496daa fix: 修复 wpf gui 一些 resource path 读取
fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/14044
2025-09-09 00:12:15 +08:00
github-actions[bot]
c9337f90f0 chore: Auto Update Game Resources - 2025-09-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17556983279

[skip changelog]
2025-09-08 16:07:51 +00:00
Loong
512bd90433 docs: reapply eebe0a9 (#14036) 2025-09-08 23:48:33 +08:00
MistEO
8f906d159e ci: 再次修复 nightly build 2025-09-08 22:50:57 +08:00
MistEO
6410c3c5a5 ci: 修复 nightly build 2025-09-08 22:49:24 +08:00
MistEO
bb922d8833 ci: 调整test相关宏 2025-09-08 22:46:04 +08:00
MistEO
f65e370620 docs: remove weblate 2025-09-08 22:12:29 +08:00
MistEO
546d4b860a fix: remove opencv highgui again 2025-09-08 21:57:09 +08:00
MistEO
0f29aa369e fix: remove opencv highgui 2025-09-08 21:51:22 +08:00
MistEO
f5d6b6cd8f build: fix ASST_DEBUG macro 2025-09-08 21:44:09 +08:00
MistEO
7b29be6faf chore: remove MaaDeps 2025-09-08 21:33:31 +08:00
MistEO
87e6484cb2 fix: build error of ASST_DEBUG 2025-09-08 21:32:11 +08:00
MistEO
51ab24945b refactor: 依赖大更新 (#13908)
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-08 21:17:47 +08:00
萨拉托加
918a41ac3a fix: 入暂亭特殊选项 2025-09-08 19:02:21 +08:00
Constrat
29b889372a fix: Sami floor detection 3
Thanks again @lin4289 on discord
2025-09-08 12:59:28 +02:00
萨拉托加
77891805d0 fix: 特里蒙旅行社特派团多选项
fix #14026
2025-09-08 18:44:55 +08:00
晓丶梦丶仁
e9206f4244 fix: IS5 同心 2025-09-08 15:54:18 +08:00
Loong
7807577312 chore: bump maa-cli to 0.5.8 (#14032) 2025-09-08 15:30:02 +08:00
晓丶梦丶仁
c4c6297370 fix: EN Roguelike@ChooseOperConfirm (#14033) 2025-09-08 15:21:43 +08:00
uye
8a5c3029c4 fix: 选择技能时可能会点出描述文字
fix #14030
2025-09-08 00:43:25 +08:00
github-actions[bot]
92631c999c chore: Auto Update Game Resources - 2025-09-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17530208991

[skip changelog]
2025-09-07 15:07:03 +00:00
Constrat
e48049f198 fix: Sami floor detection 2
Thanks again @lin4289 on discord
2025-09-07 16:47:36 +02:00
Weiyou Wang
407b140bca refactor: BrightPointAnalyzer -> PixelAnalyzer (#13915)
* feat: different filters for BrightPointAnalyzer

* refactor: rename BrightPointAnalyzer to PixelAnalyzer

* fix: 草忘了重命名文件了
2025-09-07 20:07:33 +08:00
uye
0e865982c6 fix: 基建使用队列轮换时如果未勾选对应设施则不进入
fix #14019
2025-09-07 16:53:55 +08:00
uye
1d62c972b7 fix: 重构后无法使用刷开局刷仅精二 2025-09-07 16:32:21 +08:00
github-actions[bot]
890fce3567 chore: Auto Templates Optimization
Triggered by cc0b229cdf

[skip changelog]
2025-09-07 07:22:48 +00:00
uye
cc0b229cdf fix: 部分背景下 mujica 主题无法进入对应功能
fix #14016
2025-09-07 15:22:21 +08:00
uye
bcd0ed5711 fix: 萨米肉鸽刷源石锭可能卡在预见的密文板
fix #14015
2025-09-07 14:54:41 +08:00
uye
29a34766e7 chore: 管理员权限启动额外判断是否开启 UAC 2025-09-07 13:48:59 +08:00
github-actions[bot]
ada54eef32 chore: Auto Update Game Resources - 2025-09-06
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17520467055

[skip changelog]
2025-09-06 22:44:21 +00:00
Constrat
dc0e63f83e fix: Sami floor detection
Thanks @lin4289 on discord
2025-09-07 00:27:58 +02:00
Weiyou Wang
ffbb3ed798 fix: 允许生息演算任务反复点击存档位置直到画面改变 (#14005) 2025-09-06 13:58:30 +08:00
不留
8e9a408997 refactor: mujika -> mujica (#14000)
rft: mujika -> mujica
2025-09-05 23:07:46 +08:00
萨拉托加
3bf9a67d56 fix: 肉鸽助战无法刷新 2025-09-05 22:40:54 +08:00
uye
c3a35b6df5 perf: 优化干员识别动画显示效果 2025-09-05 20:28:17 +08:00
uye
241b5c0047 Release v5.24.2 (#13989) 2025-09-05 16:27:50 +08:00
Hao Guan
4895a37278 chore(mac): 无人机&关卡提示 2025-09-05 15:59:55 +08:00
uye
d7ed013825 docs: Update CHANGELOG for version 5.24.2
Updated version number to v5.24.2 and added special notices regarding stage naming conventions. Included new features, improvements, fixes, and other changes.
2025-09-05 15:22:49 +08:00
uye
981f71f024 chore: 关卡小提示改用 Value 2025-09-05 15:17:23 +08:00
uye
7e6216d573 perf: 优化关卡验证逻辑,避免导入错误类型关卡时直接崩溃 2025-09-05 14:28:16 +08:00
uye
b81e49636d fix: 肉鸽因模拟器卡顿偶现无法退出商店
fix #13982
2025-09-05 11:00:52 +08:00
status102
f17c4bfd37 fix: 信用任务无法刷OF-1 2025-09-05 10:58:20 +08:00
github-actions[bot]
cfe40ad57b chore: Auto Update Game Resources - 2025-09-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17471326033

[skip changelog]
2025-09-04 17:06:50 +00:00
Windsland52
343e7831da fix: 给 MiniGame@ALL@GreenGrass@DuelChannel@End 加点延迟 (#13968) 2025-09-05 00:18:43 +08:00
uye
a50f7a0c90 chore: 调整日志输出格式 2025-09-05 00:00:25 +08:00
github-actions[bot]
58acb92740 chore: Auto Update Game Resources - 2025-09-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17467691092

[skip changelog]
2025-09-04 14:46:04 +00:00
不留
b26d656d94 feat: 适配 命运(AveMujica) 主题 (#13970) 2025-09-04 21:56:34 +08:00
萨拉托加
7fed3d1e36 fix: 八幡海铃识别错误 2025-09-04 21:39:46 +08:00
uye
550386bb63 chore: 悖论模拟选技能改用固定位置,避免透明背景影响 2025-09-04 20:20:50 +08:00
uye
09638b2c4e fix: 选技能可能会点到技能范围 2025-09-04 17:20:51 +08:00
SherkeyXD
06265f99c5 feat: SideStory「无忧梦呓」导航 (#13969) 2025-09-04 17:14:33 +08:00
github-actions[bot]
12ef622ff3 chore: Auto Update Game Resources - 2025-09-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17457528502

[skip changelog]
2025-09-04 08:09:34 +00:00
github-actions[bot]
4219064117 chore: Auto Update Game Resources - 2025-09-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17456122106

[skip changelog]
2025-09-04 07:07:29 +00:00
github-actions[bot]
83343de32b chore: Auto Update Game Resources - 2025-09-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17453588679

[skip changelog]
2025-09-04 04:45:42 +00:00
github-actions[bot]
6e3230b508 chore: Auto Update Game Resources - 2025-09-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17453012021

[skip changelog]
2025-09-04 04:08:47 +00:00
github-actions[bot]
bec3394521 chore: Auto Templates Optimization
Triggered by 9749c858f7

[skip changelog]
2025-09-04 02:34:18 +00:00
github-actions[bot]
9749c858f7 chore: Auto Update Game Resources - 2025-09-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17451555281

[skip changelog]
2025-09-04 02:33:49 +00:00
github-actions[bot]
4d14212f15 chore: Auto Update Game Resources - 2025-09-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17444811350

[skip changelog]
2025-09-03 20:08:07 +00:00
uye
a8d6068e87 feat: 勾选 「下次公告更新前不再显示」 勾选框时不需要滚到底才能关闭公告 2025-09-04 01:29:53 +08:00
uye
f4d89ea93c Release v5.24.1 (#13964) 2025-09-04 00:59:17 +08:00
uye
08c32c6f15 docs: Release notes for version 5.24.1 2025-09-04 00:55:45 +08:00
不留
3293ce5beb feat: 适配 悬想(界园肉鸽) 主题 (#13948)
* feat: 适配界园肉鸽主题

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: DepotEnter.png

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: DepotEnter.png

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-04 00:47:03 +08:00
uye
390cfc38a0 feat: 悖论通关后自动取消勾选,遇到战斗失败的关卡时停止 (#13963)
* feat: 悖论通关后自动取消勾选

* fix: CopilotTask 一个个加
2025-09-04 00:44:40 +08:00
github-actions[bot]
b23e63e352 chore: Auto Update Game Resources - 2025-09-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17433572057

[skip changelog]
2025-09-03 12:34:27 +00:00
HY
7deaf65c06 fix: 繁中服薩米肉鴿第五層名稱 (#13961)
* fix: 繁中服薩米肉鴿第五層名稱

* chore: 再改一點....再改一點
2025-09-03 14:15:57 +02:00
uye
25b1c73659 refactor: 将 「掉线时自动重连」 从 「运行设置」 移到 「刷理智设置」 中 2025-09-03 20:15:30 +08:00
uye
6a58723398 refactor: 将 「自动肉鸽在战斗结束前延迟停止动作」 从 「运行设置」 移到 「肉鸽设置」 中 2025-09-03 20:07:19 +08:00
Lucien Shaw
94ecbe2cb5 docs: 修正文档中的部分错误 (#13923)
* docs: 替换英文连接设置文档中的一条外部文档链接

将文档中的一条外部文档链接替换为对应的英文文档链接

* docs: 更正中文常见问题文档中的一处别字

将“登陆”改为“登录”,与繁体中文和英文版本保持一致

* docs: 更新三种语言文档中有关WSA的提示信息

更正简体中文、繁体中文和英文语言文档中有关WSA的提示信息

* docs: ko-kr

* docs: 替换日文连接设置文档中的一条外部文档链接

将文档中的BlueStacks相关外部文档链接替换为对应的日文文档链接

* docs: 更新所有语言的连接设置文档中有关WSA的提示部分

所有语言使用统一名称`Windows Subsystem for Android™ (WSA)`
更新了日语文档中的停止支持提示内容

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-09-03 09:35:18 +08:00
HY
8b6c5e3011 chore: 繁中服「視相」主題介面 (#13947)
* chore: 繁中服「視相」主題介面

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-09-03 00:26:52 +08:00
不留
041c03d9be ci: 优化 optimize-templates 在 fork 仓库下的流程 (#13949)
Update optimize-templates.yml
2025-09-03 00:26:13 +08:00
github-actions[bot]
a1fe1ad099 chore: Auto Update Game Resources - 2025-09-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17405569167

[skip changelog]
2025-09-02 13:47:34 +00:00
HY
47f3a33167 chore: 繁中服「銀心湖列車」復刻活動導航 (#13945) 2025-09-02 15:34:39 +02:00
Constrat
5ff283cd18 fix: EN not picking up Trade Orders 2025-09-02 13:35:20 +02:00
github-actions[bot]
c8dee82a3b chore: Auto Update Game Resources - 2025-09-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17397385457

[skip changelog]
2025-09-02 08:10:53 +00:00
github-actions[bot]
5245bd6fbc chore: Auto Templates Optimization
Triggered by bfb5deca88

[skip changelog]
2025-09-01 22:51:45 +00:00
Constrat
bfb5deca88 fix: IS5 EN StageRefresh not working, updated template 2025-09-02 00:51:20 +02:00
status102
2bfd2257b4 fix: 自动编队后续追加自定干员失败 2025-09-02 00:57:11 +08:00
uye
7b36d43e5e fix: 错误的关卡名可能导致验证崩溃 2025-09-01 17:36:24 +08:00
uye
3943189550 fix: 公告重复点击时不会前置窗口 2025-09-01 13:45:48 +08:00
uye
f7eeffba9b chore: 调整公告日志记录 2025-09-01 12:56:29 +08:00
uye
27830218bc chore: 提取 isBuildOutputFolder 2025-08-31 23:35:40 +08:00
github-actions[bot]
79e32af4eb chore: Auto Templates Optimization
Triggered by 9d8dbe80cc

[skip changelog]
2025-08-31 15:08:30 +00:00
Constrat
9d8dbe80cc fix: IS2 and IS3 not starting for EN 2025-08-31 17:08:09 +02:00
Manicsteiner
0056a50a8e chore: JP ocr fix (#13938) 2025-08-31 16:58:46 +02:00
uye
0b22410351 chore: 编译目录下不检查 dll 2025-08-31 22:46:53 +08:00
uye
9d0df414c9 fix: 战斗列表无法进入 1/2 星干员悖论 2025-08-31 13:42:40 +08:00
uye
2cac439e5f fix: 悖论模拟战斗列表页尾干员错位 2025-08-31 13:42:40 +08:00
Status102
4a9e8f5d1e refactor(wpf): 长草任务运行状态 (#13928)
* rft(wpf): 长草任务运行状态

移除战斗任务及基建任务独立运行状态, link to #12315

* perf: remove debug log

* perf: remove debug log
2025-08-31 11:13:54 +08:00
Constrat
556d1bda73 i18n: EN 2025-08-30 17:44:48 +02:00
uye
b7681becd3 chore: 简化 Split 2025-08-30 23:21:51 +08:00
uye
7b169cb441 perf: 日志记录增加 ClassName 输出,debug 模式下属性切换新增反引号显示 2025-08-30 23:17:51 +08:00
Constrat
aca317e67e fix: update Infrast templates for EN 2025-08-30 17:03:01 +02:00
Manicsteiner
f9e0ef32bc i18n: JP 2025-08-30 23:00:33 +08:00
status102
46216817c4 chore: 漏了( 2025-08-30 22:32:05 +08:00
uye
1cc3268f70 perf: 优化 Copilot 列表验证逻辑,提高性能 2025-08-30 22:29:35 +08:00
status102
f45d051b79 rft: OperatorType -> OperatorRole 2025-08-30 22:22:39 +08:00
status102
b72a3569bf fix: wpf空作业列表点开始 2025-08-30 22:14:27 +08:00
uye
e1f766e23f Release v5.24.0 (#13916) 2025-08-30 17:07:33 +08:00
github-actions[bot]
2add7f1173 docs: Auto Update Changelogs of v5.24.0 (#13917)
* docs: Auto Generate Changelog of Release v5.24.0

* docs: Update CHANGELOG with recent changes and fixes

* docs: Update CHANGELOG for v5.24.0 enhancements

更新了 v5.24.0 的功能进化,包括一键悖论模拟、支持新内容和其他优化。

* feat: 更新 CHANGELOG.md

* feat: Update CHANGELOG.md

* feat: Update CHANGELOG.md

* feat: Update CHANGELOG.md

* feat: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
2025-08-30 17:07:10 +08:00
AnnAngela
198f81812a chore: Update localization strings for Mini Game section 2025-08-30 16:06:28 +08:00
Lucien Shaw
fc711c9dbd ci: 更正了生成changelog工作流中debug信息的一处错误 (#13926)
ci: 更正了生成changelog工作流中debug信息的一处笔误

将Target RP更正为Target PR
2025-08-30 11:50:43 +08:00
uye
fb52a07353 style: 空格
[skip changelog]
2025-08-30 10:55:28 +08:00
soundofautumn
ca44b82acd chore: 整合枚举类 OperProfession 和 Role (#13914)
* chore: 整合枚举类OperProfession和Role

* fix: 加载数据时报错
2025-08-30 10:53:57 +08:00
pre-commit-ci[bot]
53b22fe6b9 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-30 02:50:20 +00:00
uye
062f7480d7 feat: 悖论模拟战斗列表通过职业找人 2025-08-30 10:47:55 +08:00
pre-commit-ci[bot]
f97f6a2cb3 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-30 01:54:35 +00:00
uye
12de1806f1 feat: 悖论模拟战斗列表支持跳过未拥有的干员 2025-08-30 09:52:12 +08:00
uye
1a374a3129 fix: mac
[skip changelog]
2025-08-30 09:31:32 +08:00
uye
7593ef29a9 fix: 悖论模拟单文件无法使用 2025-08-30 01:36:15 +08:00
uye
ae0da25d36 feat: mac 支持蜜果城 2025-08-30 01:19:20 +08:00
Constrat
3a197c4445 fix: CrownSlayer -> Crownslayer for EN 2025-08-29 16:58:40 +02:00
github-actions[bot]
51a073221b chore: Auto Templates Optimization
Triggered by a267cc5f66

[skip changelog]
2025-08-29 14:31:06 +00:00
Constrat
a267cc5f66 fix: RoguelikeDialogSkip for EN 2025-08-29 16:30:43 +02:00
github-actions[bot]
a6e61f7a6b chore: Auto Update Game Resources - 2025-08-29
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17323442926

[skip changelog]
2025-08-29 12:12:24 +00:00
uye
642c8eefe6 feat: 远程通知添加 [MAA] 前缀
fix #13912
2025-08-29 19:39:28 +08:00
uye
a54433ad8c feat: 战斗列表悖论模拟关卡名转为干员名 2025-08-29 18:54:13 +08:00
uye
af68bf918b fix: 关卡名下划线被解释成 CheckBox 访问键 2025-08-29 18:50:11 +08:00
uye
ad2945a815 feat: 调整战斗列表提示描述 2025-08-29 11:09:14 +08:00
Constrat
64e0c4ac3c fix: BattleQuickFormationExpandRole text ocr 2025-08-29 02:22:27 +02:00
Constrat
3d88182c44 fix: OfficeMini template for EN 2025-08-29 01:50:18 +02:00
Constrat
3a12869b7e fix: OfficeMini template for EN 2025-08-29 01:49:52 +02:00
github-actions[bot]
433e8d910f chore: Auto Update Game Resources - 2025-08-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17310328154

[skip changelog]
2025-08-28 23:27:12 +00:00
Constrat
b789183f6d chore: YostarEN updated main stage navigation (#13906)
* chore: remove unused roguelike@integratedstrategies

* chore: remove unused StageTheme and Resource

* chore: PLACEHOLDER for clickchapter

* chore: minus placeholder + ocr fixes

* chore: continue

* chore: final placeholder

* fix: custom ROI for default and movements
2025-08-29 01:19:43 +02:00
github-actions[bot]
887574aa6e chore: Auto Templates Optimization
Triggered by 5676a2df3b

[skip changelog]
2025-08-28 22:55:34 +00:00
Constrat
5676a2df3b fix: ROI and text for EA YostarEN 2025-08-29 00:55:13 +02:00
Constrat
36536d9a13 fix: YostarEN text render template changes 2025-08-29 00:55:03 +02:00
uye
63fd4ca0d8 perf: 覆盖 ThirdlyTextBrush,优化深色模式下的显示效果 2025-08-29 00:49:49 +08:00
Constrat
b1a2999c15 i18n: Give new line for English downloading from 2025-08-28 18:41:00 +02:00
uye
6770ec19c8 feat: 加个启动提醒 2025-08-28 23:56:11 +08:00
Manicsteiner
2086377f48 chore: YostarJP remove old navigation (#13905) 2025-08-28 23:32:22 +08:00
uye
d282b5b999 Release v5.24.0-beta.1 (#13866) 2025-08-28 23:00:43 +08:00
github-actions[bot]
fac1f265d7 docs: Auto Update Changelogs of v5.24.0-beta.1 (#13901)
* docs: Auto Generate Changelog of Release v5.24.0-beta.1

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
2025-08-28 23:00:00 +08:00
HX3N
5376157f69 chore: YostarKR new main stage navigation and ocr fix (#13903)
* chore: remove task and add ocr

* chore: ocr fix

* chore: Store@Purchase
2025-08-28 16:29:01 +02:00
Manicsteiner
7e3a133066 chore: YostarJP new main stage navigation and ocr fix (#13902) 2025-08-28 14:12:22 +02:00
github-actions[bot]
05e3933115 chore: Auto Update Game Resources - 2025-08-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17294386616

[skip changelog]
2025-08-28 11:26:45 +00:00
status102
8ee7f31887 rft(wpf): 悖论模拟使用多任务流程 2025-08-28 18:40:21 +08:00
status102
44dd7c5501 perf: 任务baseTask 2025-08-28 18:25:28 +08:00
status102
aa21512ab9 rft: remove ParadoxMode var 2025-08-28 18:10:57 +08:00
status102
714e37ded2 rft(core): 移除MaaCore不再支持的自动战斗作业代码解析 2025-08-28 18:07:36 +08:00
status102
f5aee4f3fb docs: 注释
[skip changelog]
2025-08-28 18:04:18 +08:00
status102
c10df90fbf fix: var type 2025-08-28 18:01:46 +08:00
uye
79e311185a style: 什么奇怪的换行 2025-08-28 17:59:14 +08:00
uye
016783c86c chore: 删掉 core 的联网功能 2025-08-28 17:56:51 +08:00
uye
770130e774 chore: dll 检测排除带 maa 的 dll 2025-08-28 17:52:13 +08:00
Rbqwow
363aa99b83 feat: 在启动时检测额外的DLL文件 (#13850)
* feat: 在启动时检测额外的DLL文件

* chore: 改一下弹窗样式

* chore: 修改检测逻辑与翻译

* chore: 显示一下不属于 maa 的 dll

* feat: 启动弹窗都加个图标

* chore: 就要大写就要大写

* chore: MessageBoxHelper

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-28 17:37:25 +08:00
pre-commit-ci[bot]
2710664a79 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-28 09:36:32 +00:00
uye
388b3627cb chore: core 删除 cpr 2025-08-28 17:35:23 +08:00
github-actions[bot]
3359fa618e chore: Auto Templates Optimization
Triggered by 1691f828ff

[skip changelog]
2025-08-28 09:33:13 +00:00
Status102
0c3c3df8f2 feat: 支持一键悖论模拟 (#13893)
* feat: 支持一键悖论模拟 (#13885)

* feat: 支持一键悖论模拟

* chore: OperParadoxBegin EN

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 支持一键悖论模拟

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 支持一键悖论模拟

* fix: 更新悖论模拟按钮位置

* feat: 悖论模拟UI资源添加

* fix: 删除xml中被误添加的文件

* feat: 根据关卡类型显示选项

* i18n: 标签翻译

* feat: 修改小提示

* i18n: EN

* chore: zh-tw

* i18n: KR

* i18n: KR 2

Long text breaks the UI :(

* i18n: SSS -> SSS

* feat: 多行 TabControl

* chore: 调整布局

* i18n: JP

* perf: 优化返回流程

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 删掉 core 的联网功能

---------

Co-authored-by: 翔宇 战 <1361227324@qq.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: _Burnside <33724737+Burnside999@users.noreply.github.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>

* fix: 新战斗导航下的悖论模拟

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: 翔宇 战 <1361227324@qq.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: _Burnside <33724737+Burnside999@users.noreply.github.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-08-28 17:32:32 +08:00
uye
1691f828ff feat: 争锋频道:蜜果城 2025-08-28 17:32:14 +08:00
github-actions[bot]
1fed8feed0 chore: Auto Update Game Resources - 2025-08-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17291732401

[skip changelog]
2025-08-28 09:29:35 +00:00
github-actions[bot]
351ce45a52 chore: Auto Update Game Resources - 2025-08-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17291207437

[skip changelog]
2025-08-28 09:09:22 +00:00
HX3N
c56e81e8be fix: YostarKR EA navigation 2025-08-28 18:07:56 +09:00
uye
c3bcb3105c fix: 勾八导航乱写 2025-08-28 17:06:06 +08:00
github-actions[bot]
0bf9379d35 chore: Auto Update Game Resources - 2025-08-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17284296625

[skip changelog]
2025-08-28 02:49:02 +00:00
dantmnf
a3dba0b54a style: 狗屎自动分词💩 (#13897)
Co-authored-by: dantmnf <dantmnf@users.noreply.github.com>
2025-08-28 01:00:56 +08:00
Manicsteiner
a5dcfd9100 chore: YostarJP EA navigation 2025-08-27 09:39:14 +08:00
Constrat
5f1159b2d6 chore: YostarEN EA navigation 2025-08-27 00:08:01 +02:00
HX3N
9c6df33d77 chore: YostarKR EA navigation (#13888) 2025-08-27 01:00:11 +08:00
soundofautumn
2b7894886f i18n: 自动战斗模组错误本地化 & 移除多余的行末空格 (#13800)
* i18n: 自动战斗模组错误本地化

* i18n: EN

* i18n: 忘记给en-us加了

* i18n: KR tweak translation

* chore: 统一换行符

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-08-26 23:52:45 +08:00
status102
7ce19904c0 fix(wpf): 自动战斗界面Idle setter限制 2025-08-26 23:25:57 +08:00
status102
5b2b2b7fe8 fix: 自动战斗-战斗列表使用错误的作业战斗 2025-08-26 23:25:34 +08:00
github-actions[bot]
385c26b065 chore: Auto Update Game Resources - 2025-08-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17232989951

[skip changelog]
2025-08-26 08:49:37 +00:00
github-actions[bot]
9d60945af9 chore: Auto Update Game Resources - 2025-08-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17232079660

[skip changelog]
2025-08-26 08:11:58 +00:00
uye
8f1dbb64c3 fix: filters 2025-08-26 15:09:46 +08:00
uye
1ca9c3823b chore: 调整小游戏内容顺序 2025-08-26 11:05:20 +08:00
uye
27b0ddaf2f chore: 修改 RA 和肉鸽的进入终端等待时间
fix #13858
2025-08-26 10:43:57 +08:00
uye
ec4a86fab2 fix: 信用购物有时候点不掉危机合约支援界面 2025-08-26 09:28:05 +08:00
萨拉托加
86fbd1061b chore: 调整萨卡兹,界园的古米精二优先度 2025-08-25 17:58:44 +08:00
github-actions[bot]
8aada79ef5 chore: Auto Update Game Resources - 2025-08-24
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17193202533

[skip changelog]
2025-08-24 20:07:42 +00:00
Status102
b150c0d97b rft: 重构自动战斗战斗列表 (#13852)
* rft(core): 重构多作业自动战斗

* rft(wpf): wpf支持新任务参数

* perf: 移除不必要move

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 任务计数

* fix: 战斗完成提示

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-24 22:51:08 +08:00
uye
3b5ef33daa chore: 修改备份文件写入时间 2025-08-24 22:33:15 +08:00
uye
e9f9e5a6b3 chore: 关机/休眠/睡眠 统一调用 PowerManagement 2025-08-24 20:12:35 +08:00
uye
c7cc4fe836 chore: 调整 GetModuleFileName 判断 2025-08-24 20:11:59 +08:00
uye
d6822fed31 chore: 更新 CsWin32 2025-08-24 20:11:07 +08:00
uye
c6e5fd43cb chore: luid 2025-08-24 19:05:01 +08:00
uye
a8164506d9 chore: 移除未使用的 container 2025-08-24 18:28:24 +08:00
uye
83ef927474 fix: ServerChan 未使用通用 httpService 2025-08-24 17:23:03 +08:00
uye
798db61999 refactor: ToastNotification 重构 2025-08-24 17:08:58 +08:00
uye
ade3e7963a style: GpuOption format 2025-08-24 14:52:59 +08:00
uye
9f899dd96e style: 统一 UI 绑定的方法 注释 2025-08-24 12:28:07 +08:00
uye
39f45e623a chore: A single-line comment within C# code is not preceded by a blank line. 2025-08-24 12:25:44 +08:00
uye
39ba4e91f5 chore: A C# partial element is missing a documentation header. 2025-08-24 12:21:47 +08:00
uye
25878b5380 chore: An item within a C# enumeration is missing an Xml documentation header. 2025-08-24 12:16:12 +08:00
uye
b62dea6a19 chore: A C# method, constructor, delegate or indexer element is missing documentation for one or more of its parameters. 2025-08-24 11:54:28 +08:00
uye
6cf7272aff chore: The XML header documentation for a C# element is missing a tag. 2025-08-24 11:53:28 +08:00
uye
2c5568d4f8 chore: Copyright 2025 2025-08-24 11:27:12 +08:00
uye
46beb3308e chore: mumu 使用 7555 端口时禁用 Index 检测,添加日志警告 2025-08-24 10:49:06 +08:00
uye
7514438144 fix: 错误清除 _tasksStatus 的时机 2025-08-24 00:28:24 +08:00
status102
39de085354 chore: file header 2025-08-23 15:45:26 +08:00
status102
ad4e32a92b feat(core): 自动战斗关卡结束后增加识别使用黑色返回按钮的检测 2025-08-23 12:27:32 +08:00
github-actions[bot]
114900e815 chore: Auto Update Game Resources - 2025-08-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17164905456

[skip changelog]
2025-08-22 20:08:26 +00:00
status102
6db11fa846 rft: 自动编队助战的确实干员读取 2025-08-22 22:32:44 +08:00
uye
c14225f54f chore: 加点肉鸽事件 fallback 前延迟,可能减轻点网络波动影响
fix #13848
fix #13784
2025-08-22 19:32:48 +08:00
uye
62b7b0c645 fix: 肉鸽入口等待 ocr 识别错误 2025-08-22 19:32:47 +08:00
status102
ee3a95f092 fix: 界园肉鸽商店钱包余额ocr roi 2025-08-22 17:27:17 +08:00
status102
eb370ae792 rft: 自动战斗不再使用need_navigate字段作为导航启用开关, 而是直接使用navigate_name字段 2025-08-22 16:17:48 +08:00
status102
4077100aa8 fix(wpf): 自动战斗-战斗列表突袭提示显示在运行期显示效果 2025-08-22 15:10:59 +08:00
status102
d2ada336e5 perf: 向战斗队列中添加SSS作业时追加错误输出 2025-08-22 13:37:27 +08:00
status102
b58a0c7bde fix: 不再点击停止任务时移除存储的TaskId 2025-08-22 13:37:26 +08:00
HY
ee37851d16 fix: 繁中服薩米肉鴿第四層名稱 (#13846) 2025-08-22 08:39:17 +08:00
status102
71ec401cde fix: 肉鸽投资存款不变重试20次退出 2025-08-21 23:51:42 +08:00
uye
f8c79833a1 feat: 更新源为海外源时隐藏 Mirror酱 CDK 输入框 2025-08-21 23:25:40 +08:00
uye
710515f581 fix: required version 显示错误 2025-08-21 23:09:00 +08:00
uye
36c8ee9942 fix: 会客室换班失败(如选人过程中弹出线索交流完成)时重开任务
fix #13449
2025-08-21 17:37:57 +08:00
Constrat
5c4a9338e1 ci: split codeql (#13812)
* perf: codeql core

* perf: standardize caching for codeqlcore

* fix: correct cache keys

* perf: add codeql-js for website and workflows

* fix: typo

* fix: use bash instead of pwsh in ubuntu
2025-08-20 23:14:16 +02:00
status102
f9d5b2b417 fix: 肉鸽开局招募在无开局干员时, 无法识别两招募的左侧位 2025-08-20 22:37:12 +08:00
萨拉托加
8b9fe3fecc fix: 千古鸭帝进战斗 2025-08-20 21:28:24 +08:00
uye
dc02a754d1 fix: 日服的萨卡兹第五层怎么全 jb 改成 exit 了
fix #13829
2025-08-20 20:21:13 +08:00
Status102
b9bd50d1c5 refactor: 自动战斗干员编队状态; 修复编队中干员属性未达标时反复报错; 缺少干员输出时, 干员组内干员打平输出 (#13795)
* chore: 状态定义

* rft: 重构干员编队的状态

* feat: 编入上次干员

* rft: wpf输出

* fix: ubuntu
2025-08-20 19:59:08 +08:00
Weiyou Wang
f29d9784f7 fix: 修正生息演算中 "丰饶灌木林" 的 OCR 识别 (#13825) 2025-08-20 17:43:14 +08:00
uye
c7c9f2d3c5 chore: 调整技能截图判断 2025-08-20 17:24:09 +08:00
Hao Guan
8e53d6a036 fix(mac): 资源更新文件处理 2025-08-20 17:19:26 +08:00
github-actions[bot]
43d86b717a chore: Auto Update Game Resources - 2025-08-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17091976053

[skip changelog]
2025-08-20 07:45:38 +00:00
uye
8aa65c6146 fix: 萨卡兹肉鸽因动画延时偶发无法领取去伪存真合成物品
fix #13822
2025-08-20 15:33:48 +08:00
github-actions[bot]
0dee92ab2c chore: Auto Update Game Resources - 2025-08-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17087999432

[skip changelog]
2025-08-20 03:50:54 +00:00
uye
cd078e924d fix: 萨米投资进二层会卡在预见密文板 2025-08-20 11:45:21 +08:00
Constrat
234b75dec2 perf: limit codeql run only to source code (#13802) 2025-08-19 16:18:17 +02:00
uye
3009055cb0 Release v5.23.2 (#13794) 2025-08-19 22:17:26 +08:00
uye
d1175ee34b docs: Update CHANGELOG.md 2025-08-19 22:16:13 +08:00
萨拉托加
433a009835 chore: 修改保全作业站位和工具人数量 (#13797)
* chore: 修改保全作业站位和工具人数量

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-19 21:39:22 +08:00
HX3N
84f3a7cc5d chore: KR use Official UiTheme template
[skip changelog]
2025-08-19 22:35:53 +09:00
github-actions[bot]
f6c9960300 chore: Auto Update Game Resources - 2025-08-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17071232507

[skip changelog]
2025-08-19 13:34:02 +00:00
Constrat
09ff523de7 fix: use Official template for Global (#13801)
* fix: use Official template for EN

* chore: delete infrastoverview.png

* chore: KR delete template

* chore: JP delete template

---------

Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-08-19 21:28:50 +08:00
HY
e0b230a259 chore: 調整繁中服水月、薩卡茲肉鴿相關內容 (#13806)
* chore: 補上水月跟薩卡茲肉鴿 mode1 task

* chore: 調整 GUI 上的薩卡茲分隊名稱
2025-08-19 21:27:34 +08:00
uye
8628130cd3 fix: tw 服缺少薩米 mode 1 对应层名翻译
fix #13803
2025-08-19 20:38:59 +08:00
travellerse
0644592e42 perf: 自动编队干员组显示模组需求 (#13796)
* perf: 自动编队干员组显示模组需求

* chore: 简化判断逻辑

* chore: 统一格式

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-19 19:51:44 +08:00
github-actions[bot]
331ec96ac8 chore: Auto Update Game Resources - 2025-08-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17064104659

[skip changelog]
2025-08-19 08:33:19 +00:00
soundofautumn
3be18fd67d i18n: 自动战斗日志本地化 (#13777)
* feat: 保全派驻工具人信息本地化

* chore: 拆分干员职业类型枚举

* feat: 战斗日志本地化

* chore: 修改切换倍数描述

* feat: 剩余自动战斗本地化

* chore: 简化字典映射

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-19 15:32:35 +08:00
travellerse
c963ab5a41 fix: 支持新建关闭状态的节点,并修正日志输出 (#13766)
* fix: 修复日志输出参数格式

* fix: 修正界园树洞的节点网格大小

* fix: 支持新建关闭状态的节点
2025-08-19 15:06:50 +08:00
github-actions[bot]
29fca06687 chore: Auto Templates Optimization
Triggered by ef1fd744d1

[skip changelog]
2025-08-19 06:46:41 +00:00
uye
ef1fd744d1 fix: 烛火数量过少时无法匹配退出
fix #13788
2025-08-19 14:45:25 +08:00
uye
099359bb5d fix: Y 模组模板匹配阈值要求过高
fix #13791
2025-08-19 14:40:34 +08:00
uye
e2a869e547 chore: 删除多余 next
[skip changelog]
2025-08-19 13:47:02 +08:00
uye
ac527b3617 fix: 退出商店时如果没有识别到下一层的文字会卡在遇见密文板
fix #13787
2025-08-19 13:45:40 +08:00
travellerse
2ded386178 fix: 因模组约束取消干员时删除编队信息 (#13780) 2025-08-19 00:03:04 +08:00
萨拉托加
d609d6a667 chore: 修改并添加保全派驻作业 (#13783)
* chore: 修改并添加保全派驻作业

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-18 23:42:49 +08:00
Constrat
9a7ac0c1fe fix: EN Phantom increase ROI for StrategyChange 2025-08-18 16:22:19 +02:00
uye
01b84292d9 chore: 自动战斗中的 使用编队 改为勾选框 2025-08-18 20:28:51 +08:00
uye
3fe5caadd0 feat: 肉鸽难度括号里显示一下对应难度 2025-08-18 20:05:35 +08:00
Manicsteiner
c5a7fe10fa chore: missing tasks for JP IS 2025-08-18 19:33:10 +08:00
HX3N
33b7fc4166 chore: fix typo default to exit
[skip changelog]
2025-08-18 19:09:14 +09:00
HX3N
f4b5672f0c chore: missing tasks for KR IS
follow 55168098db
2025-08-18 19:05:37 +09:00
github-actions[bot]
781e29c1e2 chore: Auto Update Game Resources - 2025-08-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17037068240

[skip changelog]
2025-08-18 09:48:10 +00:00
Constrat
55168098db chore: missing tasks for EN IS 2025-08-18 11:43:54 +02:00
status102
6f46e94754 perf: copilot useFormation ui 2025-08-18 16:38:41 +08:00
萨拉托加
eb0396cc88 fix: 萨米无法离开深埋迷境 2025-08-18 08:58:39 +08:00
Constrat
7bcf0897a5 fix: EN Sami big typo. 2025-08-18 01:15:26 +02:00
uye
b63ef6dc66 fix: 因动画或卡顿导致无法退出商店 2025-08-17 23:43:48 +08:00
uye
65c7158d1c Release v5.23.1 (#13760) 2025-08-17 20:16:30 +08:00
uye
62619170da docs: Update CHANGELOG.md 2025-08-17 20:15:43 +08:00
uye
730e7258bc style: 格式化
[skip changelog]
2025-08-17 20:13:37 +08:00
uye
586220d9d8 fix: 商店没钱了不会停止投资 2025-08-17 20:12:24 +08:00
uye
ba44ec6a40 Release v5.23.0 (#13754) 2025-08-17 19:46:38 +08:00
github-actions[bot]
db2e1ccf4e docs: Auto Update Changelogs of v5.23.0 (#13755)
* docs: Auto Generate Changelog of Release v5.23.0

* docs: Update CHANGELOG.md

* docs: Update CHANGELOG.md

* feat: Update CHANGELOG.md

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
2025-08-17 19:39:09 +08:00
萨拉托加
a8d293999e chore: 更新新保全 (#13756)
* chore: 更新新保全

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 迁移老保全

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-17 17:34:58 +08:00
uye
3ae526ff72 fix: 萨米肉鸽刷坍缩范式闪退
fix #13750
2025-08-17 15:06:51 +08:00
vcfch843875
e99e44ee91 docs: 修正“刷理智”文档表述错误 (#13745)
* docs: 修正表述错误

floor函数是向下取整函数,所以原表述有误。

* docs: 修正表述错误

floor函数是向下取整函数,所以原表述有误。

* docs: 表現の誤りを修正

floor 関数は切り捨て関数なので、元の表現は誤りです。
2025-08-17 13:44:54 +08:00
github-actions[bot]
ea55e0463b chore: Auto Update Game Resources - 2025-08-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17011048822

[skip changelog]
2025-08-16 17:28:40 +00:00
travellerse
b6a953cb1d fix: 修复界园树洞无可用节点时任务失败 (#13741)
* fix: 修复界园树洞无可用节点时任务自动结束

* style: 移除无用的空行
2025-08-17 01:18:39 +08:00
Constrat
38aa0618d0 Revert "fix: add slight delay before `InfrastEnteredFlag' in case of stutters in base rendering"
This reverts commit 90570fbad3.
2025-08-16 14:42:40 +02:00
uye
14963a21c4 Release v5.23.0-beta.2 (#13735) 2025-08-16 19:56:48 +08:00
github-actions[bot]
943cf646bf docs: Auto Update Changelogs of v5.23.0-beta.2 (#13737)
* docs: Auto Generate Changelog of Release v5.23.0-beta.2

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-16 19:48:00 +08:00
github-actions[bot]
693caf6781 chore: Auto Update Game Resources - 2025-08-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/17008012425

[skip changelog]
2025-08-16 11:44:13 +00:00
travellerse
aed3f29598 feat: 适配界园树洞节点 (#13552)
* feat: 适配界园树洞节点 拾遗 传说

* fix: 修复卡在传说`应“蕴”而生`投钱

* fix: 将"_defaultBoskyPassage"改为"_boskyPassageDefault"  避免被识别为"_default"

* fix: 修复拾遗获得通宝卡住

* fix: 修复树洞内遇到集印概率卡住

* feat: 初步适配`易与`

* fix: 尝试替换一个更清晰的`易与`模板图

* feat: 添加`祸乱`识别,暂时不进入策略

* feat: 添加`故肆` `筹谋`占位

* feat: 添加`常乐`占位及相关事件选项

* feat: 添加`杂疑`和`筹谋`相关事件

* feat: 添加`杂疑`识别

* fix: 替换 `易与` `常乐` 模板图

* feat: 添加 `故肆` `筹谋` `常乐` `杂疑` 到策略

* fix: 将存在遮挡的 `故肆` `筹谋` `常乐` 识别阈值暂时调到0.65

* feat: 适配传说版`传讯`

* fix: 修复 掷地有声 概率识别错误

* fix: 替换 `故肆` 模板图

* fix: 修复传说版 `同心` 选择导致崩溃

* feat: 初步构建界园树洞地图

* fix: 优化 BoskyPassage 配置加载和节点处理逻辑

* fix: 删除passed属性,优化节点获取和日志输出

* fix: 修复因内存错误导致启动自动肉鸽时闪退

* feat: 支持按类型过滤获取节点

* fix: 移除重置函数中的中心节点创建逻辑

* fix: 优化树洞地图参数传递

* fix: 添加缺失的Grey模板图

* fix: 补上遗漏的NodeAnalyze

* fix: 清理没有使用到的树洞节点Task

* fix: 删除界园树洞多余的地图参数和adjacent函数

* fix: 重构pixel_to_grid_coords为成员函数

* fix: 删除多余的RoguelikeBoskyRoutingTaskPlugin.h引用
2025-08-16 19:43:13 +08:00
HX3N
22a806d699 i18n: KR tweak copilot option translation 2025-08-16 20:06:42 +09:00
Status102
baef3b8868 perf: 不同更新渠道加个描述 (#13734)
* perf: 不同更新渠道加个描述

* i18n: cn

* i18n: zh-tw

* i18n: EN

* i18n: typo

* i18n: JP

* i18n: KR

---------

Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-08-16 18:45:05 +08:00
uye
a7197084c5 feat: 设置排序 (#13699)
* feat: 新增设置排序

* chore: 布局计算延迟到 Loaded 之后

* chore: 提取 SettingItemViewModel,简化代码

* chore: 排序改为全局配置

* chore: 移除没用上的属性

* feat: 运行时允许调整设置顺序
2025-08-16 16:11:31 +08:00
status102
d50f86a9c7 fix: 移除未使用 2025-08-16 14:59:29 +08:00
uye
2d6eff9cb3 chore: catch 一下企鹅物流的上报错误请求,避免影响重试逻辑
fix #13730
2025-08-16 14:50:40 +08:00
uye
d9bd770a4a feat: 调整自动战斗页面布局
[skip changelog]
2025-08-16 12:47:54 +08:00
uye
9a3bdf18d9 feat: 调整自动战斗页面布局 2025-08-16 12:09:32 +08:00
status102
be6d7d7c88 perf(wpf): 自动战斗使用编队选择框UI 2025-08-16 11:35:33 +08:00
status102
1b789ec3c3 fix: 肉鸽投资在单次投资达到999时可能无法退出 2025-08-16 11:16:53 +08:00
husy8
7b6046b682 fix: 修复掉落上报消息类型没有在 Python 层定义导致外部脚本报错的问题 (#13723) 2025-08-16 10:02:35 +08:00
uye
6877941188 fix: debug version 拿不到活动关卡 2025-08-15 22:43:32 +08:00
status102
364f9886f7 fix: 干员识别输出遗漏干员持有情况、潜能
改回旧的, 感觉是写的时候写错了
2025-08-15 22:28:35 +08:00
uye
692c301dc0 style: 长判断换行 2025-08-15 17:28:29 +08:00
status102
b154022100 fix: 剿灭失败不报错 2025-08-15 17:23:00 +08:00
uye
89e71dce76 fix: 傀影卡在无法进行初始招募的深入探索欲月度小队
fix #13692
2025-08-15 15:31:00 +08:00
vcfch843875
beb561a94f docs: 文档日语化翻译 (#13713)
* docs: 翻译“开始唤醒”部分为日语

将“开始唤醒”的部分全文翻译成了日语。
Translated the entire "Wakeup" section into Japanese.
「ウェイクアップ」の部分を全て日本語に翻訳しました。

* docs: 翻译“公开招募”部分为日语

将“公开招募”部分全文翻译成了日语。
The entire "Public Recruitment" section has been translated into Japanese.
「公開募集」部分の全文を日本語に翻訳しました。

* docs: 将“刷理智”部分全文翻译成日语

将“刷理智”部分全文翻译成了日语。
Translated the entire combat section into Japanese.
「作戦」部分の全文を日本語に翻訳しました。

* docs: 翻译文档标题为日语

将中文文档的标题“基建换班”改成日语的「基地仕事」。
Change the title of the Chinese document "基建换班" to the Japanese 「基地仕事」.
中国語のタイトル「基建换班」を日本語の「基地仕事」に変更する。

* docs: 优化文档的日语表达

优化了此文档的日语表达。
Improved the Japanese expressions in this document.
このドキュメントの日本語表現を最適化しました。

* docs: 翻译文档“获取信用及购物”部分

将“获取信用点及购物”部分全文翻译成了日语。
Translated the entire "Get Credits & Shopping" section into Japanese.
「FP獲得と交換」セクションの全文を日本語に翻訳しました。

* docs: 优化文档的日语表达

优化了此文档的日语表达。
Improved the Japanese expressions in this document.
このドキュメントの日本語表現を最適化しました。

* docs: fix 一个锚点错误

./tools.md#公招识别
→  ./tools.md#公開求人認識

* docs: fix 笔误

修正笔误。

* docs: fix 笔误

修正笔误。
2025-08-15 15:13:55 +08:00
uye
59b4ace20b feat: 使用编队宽度自适应 2025-08-15 14:59:36 +08:00
status102
95d27786dd perf(wpf): 一键长草任务列表翻转按钮下拉框样式优化 2025-08-15 14:57:03 +08:00
MistEO
3bef81c23e Revert "ci: bump the github-actions group in /.github/workflows with 2 updates" (#13707) 2025-08-15 10:11:34 +08:00
uye
80fd44728b Release v5.23.0-beta.1 (#13682) 2025-08-15 00:36:52 +08:00
github-actions[bot]
63cfa6e17d docs: Auto Update Changelogs of v5.23.0-beta.1 (#13698)
* docs: Auto Generate Changelog of Release v5.23.0-beta.1

* docs: changelog

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-15 00:30:53 +08:00
SherkeyXD
02d646e9aa feat: 烧水模式启用快速退出 (#13690)
* feat: 烧水模式启用快速退出

* feat: 难度选择 + 导航插件支持

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 屎屎就试试

* fix: 可能修好了

* fix: 加点注释

* feat: 添加界园刷开局入口

* fix: 判断条件错误

* fix: 糊

* feat: 指挥烧水放弃招募

---------

Co-authored-by: Weiyou Wang <44151844+Alan-Charred@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-15 00:02:11 +08:00
status102
e0c72a81d4 refactor: 迁移UpdateStageList 2025-08-14 23:37:42 +08:00
status102
25d2497a47 rft: _stageManager迁移 2025-08-14 23:37:41 +08:00
pre-commit-ci[bot]
892d46e640 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-14 15:12:59 +00:00
status102
e55c22d45a perf: 合并regex 2025-08-14 23:10:30 +08:00
uye
3c82f6894e feat: 支持 梦乡 主题 (#13693)
* feat: 支持 梦乡 主题

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-14 22:50:27 +08:00
github-actions[bot]
b80f2c45df chore: Auto Update Game Resources - 2025-08-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16968559153

[skip changelog]
2025-08-14 14:47:59 +00:00
Tsukiyowu
6e6ca1ef7d fix: 修复萨卡兹肉鸽部分字段无法正确识别的问题 (#13691)
* fix: 修复萨卡兹肉鸽部分字段无法正确识别的问题

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-14 22:37:37 +08:00
uye
3148354640 fix: 无法区分界园 3/5 层 boss 2025-08-14 19:57:12 +08:00
github-actions[bot]
15502a1d6d chore: Auto Update Game Resources - 2025-08-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16960910691

[skip changelog]
2025-08-14 09:10:03 +00:00
status102
ab312ec9fe refactor: binThreshold, useRaw直接写入task 2025-08-14 15:49:48 +08:00
uye
2b13f21908 feat: 优化标题栏显示效果 2025-08-14 14:21:55 +08:00
uye
8ef3e48492 feat: 版本后面也跟个日期 2025-08-14 10:29:16 +08:00
github-actions[bot]
df1c6b4fa7 chore: Auto Update Game Resources - 2025-08-13
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16941861653

[skip changelog]
2025-08-13 15:29:07 +00:00
uye
37600ac2d9 perf: 仓库识别改用二值化后的非char模型识别 (#13667)
* perf: 仓库识别改用二值化后的非char模型识别

* feat: unify large number display format to k/M/B

* chore: 通过开关控制万以下数量是否格式化
2025-08-13 23:20:00 +08:00
uye
140b041164 fix: 因招募动画卡预见密文板 (#13680)
* fix: 因招募动画卡预见密文板

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-13 23:19:22 +08:00
HY
17f5d9e2b1 chore: 繁中服「出蒼白海」導航入口文字調整 (#13681) 2025-08-13 21:57:58 +08:00
status102
646424347e fix: 修修ocr bin threshold 被task info 错误覆盖 2025-08-13 16:05:01 +08:00
uye
427f2996e0 fix: 获得排异反应的干员无法选择技能
fix #13618
2025-08-13 15:59:27 +08:00
uye
83f28cb49b chore: 调整 LDExtras 文件位置 2025-08-13 15:35:25 +08:00
Rbqwow
902a3e9ebe docs: mumu (#13658)
* docs: mumu删了两个数字 我改了二十个文件

* docs: 更新连接设置文档
2025-08-13 15:27:48 +08:00
uye
ca916c9455 chore: 自动战斗存图阈值改为0.75 2025-08-13 14:15:53 +08:00
uye
16968ee2ef fix: schema error 2025-08-13 14:15:53 +08:00
Status102
89f6330e48 fix: 移除使用empty.png当JustReturn屎 (#13652) 2025-08-13 11:23:36 +08:00
Rbqwow
597830850b docs: 文档站小修复 (#13659)
* fix: 去掉按tab可以选中的在页面左上角的`跳至主要内容`

* build: update turbo to 2.5.5

* fix: 干掉语言列表里面的根目录
2025-08-13 05:09:48 +08:00
uye
e1e57b99c0 feat: 幸运掉落用家具零件代替显示 2025-08-12 23:36:09 +08:00
uye
e7aed3250b feat: ADB 连接失败时尝试启动模拟器 勾选框在连接设置与启动设置中同时显示 2025-08-12 22:34:24 +08:00
uye
60eea0e176 style: format 2025-08-12 22:23:15 +08:00
uye
e1cc30b9db feat: 支持 mumu 5555 端口使用控制台退出与截图增强 2025-08-12 21:53:24 +08:00
status102
24e519bbe6 refactor(wpf): 刷理智任务指定材料不再使用双属性保存,仅保存物品id 2025-08-12 16:23:32 +08:00
status102
066c735967 fix: 保存截图加回来
[skip changelog]
2025-08-12 14:42:12 +08:00
status102
1e935aeda9 fix: 识别错误等待+200ms 2025-08-12 14:40:18 +08:00
status102
755a3b97ee fix: 肉鸽投资可能由于存款被长期遮挡导致提前退出 2025-08-12 14:33:48 +08:00
uye
0032b6834a feat: 反转网络桥接提示框的按钮位置,避免误勾选 2025-08-12 13:03:05 +08:00
status102
1f0cf7393c ci: 未提交多个issue时,当前issue也会错误添加rapid-submission标签 2025-08-12 11:59:25 +08:00
status102
fb63fdac56 fix: 未启用备选关卡也会输出剿灭提醒 2025-08-12 11:59:25 +08:00
uye
6c5870b146 chore: 密文板加一个进入后检查 2025-08-12 10:45:05 +08:00
dependabot[bot]
e01e4d2f90 ci: bump the github-actions group in /.github/workflows with 2 updates (#13648)
Bumps the github-actions group in /.github/workflows with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [actions/download-artifact](https://github.com/actions/download-artifact).


Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

Updates `actions/download-artifact` from 4 to 5
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/download-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-12 09:32:59 +08:00
HY
b6e3df45c8 chore: 繁中服基建 + 保全派駐 7 相關更新 (#13643)
* chore: 繁中服基建更新

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: sss7 txwy

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 移除彩六主題通用截圖

* chore: 再...再補個圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-12 09:29:42 +08:00
Constrat
90570fbad3 fix: add slight delay before `InfrastEnteredFlag' in case of stutters in base rendering 2025-08-12 01:10:33 +02:00
Constrat
b26f6be364 fix: EN Phantom IS font change nextlevel fix 2025-08-11 18:13:22 +02:00
HY
23469665ea chore: 繁中服「出蒼白海」活動導航 (#13644) 2025-08-11 23:34:35 +08:00
uye
1874d187d6 fix: 合成密文板未进入合成页面导致卡死 2025-08-11 23:10:21 +08:00
HX3N
f1b3dadc54 chore: YostarKR CharsNameOcrReplace ocr edit 2025-08-11 23:35:49 +09:00
Constrat
d5f7c00cdd fix: start plugin task not enough delay (#13623) 2025-08-11 16:11:01 +02:00
SherkeyXD
9126d92774 chore: 添加null检测 2025-08-11 20:33:41 +08:00
SherkeyXD
5dd8ee8f55 chore: rename MinimumFeatureLevel to minimumFeatureLevel 2025-08-11 20:33:23 +08:00
SherkeyXD
4ed4e53f46 style: add line 2025-08-11 20:32:10 +08:00
SherkeyXD
e6f29ecac6 chore: 修复fody一直报warning 2025-08-11 19:51:08 +08:00
SherkeyXD
6983c9cab9 style: move annotation 2025-08-11 19:51:08 +08:00
SherkeyXD
ed4c7b3a2b chore: add copyright header 2025-08-11 19:51:07 +08:00
SherkeyXD
c00fa86d0b chore: add nullable flags 2025-08-11 19:51:07 +08:00
Status102
baff5b46a7 ci: 关issue+提示,反复提issue+tag (#13638) 2025-08-11 18:30:37 +08:00
Status102
be96b6a160 refactor: 合并ocrBinThreshold (#13635) 2025-08-11 12:12:41 +02:00
SherkeyXD
640bdfa72b chore: gitignore添加MaaBuilder相关内容 2025-08-11 17:54:41 +08:00
SherkeyXD
3b4917e9e1 chore: 更新nuke版本 2025-08-11 17:53:59 +08:00
SherkeyXD
3596eb284f chore: 更新nuke构建参数信息 2025-08-11 17:38:09 +08:00
SherkeyXD
3ca1d0a16c chore: 更新MaaBuilder中使用的过时方法 2025-08-11 17:38:03 +08:00
SherkeyXD
aeb9ebda3c chore: add missing png suffix to templates 2025-08-11 17:24:10 +08:00
status102
fb99df8a9f ci: CN issue检查单判断逻辑更新, 不再关闭issue 2025-08-11 17:12:05 +08:00
github-actions[bot]
09784802d4 chore: Auto Update Game Resources - 2025-08-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16873713908

[skip changelog]
2025-08-11 07:32:44 +00:00
uye
96011a2294 fix: 商店因为动画卡在源石锭不足
fix #13632
2025-08-11 15:14:37 +08:00
status102
f83f3c83fa fix: 理智药背景干扰使用数量识别
fix #13622
2025-08-11 14:40:33 +08:00
uye
b18d57923b fix: 第一层没出商店时会在第三层才退出
fix #13615
2025-08-11 14:28:49 +08:00
uye
43a38ff1d8 chore: TestLinkAndGetImage 不允许同时运行 2025-08-11 14:28:49 +08:00
github-actions[bot]
a6bad9b029 chore: Auto Update Game Resources - 2025-08-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16872296487

[skip changelog]
2025-08-11 06:12:50 +00:00
status102
a13a011580 ci: fix
[skip changelog]
2025-08-11 13:28:04 +08:00
status102
d46066a26d ci: fix
[skip changelog]
2025-08-11 13:21:53 +08:00
Status102
8b133ef43f chore: 模板轮换 (#13625) 2025-08-11 13:19:13 +08:00
github-actions[bot]
5e9ba974b4 chore: Auto Update Game Resources - 2025-08-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16871478867

[skip changelog]
2025-08-11 05:14:53 +00:00
status102
beb6711b82 refactor(wpf): 基建设施排序初始化 2025-08-11 11:19:19 +08:00
status102
172f33d093 refactor: wpf任务名字段统一 2025-08-11 10:27:51 +08:00
status102
b9f57a4c44 fix(wpf): 肉鸽任务高级设置界面xaml错误修复 2025-08-11 10:15:26 +08:00
status102
6f025d1480 fix(wpf): 肉鸽种子选择框visibility判断更新 2025-08-11 10:14:53 +08:00
status102
6e8ed67dc5 chore(wpf): 基建设施种类 2025-08-11 10:14:18 +08:00
status102
f68d8878e9 chore: CustomTask存储 2025-08-11 10:08:50 +08:00
uye
170d02f082 fix: 每次截图测试前断开模拟器连接以获取最新的最快截图耗时 2025-08-10 23:49:00 +08:00
Status102
612c66b010 perf: 代理倍率、肉鸽难度 使用 不切换 代替 当前不使用 以符合实际逻辑 (#13612)
* perf: 代理倍率、肉鸽难度 使用 `不切换` 代替 `当前`、`不使用` 以符合实际逻辑

* i18n: kr

* chore: use key

* i18n: EN

* i18n: JP

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-08-10 23:19:43 +08:00
uye
6f8e8e8ea4 fix: 锻冶旧迹 导航识别错误 2025-08-10 20:37:48 +08:00
uye
8c33554a2e feat: 自动编队支持指定使用编队 2025-08-10 16:56:09 +08:00
uye
99175acc30 feat: 调整自动战斗页面布局 2025-08-10 16:56:09 +08:00
uye
8137754462 feat: 调整编队界面翻译 2025-08-10 16:56:08 +08:00
status102
fd91375007 perf: wpf肉鸽难度初始化优化 2025-08-10 16:02:56 +08:00
status102
63a8fe5be4 fix: 追加自定干员职业与最后编入干员职业相同时, 误展开子职业列表
fix #13603
2025-08-10 15:45:47 +08:00
status102
6c3ec3130e chore: 浅调一下初始化顺序 2025-08-10 15:43:26 +08:00
status102
287d7e6597 fix: 肉鸽烧水选择当前难度时禁用 0难烧水切换 2025-08-10 10:51:21 +08:00
uye
5321cd9f42 Release v5.22.3 (#13605) 2025-08-09 23:06:44 +08:00
uye
8e0519f549 docs: Update CHANGELOG.md 2025-08-09 23:06:17 +08:00
uye
d82f230069 rft: 增加企鹅物流 .cn 备用域名,迁移上报逻辑到 UI 层 (#13602)
* chore: 企鹅物流上报添加 .cn 域名

* rft: 将企鹅物流的上报交给 ui 处理

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 上报移除 cpr version

* docs: 添加对应文档

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 获取新 id

* chore: 提取链接

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-09 22:48:38 +08:00
Hao Guan
cafd6d82f1 fix(mac): Mirror酱增量更新 2025-08-09 20:06:30 +08:00
status102
1aad8f7bc4 fix: 肉鸽烧水无法调整难度 2025-08-09 14:13:23 +08:00
uye
5a75870169 fix: 免费单抽剩余不足一小时无法使用
fix #13589
2025-08-09 13:34:30 +08:00
uye
f98ff9cc5e Release v5.22.2 (#13573) 2025-08-08 21:10:55 +08:00
uye
e3add87dc6 docs: Update CHANGELOG.md 2025-08-08 20:57:43 +08:00
uye
50f4f1612c chore: 调整chore: 调整 指点迷津 与 思维边界 的颜色范围
[skip changelog]
2025-08-08 19:36:55 +08:00
uye
3c959a32b8 chore: 调整 指点迷津 与 思维边界 的颜色范围 2025-08-08 18:15:09 +08:00
github-actions[bot]
e1ebfb255d chore: Auto Templates Optimization
Triggered by 48cb4ad49d

[skip changelog]
2025-08-08 09:54:45 +00:00
uye
48cb4ad49d chore: 调整节点识别范围 2025-08-08 17:54:09 +08:00
uye
ddb840d21f chore: stages 识别失败时放弃当前探索 2025-08-08 17:54:08 +08:00
uye
09840fc138 chore: 沉睡石像-战斗 2025-08-08 17:54:08 +08:00
status102
51d56151e6 perf: 肉鸽难度在首次进入后,仅在通关后才再次尝试调整 2025-08-08 15:46:21 +08:00
Status102
119e5c9ce5 feat: StartUp识别开始唤醒时最开始的完整性检测 (#13576)
* feat: StartUp识别开始唤醒时最开始的完整性检测

* chore: kr

* feat: YostarEN

* chore: zh-tw

* chore: YostarJP

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-08-08 15:39:14 +08:00
Constrat
490329fad8 i18n: fix EN task schema 2025-08-07 22:56:32 +02:00
github-actions[bot]
852c35c068 chore: Auto Update Game Resources - 2025-08-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16811845762

[skip changelog]
2025-08-07 17:48:38 +00:00
uye
eff86fb645 fix: 招募助战的确认多试几次 2025-08-08 01:45:46 +08:00
uye
670d855651 fix: 最后一个节点开到招募藏品
fix #13570
2025-08-08 01:25:48 +08:00
uye
0bf28fc7d7 chore: 扩大 ChooseDifficulty base 范围 2025-08-07 23:12:07 +08:00
uye
2053f14d55 fix: 选难度闪退
[skip changelog]
2025-08-07 23:12:06 +08:00
Constrat
40fd94d40d chore: update comment
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-07 17:06:21 +02:00
uye
a6a4c2c934 chore: ChooseDifficulty 还是留着吧
[skip changelog]
2025-08-07 22:44:56 +08:00
pre-commit-ci[bot]
48189efb4b chore: Auto update by pre-commit hooks [skip changelog] 2025-08-07 14:37:30 +00:00
uye
f52658609a feat: 首次使用肉鸽选难度 2025-08-07 22:34:41 +08:00
status102
0b9d0fbcdd fix: 漏了 2025-08-07 22:03:10 +08:00
status102
2d9624bbc6 fix: using 2025-08-07 22:01:25 +08:00
萨拉托加
f8c728fed9 fix: 诡谲断章有概率识别错误 2025-08-07 19:41:46 +08:00
status102
8db6c3c679 refactor: wpf拆分Enum 2025-08-07 19:40:06 +08:00
uye
c97bed87f6 fix: 抗干扰值识别错误时卡树洞
#13572
2025-08-07 19:39:37 +08:00
github-actions[bot]
913bef8329 chore: Auto Update Game Resources - 2025-08-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16802748917

[skip changelog]
2025-08-07 11:08:34 +00:00
Manicsteiner
e0bd8cf89b chore: YostarJP ocr fix (#13571) 2025-08-07 12:50:44 +02:00
status102
8868eeea98 perf: UseStoneDisplay绑定优化 2025-08-07 17:30:31 +08:00
github-actions[bot]
cf0849aed3 chore: Auto Update Game Resources - 2025-08-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16798075509

[skip changelog]
2025-08-07 07:32:24 +00:00
status102
89051521c9 style: format
[skip changelog]
2025-08-07 13:54:58 +08:00
status102
ff9f4b7207 perf: Use default config key 2025-08-07 13:54:58 +08:00
status102
a0b63cc67c chore: nullable update 2025-08-07 13:54:57 +08:00
status102
d3cbb31399 fix: 统一使用NotChooseLevel1 2025-08-07 13:54:57 +08:00
HX3N
7212f160ee chore: fix typo
[skip changelog]
2025-08-07 13:57:07 +09:00
HX3N
8e26f6e94a i18n: KR minigame tweak 2025-08-07 13:54:56 +09:00
HX3N
d66158482a chore: YostarKR tweak Roguelike@StartExploreCD text
Remove text to avoid misrecognition
2025-08-07 13:04:49 +09:00
status102
112e5d2ef9 styel: format
[skip changelog]
2025-08-07 11:47:41 +08:00
status102
b60f8ffd00 refactor: wpf刷理智UI变量rename 2025-08-07 11:46:03 +08:00
status102
dd51f70f6e refactor: wpf刷理智UI默认值类型 2025-08-07 11:38:26 +08:00
status102
2ee9743915 refactor: wpf移除不必要的null移除转换 2025-08-07 11:33:07 +08:00
status102
ebc149a755 refactor: 移除肉鸽非开局时的EnterAfterRecruit,完成开始探索状态分离 2025-08-07 10:42:25 +08:00
status102
bda4900ffc refactor: 肉鸽月度小队模式和深入探索开局招募流程状态与局内分离 2025-08-07 10:42:25 +08:00
Constrat
456a7aa8d4 i18n: EN AT minigame tweak 2025-08-07 01:48:32 +02:00
uye
05275bbc0a fix: 肉鸽招募完干员点击右上角时点到了动画结束后的开始探索
fix #13547
2025-08-07 02:05:38 +08:00
HX3N
56a45cec9e fix: YostarKR update ocrReplace and ocr_config (#13562) 2025-08-07 00:37:00 +09:00
bodayw
2495e01e1b feat: 更新 243 极限效率一天四换排班表(20250806 修订) (#13561) 2025-08-06 13:58:17 +02:00
github-actions[bot]
5bbe6c7427 chore: Auto Update Game Resources - 2025-08-06
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16775639024

[skip changelog]
2025-08-06 11:29:41 +00:00
uye
36eda14549 fix: 关闭骰子页面时点进藏品页
fix #13557
2025-08-06 19:25:17 +08:00
_Burnside
63187cfe83 fix: 干员识别时因特殊排序时的遮挡而导致识别异常 (#13538)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-08-06 19:12:07 +08:00
uye
577e23d961 chore: 调整 schema (#13554)
* chore: 调整 schema

* chore: required

* chore: 同步 en 版本

* chore: 移除 template 默认值

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: $schema require draft-07

* style: 格式化

* style: 格式化

* chore: 统一格式

* chore: 根据 schema 修改 tasks

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-06 18:37:08 +08:00
github-actions[bot]
01fd697276 chore: Auto Templates Optimization
Triggered by df880a55fa

[skip changelog]
2025-08-06 10:27:56 +00:00
Constrat
df880a55fa fix: EN Phantom IS updated Drop templates 2025-08-06 12:26:27 +02:00
HX3N
3f271f9bb6 docs: KR update and overhaul entire documentation (#13550)
* docs: manual

* docs: protocol

* docs: develop

* chore: fix typo

* chore: fix more typo

* docs: readme

readme image

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: corrected file name

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-06 18:33:38 +09:00
MistEO
69478a939c feat: u16 OCR replace (#13533)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-06 13:29:23 +08:00
cibimo
ed81d609f6 fix: 使 python 脚本支持从 github 获取文件长度并更新 (#13457) 2025-08-06 09:36:04 +08:00
Constrat
1176822d0e i18n: EN main readme 2025-08-06 01:36:20 +02:00
Constrat
abae2b77a2 i18n: EN overhaul entire documentation!
Thank you Claude
2025-08-05 19:40:51 +02:00
Constrat
6be474c67f fix: typo
[skip changelog]
2025-08-05 19:37:03 +02:00
Constrat
95c1138a74 docs: cache defaults to true in task-schema.md 2025-08-05 19:35:57 +02:00
Constrat
bff0c82b1e Merge branch 'dev' of https://github.com/MaaAssistantArknights/MaaAssistantArknights into dev 2025-08-05 18:49:11 +02:00
Constrat
0826607897 i18n: EN manual updates/fixes 2025-08-05 18:03:22 +02:00
Constrat
d7e42b0600 i18n: EN device updates/fixes 2025-08-05 18:03:14 +02:00
github-actions[bot]
52cc4971ff chore: Auto Templates Optimization
Triggered by 35fb0e0f4e

[skip changelog]
2025-08-05 15:42:02 +00:00
Constrat
35fb0e0f4e fix: EN IS5 missing template GetDrop4 2025-08-05 17:41:21 +02:00
Constrat
eebe0a9328 i18n: EN manual\cli updates/fixes 2025-08-05 17:13:22 +02:00
Constrat
b708dd9f98 i18n: EN develop updates/fixes 2025-08-05 17:11:27 +02:00
Constrat
ffa0699f89 i18n: ci tutorial for EN 2025-08-05 16:31:23 +02:00
uye
d0d691043e perf: 优化成就列表滚动条
fix #13543
2025-08-05 22:21:36 +08:00
Constrat
801bb5eb4e i18n: EN I.S. manual update 2025-08-05 15:46:09 +02:00
uye
e792af6d45 feat: 调整翻译 2025-08-05 21:42:23 +08:00
uye
8f47e000b7 Release v5.22.1 (#13539) 2025-08-05 21:00:40 +08:00
uye
812f918311 docs: Update CHANGELOG.md
[skip changelog]
2025-08-05 20:30:21 +08:00
status102
a285c3b518 rft: 调整部分UI绑定namespace 2025-08-05 18:21:49 +08:00
Bvicii
7f625e780d feat: 更新技能识别模型,采用更全面的数据集和使用focal loss训练 (#13498)
refactor:用新的数据集和loss function训练技能识别模型
2025-08-05 17:57:24 +08:00
uye
8d3e0e2231 fix: 傀影卡历史馈赠
fix #13511
2025-08-05 17:56:22 +08:00
uye
110eeb98c1 feat: Unhandled exception (#13535)
* feat: Unhandled exception

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-05 17:24:16 +08:00
uye
6e821d02d4 fix: 部分策略无法离开诡谲断章
fix #13526
2025-08-05 17:22:36 +08:00
status102
e5f8e3cdfc fix: wpf肉鸽投资N个源石锭NumericUpDown绑定失效 2025-08-05 16:51:22 +08:00
status102
558a03d6ce refactor: rename FreeRecruit -> FreeGacha 2025-08-05 16:45:38 +08:00
uye
a2593c6d61 fix: 购买商品时因动画导致点击无效
fix #13531
2025-08-05 12:03:06 +08:00
uye
05b6a6ca07 fix: 不开线索交流可能导致技能效率判断崩溃
fix #13493
fix #13508
2025-08-05 11:25:27 +08:00
HY
3f64adc6bc chore: 繁中服「詞祭」介面主題截圖 (#13521)
* chore: 繁中服「詞祭」介面主題截圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-05 00:45:27 +08:00
github-actions[bot]
b2c06dd192 chore: Auto Update Game Resources - 2025-08-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16728794274

[skip changelog]
2025-08-04 16:33:29 +00:00
HY
ee6877c111 chore: 再度調整繁中服「崔林特爾梅之金·復刻」活動導航 (#13519) 2025-08-05 00:22:31 +08:00
Manicsteiner
44ef5b5ab2 fix: RoutingRefreshNode roi expand (#13515) 2025-08-04 23:55:25 +08:00
github-actions[bot]
d20212dea0 chore: Auto Templates Optimization
Triggered by 788d9293a6

[skip changelog]
2025-08-04 13:13:12 +00:00
萨拉托加
788d9293a6 fix: 去伪存真卡在灵光乍现
fix: #13510
2025-08-04 21:12:25 +08:00
SherkeyXD
1874174a70 chore: 更新CropRoi的依赖 2025-08-04 20:42:22 +08:00
Constrat
e2a6b6644b fix: update YostarEN IS3 templates
fix #13502
2025-08-04 13:41:38 +02:00
_Burnside
e8bb1a97e3 docs: fix typo (#13503) 2025-08-04 17:55:00 +08:00
Manicsteiner
e2519114b6 chore: YostarJP ocr fix (#13500) 2025-08-04 17:24:27 +08:00
github-actions[bot]
0148492916 chore: Auto Update Game Resources - 2025-08-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16717675999

[skip changelog]
2025-08-04 08:11:31 +00:00
uye
7845dab791 fix: 概率卡在出洞后的投钱 2025-08-04 15:36:52 +08:00
github-actions[bot]
0f83706c3f chore: Auto Update Game Resources - 2025-08-04
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16716562587

[skip changelog]
2025-08-04 07:15:49 +00:00
status102
d05aae5b1c perf: wpf Win10+Toast通知使用系统内置通知声而不是独立播放 2025-08-04 15:12:42 +08:00
github-actions[bot]
a1025fa2c7 chore: Auto Templates Optimization
Triggered by 40163dacf4

[skip changelog]
2025-08-04 07:11:13 +00:00
uye
40163dacf4 fix: 界园卡通关结算页面 2025-08-04 15:10:43 +08:00
HX3N
f20da513b7 fix: YostarKR corrected ocrReplace in IS5 StrategyChange_mode1 2025-08-04 14:08:22 +09:00
uye
041d4f9525 perf: 手动点击查看公告时获取公告更新前先显示本地公告 2025-08-04 13:03:21 +08:00
uye
6ab772238c fix: 生息演算组装数量识别失败时取消组装 2025-08-04 10:36:37 +08:00
uye
792abcd180 fix: 其他肉鸽可能点到月度小队 2025-08-04 00:29:33 +08:00
uye
ffa8b4b2d4 feat: 不忽略肉鸽的报错 2025-08-04 00:18:57 +08:00
uye
bcd709265e perf: 优化 ComboBox 搜索 2025-08-03 23:54:40 +08:00
Hao Guan
62cbeba7fc fix: clang编译警告 (#13482) 2025-08-03 22:09:49 +08:00
Hao Guan
c6e491eada feat(mac): 新增小游戏 2025-08-03 20:47:37 +08:00
uye
3ac005d75a fix: 模拟器卸载/更新注册表残留可能导致截图增强弹窗死循环 2025-08-03 20:14:43 +08:00
uye
a979b7f33e i18n: 任务出错内容翻译 2025-08-03 15:57:50 +08:00
uye
678f076f60 fix: 仓库识别概率无法识别部分物品 2025-08-03 15:15:03 +08:00
uye
8bf856505b Release v5.22.0 (#13463) 2025-08-03 14:24:13 +08:00
uye
b7933ef7f2 fix: 多余符号 2025-08-03 14:22:43 +08:00
github-actions[bot]
41432ca341 docs: Auto Update Changelogs of v5.22.0 (#13455)
* docs: Auto Generate Changelog of Release v5.22.0

* docs: cahngelog

* feat: changelog

* fix: Update CHANGELOG.md

* fix: Update CHANGELOG.md

* fix: Update CHANGELOG.md

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-03 14:18:49 +08:00
HY
5bf78a9cba i18n: zh-tw tweak translations (#13467)
i18n: zh-tw tweak
2025-08-03 13:32:01 +08:00
萨拉托加
51619da8dd fix: 催债鬼夜叉二次选择 2025-08-03 12:52:37 +08:00
AimOwO
1d6b585c07 fix: 装置“斩”识别 (#13459)
* fix: 装置“斩”识别

* fix: 装置“斩”识别 

防止误识别为“斩”业星熊

* fix: 装置“斩”识别

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-08-03 12:47:00 +08:00
HX3N
226a45b8ff fix: YostarKR removes spaces in StrategyChange_mode and NextLevel 2025-08-03 05:57:25 +09:00
github-actions[bot]
6dba614726 chore: Auto Templates Optimization
Triggered by 3ebc095d37

[skip changelog]
2025-08-02 19:03:11 +00:00
pre-commit-ci[bot]
3ebc095d37 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-02 19:02:46 +00:00
Manicsteiner
3514651f75 i18n: JP edits (#13460) 2025-08-03 02:55:23 +08:00
uye
94d71b1db4 feat: 相谈室 小游戏 (#13461)
* feat: 相谈室小游戏

* feat: ui 添加小游戏入口

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-03 02:54:00 +08:00
uye
61b968c58f debug: hsv 影响原图 2025-08-03 02:09:22 +08:00
uye
e045adc4dc fix: 卡遇见板子 2025-08-02 23:12:08 +08:00
SherkeyXD
53b1032e24 feat: SideStory「墟」关卡导航 2025-08-02 21:46:39 +08:00
uye
b19c836e35 Release v5.22.0-beta.2 (#13454) 2025-08-02 20:34:27 +08:00
uye
107f67c3a7 docs: Update CHANGELOG.md 2025-08-02 20:33:48 +08:00
Lemon-miaow
2aa63c77e6 feat: 新增是否进行线索交流选项 (#13368)
* feat: 新增是否进行线索交流选项

* chore: Auto update by pre-commit hooks [skip changelog]

* docs: 文档添加参数

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-02 20:32:33 +08:00
uye
d339731987 docs: Update CHANGELOG.md 2025-08-02 20:31:40 +08:00
uye
b611b35248 fix: 无法使用连战 2025-08-02 20:24:31 +08:00
uye
aaefd75ef3 fix: 其他肉鸽的屎山爆炸了 2025-08-02 17:42:55 +08:00
uye
7aae2318f8 fix: 野鬃识别
现在应该没有其他野开头的干员吧
2025-08-02 17:17:01 +08:00
uye
906cb5624f fix: 野鬃识别 2025-08-02 17:11:46 +08:00
HY
36d44d7897 chore: 更新繁中服「崔林特爾梅之金」活動導航 (#13450)
* chore: 更新繁中服「崔林特爾梅之金」活動導航

* chore: update ZT.json

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-02 16:53:06 +08:00
github-actions[bot]
8cceb5ccd7 chore: Auto Update Game Resources - 2025-08-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16691605689

[skip changelog]
2025-08-02 08:09:30 +00:00
uye
1ba86d879c Release v5.22.0-beta.1 (#13428) 2025-08-02 12:19:57 +08:00
github-actions[bot]
cf930ef66a docs: Auto Update Changelogs of v5.22.0-beta.1 (#13451)
docs: Auto Generate Changelog of Release v5.22.0-beta.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-02 12:18:37 +08:00
Rbqwow
b1138f5b68 docs: 文~档~大~更~新,开始失败喽—— (#13410)
* fix: prettier 一定要能格式化文档✍️✍️✍️

* docs: 更新肉鸽用户文档

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 移除由 heroFullScreen: true 引入的 vp-hero-slide-down-button

主题组件叫 `@theme-hope/components/home/HeroSlideDownButton`
别管怎么移除的 看不到就行了)

* fix: 修复官网查看全部下载按钮动画

refer to 462bf51dce

* docs: 补充萨卡兹肉鸽点刺刷钱策略

* docs: 更新肉鸽新手教程描述

* fix: HomeActionsRelease.tsx typo

* docs: 更新难度选择按钮描述

* docs: Update integrated-strategy.md

* docs: Update integrated-strategy.md

* docs: 更新 integrated-strategy.md

---------

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: DavidWang19 <dwang0340@gmail.com>
2025-08-02 12:15:12 +08:00
github-actions[bot]
da7f9ffbc6 chore: Auto Update Game Resources - 2025-08-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16689662848

[skip changelog]
2025-08-02 04:02:33 +00:00
github-actions[bot]
5ec8bbf5a0 chore: Auto Templates Optimization
Triggered by 8ffbf4e053

[skip changelog]
2025-08-02 03:01:56 +00:00
github-actions[bot]
8ffbf4e053 chore: Auto Update Game Resources - 2025-08-02
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16689151708

[skip changelog]
2025-08-02 03:01:27 +00:00
萨拉托加
f82257d2cb fix: 祠堂口事件识别失败 2025-08-02 10:54:14 +08:00
萨拉托加
695f6425c5 fix: 调整飞来横祸EW站位 2025-08-02 10:21:41 +08:00
萨拉托加
57f76ccb20 fix: 调整往事暗哑离域检查EW站位 2025-08-02 10:13:32 +08:00
uye
f100a7ba81 fix: 拾取关卡掉落后找不到节点时放弃 2025-08-02 09:44:33 +08:00
uye
fbf683480b chore: 调整安全屋颜色范围 2025-08-02 09:34:35 +08:00
uye
d79bf3724b fix: 祠堂口事件识别失败 2025-08-02 09:18:08 +08:00
Constrat
cd2d1c448c chore: update YostarEN OR navigation 2025-08-01 19:01:09 +02:00
HX3N
819014983c fix: YostarKR 海神的信者 ocr edit
yostar updated translation
2025-08-02 01:38:30 +09:00
uye
579e34bd50 fix: 夕娥忆 关卡名识别错误 2025-08-01 23:51:23 +08:00
uye
77ed38127e fix: 重复报关卡难度 2025-08-01 23:51:23 +08:00
uye
65311bbd6c fix: 禳解事件识别错误 2025-08-01 23:51:23 +08:00
uye
da16cc95ad chore: 调整颜色阈值 2025-08-01 23:51:23 +08:00
uye
22842034ae chore: 添加白色部分识别 2025-08-01 23:51:23 +08:00
uye
ffa6724397 debug: 调整边框粗细 2025-08-01 23:51:23 +08:00
pre-commit-ci[bot]
7b66511566 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-01 23:51:23 +08:00
Weiyou Wang
2ca5c83542 fix: JieGarden roguelike stage templates 2025-08-01 23:51:23 +08:00
萨拉托加
26703b0014 feat: 界园肉鸽补充战斗逻辑 (#13433)
* feat: 补充界园三层战斗逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 添加斩业星熊,遥招募分数

* feat: 补充界园四层战斗逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 补充界园五层战斗逻辑

* feat: 补充界园剩余战斗逻辑

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-08-01 23:50:48 +08:00
uye
4b6222b118 docs: useRaw 仅当 withoutDet 为 true 时生效 2025-08-01 23:27:58 +08:00
uye
7b765d8fdc docs: 更新文档与 maa_tasks_schema 2025-08-01 21:24:37 +08:00
pre-commit-ci[bot]
ec974f8648 chore: Auto update by pre-commit hooks [skip changelog] 2025-08-01 13:05:14 +00:00
uye
c79856b81e perf: 优化界园层名识别 2025-08-01 21:02:51 +08:00
uye
22eb038a9e feat: PipelineAnalyzer 支持使用灰度图匹配文字 2025-08-01 21:02:19 +08:00
Weiyou Wang
7b40c11df4 fix: 修复层名识别问题 -- "云瓦亭" -> "云(瓦)?亭" 2025-08-01 21:54:11 +10:00
uye
64ac7f5d64 debug: 低于阈值 0.2 的 hsv 也保存一下 2025-08-01 16:57:04 +08:00
uye
aa8f02aa3e fix: 拥有时光之末战斗失败后无法跳过动画 2025-08-01 16:54:13 +08:00
github-actions[bot]
e27566deb5 chore: Auto Update Game Resources - 2025-08-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16670365761

[skip changelog]
2025-08-01 08:33:17 +00:00
uye
53a4e125ca chore: 调整返回主界面点击位置 2025-08-01 15:42:30 +08:00
uye
fbece132b0 fix: 战斗失败没进结算识别 2025-08-01 15:42:09 +08:00
uye
dd1328f2c1 fix: 汝吾门 识别 2025-08-01 14:49:45 +08:00
HX3N
7b841fca84 fix: YostarKR 黍 ocr edit
garbage text after 黍 when skin is applied
2025-08-01 06:33:11 +09:00
HX3N
dd3233ff34 i18n: KR dehardcode string names and tweak translations
follow 167ac2d2d5
2025-08-01 05:20:58 +09:00
github-actions[bot]
d2c159590d chore: Auto Templates Optimization
Triggered by c85849651f

[skip changelog]
2025-07-31 18:05:00 +00:00
uye
c85849651f chore: 更新截图 2025-08-01 02:04:20 +08:00
uye
dba8f4f3c4 chore: 怎么jb有个0.6的阈值 2025-08-01 01:23:47 +08:00
uye
ee64c2051b chore: 不期而遇失败时尝试放弃 2025-08-01 01:21:07 +08:00
uye
0ed14899f9 chore: 在事件中卡死时尝试放弃 2025-08-01 01:13:52 +08:00
uye
5452ed2a96 perf: 优化多层事件逻辑 2025-08-01 00:29:05 +08:00
Constrat
718026c513 i18n: dehardcode string names
follows b0a53cd5b0
2025-07-31 18:28:05 +02:00
萨拉托加
c2dab28d51 fix: 鲍老板连锁去掉引号 2025-08-01 00:17:02 +08:00
Constrat
1bd11a988c fix: remove leading digits in IS encounters for YostarEN
事件名识别错误(傀影)肉鸽
Fixes #13425
2025-07-31 18:00:36 +02:00
Constrat
e3d708f4a9 fix: i18n english key 2025-07-31 17:30:21 +02:00
uye
9b8c1b4e1e chore: 删除 999 2025-07-31 23:26:19 +08:00
uye
97b3f9af38 chore: 彻底卡住时记录截图后尝试放弃 2025-07-31 23:26:18 +08:00
铃语
a04760272b perf: 优化水月肉鸽招募&傀影战斗 (#13344)
* perf: 优化傀影肉鸽招募&战斗

* perf: 优化水月肉鸽招募

* 恢复鸿雪抓取并降低分数,降低假日威龙陈和蕾缪安分数

* 恢复鸿雪抓取并降低分数,降低假日威龙陈和肥鸭分数

* perf: 恢复黑并降低分数

---------

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
2025-07-31 23:05:35 +08:00
github-actions[bot]
64c349b75f chore: Auto Templates Optimization
Triggered by 7e8cc2d137

[skip changelog]
2025-07-31 15:02:09 +00:00
uye
7e8cc2d137 feat: 增加 hp 识别标志 2025-07-31 23:01:35 +08:00
uye
084bc5a6cd chore: 地镇事件选择 2025-07-31 22:49:59 +08:00
uye
fa90157c36 docs: Update CHANGELOG.md 2025-07-31 19:34:18 +08:00
github-actions[bot]
948ad064e3 chore: Auto Templates Optimization
Triggered by fd71f70d22

[skip changelog]
2025-07-31 11:32:58 +00:00
pre-commit-ci[bot]
fd71f70d22 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-31 11:32:35 +00:00
status102
38bf8af185 feat: wpf支持作业版本限制 2025-07-31 19:29:17 +08:00
github-actions[bot]
6c07625302 chore: Auto Update Game Resources - 2025-07-31
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16647720698

[skip changelog]
2025-07-31 11:28:48 +00:00
萨拉托加
2526f1465f feat: 界园肉鸽补充事件选择逻辑 (#13400)
* feat: 界园肉鸽补充事件选择逻辑

补充遗漏的安全角 狭路相逢 命运所指
鲍老板连锁改成跑路
去掉重复的岔路事件

* feat: 修改催债事件逻辑

* fix: 峥嵘战功识别

* feat: 同心事件逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: wiki上可查的事件逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 偏安三选项的情况

* fix: 烛堂孤钓不同选项的情况

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-31 19:27:45 +08:00
travellerse
299990833f fix: 对掉落信息进行排序 与ToolTip保持一致 (#13404)
* fix: 对掉落信息进行排序 与ToolTip保持一致

* fix: 在 wpf 里对掉落信息进行排序
2025-07-31 19:27:29 +08:00
uye
a60d6732f0 perf: 肉鸽节点识别 (#13427)
* perf: 节点统一 hsv

* perf: 普通战斗 hsv

* fix: 部分节点得分过低

* chore: 肉鸽节点不使用 colorWithClose

* chore: 调整安全屋模板

* perf: 优化绿色系识别
2025-07-31 19:21:20 +08:00
uye
b0a53cd5b0 chore: 调整翻译 2025-07-31 18:55:16 +08:00
uye
2fb58192a9 chore: 删除多余注释 2025-07-31 18:52:29 +08:00
uye
2fa1b2158c feat: 添加一键轮换说明 2025-07-31 18:51:08 +08:00
uye
4705cd7078 feat: 统一 TooltipBlock 位置 2025-07-31 18:34:53 +08:00
uye
643f2070c4 feat: 烧水分队不存在时自动替换为当前分队 2025-07-31 15:38:17 +08:00
uye
8b6da9b8bf style: 格式化 2025-07-31 15:37:38 +08:00
uye
d9788dba84 feat: 刷开局模式禁用源石锭达到上限时停止
fix #13420
2025-07-31 15:37:15 +08:00
uye
167ac2d2d5 perf: 优化成就排序与描述 2025-07-31 15:04:24 +08:00
Constrat
a2e8d82562 chore(tools): update ignore templates 2025-07-31 00:48:44 +02:00
uye
3538ab525c fix: ComboBox 的光标颜色不会随主题色变化 2025-07-30 17:45:16 +08:00
uye
810008d84b feat: 调整界面显示效果 2025-07-30 17:16:21 +08:00
uye
59aae8a055 chore: 强制替换 adb 改为使用本地 adb 2025-07-30 16:02:26 +08:00
uye
386264b689 feat: 完整显示注入 maa 的 dll 的路径 2025-07-30 15:51:51 +08:00
uye
fa0f3317f2 feat: 填写错误安装路径时重新弹窗提示 2025-07-30 14:52:56 +08:00
status102
e8798391d4 fix: wpf自动战斗干员模组选择默认值错误 2025-07-30 14:02:33 +08:00
uye
fbdba4a2c6 fix: 修复任务过程中修改剩余理智后导致关卡无法连续执行的问题
fix #13411
2025-07-30 13:27:42 +08:00
uye
4e10ff5a38 fix: 掌灯与引烛 事件识别 2025-07-30 13:20:33 +08:00
uye
85fe148d92 feat: 肉鸽使用助战新增需先填写开局干员的提示 2025-07-30 11:33:45 +08:00
uye
8ee8fc9e6b chore: 删除无用函数 2025-07-30 11:33:45 +08:00
Constrat
65941ee574 fix: typo for BattleStage Sarkaz EN 2025-07-29 18:01:56 +02:00
status102
8ca03b5dd7 fix: 肉鸽通关难度成就解锁判定错误 2025-07-29 22:23:43 +08:00
Constrat
00c9b053b1 docs: update IS for EN 2025-07-29 11:38:43 +02:00
萨拉托加
613da05a40 fix: 狭路相逢善恶同道识别 (#13383) 2025-07-29 11:38:39 +08:00
Weiyou Wang
3cb5318aa4 fix: 修复放弃招募任务链;避战识别不到得偿所愿 (#13395)
* fix: 修复放弃招募任务链

* fix: 怎么还有大小写问题啊

* fix: 划不到点刺

* fix: 肉鸽地图识别加入对界园得偿所愿节点的支持

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-29 11:35:18 +08:00
Constrat
acf81e46e5 fix: clang style 2025-07-28 21:57:56 +02:00
uye
e6efc49ddc fix: 无法选中 坚不可摧随心所欲 分队 2025-07-29 01:33:29 +08:00
uye
0078564a06 fix: 死循环 2025-07-29 01:02:59 +08:00
uye
b5c7bde5ac perf: 优化界面显示效果 2025-07-29 00:51:36 +08:00
uye
b8b3f57790 Release v5.21.2 (#13384) 2025-07-28 23:35:24 +08:00
uye
ee73e7609c docs: Update CHANGELOG.md 2025-07-28 23:34:05 +08:00
uye
5ce0a7ea4e docs: 更新文档 2025-07-28 21:50:28 +08:00
uye
a07d3cc7fc chore: 调整等级判断范围 2025-07-28 20:41:05 +08:00
status102
10f2268b1e chore: 加点注释 2025-07-28 20:01:17 +08:00
status102
0c96e22845 perf: 肉鸽满级检查CheckLevelMax增加isAscii=true 2025-07-28 20:01:16 +08:00
uye
17ca363515 feat: mumu 截图增强弹窗增加新版路径提示 2025-07-28 19:40:31 +08:00
uye
76816c4f8e chore: 调整 versionType
[skip changelog]
2025-07-28 18:35:52 +08:00
uye
db114a17b1 fix: 检测更新失败!!!!! 2025-07-28 18:29:02 +08:00
Hao Guan
1b14ff8d9a fix(mac): 修复默认客户端选项 2025-07-28 17:52:19 +08:00
uye
b84ba22c8f chore: 调整透明度笔刷 2025-07-28 17:29:00 +08:00
uye
8ca3df6d5c chore: 连接地址删除按钮居右 2025-07-28 17:28:46 +08:00
uye
bf6be133c5 fix: 字符串写错了 2025-07-28 16:25:49 +08:00
Weiyou Wang
8fcf9e13f7 fix: use HSVCount on JieGarden@Roguelike@StageEmergencyDps (#13380)
* fix: use HSVCount on JieGarden@Roguelike@StageEmergencyDps

* fix: hue 范围应该是0-179?

* fix: use recommended hsv range

* refactor: MaskRangeTool

* fix: 再用一个更好的色彩范围

* fix: 我听学姐的,把白色剔出激活范围

* fix: 只需要这一个就够了
2025-07-28 16:14:08 +08:00
github-actions[bot]
3caa2f8d7c chore: Auto Update Game Resources - 2025-07-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16563759329

[skip changelog]
2025-07-28 08:12:03 +00:00
uye
7937bbcb21 fix: 截图时间过长可能卡在进入下一层后 2025-07-28 15:49:34 +08:00
uye
aeb8ad36a7 chore: 访问 api 时如果本地不存在对应文件则不使用 etag 2025-07-28 14:57:35 +08:00
uye
604879eac1 chore: 日志压缩包打包 cache 文件夹 2025-07-28 14:47:36 +08:00
status102
7419ed762f ci: 文件未上传完成/成功正则追加 2025-07-28 11:29:50 +08:00
status102
c0cc7d119f perf: 自动编队干员属性要求未满足的提示输出等级上调至Error / Warning 2025-07-28 11:01:54 +08:00
萨拉托加
4d615dafd4 fix: 老戏骨非EW开局站位
fix #13376
2025-07-28 10:32:45 +08:00
uye
12fd336f8a feat: 修改文件被占用的解决方案 2025-07-28 01:55:32 +08:00
uye
983a511329 chore: 截图测试漏提示了 2025-07-28 00:15:29 +08:00
uye
3b5ebf8f24 Release v5.21.1 (#13371) 2025-07-27 23:28:37 +08:00
uye
f41174fd43 docs: Update CHANGELOG.md 2025-07-27 23:27:45 +08:00
uye
587c980621 docs: Update CHANGELOG.md 2025-07-27 23:21:46 +08:00
status102
78812d47f2 fix: 移除肉鸽开局选择分队后不应出现的地图检测 2025-07-27 23:16:11 +08:00
uye
b8c4f73da2 fix: 不知道为啥有人会开开局,修修看 2025-07-27 23:03:33 +08:00
uye
48412e2c92 chore: macos uuid 2025-07-27 22:45:41 +08:00
uye
4a68fac639 fix: 奇妙的模拟器卡启动 2025-07-27 22:11:55 +08:00
uye
4739feb8ff feat: 支持 mumu emulator-xxxx 格式地址关闭模拟器 2025-07-27 22:11:55 +08:00
uye
2eed3b87d4 Release v5.21.0 (#13359) 2025-07-27 16:28:39 +08:00
github-actions[bot]
e1caa6ebe8 docs: Auto Update Changelogs of v5.21.0 (#13363)
* docs: Auto Generate Changelog of Release v5.21.0

* docs: changelog

* docs: changelog

* docs: Update CHANGELOG.md

* docs: changelog

* docs: Update CHANGELOG.md

* docs: 米奇妙妙翻译

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2025-07-27 16:27:28 +08:00
uye
7ca1ed1d4e chore: 全用动态资源 2025-07-27 16:13:08 +08:00
uye
658e141dd5 perf: 公招识别显示使用动态资源 2025-07-27 15:49:41 +08:00
pre-commit-ci[bot]
62bd414ed7 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-27 06:57:32 +00:00
uye
bbe771dc1b fix: 开局招募 2025-07-27 14:54:58 +08:00
uye
68094ee2d9 fix: 商店刷新 2025-07-27 14:49:58 +08:00
uye
2884cdb808 fix: 切换语言时选择材料更新 2025-07-27 12:14:48 +08:00
uye
6c405305b9 feat: 优化主界面显示效果 2025-07-27 11:53:11 +08:00
uye
99befd7582 docs: 更新文档 2025-07-27 11:43:08 +08:00
status102
45eb731d30 perf: 更新日志界面Background前置 2025-07-27 11:39:14 +08:00
status102
37057885b9 perf: 简化长期剿灭任务名 2025-07-27 11:17:27 +08:00
status102
cc21ce7b9b fix: 移除未使用的AnnihilationWarning 2025-07-27 10:58:30 +08:00
status102
2472363b05 fix: 加回来删掉的提示 2025-07-27 10:58:30 +08:00
uye
3169d5826f chore: 关闭自定义剿灭时默认当期剿灭 2025-07-27 10:57:01 +08:00
uye
e14dcc4f48 feat: 添加自定义剿灭关卡勾选框 2025-07-27 10:55:09 +08:00
status102
467b32a324 perf: wpf剿灭关卡选择 2025-07-27 10:45:52 +08:00
status102
f6b019bbff chore: import 2025-07-27 10:18:29 +08:00
status102
b3310992db fix: 肉鸽开局招募状态
漏提交了
2025-07-27 10:14:09 +08:00
github-actions[bot]
5a0c35d4e7 chore: Auto Templates Optimization
Triggered by 950952e16c

[skip changelog]
2025-07-27 01:26:10 +00:00
status102
950952e16c fix: 界园肉鸽结算 2025-07-27 09:25:39 +08:00
uye
53f4cd9ead fix: 事件名错误 2025-07-27 09:19:33 +08:00
Drest
7c2e440b4e feat: 适配长期剿灭 (#13241)
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-07-27 01:28:28 +01:00
pre-commit-ci[bot]
f799924d9b chore: Auto update by pre-commit hooks [skip changelog] 2025-07-26 18:28:44 +00:00
uye
72acbd0ecf fix: 卡招募 卡电弧 2025-07-27 02:26:26 +08:00
uye
dd26bd55ea fix: 投钱 2025-07-27 01:52:09 +08:00
github-actions[bot]
bb5d155b08 chore: Auto Update Game Resources - 2025-07-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16542026013

[skip changelog]
2025-07-26 17:06:25 +00:00
pre-commit-ci[bot]
a7dbfad774 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-27 01:01:39 +08:00
uye
fbc16dc868 chore: 替换 JieGarden StageEncounterOptionUnknown模板图 2025-07-27 01:01:39 +08:00
uye
a93cbdcab6 fix: StageEncounterOptionUnknown 点到源石锭 2025-07-27 01:01:39 +08:00
Weiyou Wang
fe5d34c360 fix: 换用strategyChange 2025-07-27 01:01:39 +08:00
uye
ee7ca9cd22 feat: 进出洞 2025-07-27 01:01:39 +08:00
uye
1380ae172f fix: 饕餮廊事件识别错误 2025-07-27 01:01:39 +08:00
Weiyou Wang
671d72c5bc fix: 我就不明白了,为什么之前主题没有暴露出来问题? 2025-07-27 01:01:39 +08:00
Weiyou Wang
23b06335d7 fix: 我的问题 2025-07-27 01:01:39 +08:00
Weiyou Wang
7981c87b0c fix: 尝试修复卡进场 2025-07-27 01:01:39 +08:00
uye
77a7dbf6c0 chore: 护鸭金刚 选项 2025-07-27 01:01:39 +08:00
uye
676716494d Revert "feat: 界园屏蔽进二层"
This reverts commit 73ebf6f532a3634fd210d1b5b859255b36d6e35d.
2025-07-27 01:01:39 +08:00
uye
36ceaa34e8 chore: 多余的 ocrReplace 2025-07-27 01:01:39 +08:00
uye
7b1e14214a feat: ocr 任务暴露灰度阈值接口 2025-07-27 01:01:39 +08:00
uye
5a480f80e1 fix: 血量识别 2025-07-27 01:01:39 +08:00
Weiyou Wang
0ddf11c357 fix: 尝试修复 investment_with_more_score 2025-07-27 01:01:39 +08:00
uye
d39e342b3b feat: 添加选项 fallback 2025-07-27 01:01:39 +08:00
uye
14479cbee8 fix: 怎么多了个票卷生命值位置都变了 2025-07-27 01:01:39 +08:00
uye
7b00ccc9d3 feat: ui 添加刷等级入口 2025-07-27 01:01:39 +08:00
uye
549f5d19b5 fix: 无法点击树洞 2025-07-27 01:01:39 +08:00
uye
6d45acf7fb fix: 事件选择 2025-07-27 01:01:39 +08:00
uye
2b9dd49634 ci: 怎么报错了
[skip changelog]
2025-07-27 01:01:39 +08:00
uye
38cfee1437 feat: 界园屏蔽进二层 2025-07-27 01:01:39 +08:00
uye
86c00934d8 perf: 优化肉鸽难度选择逻辑 2025-07-27 01:01:39 +08:00
uye
0c1edc9626 feat: 增加快速刷钱时路线全是战斗的回调 2025-07-27 01:01:39 +08:00
uye
f49687fc1c fix: 卡退出战斗 2025-07-27 01:01:39 +08:00
uye
711ce7179d fix: 卡招募(? 2025-07-27 01:01:39 +08:00
uye
f161d855a4 chore: 防止没进 StrategyChange 的情况 2025-07-27 01:01:39 +08:00
uye
cd73d929fd fix: 截图保存报错 2025-07-27 01:01:39 +08:00
pre-commit-ci[bot]
c18dfa0335 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-27 01:01:39 +08:00
Weiyou Wang
2fbf3cc669 fix: 修修补补 2025-07-27 01:01:39 +08:00
Weiyou Wang
b4c8a6e1fb feat: 先复制一下之前的导航代码,能跑就行;以后再重构 2025-07-27 01:01:39 +08:00
Weiyou Wang
0f5ff16afe feat: 补充相关任务链 2025-07-27 01:01:39 +08:00
Weiyou Wang
8f215d1f5f feat: fast investment for JieGarden 2025-07-27 01:01:39 +08:00
Weiyou Wang
6cf152a151 feat: update map 2025-07-27 01:01:39 +08:00
Weiyou Wang
c0846a26cc fix: 修复换层后 StrategyChange 功能 2025-07-27 01:01:39 +08:00
Weiyou Wang
9b61fd611e fix: 修复换层识别 roi 2025-07-27 01:01:39 +08:00
Weiyou Wang
1c10a7b1ff feat: node templates 2025-07-27 01:01:39 +08:00
Weiyou Wang
0a7d51dcfb feat: skip recruitment 2025-07-27 01:01:39 +08:00
Weiyou Wang
fd91aebd42 feat: add new routing strategy -- FastInvestment_JieGarden 2025-07-27 01:01:39 +08:00
Weiyou Wang
37e1477948 refactor: polish code 2025-07-27 01:01:39 +08:00
status102
f443ce6580 perf: 肉鸽指定干员开局招募进入干员选择页状态监测追加首次进入的指导的监测 2025-07-27 00:08:36 +08:00
uye
4a9f39137c fix: 无法连接主站时无法通过备站更新
fix #13355
2025-07-26 23:57:29 +08:00
github-actions[bot]
903d7140f1 chore: Auto Update Game Resources - 2025-07-26
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16535361549

[skip changelog]
2025-07-26 02:59:25 +00:00
status102
f3448ff13c refactor: 肉鸽局内外招募流程拆分 (#13342)
* rft: 界园主题初始实现

* perf: 优化core_char, 移除反复擦写

* perf: 简化任务链, 移除RecruitMain的StartExplore前缀

* rft: 其余肉鸽适配

* fix: 修改不稳定生效的任务计数联动

* fix: 开局干员招募未点进
2025-07-26 10:29:40 +08:00
status102
86aced1930 feat: 界园肉鸽开始探索CD任务ocr追加 2025-07-25 23:35:49 +08:00
status102
9e9005099c fix: 肉鸽招募任务计数未能正确归0
助战招募可能不流经

fix #13320

Roguelike@RecruitWithoutButton
2025-07-25 23:35:30 +08:00
uye
55f03641aa fix: uuid 与 version 返回错误格式时崩溃
fix #13351
2025-07-25 21:20:29 +08:00
Sakurapainting
ed5a5327f9 feat: 禁用弹出成就气泡 (#13345)
* feat: 新增禁用自动弹出成就气泡勾选框设置

* feat: 适配jp, kr, trad-cn 语言(#13315)

* fix: suggested changes

* feat: 新增“成就气泡弹出后一段时间消失”设置勾选框

* feat: 适配本地化语言en jp kr trad-cn

* i18n: EN

* fix: rebase

* feat: 禁用弹出气泡时不等待解锁延迟

* feat: 调整键名、布局

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-25 17:59:44 +08:00
uye
2eb5f55f9f feat: 添加开机自启与系统通知相关注册表提示 2025-07-25 15:39:41 +08:00
uye
546e02f713 feat: 调整更新提示 2025-07-25 15:12:11 +08:00
uye
0a60709ea1 style: format 2025-07-25 14:29:19 +08:00
uye
523d2d0de3 chore: 仓库识别全局缓存,去除开方运算 2025-07-25 10:23:18 +08:00
uye
8732cbc131 feat: 扩大公告高度,更容易滑到底(了吗?)
[skip changelog]
2025-07-25 00:50:15 +08:00
uye
6e59f0cc83 feat: 扩大公告宽度,更容易滑到底(了吗?) 2025-07-25 00:46:36 +08:00
黄京
d90ed6d198 fix: YostarJP rogue OCR tweak for Mushikazu no Taki (#13346) 2025-07-24 23:01:30 +08:00
uye
2c997233f4 feat: 公招识别结果根据当前潜能排序 2025-07-24 22:12:58 +08:00
uye
86203e1292 fix: 公招识别按钮超出界面范围 2025-07-24 19:59:19 +08:00
uye
845ca36f5b refactor: 重构仓库识别逻辑,大幅提高识别速度 2025-07-24 18:26:26 +08:00
status102
663a5beeae chore: style
[skip changelog]
2025-07-24 16:21:15 +08:00
status102
e926beb206 fix: SA1136, SA1133 file header 2025-07-24 16:21:15 +08:00
status102
edda79aa6d perf: PerformanceUseGpu 读取替换 2025-07-24 16:21:14 +08:00
status102
e712053603 chore: SA1122 Use string.Empty for empty strings 2025-07-24 16:21:14 +08:00
uye
98e0bb6d1d fix: 分支条件判断错误 2025-07-24 16:14:59 +08:00
Sakurapainting
ff553f7c36 feat: 成就通知自动关闭选项
代替右键清空

link to #13343, #13323, #13345
2025-07-24 11:27:10 +08:00
SherkeyXD
91d6cdb099 ci: add ghtoken for codeql delete cache 2025-07-24 09:33:08 +08:00
uye
9a20625f07 fix: 仓库识别 x万 识别
糊屎
2025-07-24 02:39:13 +08:00
uye
8d19836739 feat: 调整界面描述 2025-07-23 19:37:31 +08:00
uye
05fddebb9c fix: 嵌套翻译 2025-07-23 19:07:42 +08:00
uye
30f582e908 feat: 公招结果支持彩色显示
fix #12458
2025-07-23 18:42:27 +08:00
uye
3d026d1b59 fix: 公开招募前三个槽均未招募时不会查看第四个槽
fix #12766
2025-07-23 16:34:14 +08:00
status102
0b4db32b53 i18n: wpf干员统一使用指定字符串资源 (#13333)
* i18n: wpf`干员`统一使用指定字符串资源

* i18n: EN

* i18n: JP

* i18n: KR

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-07-23 09:23:46 +08:00
github-actions[bot]
4e65ce5635 chore: Auto Templates Optimization
Triggered by 5586c00385

[skip changelog]
2025-07-22 18:52:44 +00:00
uye
5586c00385 fix: 勾选框状态错误显示 2025-07-23 01:14:57 +08:00
HY
937e3777f4 chore: 更新繁中服部分幹員 ocr + 補充截圖 (#13338)
* chore: 更新繁中服部分幹員 ocr + 補充截圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-22 23:15:36 +08:00
HY
21a06e9011 chore: 繁中服「追跡日落以西」活動導航 (#13336) 2025-07-22 23:14:46 +08:00
Constrat
7f905d4e61 ci: delete stale cache for codeql (#13335) 2025-07-22 14:16:07 +02:00
github-actions[bot]
e85813902d chore: Auto Update Game Resources - 2025-07-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16439905362

[skip changelog]
2025-07-22 09:11:34 +00:00
status102
bc15d09557 chore: vs code jsonc 2025-07-22 16:51:45 +08:00
status102
4703656bf8 fix: 移除 investment_enter_second_floor 支持 2025-07-22 16:19:55 +08:00
status102
0508d56c78 perf: wpf不再允许通过Gui直接启用允许使用不推荐的GPU选项 2025-07-22 16:16:58 +08:00
uye
885ddc7b39 feat: 标题栏显示版本改为 ui 版本 2025-07-22 14:04:53 +08:00
MistEO
5c5867c2c0 chore: make GUI UserAgent simple 2025-07-22 10:16:10 +08:00
uye
6747c35e8b style: 格式化
[skip changelog]
2025-07-21 23:02:13 +08:00
uye
dbdb98a514 chore: warning CS8625: Cannot convert null literal to non-nullable reference type.
[skip changelog]
2025-07-21 22:58:30 +08:00
uye
af9507e373 chore: warning CS8602: Dereference of a possibly null reference.
[skip changelog]
2025-07-21 22:58:07 +08:00
uye
a36060125e chore: warning CS8601: Possible null reference assignment.
[skip changelog]
2025-07-21 22:56:46 +08:00
uye
1081d3e6e8 chore: warning CS8604: Possible null reference argument for parameter 'name' in 'bool TaskQueueViewModel.IsStageOpen(string name)'.
[skip changelog]
2025-07-21 22:53:50 +08:00
uye
03842af13d chore: warning CS8618: Non-nullable field '_connectedAddress' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the field as nullable.
[skip changelog]
2025-07-21 22:51:30 +08:00
uye
4f518b6e52 chore: warning CS8604: Possible null reference argument for parameter 'name' in 'bool TaskQueueViewModel.IsStageOpen(string name)'.
[skip changelog]
2025-07-21 22:50:51 +08:00
uye
e7a273e9c8 perf: 优化客户端切换逻辑,官服B服切换无需重载 2025-07-21 22:41:53 +08:00
uye
e4bee97168 feat: 调整 gpu 提示 2025-07-21 20:30:10 +08:00
travellerse
782371d2ca perf: 添加自动编队选项 忽略干员属性要求 (#13250)
* perf: 添加自动编队选项 支持模组不满足时选择默认模组

* refactor: 修改“模组不满足时选择默认模组”为“跳过未满足的干员属性要求”

* rft: 忽略干员属性要求

* i18n: KR

* i18n: EN

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-07-21 20:16:07 +08:00
Manicsteiner
96b1c05ca0 fix(ci): fix AppImage build toolkit (#13324) 2025-07-21 13:49:21 +02:00
status102
46bb00b8e9 perf: range::copy替换 2025-07-21 19:07:04 +08:00
uye
6f38008240 feat: 置顶按钮鼠标悬浮背景色 2025-07-21 16:18:59 +08:00
github-actions[bot]
51fe97b5ac chore: Auto Templates Optimization
Triggered by 3be1dda845

[skip changelog]
2025-07-21 07:27:17 +00:00
uye
3be1dda845 fix: 萨卡兹肉鸽结算页识别错误 2025-07-21 15:26:51 +08:00
HX3N
b703b95048 fix: YostarKR InfrastReward ocrReplace
prevent max trust and trust gain mixing
2025-07-21 14:27:45 +09:00
uye
2fea17d261 refactor: 替换表合并使用 insert,保证顺序并提升可读性 2025-07-21 12:47:19 +08:00
status102
c21d15dde6 fix: 移除MaaCore的StartUp任务的client_type空值支持 (#13318)
* fix: 移除MaaCore的StartUp任务的client_type空值支持

* i18n: KR

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-07-21 11:03:35 +08:00
status102
2f48781396 fix: 使用理智药时恢复理智Ocr包含意外字符
fix #13316

180 o成 1.80 了
2025-07-21 10:55:27 +08:00
uye
4f775a04fd chore: 添加 gpu 日志 2025-07-21 01:14:08 +08:00
uye
699273b08a chore: 添加 Tencent EdgeOne 备用 CDN 2025-07-21 00:18:38 +08:00
status102
460253d5d3 fix: wpf TaskApi加载cache时缓存文件不存在 2025-07-21 00:15:05 +08:00
uye
9ee0aabf7b feat: 查看公告按钮添加检查时禁用 2025-07-20 22:45:47 +08:00
uye
f5301595cc feat: 调整模拟器分辨率不支持的描述 2025-07-20 22:24:09 +08:00
uye
86accdee86 feat: 移除肉鸽默认分队与默认职业组 2025-07-20 20:46:10 +08:00
Constrat
9a5b5fdc8d fix: missing OR-5 in main repository 2025-07-20 13:38:50 +02:00
status102
60630a8435 chore: 肉鸽加点注释 2025-07-20 10:25:11 +08:00
status102
ce088d8ee4 perf: MirrocCdk复制按钮接缝美化 2025-07-20 10:06:37 +08:00
status102
065bd3dde0 chore: 简中繁中截图耗时过长提示增加截图增强提醒 (#13309)
* chore: 简中繁中截图耗时过长提示增加截图增强提醒

* i18n: try

* i18n: JP translate

* i18n: EN

* i18n: missing EN translations

* i18n: KR

---------

Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-07-20 09:33:13 +08:00
uye
410c81c36c perf: 优化资源损坏弹窗描述,提供解决方案 2025-07-19 23:06:13 +08:00
Constrat
1bd416dcce docs: EN issue simplification 2025-07-19 12:30:12 +02:00
status102
517886234e chore: CN issue模板简化及Bot优化 (#13297)
* ci: 未阅读须知issue将添加low-quality-report并不再锁定

* chore: 简化CN issue模板
2025-07-19 15:54:31 +08:00
uye
7208f1b352 fix: 水月肉鸽卡商店刷新 2025-07-19 13:24:35 +08:00
uye
ab85561833 perf: 雷电注册表优先使用原版路径 2025-07-19 12:54:24 +08:00
uye
1c6ec1b47e chore: 添加请求耗时记录 2025-07-19 12:29:02 +08:00
uye
257d1c02b0 feat: cdk 边框圆角 2025-07-19 10:50:54 +08:00
uye
036be03459 feat: 新增是否启动客户端勾选框 2025-07-19 10:48:53 +08:00
status102
4974ab6535 refactor: 长草任务序列化重构已完成部分合并 (#13275)
* refactor: 长草任务序列化重构已完成部分打样

* perf: 计时

* perf: is int
2025-07-19 10:08:00 +08:00
uye
c3f1068edf fix: 更新日志与公告滚动条过于贴近窗口边缘
fix #13295
2025-07-19 09:52:48 +08:00
MistEO
6a4ade5093 Release v5.20.0 (#13290) 2025-07-19 00:26:34 +08:00
github-actions[bot]
0ef1501a53 docs: Auto Update Changelogs of v5.20.0 (#13291)
* docs: Auto Generate Changelog of Release v5.20.0

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update CHANGELOG.md

* feat: changelog

* feat: 更新 CHANGELOG.md

* fix: 更新 CHANGELOG.md

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
Co-authored-by: AnnAngela <naganjue@vip.qq.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-07-19 00:26:21 +08:00
uye
ae744d05c8 feat: PreSelectThemeSwipeToTheRight 添加 reduceOtherTimes 2025-07-19 00:15:51 +08:00
github-actions[bot]
be8eaa57c7 chore: Auto Update Game Resources - 2025-07-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16375174287

[skip changelog]
2025-07-18 16:10:33 +00:00
uye
1f7d83e5c4 feat: PreSelectThemeSwipeToLeft #self 2025-07-19 00:08:06 +08:00
uye
7b7875fa24 feat: PreSelectThemeSwipeToLeft 2025-07-19 00:05:50 +08:00
Lemon-miaow
00fa73551c fix: 肉鸽导航 (#13293) 2025-07-18 23:51:21 +08:00
uye
144ab609c5 feat: 临时屏蔽界园中除投资外的策略选项 2025-07-18 23:20:31 +08:00
MistEO
55f6620e0f chore: 整理一下刚糊的ua 2025-07-18 23:11:49 +08:00
MistEO
f6de7f4298 feat: Wpf UserAgent with UiVersion 2025-07-18 23:03:09 +08:00
status102
6a706c6f8a fix: 烧水仅精二在萨米主题被短路启动 2025-07-18 19:59:22 +08:00
status102
4ffc987f07 fix: 切换肉鸽主题时, 烧水奖励选择丢失 2025-07-18 19:21:12 +08:00
Constrat
7abc4086b0 fix. YostarEN OR navigation fix 2025-07-18 12:23:32 +02:00
Constrat
fb241c5cb9 chore: yostaren prepare leizi for alter 2025-07-18 11:59:43 +02:00
uye
28d9cf2a52 Release v5.20.0-beta.3 (#13274) 2025-07-18 17:35:28 +08:00
uye
b4479a2e4f feat: 添加 idle 状态切换记录 2025-07-18 17:32:54 +08:00
uye
02e5c3c9b7 fix: RunningState 无法记录日志 2025-07-18 17:32:54 +08:00
github-actions[bot]
ce9e0cfd04 chore: Auto Update Game Resources - 2025-07-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16367222337

[skip changelog]
2025-07-18 09:32:17 +00:00
MistEO
b42d7d7d17 docs: Update CHANGELOG.md 2025-07-18 17:21:52 +08:00
uye
3273f7ec7a docs: 更新肉鸽文档 2025-07-18 17:03:54 +08:00
github-actions[bot]
991474debd docs: Auto Update Changelogs of v5.20.0-beta.3 (#13283)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
2025-07-18 16:55:05 +08:00
github-actions[bot]
cde48162ea chore: Auto Update Game Resources - 2025-07-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16366041667

[skip changelog]
2025-07-18 08:33:00 +00:00
uye
a63e637b55 fix: 手动改时间或睡眠跨日后关卡列表与提示未更新 2025-07-18 16:21:23 +08:00
uye
95d2eb374d chore: 界园肉鸽没有二希望开(?)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-18 16:09:33 +08:00
Manicsteiner
d1cedf57ad chore: YostarJP ocr edits (#13276) 2025-07-18 15:38:23 +08:00
Loong
e0641d165d chore: bump maa-cli to 0.5.7 (#13278) 2025-07-18 15:32:26 +08:00
status102
2d88e43139 perf: 优化加载顺序, 简化StageManager变量 (#13277) 2025-07-18 13:53:07 +08:00
uye
265aca3724 fix: v5.20.0-beta.2.d037 重启后概率闪退 2025-07-18 12:21:13 +08:00
status102
864f824d7b refactor: 肉鸽烧水参数rename
漏了漏了.jpg
2025-07-18 10:49:16 +08:00
status102
ea247333d0 refactor: 肉鸽开局奖励选择 2025-07-18 10:22:41 +08:00
status102
6f29ca0d8f perf: 肉鸽任务参数初始化简化 2025-07-18 10:22:41 +08:00
status102
83dd7b5914 fix: 刷理智代理倍率移除1000适配 2025-07-18 10:22:19 +08:00
Constrat
3a763fb12b fix: YostarEN OR navigation 2025-07-17 19:48:32 +02:00
github-actions[bot]
d0eedc7faf chore: Auto Update Game Resources - 2025-07-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16351416825

[skip changelog]
2025-07-17 17:08:30 +00:00
status102
b01cfaf9c4 refactor: TaskSettingVisibilityInfo.Current -> Instance 2025-07-17 23:41:10 +08:00
uye
f4864c7e5e style: format
[skip changelog]
2025-07-17 22:01:42 +08:00
Constrat
05387bf915 fix: YostarEN Eye for an Eye Sarkaz Encounter 2025-07-17 15:56:40 +02:00
HX3N
b3a3d88b1d fix: YostarKR 以血还血 ocr tweak
prevent mixing 以血还血 and 魂灵见闻:以血还血
2025-07-17 22:43:48 +09:00
SherkeyXD
fec780e3d8 fix: 尝试修复点击过头导致选到月度小队 2025-07-17 20:35:03 +08:00
SherkeyXD
ab92d12108 chore: 不期而遇子事件可读性优化 2025-07-17 20:24:06 +08:00
Constrat
8cfe4fd626 fix: yostaren sarkaz encouter ocr tweaks 2025-07-17 14:05:54 +02:00
uye
fb188b51a2 feat: 肉鸽支持多级事件选择 2025-07-17 20:00:27 +08:00
HX3N
0ec9573bef chore: YostarKR OR ocr edits 2025-07-17 18:20:50 +09:00
uye
404d11aad4 perf: 先筛选未进驻再清空队列
fix #13263
2025-07-17 16:57:16 +08:00
uye
4c4b24e573 fix: 缺 dll 和 resource 的时候没弹喜报 2025-07-17 16:11:34 +08:00
uye
f8077d6084 chore: 优化日志输出 2025-07-17 16:11:33 +08:00
github-actions[bot]
9b9dc35580 chore: Auto Update Game Resources - 2025-07-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16338983667

[skip changelog]
2025-07-17 07:31:00 +00:00
uye
927def4ed3 fix: 勾选「反转主任务右键单击效果」时,半选主任务在重启后无法还原选中状态 2025-07-17 12:45:47 +08:00
uye
0d5d03d580 fix: 最小化会在桌角留下一个小窗口 2025-07-17 12:20:24 +08:00
萨拉托加
f0219dc7a6 perf: 调整干员罗比菈塔在肉鸽使用的技能 2025-07-17 12:13:48 +08:00
uye
a538ed2291 fix: 勾选启动后直接最小化后无法拖动窗口 2025-07-17 12:09:30 +08:00
DavidWang19
54cf5ae7d6 perf: 界园肉鸽中停止招募锡人 2025-07-17 04:12:44 +01:00
DavidWang19
2b7f5f5e60 fix: 更新关卡ocr替换 2025-07-17 03:32:29 +01:00
萨拉托加
913aad2d6b feat: 界园肉鸽部分关卡自动战斗逻辑 (#13219) 2025-07-17 03:19:41 +01:00
Lemon-miaow
7078f1b8a1 fix: 肉鸽导航无法选择傀影肉鸽 (#13255) 2025-07-17 03:13:23 +01:00
github-actions[bot]
f2b34b29a3 chore: Auto Templates Optimization
Triggered by 29d66dc202

[skip changelog]
2025-07-17 01:58:10 +00:00
DavidWang19
29d66dc202 fix: 修复在得偿所愿或其他位置选择投钱后卡住的问题 2025-07-17 02:47:27 +01:00
DavidWang19
c901ba43c8 fix: 修复检测不到next的问题 2025-07-17 01:51:23 +01:00
github-actions[bot]
0273f1a940 chore: Auto Templates Optimization
Triggered by c52d6d66ce

[skip changelog]
2025-07-17 00:31:48 +00:00
DavidWang19
c52d6d66ce perf: 优化界园不期而遇默认逻辑 2025-07-17 01:31:17 +01:00
DavidWang19
e35512bd9d perf: 优化指点迷津节点task的复用 2025-07-17 01:25:29 +01:00
status102
64bcc201ee chore: 长草任务当前选中index 2025-07-17 08:10:27 +08:00
status102
319e384239 feat: 新Config任务参数读写, 界面刷新, 任务添改base 2025-07-17 08:10:26 +08:00
status102
1a41b53a49 feat: 新的添加任务 2025-07-17 08:10:26 +08:00
status102
08997048e0 chore: 重构部分预载 2025-07-17 08:10:26 +08:00
status102
210fb23e57 fix: typo 2025-07-17 08:10:05 +08:00
DavidWang19
4e2afb23e2 fix: 调整指点迷津节点阈值 2025-07-17 00:26:59 +01:00
Hao Guan
9e9fa712ef feat(mac): 添加界园入口 2025-07-17 03:41:20 +08:00
github-actions[bot]
6819e05642 chore: Auto Update Game Resources - 2025-07-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16328097180

[skip changelog]
2025-07-16 19:07:51 +00:00
MistEO
9559659d15 Release v5.20.0-beta.2 (#13251)
本次发版只进界园肉鸽问题修复,保证刷钱可用
新功能下次再进
2025-07-17 01:24:35 +08:00
DavidWang19
a8704bb862 docs: 更新changelog 2025-07-16 18:21:56 +01:00
DavidWang19
e00b601f12 fix: 去掉界园没有的刷2希望开局 2025-07-16 18:18:37 +01:00
github-actions[bot]
c0516089db docs: Auto Update Changelogs of v5.20.0-beta.2 (#13253)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2025-07-17 00:23:49 +08:00
SherkeyXD
8a751e4a2e feat: 刷开局wpf仅显示当前主题可用选项 2025-07-17 00:02:31 +08:00
SherkeyXD
6821899c84 chore: 刷开局保证传给core的只有本主题可用内容 2025-07-17 00:02:31 +08:00
pre-commit-ci[bot]
dd08f96419 chore: Auto update by pre-commit hooks [skip changelog] 2025-07-17 00:02:31 +08:00
SherkeyXD
53a7deff9a feat: 界园肉鸽烧水支持票券 2025-07-17 00:02:31 +08:00
Rbqwow
74bb69b69d docs: 修复 readme logo
谁偷偷升依赖了?!
2025-07-16 23:02:29 +08:00
SherkeyXD
f5a747527e fix: 修复wpf主题检测错误 2025-07-16 22:53:49 +08:00
SherkeyXD
5aa369cdad chore: 刷开局精二仅为水月和萨米显示 2025-07-16 22:36:38 +08:00
SherkeyXD
5bc90917a6 chore: 移除未被使用的wpf文本 2025-07-16 22:21:24 +08:00
DavidWang19
232367afca chore: 删除界园多余的模板图和task 2025-07-16 14:59:16 +01:00
DavidWang19
87dd61b269 fix: 修复界园主题选择问题 2025-07-16 14:47:37 +01:00
Constrat
81e9bfa848 i18n: EN IS5 squads 2025-07-16 15:43:59 +02:00
uye
627ffed461 fix: 卡得偿所愿 2025-07-16 21:39:18 +08:00
github-actions[bot]
6721a575e7 chore: Auto Templates Optimization
Triggered by 13c7d43920

[skip changelog]
2025-07-16 13:16:27 +00:00
DavidWang19
13c7d43920 fix: 更新退出事件模板图 2025-07-16 14:14:32 +01:00
DavidWang19
dbd9f16627 docs: 还漏了两个 2025-07-16 13:55:46 +01:00
status102
7037991d56 chore: style
[skip changelog]
2025-07-16 20:11:37 +08:00
SherkeyXD
45465d8ad2 docs: 还漏了一个 2025-07-16 20:07:31 +08:00
SherkeyXD
aa07356b07 docs: 还有一只.png 2025-07-16 20:05:14 +08:00
SherkeyXD
e0b2b580b7 docs: 有猪.jpg 2025-07-16 19:52:13 +08:00
MistEO
35b060bb7a Release v5.20.0-beta.1 (#13217) 2025-07-16 19:49:03 +08:00
status102
d267bbc213 docs: changelog 2025-07-16 19:47:09 +08:00
SherkeyXD
bb7a03e1e9 docs: update changelog 2025-07-16 19:40:54 +08:00
github-actions[bot]
46c6392b82 docs: Auto Update Changelogs of v5.20.0-beta.1 (#13244)
* docs: Auto Generate Changelog of Release v5.20.0-beta.1

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: MistEO <mistereo@hotmail.com>
2025-07-16 19:25:33 +08:00
HYY
3e374232f2 feat: 适配部分已知的不期而遇 (#13233)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
2025-07-16 19:21:31 +08:00
status102
59b6a4050a fix: 刷理智界面设计器error 2025-07-16 18:20:19 +08:00
萨拉托加
116b953085 feat: 界园肉鸽二层作战逻辑 2025-07-16 17:30:36 +08:00
status102
3c85e0b745 refactor: 启动时成就打包 (#13221) 2025-07-16 17:27:43 +08:00
status102
008b194cee perf: 干员因模组不可选中时, 加个输出 (#13230)
* perf: 干员因模组不可选中时, 加个输出

临时措施,总感觉还要改

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-16 17:08:29 +08:00
uye
4e1d5982b1 chore: 调整肉鸽日志颜色 2025-07-16 16:18:36 +08:00
uye
d222a6df83 chore: 调整投资描述 2025-07-16 15:48:02 +08:00
SherkeyXD
7f3cac14bc rft: 移动所有主题的模板图 2025-07-16 15:34:35 +08:00
SherkeyXD
ef600c09c9 rft: 移动遗漏的肉鸽模板图 2025-07-16 15:34:35 +08:00
github-actions[bot]
688d036b34 chore: Auto Templates Optimization
Triggered by aa948748e9

[skip changelog]
2025-07-16 07:31:13 +00:00
uye
aa948748e9 fix: 新版肉鸽商店刷新 2025-07-16 15:30:20 +08:00
status102
40981a8063 refactor(wpf): 基建任务枚举引用路径统一, 修复设计器error 2025-07-16 15:18:32 +08:00
MistEO
f3c491c01b ci(fix): gh pages deploy condition 2025-07-16 15:13:45 +08:00
status102
b5753af639 fix: 移除ClientType未选择, 统一变更为官服 (#13220)
* fix: 移除ClientType未选择, 统一变更为官服

* chore: ver
2025-07-16 15:10:43 +08:00
SherkeyXD
4d780df455 chore(deps): bump dependencies (#13121) 2025-07-16 14:58:35 +08:00
HX3N
c71fd90868 i18n: KR JieGarden translation 2025-07-16 14:54:51 +09:00
github-actions[bot]
0db63172c6 chore: Auto Update Game Resources - 2025-07-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16309292348

[skip changelog]
2025-07-16 03:01:13 +00:00
DavidWang19
295782cfb8 feat: 初步适配界园肉鸽并初步实现存钱 (#13183)
* feat: 初步适配界园肉鸽并初步实现存钱

---------

Co-authored-by: 晓丶梦丶仁 <74444214+Daydreamer114@users.noreply.github.com>
Co-authored-by: SherkeyXD <57581480+SherkeyXD@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: 不留 <weinibuliu@outlook.com>
Co-authored-by: HYY <95246895+HYY1116@users.noreply.github.com>
Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
2025-07-16 03:20:33 +01:00
Huaxi Pan
ccc1dd65cc perf: 改进水月肉鸽干员部署逻辑 (#12671)
* feat: 更新水月肉鸽中维什戴尔的使用逻辑

* feat: 基本更新了维什戴尔在水月肉鸽中的使用逻辑

* fix: 修复recruitment 中蕾缪安划分错误

* feat: 优化了大君遗脉中开局漏怪的问题

* feat: 优化了精酿杀手关卡中开局漏怪的问题

* feat: 优化了瞻前顾后关卡中地面干员的位置

* feat: 优化了机械之灾中常态阻挡数不足的问题

* feat: 优化在铳与秩序关卡中维什戴尔容易被炮手炸死的问题

* feat: 删除了在"好梦在何方.json"中的对于蕾缪安的冗余逻辑, 将维什戴尔的放置时机后置避免开局漏怪

* perf: 修改高台C招募优先级

* feat: 后置"共生"中维什戴尔的放置时机, 避免开局漏怪

* feat: 补充了维什戴尔在"病症"中的使用逻辑

* feat: 优化了"机械之灾"中特殊情况下无常态阻挡的问题

* feat: 优化了"互助"关卡中部署在某些位置会导致MAA无法开启技能的问题

* feat: 前置在"瞻前顾后"中维什戴尔的部署时机, 避免盾前堆怪

* feat: 补充维什戴尔在"地下天途中的使用逻辑"

* feat: 补充维什戴尔在"回溯"中的使用逻辑

* fix: 修复了维什戴尔在"巢穴"中部署位置错误的问题

* feat: 优化了"海窟沙暴"中开局容易漏怪的问题

* feat: 删去海窟沙暴中的冗余语句, 再解决一下开局漏怪的问题

* feat: 优化了"分离与统一"中干员部署在某些位置导致无法开启技能的问题

* feat: 更新"大群所向"中的部署逻辑, 调整伊内丝的使用方式

* feat: 优化"大群所向"中输出时间不足的问题

---------

Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
2025-07-16 09:56:07 +08:00
MistEO
a541da064a ci: deploy website to GitHub Pages (#13207) 2025-07-15 17:39:03 +08:00
github-actions[bot]
a2de7ac376 chore: Auto Templates Optimization
Triggered by 8cff328e92

[skip changelog]
2025-07-15 09:34:47 +00:00
github-actions[bot]
8cff328e92 chore: Auto Update Game Resources - 2025-07-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16289549499

[skip changelog]
2025-07-15 09:34:17 +00:00
uye
7c2072ee1f style: 格式化
[skip changelog]
2025-07-15 17:14:42 +08:00
uye
8052b16ca1 fix: ComboBox 剪贴板异常 2025-07-15 16:56:48 +08:00
uye
10765dfddb chore: 调整肉鸽日志颜色 2025-07-15 11:56:31 +08:00
uye
13fc438a62 fix: 公告及更新日志背景颜色异常 2025-07-15 10:55:12 +08:00
github-actions[bot]
0b7f8186ed chore: Auto Update Game Resources - 2025-07-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16276743684

[skip changelog]
2025-07-14 20:08:40 +00:00
uye
e57df86a00 Release v5.19.0-beta.1 (#13204) 2025-07-15 01:45:34 +08:00
uye
878100ef1b docs: 更新 CHANGELOG.md 2025-07-15 01:37:13 +08:00
uye
64d92dc3b3 Release v5.18.0-beta.1 (#13200) 2025-07-15 01:07:48 +08:00
github-actions[bot]
ec5c0afa29 docs: Auto Update Changelogs of v5.18.0-beta.1 (#13201)
docs: Auto Generate Changelog of Release v5.18.0-beta.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-15 01:03:24 +08:00
Lemon-miaow
2b0109127f feat: 优化会客室线索处理逻辑 (#13160)
* feat: 优化会客室线索处理逻辑

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-15 00:57:05 +08:00
uye
462bf51dce feat: 官网添加非当前电脑构架提示 2025-07-14 22:20:58 +08:00
uye
bf0943066a chore: 抽离 ToolTip 创建方法,统一 ToolTip 格式 2025-07-14 18:41:24 +08:00
uye
0153486afb chore: 日志栏使用 TooltipBlock 2025-07-14 17:51:57 +08:00
uye
c8e8b3949e chore: TooltipBlock 支持显示 svg 2025-07-14 16:54:20 +08:00
uye
6eda663bcf fix: TooltipBlock 无法使用 binding 2025-07-14 16:32:49 +08:00
HX3N
ef0864c084 chore: YostarKR SS@Store@CheckUnlimited.png 2025-07-14 10:50:51 +09:00
Constrat
12b8f46bd8 fix: optimize templates run
[skip changelog]
2025-07-13 16:14:08 +02:00
Constrat
ab0c9eb5bd chore: manual resource updater 2025-07-13 16:09:08 +02:00
status102
d2ff015c1c fix: 肉鸽, 生息演算 calcBinding枚举修复 2025-07-13 21:53:55 +08:00
Constrat
5bb12ce6e8 ci: manual optimize templates 2025-07-13 12:59:55 +02:00
Constrat
5135028df4 chore: YostarEN SS@Store@CheckUnlimited.png 2025-07-13 12:59:17 +02:00
Manicsteiner
1728a2bd8f chore: YostarJP SS_Store_CheckUnlimited (#13192)
* chore: YostarJP SS_Store_CheckUnlimited

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-13 18:59:06 +08:00
Constrat
263f6edd05 fix: style in json
[skip changelog]
2025-07-13 12:48:40 +02:00
eneen
c4fd6449fc perf: 添加萨卡兹肉鸽 机动队 溃乱魔典 盲盒广场 关卡策略 (#12636) 2025-07-13 17:46:42 +08:00
uye
5fa5b97399 fix: 商店功能错误购买商品
fix #13191
2025-07-13 17:40:23 +08:00
uye
b6896898ec chore: 移除导航 filters 2025-07-13 16:53:44 +08:00
uye
6bde9b97af fix: 小工具-公招识别 手动触发时不会改变显示状态 2025-07-13 15:19:58 +08:00
uye
ecf0d4e732 chore: 添加缺失的翻译与文档更新 2025-07-13 15:03:18 +08:00
uye
b1fc706a6a chore: 统一颜色 2025-07-13 14:21:35 +08:00
uye
24718ec243 chore: 使用自定义悬浮窗样式 2025-07-13 14:21:22 +08:00
nekosu
c876874cf5 feat: 支持MaaPipelineSupport插件 (#13189) 2025-07-13 14:11:07 +08:00
status102
a3cdc98031 fix: 移除Roguelike@GetDrop2中重复的Roguelike@DropsFlag任务 (#13180)
link to 2ed2376763
2025-07-13 12:37:27 +08:00
uye
cc995da6af chore: 使用 svg 代替 >,避免字体影响 2025-07-13 10:57:18 +08:00
uye
a41d4f7885 chore: 添加设计时预览 2025-07-13 00:07:52 +08:00
uye
a6e90ac65e feat: 添加悬浮窗标识符 2025-07-13 00:00:16 +08:00
uye
59e31663c4 feat: 添加任务及基建设施日志翻译 2025-07-12 22:44:25 +08:00
uye
bf759da599 chore: 日志栏 InitialShowDelay 改为 200,避免误触 2025-07-12 21:55:23 +08:00
uye
49753de8b8 feat: 新增公招星级悬浮提示 2025-07-12 21:51:06 +08:00
uye
763e5605cf feat: 新增通过 string 直接构造 Tooltip 方法 2025-07-12 21:50:32 +08:00
uye
7555119b03 feat: cdk 添加复制按钮 2025-07-12 19:49:04 +08:00
uye
8b5a60d79e chore: 使用 UsedImplicitly 2025-07-12 19:49:03 +08:00
Constrat
bb329afea0 style: clang
[skip changelog]
2025-07-12 13:38:47 +02:00
uye
62984d1026 feat: 新增资源仓库超链接 2025-07-12 19:06:35 +08:00
uye
034ecff647 feat: 为截图测试日志添加 Tooltip 展示所有截图方式耗时 2025-07-12 18:56:08 +08:00
HX3N
58b8e167ca chore: YostarKR BattleQuickFormationModulePage 2025-07-12 19:47:02 +09:00
Constrat
653fed53bb chore: YostarEN BattleQuickFormationModulePage 2025-07-12 12:40:44 +02:00
Manicsteiner
8e05cdaecb chore: YostarJP tasks edits (#13187) 2025-07-12 18:32:22 +08:00
uye
1e8d8ce91a chore: 优化掉落显示 2025-07-12 17:37:28 +08:00
status102
3f310ecede fix: 肉鸽界面设计器error (#13185) 2025-07-12 13:38:09 +08:00
status102
f14bf295c7 fix: typo & const ref 2025-07-12 12:39:57 +08:00
status102
7a8586a6d7 chore: style 2025-07-12 12:36:20 +08:00
status102
8acf9ececb refactor: 生息演算任务参数枚举 2025-07-12 10:09:08 +08:00
uye
4ea3900941 fix: 修复 ExpiringStatus 无法用于日志输出的问题 2025-07-12 00:54:54 +08:00
uye
ca81ddc4d9 chore: tooltip 顶部居中 2025-07-12 00:31:30 +08:00
status102
5a55b4d4dc fix: 理智药使用量ocr错误
fix #13132
2025-07-12 00:10:31 +08:00
travellerse
4e3c75b17b feat: 支持编队添加干员时选择模组 (#12811)
* feat: 支持编队添加干员时选择模组

* chore: Auto update by pre-commit hooks [skip changelog]

* feat: 更新模组编号和本地化字符串以支持新模组

* fix: 统一使用激活时的模组字符图像,将识别阈值下降至0.8以识别未激活时的模组字符

* perf: 省略不必要的参数

* perf: 修改模组默认值为`-1: 不修改`

* fix: 修复不使用模组时的点击区域, 使用模板图替换

* fix: roi

* chore: Auto update by pre-commit hooks [skip changelog]

* perf: 优化部分文本

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 选择模组失败时反选干员

* fix: 选择模组失败时继续检查同组其他干员

* perf: 过个Rgb

Co-authored-by: status102<102887808+status102@users.noreply.github.com>

* chore: 不过灰度

* fix: 添加模板图片以匹配y模组字母的两种形式

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-11 23:56:37 +08:00
uye
0478306149 feat: 日志栏新增 ToolTip 提示 2025-07-11 23:31:05 +08:00
uye
3b40e07088 chore: 调整成就描述 2025-07-11 23:30:01 +08:00
uye
e38e8cf01a perf: 优化物品图显示缓存 2025-07-11 23:05:06 +08:00
uye
b0462076ea fix: 修复模板匹配遇到 inf 与 nan 时返回 0 的错误结果 2025-07-11 23:05:06 +08:00
github-actions[bot]
53e5c9b53d chore: Auto Update Game Resources - 2025-07-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16217034977

[skip changelog]
2025-07-11 09:46:55 +00:00
Constrat
f19d4631b0 chore: YostarEN OR Navigation 2025-07-11 11:43:20 +02:00
HX3N
96f8d25e47 chore: YostarKR OR navigation (#13179) 2025-07-11 11:43:03 +02:00
github-actions[bot]
e3f01f83da chore: Auto Update Game Resources - 2025-07-11
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16215141064

[skip changelog]
2025-07-11 08:10:18 +00:00
status102
ff18028781 chore: style 2025-07-11 15:44:19 +08:00
github-actions[bot]
9c0c4e6da0 chore: Auto Templates Optimization
Triggered by cfc7bfd02e

[skip changelog]
2025-07-11 07:42:34 +00:00
uye
cfc7bfd02e fix: 无法匹配活动商店部分商品 2025-07-11 15:42:05 +08:00
uye
ce96cef6ec fix: 外服训练室技能名可能被部分替换成干员名 2025-07-11 11:13:29 +08:00
status102
c3c69c7e1f rft: 肉鸽模式参数枚举 2025-07-11 10:33:16 +08:00
status102
7dd977f525 chore: file header 2025-07-11 10:20:09 +08:00
status102
7fb2d0686e fix: import 2025-07-11 10:17:06 +08:00
status102
8c8be278ea chore: 新Config长草任务存储已完成部分预载 2025-07-11 09:20:16 +08:00
status102
f4b71bd0be refactor: 新Config结构修改
部分迁移自 #12315
2025-07-11 09:09:51 +08:00
Lemon-miaow
d8515b15a2 fix: 更新肉鸽商店刷新按钮模板 (#13172)
* fix: 小家具

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-10 15:52:26 +01:00
uye
049f244a95 feat: 新增返回 bgr byte[] 数据接口,大幅降低 peep 性能占用 2025-07-10 21:35:43 +08:00
status102
0dc6af17a3 perf: 肉鸽参数显示简化, 开局干员空时不显示使用助战 2025-07-10 17:42:01 +08:00
uye
078ce0860d chore: 调整提示 2025-07-10 00:52:45 +08:00
晓丶梦丶仁
184bdd3dd1 fix: 一叶扁舟 choices
fix #13165
2025-07-10 00:28:23 +08:00
晓丶梦丶仁
5e165319e5 fix: JP 似是而非 OCR 2025-07-10 00:05:44 +08:00
SherkeyXD
47357b2baa chore: no overflow 2025-07-09 20:33:46 +08:00
晓丶梦丶仁
f5301faafb fix: 魂灵见闻:善恶同道 OCR
fix #13166
2025-07-09 18:55:18 +08:00
Constrat
f1d05cd70e fix: EN training room OCR 2025-07-09 11:47:20 +02:00
uye
edca2ea538 chore: 勾选手动填写实例号后查询一次实例 2025-07-09 17:35:37 +08:00
uye
6778ad4f6e fix: 获取雷电 pid 失败 2025-07-09 17:29:25 +08:00
uye
eb096e257c ci: ubuntu build 2025-07-09 16:49:56 +08:00
uye
6df743041f feat: 新增雷电专版注册表自动检测,新增雷电端口自动检测 2025-07-09 16:26:49 +08:00
uye
38cf01b66e chore: 避免使用 async void 2025-07-09 15:25:15 +08:00
uye
4cb6744e01 chore: 省略默认参数 2025-07-09 12:52:42 +08:00
uye
9ee3520634 chore: 优化窗口显示
fix #13161
2025-07-09 12:49:39 +08:00
uye
b16942cb2e chore: 调整成就描述 2025-07-09 09:20:52 +08:00
Constrat
72d1956643 fix: EN not enough space for SSS selection 2025-07-08 21:31:26 +02:00
uye
8293bcf978 chore: 调整 ocrReplace
[skip changelog]
2025-07-08 22:39:14 +08:00
uye
c6e1e039bb feat: fetch 请求增加 If-Modified-Since 2025-07-08 21:54:43 +08:00
uye
bc998e4902 chore: 调整 ocrReplace
[skip changelog]
2025-07-08 21:25:03 +08:00
github-actions[bot]
9bbde2199f chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16142758372

[skip changelog]
2025-07-08 12:08:10 +00:00
Constrat
9c991631f0 fix: EN InfrastTrainingOperatorAndSkill adaptation 2025-07-08 13:53:36 +02:00
uye
52f534cf43 chore: 调整 ocrReplace
[skip changelog]
2025-07-08 18:02:10 +08:00
uye
270cfc19bc chore: 调整 ocrReplace 2025-07-08 17:55:03 +08:00
uye
9bed2f4bcc perf: 训练室继续专精使用特征匹配识别技能 2025-07-08 17:39:59 +08:00
uye
e3736bb4e4 chore: 添加 FeatureMatch schema 2025-07-08 17:39:59 +08:00
github-actions[bot]
4a8ace53cc chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16138144763

[skip changelog]
2025-07-08 08:33:18 +00:00
github-actions[bot]
d0374037fa chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16133813290

[skip changelog]
2025-07-08 04:16:27 +00:00
github-actions[bot]
4850da4acb chore: Auto Templates Optimization
Triggered by ba161b98eb

[skip changelog]
2025-07-08 03:00:12 +00:00
github-actions[bot]
ba161b98eb chore: Auto Update Game Resources - 2025-07-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16132825324

[skip changelog]
2025-07-08 02:59:47 +00:00
uye
d1ff5c2400 fix: 训练室技能名识别 2025-07-08 00:45:29 +08:00
uye
442d7d5b70 chore: 米奇妙妙 ocr 2025-07-08 00:41:01 +08:00
uye
29f93616ff chore: 调整描述 2025-07-07 19:41:33 +08:00
Loong
aa7b5aeb77 chore: bump maa-cli to 0.5.6 (#13150) 2025-07-07 11:41:08 +08:00
uye
ec4f3f98f5 chore: 添加日志记录 2025-07-07 09:44:34 +08:00
uye
38ca800031 chore: 设置剪切板前先清空 2025-07-06 22:45:52 +08:00
uye
650a48b8a5 fix: 高版本检测到低版本更新时错误提示无更新包 2025-07-06 12:46:03 +08:00
uye
b16231698b chore: response.Log 添加 etag 日志 2025-07-06 00:20:37 +08:00
uye
13bef6c4b6 fix: 无法继续专精 2025-07-05 21:05:16 +08:00
uye
f6b0ca7754 perf: 优化热更逻辑 2025-07-05 12:48:07 +08:00
uye
f4489f4afb chore: 添加模拟器路径与附加命令的提示 2025-07-05 10:30:30 +08:00
uye
209da3da03 Release v5.18.3 (#13130) 2025-07-05 09:50:47 +08:00
uye
773a26fb1b docs: Update CHANGELOG.md 2025-07-05 09:50:17 +08:00
uye
bf2d6dcb5f fix: 公招刷新 2025-07-05 09:47:13 +08:00
uye
b5adf5b949 Release v5.18.2 (#13107) 2025-07-04 23:47:31 +08:00
uye
cd4b28cc59 chore: 漏了个 _mainTaskTypes 2025-07-04 23:36:42 +08:00
github-actions[bot]
ff2fc2e888 docs: Auto Update Changelogs of v5.18.2 (#13113)
* docs: Auto Generate Changelog of Release v5.18.2

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-07-04 23:35:04 +08:00
uye
f7f9d709b5 fix: 当首选关卡为剿灭时,后续备选关卡和剩余理智出现问题时不会报错 2025-07-04 23:31:24 +08:00
uye
a63bd7ffbf chore: 调整单击托盘图标动作,符合常规软件行为 2025-07-04 22:17:27 +08:00
uye
401cd76c2d fix: 修复因重定向导致 ETag 缓存与原始地址不符的问题 2025-07-04 19:18:52 +08:00
uye
4cef1b1a24 fix: 未勾选自动确认 3 星且有对应倾向 3 星 tag 时不会刷新 2025-07-04 18:30:23 +08:00
github-actions[bot]
7775e3889d chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16057199753

[skip changelog]
2025-07-03 17:46:49 +00:00
Constrat
1f132c7adc fix: YostarEN & YostarJP HS rerun navigation 2025-07-03 19:30:27 +02:00
vonnoq
af9eab239d fix: 繁中服無法識別荒蕪拉普蘭德 (#13125) 2025-07-03 19:15:13 +02:00
github-actions[bot]
43a5802652 chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16056500208

[skip changelog]
2025-07-03 17:07:37 +00:00
uye
23743558ad fix: 存在更新时问题反馈提示显示不全
fix fafd1970be (commitcomment-161341748)
2025-07-03 23:29:55 +08:00
github-actions[bot]
cd6bd95445 chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16053207061

[skip changelog]
2025-07-03 14:30:33 +00:00
HX3N
5ecec67bf2 fix: YostarKR HS rerun navigation (#13124)
* fix: YostarKR HS rerun navigation

* chore: add stages
2025-07-03 16:15:56 +02:00
SherkeyXD
e8bcf55546 chore: remove TaskTransitionVisualizer 2025-07-03 19:17:25 +08:00
uye
83bc2649a0 chore: 调整命名空间 2025-07-03 19:17:01 +08:00
github-actions[bot]
6102d7bf43 chore: Auto Update Game Resources - 2025-07-03
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/16043883983

[skip changelog]
2025-07-03 07:08:58 +00:00
uye
c1b9a158a0 fix: typo
[skip changelog]
2025-07-03 12:18:13 +08:00
uye
a79980daf2 fix: 规避 WPF 剪贴板卡顿,修复剪切不清除文本的问题。支持 (Rich)TextBox 复制/剪切/粘贴 和 DataGrid 复制 2025-07-03 12:03:02 +08:00
晓丶梦丶仁
b7d8577023 fix: Mumu5.0 MumuExtra
mumu5.0 正式版似乎在根目录中留了一个 shell\sdk\xxxx.dll,部分用户反应这个 dll 无法连接模拟器,删除后可用;于是检测路径时优先检测 Mumu5.0 的路径,若不存在再向下兼容
2025-07-03 00:22:21 +08:00
uye
874db89c8a fix: 不知道为啥有时候肉鸽难度识别最后会多个0,ui打个补丁 2025-07-02 21:59:13 +08:00
SherkeyXD
f41356f683 fix: no unsigned subtraction 2025-07-02 19:33:17 +08:00
SherkeyXD
c285d53404 chore: use SecureZeroMemory for safety 2025-07-02 19:24:09 +08:00
鬼影233
b82081769f fix: 调整 YoStarEN 大荒城公招、抽卡的截图以修复识别失败的问题 (#13117)
* fix: 调整 YoStarEN 大荒城公招、抽卡的截图以修复识别失败的问题
2025-07-02 13:05:37 +02:00
github-actions[bot]
89969d2101 chore: Auto Templates Optimization
Triggered by 73f53e1f9c

[skip changelog]
2025-07-01 15:07:20 +00:00
pre-commit-ci[bot]
73f53e1f9c chore: Auto update by pre-commit hooks [skip changelog] 2025-07-01 15:06:19 +00:00
HY
5aff0583f7 chore: 更新繁中服線索與部分截圖 (#13094)
* chore: 更新線索圖片

* chore: 更新其他圖片

* chore: Auto update by pre-commit hooks [skip changelog]

* chore: 用更高的 DPI 再用一次截圖

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-07-01 17:03:09 +02:00
github-actions[bot]
a4efe0aa3c chore: Auto Update Game Resources - 2025-07-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15997555493

[skip changelog]
2025-07-01 11:06:59 +00:00
github-actions[bot]
313e46153f chore: Auto Update Game Resources - 2025-07-01
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15992790429

[skip changelog]
2025-07-01 07:30:41 +00:00
github-actions[bot]
e76e21d986 chore: Auto Update Game Resources - 2025-06-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15981481318

[skip changelog]
2025-06-30 19:06:28 +00:00
github-actions[bot]
0d19298f4b chore: Auto Update Game Resources - 2025-06-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15976645788

[skip changelog]
2025-06-30 15:08:04 +00:00
晓丶梦丶仁
4bc67b33f5 feat: wpfgui 添加第三备选关卡 (stage4) (#13106) 2025-06-30 22:41:02 +08:00
晓丶梦丶仁
5ee2b96938 fix: KR SS@Store@Purchase OCR
[skip changelog]
2025-06-30 19:26:22 +08:00
晓丶梦丶仁
f6ee7f6ab4 fix: KR SS@Store@Purchase OCR 2025-06-30 19:25:16 +08:00
晓丶梦丶仁
4f3300fa17 fix: JP SS@Store@Purchase OCR 2025-06-30 19:15:55 +08:00
zhangweijian97
db9a402bd8 docs: 更新Linux开发环境配置教程 加入 Mac 开发建议 2025-06-30 14:02:59 +08:00
dantmnf
6ce5c5ca7d feat: warn about known problematic injected dlls 2025-06-30 11:50:31 +08:00
github-actions[bot]
8805d1a3f1 chore: Auto Update Game Resources - 2025-06-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15947736529

[skip changelog]
2025-06-28 20:07:41 +00:00
Constrat
d2bc88896c fix: wrong dossoles for global
[skip changelog]
2025-06-28 00:27:17 +02:00
Constrat
3e56b73283 chore: SSS#7 Dossoles global 2025-06-28 00:25:22 +02:00
HY
dc2754bf39 chore: 繁中服_周年月卡領取 &「揭幕者們」活動導航 (#13092)
* chore: 周年月卡領取

* chore: 「揭幕者們」活動導航
2025-06-27 23:13:52 +08:00
github-actions[bot]
9f9f0270a8 chore: Auto Update Game Resources - 2025-06-27
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15919471111

[skip changelog]
2025-06-27 06:11:07 +00:00
github-actions[bot]
a0dbca0816 chore: Auto Update Game Resources - 2025-06-27
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15918939109

[skip changelog]
2025-06-27 05:31:12 +00:00
status102
323d991308 fix: Toast遮挡右侧界面
fix #13088
2025-06-27 10:57:36 +08:00
Sherkey Asher
94f58586b7 ci: add codeql for security check 2025-06-27 09:26:25 +08:00
SherkeyXD
9c05d6e18b feat: 优化 CropRoi 使用体验 2025-06-26 17:38:39 +08:00
uye
fdeae7b28f chore: 资源日期使用本地时间显示 2025-06-25 22:57:37 +08:00
uye
399eb27360 chore: 删除错误提示
[skip changelog][skip ci]
2025-06-25 20:16:04 +08:00
status102
39a8e0c766 chore: 引航者试炼#5 TN-1 ~ TN-4地图view[1] & 干员部署修复 2025-06-25 20:05:41 +08:00
status102
e098c55223 ci: 禁止更新时重判 2025-06-25 20:03:31 +08:00
uye
bf80696a80 chore: 调整关卡选择中的剿灭显示 2025-06-25 19:55:32 +08:00
status102
bc560cf9af perf: SSReopen使用XX-OpenOpt代替SideStoryReopen导航 (#13078) 2025-06-25 19:16:09 +08:00
status102
e73635339d Revert "chore: 引航者试炼#5 TN-1 ~ TN-3地图views[1]修复"
This reverts commit ae38ad904b.
2025-06-25 12:02:46 +08:00
uye
d341d95372 chore: 显示错误 2025-06-25 00:43:04 +08:00
uye
e1ff78240e feat: 新增资源更新进度显示 2025-06-24 23:46:09 +08:00
status102
ae38ad904b chore: 引航者试炼#5 TN-1 ~ TN-3地图views[1]修复 2025-06-24 23:23:37 +08:00
status102
3f07bfc52d chore: meojson update to v4.4.1 & remove json5 (#13079) 2025-06-24 19:59:32 +08:00
status102
a1c11bdb32 chore: remove json5 2025-06-24 19:34:20 +08:00
status102
4a4b3fae3b chore: meojson update to v4.4.1 2025-06-24 19:33:30 +08:00
Constrat
5e435f2cd7 fix: txwy failed dataload 2025-06-24 13:11:43 +02:00
github-actions[bot]
eac28232a9 chore: Auto Update Game Resources - 2025-06-24
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15846236823

[skip changelog]
2025-06-24 09:10:39 +00:00
status102
6af04f4232 perf: 减少运行中Task修改 2025-06-24 16:55:43 +08:00
status102
96c007274d fix: 肉鸽结算Ocr 非数字替换 2025-06-24 16:55:42 +08:00
uye
fd4bdb6f4a fix: 写的什么jb导航 2025-06-24 16:29:43 +08:00
Constrat
be18f7304b style: fix clang 2025-06-23 23:45:21 +02:00
status102
eebcf78aaf fix: 肉鸽结算Ocr bin threshold 2025-06-23 23:03:53 +08:00
status102
1328545320 rft: 肉鸽callback中Int类型限定 2025-06-23 23:01:37 +08:00
Constrat
303c7bca17 feat: YostarEN Dahuang City theme 2025-06-23 14:54:10 +02:00
萨拉托加
56875aec85 feat: 肉鸽更新干员招募逻辑 (#13071)
* feat: 肉鸽更新干员招募逻辑

* feat: 肉鸽更新干员招募逻辑

* feat: 肉鸽更新干员招募逻辑
2025-06-23 19:02:43 +08:00
Lemon-miaow
1e3afd8c12 i18n: 用户文档基建换班添加队列轮换说明 (#13064)
* i18n: 用户文档基建换班添加队列轮换说明

* chore: Auto update by pre-commit hooks [skip changelog]

* i18n: 同步客户端文本

* i18n: JP texts edit

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-06-23 16:57:32 +08:00
uye
c1fcf95a49 fix: 难度识别出非数字时崩溃
#13069
2025-06-23 14:57:57 +08:00
Hao Guan
02964cd38e fix(mac): Mirror酱更新检测 2025-06-23 11:50:25 +08:00
Hao Guan
ff3a06cf71 feat(mac): 显示剩余理智 2025-06-23 11:49:48 +08:00
HY
17c98f18e4 chore: 繁中服「荒原安保派駐」定向導能元件 (#13057)
* chore: 繁中服「荒原安保派駐」定向導能元件

* chore: 搬移保全作業
2025-06-22 16:30:42 +02:00
status102
0f25adfd83 Release v5.18.1 (#13048) 2025-06-22 18:56:46 +08:00
Lemon-miaow
5dcfd8ce2a docs: 用户文档基建换班添加队列轮换说明 (#13058) 2025-06-22 16:34:37 +08:00
github-actions[bot]
cd3b0d9e08 docs: Auto Update Changelogs of v5.18.1 (#13050)
* docs: Auto Generate Changelog of Release v5.18.1

* docs: ahcneglog

* docs: changelog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-22 16:14:48 +08:00
Manicsteiner
e0724ed92c chore: YostarJP infrast training room and IS4 squad (#13053) 2025-06-21 17:54:22 +02:00
status102
cf7c8e66bb fix: YoStarEN StageDrops-TimesRec roi 2025-06-21 23:29:06 +08:00
Constrat
cafb520b29 fix: YostarEN Sarkaz DLC2 2025-06-21 12:42:38 +02:00
github-actions[bot]
2e21799cc8 chore: Auto Templates Optimization
Triggered by 911f910990

[skip changelog]
2025-06-21 10:22:05 +00:00
MistEO
911f910990 chore: 更换 Mirrorc logo 2025-06-21 18:20:56 +08:00
uye
0b91daba21 perf: 自动替换连接地址中的中文冒号与空格 2025-06-21 12:32:19 +08:00
uye
eed13a6869 fix: 全选删除作业代码时底部连接不换回作业站链接
fix #13036
2025-06-21 10:30:06 +08:00
status102
b5798a8096 fix: 中断时刷理智, 基建任务参数无法修改 2025-06-21 10:15:44 +08:00
status102
b30f2eadc1 chore: 理智药加个输出 2025-06-21 10:15:44 +08:00
status102
14a3455ee8 fix: StageQueue战斗次数统计 2025-06-21 10:15:24 +08:00
HX3N
3e06cece23 chore: YostarKR IS4 dlc2 (#13047)
* chore: YostarKR IS4 dlc2 ocr

* i18n: is4 dlc squad

* chore: RoguelikeCustom-HijackSquad

* chore: 消失
2025-06-21 09:44:12 +08:00
HX3N
264a27e82b fix: skip blank stages in KR replacement on ResoureUpdater (#13045)
* fix: skip blank stages in KR replacement on ResoureUpdater

* docs: simple commenting

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-06-20 21:53:56 +02:00
Constrat
32a627d980 fix: YostarEN ocr for new IS 2025-06-20 21:40:13 +02:00
github-actions[bot]
17c93f91d4 chore: Auto Update Game Resources - 2025-06-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15784413397

[skip changelog]
2025-06-20 17:29:51 +00:00
Manicsteiner
70e6261a98 chore: YostarJP Dahuang city theme and ocr edits (#13044) 2025-06-20 17:46:18 +02:00
HX3N
bd8a2ee886 chore: YostarKR DahuangCity theme (#13043) 2025-06-20 17:46:05 +02:00
SherkeyXD
5af96ea1ce fix: 防止卡在傀影肉鸽剧作家手稿界面 2025-06-20 23:40:04 +08:00
github-actions[bot]
09432c2247 chore: Auto Update Game Resources - 2025-06-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15781231814

[skip changelog]
2025-06-20 14:30:31 +00:00
uye
d85c049ee3 fix: YoStarKR tasks ocrReplace 2025-06-20 22:07:26 +08:00
github-actions[bot]
40ae3a2866 chore: Auto Update Game Resources - 2025-06-20
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15773971592

[skip changelog]
2025-06-20 07:45:31 +00:00
Sherkey Asher
12fa8eba2c fix: 保证SSReopen不多刷 (#13029)
* fix: 保证SSReopen不多刷

* fix: 移除无用

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-20 15:08:28 +08:00
status102
8476d5bebe fix: StageQueue关闭理智药界面后delay 2025-06-20 15:00:32 +08:00
uye
4f9dcbbd42 chore: 调整 ssreopen 识别 2025-06-19 20:48:20 +08:00
uye
2db6c4a459 fix: 更新后第一次启动读取 SemVersion 失败
fix #13021
2025-06-19 20:40:53 +08:00
github-actions[bot]
7c3ac7066e chore: Auto Update Game Resources - 2025-06-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15756353451

[skip changelog]
2025-06-19 11:07:40 +00:00
github-actions[bot]
3355bf13b3 chore: Auto Update Game Resources - 2025-06-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15753670086

[skip changelog]
2025-06-19 08:49:36 +00:00
uye
f2fabb392e Release v5.18.0 (#13007) 2025-06-19 16:11:42 +08:00
status102
e209727448 fix: 成就view遮挡设置按钮 2025-06-19 16:08:06 +08:00
uye
27762ce24d docs: Update CHANGELOG.md 2025-06-19 16:06:43 +08:00
uye
335bf74e89 docs: Update CHANGELOG.md 2025-06-19 16:03:43 +08:00
uye
fece54bfb4 chore: 调整 margin 2025-06-19 15:52:11 +08:00
github-actions[bot]
7994bc2384 docs: Auto Update Changelogs of v5.18.0 (#13008)
* docs: Auto Generate Changelog of Release v5.18.0

* docs: chagnelog

* docs: ahcenglog

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-19 15:01:10 +08:00
status102
a10e3be350 perf: 自动战斗作业点赞按钮禁用前置 2025-06-19 13:30:44 +08:00
github-actions[bot]
7af5574bf9 chore: Auto Update Game Resources - 2025-06-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15742563268

[skip changelog]
2025-06-18 20:09:25 +00:00
status102
9cf913dc3a perf: 不许成就遮挡设置 (#13012)
* perf: 不许成就遮挡设置

* perf: 套个scroll
2025-06-18 16:36:23 +08:00
dantmnf
14360ed869 fix: improper ifstream usage in adblite
https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/12199#issuecomment-2974975943
2025-06-18 16:32:54 +08:00
github-actions[bot]
02156ebb0c chore: Auto Update Game Resources - 2025-06-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15701766376

[skip changelog]
2025-06-17 08:11:33 +00:00
status102
a16e399ae1 perf: 公告内容变动检查 2025-06-17 15:49:47 +08:00
status102
7a658d4712 fix: Log宏不检查log rotate 2025-06-17 15:48:43 +08:00
uye
0b6c1ef843 chore: 窗口允许最大化 2025-06-17 10:10:24 +08:00
Lucien Shaw
54ed65fb9d i18n: 补全本地化文本中一处设置的完整引导路径 (#12997)
* i18n: 补全中文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全英文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全繁体中文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全日文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径

* i18n: 补全韩文文本中一处设置的完整引导路径

补全RetryOnDisconnectedEmulatorPathEmptyError对应文本中,模拟器路径设置的完整引导路径
2025-06-17 09:42:11 +08:00
Sherkey Asher
3289bbabb8 feat: 傀影肉鸽添加难度选择 (#12897)
* feat: 傀影肉鸽添加难度选择

* feat: 肉鸽难度选择不再显示不支持的选项
2025-06-17 09:28:34 +08:00
dependabot[bot]
219ec7278a ci: bump softprops/action-gh-release from 2.2.2 to 2.3.2 in /.github/workflows in the github-actions group (#13004) 2025-06-16 16:07:28 +00:00
Constrat
2b7b020b51 ci: fix my username? 2025-06-16 17:48:51 +02:00
晓丶梦丶仁
28a768a8f5 fix: IS1 投资策略 2025-06-16 16:14:18 +08:00
status102
66d2614d82 refactor(wpf): asst任务状态 (#12985)
* rft(wpf): asst任务状态监控

* rft: 迁移刷理智, 基建任务状态
2025-06-16 11:07:43 +08:00
status102
2b5857a955 i18n: 更正 指定材料 的提示 (#12977)
* i18n: 更正 指定材料 的提示

* i18n: KR tweak translation

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
2025-06-16 11:07:29 +08:00
uye
4de3bf3fef feat: 翻译引用
fix #12996
2025-06-15 18:54:11 +08:00
uye
852a7da8eb feat: 更新繁中翻译 2025-06-15 18:04:50 +08:00
uye
7bc25bc952 chore: Load 时替换翻译引用 2025-06-15 18:01:45 +08:00
uye
268ee6ba0f feat: LocalizationHelper 支持 GetFormattedString 2025-06-15 15:49:53 +08:00
uye
117cbb4561 fix: Miss.Christine 识别错误 2025-06-15 13:16:16 +08:00
uye
7b550516cc fix: 恢复进度失败
fix #12992
2025-06-15 13:16:16 +08:00
Lucien Shaw
eec8880bd5 fix: 基建高级设置中部分元素未正确隐藏 (#12988)
当基建模式设置为“队列轮换”时,高级设置中的“不将已进驻的干员放入宿舍”项旁的提示图标未正确隐藏
2025-06-15 13:05:24 +08:00
uye
69ae0eaa1b fix: 不计算理智回复成就 2025-06-14 23:12:44 +08:00
status102
4c4b2e8510 refactor: 迁移理智, 战斗次数, 代理倍率, 关卡理智缓存 (#12986)
rft: 迁移理智, 战斗次数, 代理倍率, 关卡理智缓存
2025-06-14 16:26:21 +08:00
Lucien Shaw
649ca6452e i18n: 更正英文本地化文本中的两处错误 (#12987)
* i18n: 更正英文本地化文本中训练室提示文本的标点问题

在逗号后添加了缺失的空格;
将逗号连接的两个独立分句改为分号。
原句:"...Training Room,this will..." 改为 "...Training Room; this will..."

* i18n: 更正英文本地化文本中有关特别标记干员的语法问题

「Favourite」 operators maybe cannot be recognized中,maybe cannot be ... 并非常见语法,改为may not be.
2025-06-14 12:22:25 +08:00
status102
fe13df4806 fix: 仅主刷理智任务激活指定次数未消耗殆尽警告 2025-06-14 11:31:08 +08:00
status102
46f7ee6e33 perf: OF-1德克萨斯使用2技能
fix #12971
2025-06-14 09:45:09 +08:00
Constrat
948f38b2ac perf: remove duplicate templates from JP 2025-06-13 18:42:12 +02:00
晓丶梦丶仁
ac9a339d47 ci: issue-checkbox-checker 跳过已经折叠的 issue 2025-06-14 00:24:35 +08:00
晓丶梦丶仁
371f4e814a ci: issue-checkbox-checker.yml 2025-06-14 00:18:34 +08:00
晓丶梦丶仁
e8e9d7a38a fix: KR EP navigation 2025-06-13 23:55:40 +08:00
uye
907947a02e chore: 读取mumu新版注册表路径 2025-06-13 22:19:00 +08:00
Constrat
b40a18f591 feat: YostarEN gaming theme + JP optimization 2025-06-13 15:46:03 +02:00
Constrat
007b04eaf0 chore(tools): update ignore templates 2025-06-13 15:44:00 +02:00
status102
09a4931ba1 chore: 刷理智任务手动填写关卡名增加空关卡名对应关卡提示 2025-06-13 21:27:43 +08:00
uye
0da24487c9 feat: mumu 5.0 路径自动检测 2025-06-13 21:04:49 +08:00
Constrat
7ff2bbdbbf style: fix clang 2025-06-13 14:20:26 +02:00
status102
13ef0ca3fe perf: 自动编队跳过空干员职业组 2025-06-13 15:54:56 +08:00
status102
801afef4e5 fix: 自动战斗干员编队时, 若连续错误Ocr贴边干员名为_会导致跳过该职业 2025-06-13 15:54:47 +08:00
github-actions[bot]
124df0612c chore: Auto Update Game Resources - 2025-06-12
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15616777606

[skip changelog]
2025-06-12 17:07:38 +00:00
Manicsteiner
f2eb22be4c chore: YostarJP Gaming theme (#12970) 2025-06-13 00:48:00 +08:00
HX3N
256feb33c7 chore: YostarKR Poly Vision Museum Theme
EnterInfrastGaming, OperBoxEnterGaming and  TaskGaming work well even without adding templates
2025-06-13 00:58:40 +09:00
status102
5b39e69317 perf: 减少预期外的error日志 2025-06-12 20:21:49 +08:00
github-actions[bot]
87ed43301c chore: Auto Update Game Resources - 2025-06-12
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15606390837

[skip changelog]
2025-06-12 09:09:08 +00:00
HY
3c628e95dd fix: 繁中服 肉鴿助戰可能招募失敗 (#12966) 2025-06-12 10:57:32 +02:00
github-actions[bot]
21a40cc685 chore: Auto Update Game Resources - 2025-06-12
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/15603966383

[skip changelog]
2025-06-12 07:08:36 +00:00
uye
cbe1c991cc fix: 成就 id 错误 2025-06-12 02:57:15 +08:00
github-actions[bot]
f68d1dd308 chore: Auto Templates Optimization
Triggered by bbe22ea5a2

[skip changelog]
2025-06-11 14:46:27 +00:00
HX3N
bbe22ea5a2 chore: YostarKR ocr fix and update Infrast templates
Changed the Training template because the mastery symbol prevented recognition when training finished.
ocr fix for EP update.
2025-06-11 23:28:10 +09:00
dependabot[bot]
8d29464ed3 ci: bump actions/github-script from 6 to 7 in /.github/workflows in the github-actions group (#12946)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-11 21:29:35 +08:00
HX3N
c97c525d74 fix: UseReaminingSanityStageTip (#12959) 2025-06-11 08:21:24 +08:00
uye
c6536af73d fix: 午夜 0 点没算 0 点 2025-06-11 01:03:44 +08:00
uye
a903486c71 fix: 使用 Mirror 源的时候也显示了强制使用 Github 的TooltipBlock 2025-06-11 01:02:45 +08:00
uye
725a178708 Release v5.18.0-beta.1 (#12956)
sb gh 炸了()
2025-06-11 00:34:11 +08:00
uye
12cbc7d47b ci: Update ci.yml 2025-06-11 00:31:31 +08:00
uye
620c63c6b0 Release v5.18.0-beta.1 (#12954) 2025-06-11 00:11:29 +08:00
github-actions[bot]
bcd61de277 docs: Auto Update Changelogs of v5.18.0-beta.1 (#12955)
* docs: Auto Generate Changelog of Release v5.18.0-beta.1

* docs: Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-06-11 00:07:08 +08:00
uye
53cb5cc3e8 chore: 多余文件描述 2025-06-10 23:59:07 +08:00
soundofautmn
839835fcba chore: 统一更新copyright 2025-06-10 23:56:27 +08:00
soundofautmn
466cd719d7 chore: 统一copyright 2025-06-10 23:56:23 +08:00
soundofautmn
ee9a44b957 chore: 修正注释warning
warning SA1512: Single-line comments should not be followed by blank line
2025-06-10 23:56:21 +08:00
uye
1b2df5ff5d feat: 成就系统 (#12823)
* feat: 成就系统

* chore: 调整时间

* feat: 追溯同类成就

* chore: 调整弹窗显示

* feat: 增加解锁条件

* feat: 使用静态类替代硬编码 id

* feat: 刷理智类成就实现

* chore: 抽离 CheckProgressUnlock

* chore: 加个保底

* feat: 手动停止

* chore: 修改描述

* feat: 成就列表(待翻译)

* i18n: english

* chore: 调整排序

* chore: 使用 DynamicResource 替代硬编码颜色,取消选中高亮

* feat: 可露希尔代理程序正常运转中(1000次刷理智)

* feat: 第一次启动软件

* feat: 使用理智药

* chore: 右键图标的停止也改成ManualStop

* feat: Growl 延迟到窗口显示时弹出

* chore: 默认 WindowState 为 null

* perf: 弹窗居中,虚拟化StackPanel

* chore: 定时执行

* chore: 解锁时间显示改为本地时间

* chore: 已完成的成就不显示进度条

* chore: 统一格式

* feat: 临期理智药

* chore: 你进行了一次能将大道磨灭的代理任务

* debug: 忘了删

* feat: 使用 MirrorChyan 更新 / 输入错误 cdk

* chore: 调整设置顺序

* chore: 截图测试显示在应用中心

* chore: 调整 AchievementListWindow 绑定

* chore: summary

* fix: 卡启动

* feat: 恢复进度后保存文件

* feat(#12823): 新增成就 (#12840)

* feat: 真正的抽卡

* feat: 窥屏

* feat: 喜报

* feat: 不速之客

* feat: 自定义达人

* feat: 火星人

* feat: 严重错讠

* feat: 这也能点?

---------

Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>

* chore: 火星人

* feat: 勋章颜色

* feat: 成就图标

* feat: 问题反馈

* feat: 成就等级

* feat: 急急国王

* feat: 自动战斗

* i18n: 打个框先

* i18n: KR translation

* feat: 公招

* i18n: 翻译

* chore: 隐藏吉吉国王

* feat: 借助战

* chore: 测试版

* feat: 作弊

* chore: 优化显示效果

* chore: 忽略返回值

* feat: 或许我应该换一份作业?

* feat: 平均截图速度

* feat: 验证成就合法性,新增 CustomData 字段

* chore: 调整延迟时间过长为隐藏成就

* feat: 今日宜抽卡

* feat: 分组

* feat: 彩色!

* chore: 忘加[JsonIgnore]了

* feat: 彩色!

* chore: 这玩意啥时候混进来了

* feat: 网络折磨人

* chore: 调整描述

* chore: httpService unused

* chore: debug 模式点一次触发

* feat: 新增成就 new 提示,仅本次关闭前生效

* chore: 隐藏未解锁的隐藏成就

* feat: 挂机

* feat: 一天启动 3 次任务

* chore: lock 时重置进度

* feat: 肉鸽相关成就

* chore: 调整放弃次数

* feat: 作业点赞

* feat: 立刻停止任务

* fix: RoguelikeRetreat

* chore: 不存非法成就

* feat: 代理指挥出现错误

* fix: 次数填错了

* feat: 新增 CustomData 类辅助函数,添加时长类成就

* chore: 调整 rare 逻辑

* chore: 注释

* chore: 调整成就分类

* chore: 调整描述

* i18n: 打个框

* fix: wpf binding error

* feat: 肉鸽通关难度

* perf: 解锁和锁定全成就时禁止保存

* chore: 调整成就显示

* chore: 调整 LinearGradientBrush

* feat: 新增肉鸽 n4

* i18n: fully Claude Sonnet 4 EN translation

* i18n: 繁中翻译

* i18n: KR translation

* i18n: JP translation

* feat: JsonDataHelper 支持自定义文件夹

* feat: 自定义备份路径

* chore: 哦这该死的 xaml designer

* fix: 避免设计时生成不必要的data文件夹

* feat: 触发牛牛时按钮位置移动

* Revert "fix: 避免设计时生成不必要的data文件夹"

This reverts commit 2ac878dbbd.

* fix: 不许save, 给你抽出来

* Reapply "fix: 避免设计时生成不必要的data文件夹"

This reverts commit 76985896cb.

* chore: 调整显示顺序

* feat: 添加搜索

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Lemon-miaow <61692393+Lemon-miaow@users.noreply.github.com>
Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
2025-06-10 23:40:25 +08:00
status102
3db8613a43 chore: wpf各种提示 (#12930)
* chore: 给喜欢指定参数不看说明的加个提示

* chore: 给代理倍率加个?

* fix: 减重繁中

* chore: KR tweak translation

* i18n: EN dot symbol

* feat: 带提示控件使用 TooltipBlock

* chore: 调整无序列表显示

* chore: 调整显示效果

* perf: 简化自定干员提示

* fix: TooltipText 内容错误

* chore: 调整 TooltipBlock 默认 Margin

* chore: 重置 TextBox InitialShowDelay 默认行为

* chore: 修改描述

* chore: 修改自动战斗描述

* perf: 优化控件布局

* feat: 新增强制Github下载描述

* chore: 调整绑定

---------

Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: uye <99072975+ABA2396@users.noreply.github.com>
2025-06-10 23:33:35 +08:00
status102
499564694c perf: 刷理智增加未耗尽战斗次数提示输出 2025-06-10 22:04:47 +08:00
HY
88eb57d63d fix: 繁中服 傀影肉鴿 卡在通關劇情 (#12952)
* fix: 繁中服 傀影肉鴿 卡在通關劇情

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-10 19:56:06 +08:00
HY
4aeeac2e65 chore: update txwy for update infrast training room (#12953) 2025-06-10 19:52:59 +08:00
uye
ce2031704f perf: 移除解决方案名
Signed-off-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-10 15:02:38 +08:00
uye
f2558002f0 perf: 移除解决方案名
Signed-off-by: status102 <102887808+status102@users.noreply.github.com>
2025-06-10 15:01:06 +08:00
status102
99958533ef fix: rect width & height = 0 2025-06-10 14:54:22 +08:00
status102
b6e6080f36 fix: StageDrops-Item warning 2025-06-10 14:52:52 +08:00
status102
96df05800c fix: 未进入战斗期间检测技能使用 2025-06-10 09:10:29 +08:00
HX3N
625db77e00 chore: update KR for update infrast training room
ref 673b1b082f
2025-06-10 09:46:59 +09:00
github-actions[bot]
96d9cad344 chore: Auto Templates Optimization
Triggered by 12f165e08d

[skip changelog]
2025-06-10 00:28:00 +00:00
HX3N
12f165e08d fix: YostarKR changed EnterInfrastSami due to low recognition score 2025-06-10 09:27:02 +09:00
Constrat
d96143eab2 style: fix clang 2025-06-09 23:17:48 +02:00
Constrat
673b1b082f chore: update EN for update infrast training room 2025-06-09 21:42:29 +02:00
status102
3a15195178 fix: 还原外服的StageDrops-TimesRec 2025-06-09 22:57:23 +08:00
uye
59c632f628 fix: 代理次数 2025-06-09 22:53:51 +08:00
ABA2396
1d54b13f6d Merge tag 'v5.17.2' into dev
v5.17.2
2025-06-09 11:02:25 +00:00
uye
2e9408efa9 Release v5.17.2 (#12943) 2025-06-09 19:01:50 +08:00
status102
02ec0426f0 Release v5.17.2 (#12941)
fix: non ota package remove old resource
2025-06-09 17:47:54 +08:00
status102
5bc4a68a71 fix: non ota package remove old resource 2025-06-09 17:31:13 +08:00
Hao Guan
3682278967 fix(mac): 编译兼容Swift 6.0 2025-06-09 17:07:19 +08:00
Hao Guan
ff40ff6e91 fix(mac): 资源更新改进 2025-06-09 16:48:14 +08:00
uye
f329411768 docs: 高分辨率滑动修复文档 2025-06-09 16:15:13 +08:00
uye
7988229cba fix: 高分辨率下无法进入特定关卡(虽然修了但还是不建议用 2k 4k 2025-06-09 15:44:42 +08:00
uye
67eb0aa7ca style: 多余的空格
[skip changelog][skip ci]
2025-06-09 14:25:17 +08:00
uye
cd25bb9fa9 perf: 优化导航逻辑
link to #10691
2025-06-09 14:23:11 +08:00
status102
503029581a rft: 基建技能专精状态分析 2025-06-09 09:21:50 +08:00
Constrat
5b3d638048 fix: EPChapterToEP for EN 2025-06-08 19:26:07 +02:00
Constrat
edf4905733 perf: remove unneccesary InfrastTrainingTime from EN 2025-06-08 17:37:34 +02:00
Constrat
09de23dd26 style: clang format 2025-06-08 17:07:07 +02:00
status102
b96bcc2e2b perf: 合并Tooltip 2025-06-08 21:53:53 +08:00
status102
14d740afe3 fix: 使用传入的httpService代替全局引用 2025-06-08 21:50:28 +08:00
status102
7ac4fc6ccc feat: wpf TooltipBlock文本为空时, 不显示Tooltip文本框 2025-06-08 21:42:54 +08:00
status102
af3e4b144f fix: 刷理智掉落识别-代理倍率roi 2025-06-08 15:33:07 +08:00
uye
5aed8be27e chore: 调整依赖库安装脚本输出 2025-06-08 14:16:25 +08:00
status102
27516baf54 fix: 基建训练室技能专精剩余时间Ocr错误 2025-06-08 14:04:58 +08:00
status102
2609f159ab fix: 基建专精干员名及技能Ocr使用原图以提高ocr成功率 2025-06-08 13:59:43 +08:00
status102
d06535bf92 perf: 肉鸽战斗使用费用、击杀数缓存, 优化性能占用 2025-06-08 09:45:02 +08:00
github-actions[bot]
bb930cd341 chore: Auto Templates Optimization
Triggered by c27a03623b

[skip changelog]
2025-06-07 20:38:13 +00:00
Constrat
c27a03623b perf: use text ocr instead of template for battlequick 2025-06-07 22:37:45 +02:00
uye
33f850b0f7 chore: 怎么真有人看到 [Y] 确认 是用鼠标去点而不是输入 Y 回车 2025-06-08 00:06:29 +08:00
uye
8a2a93c543 fix: Roguelike@RecruitWithoutButton 2025-06-07 22:48:41 +08:00
uye
235f83acfb fix: 在招募干员的过程中闪退导致死循环 2025-06-07 22:46:09 +08:00
uye
ab36ae88d6 docs: 调整描述 2025-06-07 21:20:28 +08:00
2063 changed files with 249764 additions and 38354 deletions

29
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
FROM mcr.microsoft.com/devcontainers/base:ubuntu
USER vscode
ENV CONDA_DIR=/home/vscode/miniconda
ENV PATH="$CONDA_DIR/bin:$PATH"
ARG PYTHON_VERSION=3.12
ARG NODEJS_VERSION=24
# Install Miniconda
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh \
&& bash ~/miniconda.sh -b -p $CONDA_DIR \
&& rm ~/miniconda.sh \
&& conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main \
&& conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
# Configure conda environment
RUN eval "$(conda shell.bash hook)" \
&& conda create -n maa python=$PYTHON_VERSION -y \
&& conda activate maa \
&& conda install -y conda-forge::nodejs=$NODEJS_VERSION \
&& pip install pre-commit black \
&& npm install -g pnpm
# Finalize conda setup
RUN conda init \
&& conda config --set auto_activate false \
&& echo "conda activate maa" >> ~/.bashrc

View File

@@ -1,13 +1,50 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/javascript-node
{
"image": "mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04",
"features": {
"ghcr.io/devcontainers/features/python:1": {},
"ghcr.io/devcontainers/features/sshd:1": {}
"name": "MAA",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
// "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"build": {
"dockerfile": "Dockerfile"
},
"postCreateCommand": "sudo sh -ce 'apt update && apt install g++-12 -y && echo export CC=gcc-12 CXX=g++-12 >> /etc/profile.d/set-compiler.sh'",
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [3001],
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "bash .devcontainer/post-create.sh",
// Configure tool-specific properties.
"customizations": {
"vscode": {
"extensions": ["llvm-vs-code-extensions.vscode-clangd", "DavidAnson.vscode-markdownlint"]
"extensions": [
"mkxml.vscode-filesize",
"nekosu.maa-support",
"DavidAnson.vscode-markdownlint",
"esbenp.prettier-vscode",
"vue.volar",
"ms-python.python",
"ms-python.black-formatter"
],
"settings": {
// format
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[markdown]": {
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
},
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
// python
"python.terminal.launchArgs": ["-u"],
"python.defaultInterpreterPath": "/home/vscode/miniconda/envs/maa/bin/python",
"python.terminal.activateEnvironment": false
}
}
}
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

View File

@@ -0,0 +1,21 @@
#!/bin/bash
WORKSPACE=$(pwd)
# conda activate maa
echo "===================="
echo "Setting up git safe.directory for $WORKSPACE and its submodules..."
cd "$WORKSPACE"
git config --global --add safe.directory "$WORKSPACE"
git submodule foreach --recursive 'git config --global --add safe.directory "$toplevel/$path"'
echo "===================="
cd "$WORKSPACE"
echo "Installing dependencies for python..."
# pip install -r tools/.../requirements.txt
# pip install -r tools/.../requirements-dev.txt
echo "===================="
echo "Installing dependencies for nodejs..."
cd "$WORKSPACE"/docs
pnpm install --frozen-lockfile

View File

@@ -8,25 +8,15 @@ body:
label: 请确认自己完成了下列必选项之后再进行勾选,若未完成必选项或勾选了"我未仔细阅读"选项将视为自愿接受被直接关闭 Issue
options:
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
required: true
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
- label: 我使用的是当前更新版本的最新版
required: true
- label: 我已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) 中尚未发布的更新内容并未提及该 Bug 已被修复的情况
required: true
- label: 我已查看版本发布至今的 [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容并未提及该 Bug 已被修复的情况
required: true
- label: 我已在未仔细阅读这些内容的情况下勾选所有选项,并相信这不会影响问题的处理
required: false
- label: 已检查了[常见问题](https://maa.plus/docs/zh-cn/manual/faq.html),确认我的问题未被提及
required: true
- label: 已检查了[公告](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/7732),确认我的问题未被提及
required: true
- label: 已检查了[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues),确认我的问题未被提及
required: true
- label: 我已检查了[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed)确认我的问题未被提及
required: true
- label: 未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: false
- label: 使用的是当前更新版本的最新版, 并已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/), [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容并未提及该 Bug 已被修复的情况
required: false
- label: 我已检查了 [常见问题](https://docs.maa.plus/zh-cn/manual/faq.html), [公告](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) 确认我的问题未被提及
required: false
- type: textarea
id: describe
attributes:
@@ -66,7 +56,7 @@ body:
label: 配置信息
description: |
请说明操作系统及版本、模拟器品牌、模拟器分辨率、DPI、帧率
若正在使用 MuMu 12 或雷电 9请说明截图增强是否开启
若正在使用 MuMu 或雷电 9请说明截图增强是否开启
最后请说明 GPU 加速推理是否开启,若开启请提供 GPU 型号。
validations:
required: true

View File

@@ -7,24 +7,16 @@ body:
attributes:
label: 请确认自己完成了下列必选项之后再进行勾选,若未完成必选项或勾选了"我未仔细阅读"选项将视为自愿接受被直接关闭 Issue
options:
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
- label: 我基本确定这是一个新功能/建议,而不是遇到了 Bug不确定的话请附上日志
required: true
- label: 我使用的是当前更新版本的最新版
required: true
- label: 我已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) 中尚未发布的更新内容,确认我的建议未被提及
required: true
- label: 我已查看版本发布至今的 [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容,确认我的建议未被提及
required: true
- label: 我已在未仔细阅读这些内容的情况下勾选所有选项,并相信这不会影响问题的处理
required: false
- label: 已检查了 [公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732),确认我的建议未被提及
required: true
- label: 已检查了 [活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues),确认我的建议未被提及
required: true
- label: 已检查了 [已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的建议未被提及
required: true
- label: 未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: false
- label: 使用的是当前更新版本的最新版, 并已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/), [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容,确认我的建议未被提及
required: false
- label: 我已检查了 [常见问题](https://docs.maa.plus/zh-cn/manual/faq.html), [公告](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) 确认我的建议未被提及
required: false
- type: textarea
id: describe
attributes:

View File

@@ -8,18 +8,18 @@ body:
label: 在提问之前...
options:
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
required: true
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
- label: 我已检查了[公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)、[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)、[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的问题未被提及
required: true
- label: 我正在使用最新的 MAA 公测版本和最新的官版雷电 9 模拟器
required: true
- label: 我已参考文档确定安装路径、实例编号填写正确,并确认在关闭截图增强模式后问题消失
required: true
- label: 我未开启高帧率,且模拟器帧数设置为 60
required: false
- label: 已在未仔细阅读这些内容的情况下勾选所有选项,并相信这不会影响问题的处理
- label: 填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: false
- label: 我已检查了[公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)、[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)、[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的问题未被提及
required: false
- label: 我未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 我正在使用最新的 MAA 公测版本和最新的官版雷电 9 模拟器
required: false
- label: 我已参考文档确定安装路径、实例编号填写正确,并确认在关闭截图增强模式后问题消失
required: false
- label: 我未开启高帧率,且模拟器帧数设置为 60
required: false
- type: textarea
id: describe

View File

@@ -8,18 +8,18 @@ body:
label: 在提问之前...
options:
- label: 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
required: true
- label: 我填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: true
- label: 我已检查了[公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)、[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)、[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的问题未被提及
required: true
- label: 我正在使用最新的 MAA 公测版本和最新的官版或方舟专版 MuMu 模拟器
required: true
- label: 我已参考文档确定安装路径、实例编号、屏幕编号填写正确,并确认在关闭截图增强模式后问题消失
required: true
- label: 我未开启后台保活,模拟器帧数为 60显存使用策略为“画面表现更好”
required: false
- label: 已在未仔细阅读这些内容的情况下勾选所有选项,并相信这不会影响问题的处理
- label: 填写了简短且清晰明确的标题,以便开发者在翻阅 Issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
required: false
- label: 我已检查了[公告](/MaaAssistantArknights/MaaAssistantArknights/issues/7732)、[活跃议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues)、[已关闭议题](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed),确认我的问题未被提及
required: false
- label: 我未仔细阅读这些内容,只是一键已读[所有内容](/MaaAssistantArknights/MaaAssistantArknights/issues),并相信这不会影响问题的处理
required: false
- label: 我正在使用最新的 MAA 公测版本和最新的官版或方舟专版 MuMu 模拟器
required: false
- label: 我已参考文档确定安装路径、实例编号、屏幕编号填写正确,并确认在关闭截图增强模式后问题消失
required: false
- label: 我未开启动态帧率及后台保活,模拟器帧数为 60显存使用策略为“画面表现更好”
required: false
- type: textarea
id: describe

View File

@@ -1,7 +1,5 @@
name: Bug Report (in English)
description: >-
Recognition errors, operation abnormalities,
connection errors, etc.
description: Recognition errors, operation abnormalities, connection errors, etc.
labels: ["bug"]
body:
- type: checkboxes
@@ -15,21 +13,11 @@ body:
required: true
- label: I filled in a short, clear title so that developers could quickly identify the general problem when going through the issue list. Instead of "Some suggestions", "Stuck", etc.
required: true
- label: I am using the latest version of the current update version.
required: true
- label: I have reviewed both the [Unreleased changes](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) and there is no mention of the bug being fixed.
required: true
- label: I have reviewed the [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) and there is no mention of the bug being fixed.
- label: I am using the latest version of the current update version, and have reviewed the [update content](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) released to date, [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) unreleased update content and there is no mention of the bug being fixed.
required: true
- label: I have checked all the options without carefully reading the content and believe this will not affect issue resolution.
required: false
- label: I have reviewed the [FAQs](https://maa.plus/docs/en-us/manual/faq.html) to ensure that my issue/bug has not been mentioned.
required: true
- label: I have reviewed the [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732) to ensure that my issue/bug has not been mentioned.
required: true
- label: I have reviewed the [Open Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) to ensure that my issue/bug has not been mentioned.
required: true
- label: I have reviewed the [Closed Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my issue/bug has not been mentioned.
- label: I have reviewed the [FAQs](https://docs.maa.plus/en-us/manual/faq.html), [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [Open Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [Closed Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my issue has not been mentioned.
required: true
- type: textarea
id: describe
@@ -54,7 +42,7 @@ body:
id: logs
attributes:
label: Log and config files
description: >-
description: |
**Please locate the Generate Support Payload button under MAA Settings -> Issue Report, click the button, and upload the generated zip file**
**Please drag and drop the full file in, not your own cuttings or copies; compress it before uploading if too large.**
@@ -70,7 +58,7 @@ body:
label: Configuration information
description: |
Please specify the operating system and version, emulator brand, emulator resolution, DPI, and frame rate;
If you are using MuMu 12 or LDPlayer 9, please specify whether Screenshot Enhancement is enabled;
If you are using MuMu or LDPlayer 9, please specify whether Screenshot Enhancement is enabled;
Finally, please specify whether GPU accelerated inference is enabled, and if so, provide the GPU model.
validations:
required: true
@@ -78,7 +66,7 @@ body:
id: screenshots
attributes:
label: Screenshots or recordings
description: >-
description: |
In the `debug` directory, within the functionally categorized folders,
there are some error images captured automatically.
If related to this issue, please upload them together.
@@ -95,14 +83,13 @@ body:
and their aspect ratio and resolution are inconsistent,
which makes it harder for us to debug.
If the file siz is too large, you may compress it before uploading.
If the file size is too large, you may compress it before uploading.
validations:
required: false
- type: textarea
id: others
attributes:
label: Anthing else?
label: Anything else?
description: |
Anything that will give us more insight into the problem you are having.
validations:

View File

@@ -9,34 +9,15 @@ body:
Please ensure that you have completed the required items before checking the boxes.
Issues with incomplete required items or with the 'I did not read carefully' option checked will be considered voluntary acceptance of direct closure.
options:
- label: |
I filled in a short, clear title so that developers could quickly identify the general problem when going through the issue list.
Instead of "Some suggestions", "Stuck", etc.
- label: I'm probably sure this is a new feature/suggestion and not a bug encountered (please attach logs if you're not sure).
required: true
- label: |
I'm probably sure this is a new feature/suggestion and not a bug encountered (please attach logs if you're not sure).
- label: I filled in a short, clear title so that developers could quickly identify the general problem when going through the issue list. Instead of "Some suggestions", "Stuck", etc.
required: true
- label: |
I am using the latest version of the current update version.
required: true
- label: |
I have reviewed the [Unreleased changes](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) ,
but there is no mention of this feature/suggestion being added.
required: true
- label: |
I have reviewed the [Pull requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) ,
but there is no mention of this feature/suggestion being added.
- label: I am using the latest version of the current update version, and have reviewed the [update content](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/) released to date, [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) unreleased update content and there is no mention of this feature/suggestion being added.
required: true
- label: I have checked all the options without carefully reading the content and believe this will not affect issue resolution.
required: false
- label: |
I have reviewed the [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732) to ensure that my feature/suggestion has not been mentioned.
required: true
- label: |
I have reviewed the [Open Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) to ensure that my feature/suggestion has not been mentioned.
required: true
- label: |
I have reviewed the [Closed Issue](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my feature/suggestion has not been mentioned.
- label: I have reviewed the [FAQs](https://docs.maa.plus/en-us/manual/faq.html), [Announcement](/MaaAssistantArknights/MaaAssistantArknights/issues/7732), [Open Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues), [Closed Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues?q=is%3Aissue%20state%3Aclosed) to ensure that my feature/suggestion has not been mentioned.
required: true
- type: textarea
id: describe

View File

@@ -7,8 +7,8 @@ updates:
commit-message:
prefix: ci
assignees:
- constrat
- AnnAngela
- Constrat
groups:
github-actions:
patterns:

View File

@@ -552,7 +552,7 @@ comments:
Your log did not upload successfully, please re-upload it."
mode: add
- name: Upload failed
regexes: "^[^`]*(`[^`]+`[^`]*)*\\[Uploading[^\\]]*…\\]\\(\\)"
regexes: "^[^`]*(`[^`]+`[^`]*)*(\\[Uploading[^\\]]*…\\]\\(\\)|<!-- Failed to upload|<!-- Uploading)"
content: "你有一些文件没有上传成功,请重新上传。\n\n\
You have some files that did not upload successfully, please re-upload them."
mode: add

75
.github/stale_cache_cleanup.ps1 vendored Normal file
View File

@@ -0,0 +1,75 @@
$totalClearedSize = 0
$cacheList = gh cache list --json id,key,ref,sizeInBytes,createdAt | ConvertFrom-Json
# List of keys to process
$keyPatterns = @(
"Windows-x64-nuget",
"Windows-x64-maadeps",
"Windows-arm64-nuget",
"Windows-arm64-maadeps",
"macOS-x64-maadeps",
"macOS-arm64-maadeps",
"Linux-x64-maadeps",
"Linux-arm64-maadeps",
"Smoke-testing"
)
# Filter caches matching any of our key patterns
$matchingCaches = $cacheList | Where-Object {
$cache = $_
($keyPatterns | Where-Object { $cache.key -like "*$_*" }).Count -gt 0
}
# Get unique branch references from the matching caches
$branches = $matchingCaches | Select-Object -Property ref -Unique | ForEach-Object { $_.ref }
Write-Output "Found caches across $($branches.Count) branches"
foreach ($branch in $branches) {
# Extract branch name from ref for display
$branchName = $branch -replace "refs/heads/", ""
if ($branch -match "refs/pull/(\d+)/merge") {
$branchName = "PR #$($matches[1])"
}
Write-Output "Processing caches for branch: $branchName"
# Filter for current branch caches
$branchCaches = $matchingCaches | Where-Object { $_.ref -eq $branch }
foreach ($pattern in $keyPatterns) {
Write-Output " Processing $branchName branch caches for pattern: $pattern"
# Filter for caches matching the current key pattern within branch
$patternCaches = $branchCaches | Where-Object { $_.key -like "*$pattern*" }
if (-not $patternCaches) {
Write-Output " No $branchName branch caches found for pattern: $pattern"
continue
}
# Sort by creation time (newest first)
$sortedCaches = $patternCaches | Sort-Object -Property createdAt -Descending
# Keep the first one (latest) and delete the rest
$latestCache = $sortedCaches[0]
Write-Output " Keeping latest cache for $branchName/${pattern}: '$($latestCache.key)' (ID: $($latestCache.id))"
# Delete all except the latest one
for ($i = 1; $i -lt $sortedCaches.Count; $i++) {
$cache = $sortedCaches[$i]
$cacheId = $cache.id
$cacheKey = $cache.key
Write-Output " Deleting cache for $branchName/${pattern}: '$cacheKey' (ID: $cacheId)"
gh cache delete $cacheId
$totalClearedSize += $cache.sizeInBytes
}
}
Write-Output ""
}
$formattedSize = "{0:N2}" -f ($totalClearedSize / 1MB)
Write-Output "Total cleared size: $formattedSize MB"

59
.github/stale_cache_dev.ps1 vendored Normal file
View File

@@ -0,0 +1,59 @@
$totalClearedSize = 0
$cacheList = gh cache list --json id,key,ref,sizeInBytes,createdAt | ConvertFrom-Json
# Filter for dev branch caches only
$devCaches = $cacheList | Where-Object { $_.ref -eq "refs/heads/dev" }
if (-not $devCaches) {
Write-Output "No caches found for dev branch."
exit
}
# List of keys to process
$keyPatterns = @(
"Windows-x64-nuget",
"Windows-x64-maadeps",
"Windows-arm64-nuget",
"Windows-arm64-maadeps",
"macOS-x64-maadeps",
"macOS-arm64-maadeps",
"Linux-x64-maadeps",
"Linux-arm64-maadeps",
"Smoke-testing"
)
foreach ($pattern in $keyPatterns) {
Write-Output "Processing dev branch caches for pattern: $pattern"
# Filter for caches matching the current key pattern within dev branch
$matchingCaches = $devCaches | Where-Object { $_.key -like "*$pattern*" }
if (-not $matchingCaches) {
Write-Output " No dev branch caches found for pattern: $pattern"
continue
}
# Sort by creation time (newest first)
$sortedCaches = $matchingCaches | Sort-Object -Property createdAt -Descending
# Keep the first one (latest) and delete the rest
$latestCache = $sortedCaches[0]
Write-Output " Keeping latest dev branch cache: '$($latestCache.key)' (ID: $($latestCache.id))"
# Delete all except the latest one
for ($i = 1; $i -lt $sortedCaches.Count; $i++) {
$cache = $sortedCaches[$i]
$cacheId = $cache.id
$cacheKey = $cache.key
Write-Output " Deleting dev branch cache: '$cacheKey' (ID: $cacheId)"
gh cache delete $cacheId
$totalClearedSize += $cache.sizeInBytes
}
Write-Output ""
}
$formattedSize = "{0:N2}" -f ($totalClearedSize / 1MB)
Write-Output "Total cleared size: $formattedSize MB"

View File

@@ -12,7 +12,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
persist-credentials: false # Needed to bypass protection rules in Push changes

View File

@@ -12,9 +12,9 @@ on:
- "src/**"
- "cmake/**"
- "CMakeLists.txt"
- "MAA.sln"
- ".github/workflows/ci.yml"
- "!**/*.md"
- "tools/maadeps-download.py"
pull_request:
branches:
- "dev"
@@ -24,8 +24,8 @@ on:
- "src/**"
- "cmake/**"
- "CMakeLists.txt"
- "MAA.sln"
- "!**/*.md"
- "tools/maadeps-download.py"
workflow_dispatch:
concurrency:
@@ -45,7 +45,7 @@ jobs:
prerelease: ${{ steps.set_pre.outputs.prerelease }}
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
path: temp
show-progress: false
@@ -108,18 +108,13 @@ jobs:
needs: meta
strategy:
matrix:
include:
- msbuild_target: x64
lowercase_target: x64
- msbuild_target: ARM64
lowercase_target: arm64
env:
MAABUILDER_TARGET_PLATFORM: ${{ matrix.msbuild_target }}
arch: [arm64, x64]
fail-fast: false
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
@@ -127,6 +122,35 @@ jobs:
run: |
git submodule update --init --depth 1 3rdparty/EmulatorExtras
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v4
with:
path: |
./MaaDeps
key: ${{ runner.os }}-${{ matrix.arch }}-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-maadeps.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 tools/maadeps-download.py ${{ matrix.arch }}-windows
- name: Config cmake
run: |
mkdir -p build
cmake -B build ${{ matrix.arch == 'arm64' && '-A ARM64' }} -DCMAKE_BUILD_TYPE=Release -DMAADEPS_TRIPLET='maa-${{ matrix.arch }}-windows' -DINSTALL_RESOURCE=ON -DINSTALL_PYTHON=ON -DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}' -DBUILD_WPF_GUI=OFF
- name: Build
run: |
cmake --build build --config Release --parallel $env:NUMBER_OF_PROCESSORS
- name: Install
run: |
mkdir -p install
cmake --install build --prefix install --config Release
- name: Cache .nuke/temp, ~/.nuget/packages
id: cache-nuget
uses: actions/cache@v4
@@ -134,38 +158,13 @@ jobs:
path: |
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ matrix.msbuild_target }}-${{ hashFiles('**/global.json', '**/*.csproj') }}
key: ${{ runner.os }}-${{ matrix.arch }}-nuget-${{ hashFiles('**/*.csproj') }}
- name: Restore dependencies
if: steps.cache-nuget.outputs.cache-hit != 'true'
run: dotnet restore
run: dotnet restore src/MaaWpfGui/MaaWpfGui.csproj
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v4
with:
path: |
./MaaDeps
key: ${{ runner.os }}-${{ matrix.lowercase_target }}-maadeps-${{ hashFiles('./maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-maadeps.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 maadeps-download.py ${{ matrix.lowercase_target }}-windows
- name: Create fake event file
shell: bash
run: cp -v "$GITHUB_EVENT_PATH" ./event.json
- name: Merge Event Data with Inputs
if: startsWith(github.ref, 'refs/tags/v')
shell: bash
run: |
cat "$GITHUB_EVENT_PATH" | jq '. + { "inputs": {"ReleaseSimulation": "${{ needs.meta.outputs.tag }}"} }' | tee ./event.json
- name: Taggify Version
- name: Taggify Version for csproj
run: |
$csprojPath = "src/MaaWpfGui/MaaWpfGui.csproj"
$csprojPath = Resolve-Path -Path $csprojPath
@@ -182,29 +181,31 @@ jobs:
$node.FileVersion = $match
$node.AssemblyVersion = $match
$csproj.Save($csprojPath)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Build
- name: Publish WPF GUI
continue-on-error: true
run: |
$env:GITHUB_WORKFLOW = 'dev-build-win' # pretend this is a dev-build-win workflow
$env:GITHUB_EVENT_PATH = "$pwd\\event.json"
$env:GITHUB_REF = "refs/heads/not_master"
$env:MAA_BUILDER_MAA_VERSION = '${{ needs.meta.outputs.tag }}'
./build.cmd DevBuild
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
dotnet publish src/MaaWpfGui/MaaWpfGui.csproj -c Release -o install
- name: Cleanup checksum file
run: |
rm -vf ./artifacts/checksum.json
- name: Organize Install Files
shell: bash
run: |
rm -rf install/*.pdb
rm -rf install/msvc-debug
rm -rf install/*.h
cp tools/DependencySetup_依赖库安装.bat install
- name: Zip files
run: |
cd install
Compress-Archive -Destination MAA-${{ needs.meta.outputs.tag }}-win-${{ matrix.arch }}.zip -Path ./*
- name: Upload MAA to Github
uses: actions/upload-artifact@v4
with:
name: MAA-win-${{ matrix.lowercase_target }}
path: artifacts
name: MAA-win-${{ matrix.arch }}
path: install/*.zip
ubuntu:
# Prevent duplicate runs on organization branches with PRs
@@ -213,15 +214,14 @@ jobs:
github.event.pull_request.base.repo.full_name
needs: meta
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
strategy:
matrix:
arch: [aarch64, x86_64]
permissions:
actions: write
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
@@ -230,40 +230,41 @@ jobs:
git submodule update --init --depth 1 3rdparty/EmulatorExtras
git submodule update --init --depth 1 src/maa-cli
- name: Install cross compile toolchains
if: ${{ matrix.arch != 'x86_64' }}
run: |
sudo apt-get update
sudo apt-get install g++-12-aarch64-linux-gnu g++-12-aarch64-linux-gnu
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v4
with:
path: ./MaaDeps
key: ${{ runner.os }}-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
# Caching not necessary on ubuntu runner
- name: Bootstrap MaaDeps
if: steps.cache-maadeps.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 maadeps-download.py ${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux
python3 tools/maadeps-download.py ${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux
- name: Build MAA
- name: Config cmake
run: |
mkdir -p build
cmake -B build \
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
-DCMAKE_BUILD_TYPE=Release \
-DMAADEPS_TRIPLET='maa-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux' \
-DINSTALL_THIRD_LIBS=ON \
-DINSTALL_RESOURCE=ON \
-DINSTALL_PYTHON=ON \
-DMAA_VERSION='${{ needs.meta.outputs.tag }}'
cmake --build build --parallel $(nproc --all)
-DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}' \
-DCMAKE_TOOLCHAIN_FILE=MaaDeps/cmake/maa-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux-toolchain.cmake
mkdir -p install
cmake --install build --prefix install
- name: Build
run: |
cmake --build build --config Release --parallel $(nproc)
env:
CC: ${{ matrix.arch == 'x86_64' && 'gcc-12' || 'aarch64-linux-gnu-gcc-12' }}
CXX: ${{ matrix.arch == 'x86_64' && 'g++-12' || 'aarch64-linux-gnu-g++-12' }}
CMAKE_COLOR_DIAGNOSTICS: ON
CLICOLOR_FORCE: 1
CXXFLAGS: | # workaround for gcc bugs
-Wno-error=restrict -Wno-error=array-bounds -Wno-error=stringop-overread -Wno-error=missing-field-initializers
- name: Install
run: |
mkdir -p install
cmake --install build --prefix install --config Release
- name: Setup Cross Compile Toolchains for CLI
uses: ./src/maa-cli/.github/actions/setup
@@ -308,7 +309,7 @@ jobs:
ln -sv usr/share/maa/maa Maa.AppDir/AppRun
mkdir -pv Maa.AppDir/usr/share/metainfo/
cp -v tools/AppImage/io.github.maaassistantarknights.maaassistantarknights.metainfo.xml Maa.AppDir/usr/share/metainfo/
wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
# appimagetool with embedded runtime does not support cross build, till AppImage/appimagetool 7a10b8
wget "https://github.com/AppImage/type2-runtime/releases/download/old/runtime-fuse3-${{ matrix.arch }}"
chmod a+x appimagetool-x86_64.AppImage
@@ -337,36 +338,50 @@ jobs:
github.event.pull_request.base.repo.full_name
needs: meta
runs-on: macos-14
runs-on: macos-latest
strategy:
matrix:
arch: [arm64, x86_64]
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
- name: Install Dependencies
run: |
brew install ninja
# ninja 1.13.1 is already installed and up-to-date.
# - name: Install Dependencies
# run: |
# brew install ninja
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v4
with:
path: ./MaaDeps
key: ${{ runner.os }}-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
# Caching not necessary on macOS runner
- name: Bootstrap MaaDeps
run: |
[[ ${{ matrix.arch }} = "arm64" ]] && triplet="arm64-osx" || triplet="x64-osx"
python3 maadeps-download.py ${triplet}
python3 tools/maadeps-download.py ${triplet}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Configure MaaCore
- name: Config cmake
run: |
cmake -B build -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES='${{ matrix.arch }}' -DMAA_VERSION='${{ needs.meta.outputs.tag }}'
cmake -B build -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_OSX_ARCHITECTURES='${{ matrix.arch }}' \
-DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}'
- name: Build MaaCore
- name: Build
run: |
cmake --build build
cmake --install build --prefix install
cmake --build build --config Release --parallel $(sysctl -n hw.logicalcpu)
- name: Install
run: |
cmake --install build --prefix install --config Release
- name: Upload MAA to Github
uses: actions/upload-artifact@v4
@@ -381,10 +396,10 @@ jobs:
github.event.pull_request.base.repo.full_name
needs: [meta, macOS-Core]
runs-on: macos-14
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
@@ -399,13 +414,13 @@ jobs:
git submodule update --init --depth 1 src/MaaMacGui
- name: Download Arm64 MAA from Github
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
name: MAACore-macos-arm64
path: install-arm64
- name: Download x64 MAA from Github
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
name: MAACore-macos-x86_64
path: install-x86_64
@@ -547,7 +562,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download MAA from Github
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
path: assets
@@ -560,7 +575,7 @@ jobs:
find . -type f | while read f; do mv -fvt . $f; done
- name: Release to Github
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v2.3.3
with:
body_path: CHANGELOG.md
files: |
@@ -579,3 +594,12 @@ jobs:
gh workflow run --repo $GITHUB_REPOSITORY release-ota
env:
GH_TOKEN: ${{ secrets.MISTEOWORKFLOW }}
- name: Create issue if failed
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: "create-issue"
title: "Failed Release"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

57
.github/workflows/codeql-core.yml vendored Normal file
View File

@@ -0,0 +1,57 @@
name: "CodeQL MaaCore and MaaWpfGui Analysis"
on:
pull_request:
branches: ["dev"]
paths:
- "3rdparty/include/**"
- "include/**"
- "src/**"
- "cmake/**"
- "CMakeLists.txt"
- ".github/workflows/codeql-core.yml"
- "!**/*.md"
- "!**/*.xaml"
schedule:
- cron: "45 11 * * *" # Runs daily at 11:45 UTC
workflow_dispatch:
permissions:
actions: write
contents: read
packages: read
security-events: write
jobs:
analyze-manual:
name: Analyze MaaCore and MaaWpfGui
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
- name: Setup CodeQL
uses: github/codeql-action/init@v3
with:
languages: c-cpp,csharp
build-mode: manual
- name: Run CodeQL
uses: github/codeql-action/analyze@v3
with:
category: "/language:multi-manual"
- name: Delete old caches
shell: pwsh
run: |
$oldCaches = gh cache list --key codeql --order asc --json key | ConvertFrom-Json | Select-Object -SkipLast 1
foreach ($cache in $oldCaches) {
if ($cache.key) {
Write-Host "Deleting cache: $($cache.key)"
gh cache delete $cache.key
}
}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

36
.github/workflows/codeql-wf.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: "CodeQL Workflows Analysis"
on:
pull_request:
branches: ["dev"]
paths:
- ".github/**/*.yml"
schedule:
- cron: "00 12 * * *" # Runs daily at 12:00 UTC
workflow_dispatch:
permissions:
actions: write
contents: read
security-events: write
jobs:
analyze-workflows:
name: Analyze GitHub Workflows
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
- name: Setup CodeQL for GitHub Actions
uses: github/codeql-action/init@v3
with:
languages: actions
build-mode: none
- name: Run CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:multi-none"

View File

@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
show-progress: false
@@ -48,7 +48,7 @@ jobs:
echo '======='
echo 'Target RP: ${{ github.event.pull_request.html_url }}' >> $PR_BODY
echo 'Target PR: ${{ github.event.pull_request.html_url }}' >> $PR_BODY
echo '' >> $PR_BODY
echo '<details><summary>Debug info</summary>' >> $PR_BODY
echo '' >> $PR_BODY

View File

@@ -11,67 +11,142 @@ jobs:
issues: write
steps:
- name: Check checkbox status
id: unread-checkbox-check
uses: actions/github-script@v6
with:
script: |
const texts = [
'我已在未仔细阅读这些内容的情况下勾选所有选项,并相信这不会影响问题的处理',
'I have checked all the options without carefully reading the content and believe this will not affect issue resolution.'];
return texts.some(text => new RegExp(`- \\[x\\]\\s*${text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`).test(context.payload.issue.body));
- name: Check for duplicate issues in last hour
id: duplicate-check
uses: actions/github-script@v8
with:
script: |
const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000);
const currentIssueCreatedAt = new Date(context.payload.issue.created_at);
const issueAuthor = context.payload.issue.user.login;
- name: Close and lock issue
if: steps.unread-checkbox-check.outputs.result == 'true'
uses: actions/github-script@v6
with:
script: |
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
state: 'closed',
state_reason: 'not_planned'
});
await github.rest.issues.lock({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
lock_reason: 'spam'
});
// 重新获取该用户最近的 issues
const { data: userIssues } = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
creator: issueAuthor,
state: 'all',
since: oneHourAgo.toISOString(),
per_page: 30
});
- name: Fold checkboxes
if: steps.unread-checkbox-check.outputs.result == 'false'
uses: actions/github-script@v6
with:
script: |
const originalBody = context.payload.issue.body;
const checkboxSectionRegex_cn_bug = /([\s\S]*?)(### 问题描述\n\n)/;
const checkboxSectionRegex_cn_feat = /([\s\S]*?)(### 说说你遇到的问题?\n\n)/;
const checkboxSectionRegex_en_bug = /([\s\S]*?)(### Description\n\n)/;
const checkboxSectionRegex_en_feat = /([\s\S]*?)(### The problems you have encountered?\n\n)/;
// 过滤出1小时内创建的其他 issues排除当前 issue
const recentIssues = userIssues.filter(issue => {
const issueCreatedAt = new Date(issue.created_at);
return issue.number !== context.issue.number &&
issueCreatedAt >= oneHourAgo &&
issueCreatedAt < currentIssueCreatedAt;
});
const foldedBody_cn_bug = originalBody.replace(
checkboxSectionRegex_cn_bug,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody_cn_feat = foldedBody_cn_bug.replace(
checkboxSectionRegex_cn_feat,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody_en_bug = foldedBody_cn_feat.replace(
checkboxSectionRegex_en_bug,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody = foldedBody_en_bug.replace(
checkboxSectionRegex_en_feat,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
if (recentIssues.length > 0) {
// 给当前 issue 添加标签
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['rapid-submission']
});
// 给1小时内的其他 issues 也添加标签
for (const issue of recentIssues) {
try {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['rapid-submission']
});
console.log(`Added rapid-submission label to issue #${issue.number}`);
} catch (error) {
console.log(`Failed to add label to issue #${issue.number}: ${error.message}`);
}
}
}
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: foldedBody
});
- name: Check checkbox status
id: unread-checkbox-check
uses: actions/github-script@v8
with:
script: |
// 找不到###就算了
if (!/###([^#]+)###/.test(context.payload.issue.body)) {
return false;
}
var checkList = /###([^#]+)###/.exec(context.payload.issue.body)[1];
const UnreadRegexCn = /- \[x\]\s*.*?我.*未仔细阅读/i;
const UnreadRegexCn_ = /- \[ \]\s*.*?我.*未仔细阅读/i;
if (/- \[(x| )\]\s*.*?[\u4e00-\u9fa5]+/i.test(checkList)) { // 中英区分
if (UnreadRegexCn.test(checkList)) {
return true;
}
checkList = checkList.replace(UnreadRegexCn_, "");
return /- \[ \]\s*.*?[\u4e00-\u9fa5]+/i.test(checkList);
}
const texts = [
'I have checked all the options without carefully reading the content and believe this will not affect issue resolution.'];
return texts.some(text => new RegExp(`- \\[x\\]\\s*${text}`).test(context.payload.issue.body));
- name: Close and lock issue
if: steps.unread-checkbox-check.outputs.result == 'true'
uses: actions/github-script@v8
with:
script: |
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
state: 'closed',
state_reason: 'not_planned'
});
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['low-quality-report']
});
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: '因为未阅读模板提示并正确提交,触发了自动关闭规则\n\nBecause the template prompt was not read and submitted correctly, the automatic closing rule was triggered'
});
- name: Fold checkboxes
if: steps.unread-checkbox-check.outputs.result == 'false'
uses: actions/github-script@v8
with:
script: |
const originalBody = context.payload.issue.body;
if (originalBody.includes('<details><summary>Checkboxes</summary>\n\n')) {
return;
}
const checkboxSectionRegex_cn_bug = /([\s\S]*?)(### 问题描述\n\n)/;
const checkboxSectionRegex_cn_feat = /([\s\S]*?)(### 说说你遇到的问题?\n\n)/;
const checkboxSectionRegex_en_bug = /([\s\S]*?)(### Description\n\n)/;
const checkboxSectionRegex_en_feat = /([\s\S]*?)(### The problems you have encountered?\n\n)/;
const foldedBody_cn_bug = originalBody.replace(
checkboxSectionRegex_cn_bug,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody_cn_feat = foldedBody_cn_bug.replace(
checkboxSectionRegex_cn_feat,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody_en_bug = foldedBody_cn_feat.replace(
checkboxSectionRegex_en_bug,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
const foldedBody = foldedBody_en_bug.replace(
checkboxSectionRegex_en_feat,
`<details><summary>Checkboxes</summary>\n\n$1\n\n</details>\n\n$2`
);
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: foldedBody
});

View File

@@ -31,7 +31,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Check out code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
@@ -52,7 +52,6 @@ jobs:
--exclude 'https?://.*'
--exclude-path 'docs/zh-tw/manual/introduction/introduction_old.md'
--exclude-path 'docs/ja-jp/manual/introduction/introduction_old.md'
--exclude 'files/MAA_Runtime_Fix_Pwsh.ps1$'
-- './docs/**/*.md' './README.md'
- name: Comment (only for PR)

View File

@@ -44,14 +44,14 @@ jobs:
- name: Checkout repository
if: steps.check_push.outputs.is_pr != 'True'
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
persist-credentials: false
- name: Setup python
if: steps.check_push.outputs.is_pr != 'True'
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.11"
@@ -102,7 +102,7 @@ jobs:
fi
- name: Push changes
if: steps.check_push.outputs.is_pr != 'True' && steps.commit_changes.outputs.have_commits == 'True'
if: steps.check_push.outputs.is_pr != 'True' && steps.commit_changes.outputs.have_commits == 'True' && github.repository_owner == 'MaaAssistantArknights'
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.MAA_RESOURCE_SYNC }}

View File

@@ -9,6 +9,7 @@ on:
workflow_dispatch:
inputs:
tag:
description: "Name of the tag to create for the release"
type: string
required: true
@@ -19,7 +20,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
fetch-depth: 0
token: ${{ secrets.MAARELEASE_RELEASE }}

View File

@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Cleanup Previous Comment
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const { data: comments } = await github.rest.issues.listComments({
@@ -28,7 +28,7 @@ jobs:
});
}
- name: Check Commits
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const { data: commits } = await github.rest.pulls.listCommits({

View File

@@ -16,12 +16,12 @@ on:
limit_maa:
description: "Number of releases to fetch from MaaAssistantArknights"
required: true
default: "10"
default: 10
type: number
limit_mr:
limit_maarelease:
description: "Number of releases to fetch from MaaRelease"
required: true
default: "10"
default: 10
type: number
jobs:
@@ -30,17 +30,15 @@ jobs:
runs-on: windows-latest
strategy:
matrix:
msbuild_target: [x64]
arch: [x64]
fail-fast: false
env:
MAABUILDER_TARGET_PLATFORM: ${{ matrix.msbuild_target }}
outputs:
tag: ${{ steps.set_tag.outputs.tag }}
pre_version: ${{ steps.set_tag.outputs.pre_version }}
main_tag_name: ${{ steps.push_main_tag.outputs.main_tag_name }}
changelog: ${{ steps.read_changelog.outputs.content }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
# repository: 'MaaAssistantArknights/MaaAssistantArknights'
#ref: ${{ inputs.ref }}
@@ -168,6 +166,35 @@ jobs:
with:
path: ./changelog_notag.md
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v4
with:
path: |
./MaaDeps
key: ${{ runner.os }}-${{ matrix.arch }}-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-maadeps.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 tools/maadeps-download.py ${{ matrix.arch }}-windows
- name: Config cmake
run: |
mkdir -p build
cmake -B build ${{ matrix.arch == 'arm64' && '-A ARM64' }} -DCMAKE_BUILD_TYPE=Release -DMAADEPS_TRIPLET='maa-${{ matrix.arch }}-windows' -DINSTALL_RESOURCE=ON -DINSTALL_PYTHON=ON -DMAA_HASH_VERSION='${{ steps.set_tag.outputs.tag }}' -DBUILD_WPF_GUI=OFF
- name: Build
run: |
cmake --build build --config Release --parallel $env:NUMBER_OF_PROCESSORS
- name: Install
run: |
mkdir -p install
cmake --install build --prefix install --config Release
- name: Cache .nuke/temp, ~/.nuget/packages
id: cache-nuget
uses: actions/cache@v4
@@ -175,28 +202,13 @@ jobs:
path: |
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ matrix.msbuild_target }}-${{ hashFiles('**/global.json', '**/*.csproj') }}
key: ${{ runner.os }}-${{ matrix.arch }}-nuget-${{ hashFiles('**/*.csproj') }}
- name: Restore dependencies
if: steps.cache-nuget.outputs.cache-hit != 'true'
run: dotnet restore
run: dotnet restore src/MaaWpfGui/MaaWpfGui.csproj
- name: Cache MaaDeps
id: cache-maadeps
uses: actions/cache@v4
with:
path: |
./MaaDeps
key: ${{ runner.os }}-${{ matrix.msbuild_target }}-maadeps-${{ hashFiles('./maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-maadeps.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 maadeps-download.py ${{ matrix.msbuild_target }}-windows
- name: Taggify Version
- name: Taggify Version for csproj
run: |
$csprojPath = "src/MaaWpfGui/MaaWpfGui.csproj"
$csprojPath = Resolve-Path -Path $csprojPath
@@ -206,8 +218,6 @@ jobs:
} else {
$match = "0.0.1"
}
echo "Tag value: $tag"
echo "Version value: $match"
[xml]$csproj = Get-Content -Path $csprojPath
$node = $csproj.Project.PropertyGroup | where {$_.ApplicationVersion -ne $null}
$node.InformationalVersion = $tag
@@ -215,25 +225,25 @@ jobs:
$node.FileVersion = $match
$node.AssemblyVersion = $match
$csproj.Save($csprojPath)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run './build.cmd DevBuild'
- name: Publish WPF GUI
run: |
$env:GITHUB_WORKFLOW = 'dev-build-win' # pretend this is a dev-build-win workflow
$env:MAA_BUILDER_MAA_VERSION = "${{ steps.set_tag.outputs.tag }}"
echo "tag: " $env:MAA_BUILDER_MAA_VERSION
dotnet publish src/MaaWpfGui/MaaWpfGui.csproj -c Release -o install
./build.cmd DevBuild
env:
Reason: "Build nightly version"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Organize Install Files
shell: bash
run: |
rm -rf install/*.pdb
rm -rf install/msvc-debug
rm -rf install/*.h
cp tools/DependencySetup_依赖库安装.bat install
- name: Upload MAA to Github
uses: actions/upload-artifact@v4
with:
name: MAA-win-${{ matrix.msbuild_target }}
path: artifacts
name: MAA-win-${{ matrix.arch }}
path: install
- name: Push tag to main repo
id: push_main_tag
@@ -252,7 +262,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Fetch MaaRelease
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
fetch-depth: 0
@@ -282,14 +292,14 @@ jobs:
echo ${{ needs.build-win-nightly.outputs.tag }}
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
path: MaaAssistantArknights
token: ${{ secrets.MAARELEASE_RELEASE }}
show-progress: false
- name: Download MAA from Github
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
name: MAA-win-${{ matrix.target }}
path: ${{ format('{0}/{1}', 'build-ota', needs.build-win-nightly.outputs.tag) }}
@@ -303,12 +313,12 @@ jobs:
limit_maa=${limit_maa%.*}
echo "Parsed limit_maa: $limit_maa"
limit_mr=${{ inputs.limit_mr || 10 }}
limit_mr=${limit_mr%.*}
echo "Parsed limit_mr: $limit_mr"
limit_maarelease=${{ inputs.limit_maarelease || 10 }}
limit_maarelease=${limit_maarelease%.*}
echo "Parsed limit_maarelease: $limit_maarelease"
gh release list --repo 'MaaAssistantArknights/MaaAssistantArknights' --limit $limit_maa | tee ./release_maa.txt
gh release list --repo "${{ github.repository_owner }}/MaaRelease" --limit $limit_mr | tee ./release_mr.txt
gh release list --repo "${{ github.repository_owner }}/MaaRelease" --limit $limit_maarelease | tee ./release_mr.txt
echo ${{ needs.build-win-nightly.outputs.tag }} > ./config
cat ./release_maa.txt | awk '{ print $1 }' > ./tags_maa.txt
@@ -328,8 +338,7 @@ jobs:
cd build-ota
pushd ${{ needs.build-win-nightly.outputs.tag }}
zip -d *.zip '*.lib' '*.pdb' '*.exp' '*.config' '*.xml'
mv *.zip MAA-${{ env.release_tag }}-win-${{ matrix.target }}.zip
zip -r MAA-${{ env.release_tag }}-win-${{ matrix.target }}.zip ./*
popd
$GITHUB_WORKSPACE/MaaAssistantArknights/tools/OTAPacker/build.sh 'MaaAssistantArknights/MaaAssistantArknights' ./config ${{ matrix.target }} "${{ github.repository_owner }}/MaaRelease"

View File

@@ -9,12 +9,12 @@ on:
limit:
description: Number of releases to fetch from MaaAssistantArknights, 2 at least
required: false
default: "31"
default: 31
type: number
limit_2:
description: Number of releases to fetch from MaaRelease
required: false
default: "30"
default: 30
type: number
env:
@@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Fetch MaaRelease
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
@@ -94,10 +94,13 @@ jobs:
- x64
steps:
- name: Download release config
uses: actions/download-artifact@v4
uses: actions/download-artifact@v5
with:
name: MaaReleaseConfig
path: ./MaaReleaseConfig
- name: Fetch MaaRelease
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
@@ -106,7 +109,7 @@ jobs:
token: ${{ secrets.MAARELEASE_RELEASE }}
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
path: MaaAssistantArknights
@@ -134,6 +137,15 @@ jobs:
prerelease: ${{ fromJSON(needs.create-tag.outputs.prerelease) }}
overwrite: true
- name: Create issue if failed
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: "create-issue"
title: "Failed make release OTA for Windows"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
make-ota-mac:
needs: create-tag
runs-on: macos-14
@@ -177,6 +189,15 @@ jobs:
prerelease: ${{ fromJSON(needs.create-tag.outputs.prerelease) }}
overwrite: true
- name: Create issue if failed
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: "create-issue"
title: "Failed make release OTA for macos"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
release:
needs:
- make-ota

View File

@@ -1,4 +1,4 @@
name: res-update-game
name: Resource Updater
on:
schedule:
@@ -16,7 +16,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone ArknightsGameResource for Official
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
repository: yuanyan3060/ArknightsGameResource
@@ -47,7 +47,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone ArknightsGameResource_Yostar for Overseas
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
repository: ArknightsAssets/ArknightsGamedata
@@ -89,7 +89,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone arknights-toolbox-update for Taiwan
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
repository: arkntools/arknights-toolbox-update
@@ -129,10 +129,10 @@ jobs:
# needs: [clone-resources-official, clone-resources-overseas, clone-resources-txwy]
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: windows-latest
runs-on: macos-latest
steps:
- name: Checkout MAA
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
# TL;DR https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/9872#issuecomment-2251378371
# actions/checkout uses ${{ secrets.GITHUB_TOKEN }} by default, meaning all steps will inherit it
@@ -140,118 +140,129 @@ jobs:
show-progress: false
fetch-depth: 3
- name: Restore ResourceUpdater.exe from cache
id: cache-resupd
- name: Restore ResourceUpdater from cache
id: resupd-cache
uses: actions/cache/restore@v4
with:
key: Resource-updater-${{ hashFiles('./tools/ResourceUpdater/main.cpp') }}
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}
path: |
./tools/ResourceUpdater/x64/Release/opencv_world4_maa.dll
./tools/ResourceUpdater/x64/Release/ResourceUpdater.exe
./tools/ResourceUpdater/libopencv_world4.4.11.0.dylib
./tools/ResourceUpdater/res_updater
- name: Cache MaaDeps
if: steps.cache-resupd.outputs.cache-hit != 'true'
id: cache-maadeps
if: steps.resupd-cache.outputs.cache-hit != 'true'
id: maadeps-cache
uses: actions/cache@v4
with:
path: |
./MaaDeps
key: ${{ runner.os }}-x64-maadeps-${{ hashFiles('./maadeps-download.py') }}
key: ${{ runner.os }}-arm64-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-resupd.outputs.cache-hit != 'true' && steps.cache-maadeps.outputs.cache-hit != 'true'
if: steps.resupd-cache.outputs.cache-hit != 'true' && steps.maadeps-cache.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 maadeps-download.py x64-windows
python3 tools/maadeps-download.py arm64-osx
- name: Add msbuild to PATH
if: steps.cache-resupd.outputs.cache-hit != 'true'
uses: microsoft/setup-msbuild@v2
- name: Build Resource Updater
if: steps.cache-resupd.outputs.cache-hit != 'true'
- name: Config cmake
if: steps.resupd-cache.outputs.cache-hit != 'true'
run: |
MSBUILD tools/ResourceUpdater/ResourceUpdater.vcxproj /t:rebuild /p:Configuration="Release" /p:Platform="x64" /p:BuildProjectReferences=false /m
cd tools/ResourceUpdater
mkdir -p build
cmake -B build -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DMAADEPS_TRIPLET='maa-arm64-osx' \
-DWITH_HASH_VERSION=ON
- name: Save ResourceUpdater.exe to cache
if: always() && steps.cache-resupd.outputs.cache-hit != 'true'
- name: Build
if: steps.resupd-cache.outputs.cache-hit != 'true'
run: |
cmake --build tools/ResourceUpdater/build --config Release --parallel $(sysctl -n hw.logicalcpu)
- name: Install
if: steps.resupd-cache.outputs.cache-hit != 'true'
run: |
cmake --install tools/ResourceUpdater/build --prefix tools/ResourceUpdater --config Release
- name: Save ResourceUpdater to cache
if: always() && steps.resupd-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
key: Resource-updater-${{ hashFiles('./tools/ResourceUpdater/main.cpp') }}
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}
path: |
./tools/ResourceUpdater/x64/Release/opencv_world4_maa.dll
./tools/ResourceUpdater/x64/Release/ResourceUpdater.exe
./tools/ResourceUpdater/libopencv_world4.4.11.0.dylib
./tools/ResourceUpdater/res_updater
- name: Download txwy
id: download-txwy
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@v5
continue-on-error: true
with:
name: txwy
path: ./tools/ResourceUpdater/x64/Release/Overseas/tw/gamedata/excel
path: ./tools/ResourceUpdater/Overseas/tw/gamedata/excel
- name: Delay txwy
if: steps.download-txwy.outcome == 'failure'
run: |
Start-Sleep -s 20
sleep 10
- name: Re-download txwy
if: steps.download-txwy.outcome == 'failure'
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@v5
with:
name: txwy
path: ./tools/ResourceUpdater/x64/Release/Overseas/tw/gamedata/excel
path: ./tools/ResourceUpdater/Overseas/tw/gamedata/excel
- name: Download Overseas
id: download-overseas
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@v5
continue-on-error: true
with:
name: overseas
path: ./tools/ResourceUpdater/x64/Release/Overseas
path: ./tools/ResourceUpdater/Overseas
- name: Delay Overseas
if: steps.download-overseas.outcome == 'failure'
run: |
Start-Sleep -s 20
sleep 10
- name: Re-download Overseas
if: steps.download-overseas.outcome == 'failure'
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@v5
with:
name: overseas
path: ./tools/ResourceUpdater/x64/Release/Overseas
path: ./tools/ResourceUpdater/Overseas
- name: Download Official
id: download-official
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@v5
continue-on-error: true
with:
name: official
path: ./tools/ResourceUpdater/x64/Release/Official
path: ./tools/ResourceUpdater/Official
- name: Delay Official
if: steps.download-official.outcome == 'failure'
run: |
Start-Sleep -s 20
sleep 10
- name: Re-download Official
if: steps.download-official.outcome == 'failure'
uses: actions/download-artifact@v4.1.8
uses: actions/download-artifact@v5
with:
name: official
path: ./tools/ResourceUpdater/x64/Release/Official
path: ./tools/ResourceUpdater/Official
- name: Run Resource Updater
run: |
./tools/ResourceUpdater/x64/Release/ResourceUpdater.exe
./tools/ResourceUpdater/res_updater
- name: Task Sorting
id: task_sorting
run: |
python3 tools/TaskSorter/TaskSorter.py
Write-Output "gitdiff=$(git diff --name-only --diff-filter=ACM 2>$null | Select-String -Pattern '\.json$' -List)" >> $env:GITHUB_OUTPUT
echo "gitdiff=$(echo $(git diff --name-only --diff-filter=ACM 2>/dev/null | grep '\.json$'))" >> $GITHUB_OUTPUT
- name: Run prettier
uses: Nerixyz/actionsx-prettier@v3-adj
@@ -260,11 +271,12 @@ jobs:
- name: Update version.json date if necessary
id: update_version
run: pwsh tools/ResourceUpdater/version.ps1
run: |
./tools/ResourceUpdater/version.zsh
- name: Setup python
if: steps.update_version.outputs.contains_png == 'True'
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.11"
@@ -300,19 +312,19 @@ jobs:
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add .
$commit_msg = "${{ github.event.inputs.commit_message }}"
if ([string]::IsNullOrWhiteSpace($commit_msg)) {
$commit_msg = "chore: Auto Update Game Resources - $(Get-Date -Format 'yyyy-MM-dd')"
} else {
$commit_msg = $commit_msg.Trim()
}
commit_msg="${{ github.event.inputs.commit_message }}"
if [ -z "$commit_msg" ]; then
commit_msg="chore: Auto Update Game Resources - $(date '+%Y-%m-%d')"
else
commit_msg=$(echo "$commit_msg" | xargs) # Trim whitespace
fi
$run_url = "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
run_url="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
git commit -m "$commit_msg" -m "$run_url" -m "[skip changelog]"
if ($LASTEXITCODE -eq 0) {
Write-Output "have_commits=True" >> $env:GITHUB_OUTPUT
}
if [ $? -eq 0 ]; then
echo "have_commits=True" >> $GITHUB_OUTPUT
fi
git pull origin ${{ github.ref_name }} --rebase
@@ -334,7 +346,7 @@ jobs:
if: steps.update_version.outputs.changes != 'True' || steps.add_files.outputs.have_commits != 'True'
uses: andymckay/cancel-action@0.5
# - name: Release # ref: https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow
# if: steps.add_files.outputs.have_commits == 'True'
# run: |
# gh workflow run release-nightly-ota -f release_body="Auto Release of Resource Updates"
# - name: Release # ref: https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow
# if: steps.add_files.outputs.have_commits == 'True'
# run: |
# gh workflow run release-nightly-ota -f release_body="Auto Release of Resource Updates"

View File

@@ -3,119 +3,126 @@ name: smoke-testing
on:
push:
paths:
- ".github/workflows/smoke-testing.yml"
- "3rdparty/include/**"
- "include/**"
- "src/Cpp/**"
- "src/MaaCore/**"
- "src/SyncRes/**"
- "MAA.sln"
- "resource/**"
- "!**/*.md"
- "cmake/**"
- "CMakeLists.txt"
- "tools/maadeps-download.py"
pull_request:
paths:
- ".github/workflows/smoke-testing.yml"
- "3rdparty/include/**"
- "include/**"
- "src/Cpp/**"
- "src/MaaCore/**"
- "src/SyncRes/**"
- "MAA.sln"
- "resource/**"
- "!**/*.md"
- "cmake/**"
- "CMakeLists.txt"
- "tools/maadeps-download.py"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
smoke-testing:
# Prevent duplicate runs on organization branches with PRs
if: github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.full_name !=
github.event.pull_request.base.repo.full_name
runs-on: windows-latest
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
- name: Generate cache key
id: cache_key
run: |
Write-Output "key=Smoke-testing-${{ hashFiles('src/Cpp/**', 'src/MaaCore/**', 'src/SyncRes/**', '3rdparty/include/**', 'include/**', 'MAA.sln') }}" >> $env:GITHUB_OUTPUT
echo "key=Smoke-testing-${{ hashFiles('src/Cpp/**', 'src/MaaCore/**', '3rdparty/include/**', 'include/**', 'cmake/**', 'CMakeLists.txt', 'tools/maadeps-download.py', 'tools/linux-toolchain-download.py') }}" >> $GITHUB_OUTPUT
- name: Restore cache smoke-testing
id: cache-exe
id: smoke-cache
uses: actions/cache/restore@v4
with:
key: ${{ steps.cache_key.outputs.key }}
path: |
./x64/Debug/Sample.exe
./x64/Debug/fastdeploy_ppocr.dll
./x64/Debug/MaaCore.dll
./x64/Debug/onnxruntime_maa.dll
./x64/Debug/opencv_world4d_maa.dll
./install/libfastdeploy_ppocr.dylib
./install/libMaaCore.dylib
./install/libonnxruntime.1.19.2.dylib
./install/libopencv_world4.4.11.0.dylib
./install/smoke_test
- name: Fetch submodules
if: steps.cache-exe.outputs.cache-hit != 'true'
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
git submodule update --init --depth 1 3rdparty/EmulatorExtras
- name: Cache MaaDeps
if: steps.cache-exe.outputs.cache-hit != 'true'
id: cache-maadeps
if: steps.smoke-cache.outputs.cache-hit != 'true'
id: maadeps-cache
uses: actions/cache@v4
with:
path: |
./MaaDeps
key: ${{ runner.os }}-x64-maadeps-${{ hashFiles('./maadeps-download.py') }}
path: ./MaaDeps
key: ${{ runner.os }}-arm64-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-exe.outputs.cache-hit != 'true' && steps.cache-maadeps.outputs.cache-hit != 'true'
if: steps.smoke-cache.outputs.cache-hit != 'true' && steps.maadeps-cache.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 maadeps-download.py x64-windows
python3 tools/maadeps-download.py arm64-osx
- name: Add msbuild to PATH
if: steps.cache-exe.outputs.cache-hit != 'true'
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
- name: Build MaaSample
if: steps.cache-exe.outputs.cache-hit != 'true'
- name: Config cmake
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
MSBUILD src/Cpp/MaaSample.slnf -t:restore,build -p:Configuration="Debug" -p:Platform="x64" -m
mkdir -p build
cmake -B build -GNinja \
-DCMAKE_BUILD_TYPE=Debug \
-DMAADEPS_TRIPLET='maa-arm64-osx' \
-DBUILD_SMOKE_TEST=ON \
-DINSTALL_RESOURCE=ON \
-DWITH_HASH_VERSION=ON
- name: Copy resource to build directory
if: steps.cache-exe.outputs.cache-hit == 'true'
- name: Build
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
(robocopy "resource" "x64/Debug/resource" /E /XD "Arknights-Tile-Pos" /MT:4 > $null);
if ($LASTEXITCODE -lt 2) { $global:LASTEXITCODE = $null }
(robocopy "resource/Arknights-Tile-Pos" "x64/Debug/resource/Arknights-Tile-Pos" "overview.json" > $null);
if ($LASTEXITCODE -lt 2) { $global:LASTEXITCODE= $null }
cmake --build build --config Debug --parallel $(sysctl -n hw.logicalcpu)
- name: Install
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
mkdir -p install
cmake --install build --prefix install --config Debug
- name: Make link for cache smoke-testing
if: steps.smoke-cache.outputs.cache-hit == 'true'
run: |
ln -s "$(pwd)/resource" install/resource
- name: Run tests
run: |
pwsh tools/SmokeTesting/run_tests.ps1
./tools/SmokeTesting/run_tests.zsh
- name: Save cache smoke-testing (only in dev)
if: steps.cache-exe.outputs.cache-hit != 'true' && github.ref == 'refs/heads/dev'
if: steps.smoke-cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/dev'
uses: actions/cache/save@v4
with:
key: ${{ steps.cache_key.outputs.key }}
path: |
./x64/Debug/Sample.exe
./x64/Debug/fastdeploy_ppocr.dll
./x64/Debug/MaaCore.dll
./x64/Debug/onnxruntime_maa.dll
./x64/Debug/opencv_world4d_maa.dll
./install/libfastdeploy_ppocr.dylib
./install/libMaaCore.dylib
./install/libonnxruntime.1.19.2.dylib
./install/libopencv_world4.4.11.0.dylib
./install/smoke_test
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: logs
path: ./x64/Debug/debug
path: ./install/debug

View File

@@ -21,7 +21,7 @@ jobs:
contents: none
steps:
- name: Close inactive issues
uses: actions/stale@v9
uses: actions/stale@v10
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: ${{ env.daysBeforeStale }}

View File

@@ -16,7 +16,7 @@ jobs:
steps:
- name: Checkout MaaAssistantArknights
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
show-progress: false
@@ -27,7 +27,7 @@ jobs:
git show -s
- name: Checkout MaaResource
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
repository: MaaAssistantArknights/MaaResource
show-progress: false

View File

@@ -8,100 +8,65 @@ on:
paths:
- ".github/workflows/website-workflow.yml"
- "docs/**"
- "website/**"
pull_request:
paths:
- ".github/workflows/website-workflow.yml"
- "docs/**"
- "website/**"
workflow_dispatch:
inputs:
deploy-to-prod-env:
description: "Deploy to production environment"
deploy-to-prod:
description: "Deploy to prod"
default: false
required: true
type: boolean
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
timeout-minutes: 20
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Checkout
uses: actions/checkout@v5
with:
show-progress: false
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
version: 10
run_install: false
- name: Setup Node.js environment
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: 22
node-version: 24
cache: pnpm
cache-dependency-path: "./docs/pnpm-lock.yaml"
- name: Install dependencies
run: pnpm install --frozen-lockfile
working-directory: "./website"
working-directory: "./docs"
- name: Build
- name: Build documentation
run: pnpm run build
working-directory: "./website"
working-directory: "./docs"
- name: Upload artifact to GitHub
uses: actions/upload-artifact@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
name: dist
path: "./website/dist"
path: "./docs/.vuepress/dist"
publish:
runs-on: ubuntu-latest
needs: build
if: github.event_name != 'pull_request'
steps:
- name: Download website artifacts
uses: actions/download-artifact@v4
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
if: ${{ inputs.deploy-to-prod == true || github.ref == 'refs/heads/master' }}
with:
name: dist
- name: Set deployment environment
id: set-deployment-env
run: |
if [[ "${{ github.event_name }}" != "workflow_dispatch" && "${{ github.ref }}" == "refs/heads/master" ]] || [[ "${{ github.event.inputs.deploy-to-prod-env }}" == "true" ]]; then
echo "AZURE_TARGET_ENV=prod" >> $GITHUB_ENV
else
echo "AZURE_TARGET_ENV=dev" >> $GITHUB_ENV
fi
- name: Show environment
run: echo ${{ env.AZURE_TARGET_ENV }}
- name: Deploy to Azure (prod)
id: deploy-prod
uses: Azure/static-web-apps-deploy@v1
if: env.AZURE_TARGET_ENV == 'prod'
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_MAA_WEBSITE }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "."
api_location: ""
skip_app_build: true
skip_api_build: true
- name: Deploy to Azure (dev)
id: deploy-dev
uses: Azure/static-web-apps-deploy@v1
if: env.AZURE_TARGET_ENV == 'dev'
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_MAA_WEBSITE }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
deployment_environment: dev
app_location: "."
api_location: ""
skip_app_build: true
skip_api_build: true
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: "./docs/.vuepress/dist"
publish_branch: gh-pages

11
.gitignore vendored
View File

@@ -451,6 +451,7 @@ tools/RoguelikeRecruitmentTool/output
# CF 活动关卡(异格夜刀),手动改的地图
/resource/Arknights-Tile-Pos/act24side_09-activities-act24side-level_act24side_09.json
/src/MaaWpfGui/FodyWeavers.xml
*.lnk
# 链接检查缓存
.lycheecache
@@ -467,3 +468,13 @@ Thumbs.db
# macOS Finder Shit
.DS_Store
# MaaSupportExtension config
/config/maa_pi_config.json
# build & install
build
install
# pnpm cache
.pnpm-store

View File

@@ -1,127 +0,0 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Build Schema",
"$ref": "#/definitions/build",
"definitions": {
"build": {
"type": "object",
"properties": {
"Continue": {
"type": "boolean",
"description": "Indicates to continue a previously failed build attempt"
},
"Help": {
"type": "boolean",
"description": "Shows the help text for this build assembly"
},
"Host": {
"type": "string",
"description": "Host for execution. Default is 'automatic'",
"enum": [
"AppVeyor",
"AzurePipelines",
"Bamboo",
"Bitbucket",
"Bitrise",
"GitHubActions",
"GitLab",
"Jenkins",
"Rider",
"SpaceAutomation",
"TeamCity",
"Terminal",
"TravisCI",
"VisualStudio",
"VSCode"
]
},
"NoLogo": {
"type": "boolean",
"description": "Disables displaying the NUKE logo"
},
"Partition": {
"type": "string",
"description": "Partition to use on CI"
},
"Plan": {
"type": "boolean",
"description": "Shows the execution plan (HTML)"
},
"Profile": {
"type": "array",
"description": "Defines the profiles to load",
"items": {
"type": "string"
}
},
"Root": {
"type": "string",
"description": "Root directory during build execution"
},
"Skip": {
"type": "array",
"description": "List of targets to be skipped. Empty list skips all dependencies",
"items": {
"type": "string",
"enum": [
"Default",
"DevBuild",
"DevBuildDefault",
"DevBuildReleaseSimulation",
"ReleaseMaa",
"SetMaaChangeLog",
"SetPackageBundled",
"SetVersion",
"UseClean",
"UseCommitVersion",
"UseMaaChangeLog",
"UseMaaDevBundle",
"UseMaaRelease",
"UsePublishArtifact",
"UsePublishRelease",
"UseRsVersion",
"UseTagVersion",
"WithCompileCoreRelease",
"WithCompileWpfRelease",
"WithSyncRes"
]
}
},
"Target": {
"type": "array",
"description": "List of targets to be invoked. Default is '{default_target}'",
"items": {
"type": "string",
"enum": [
"Default",
"DevBuild",
"DevBuildDefault",
"DevBuildReleaseSimulation",
"ReleaseMaa",
"SetMaaChangeLog",
"SetPackageBundled",
"SetVersion",
"UseClean",
"UseCommitVersion",
"UseMaaChangeLog",
"UseMaaDevBundle",
"UseMaaRelease",
"UsePublishArtifact",
"UsePublishRelease",
"UseRsVersion",
"UseTagVersion",
"WithCompileCoreRelease",
"WithCompileWpfRelease",
"WithSyncRes"
]
}
},
"Verbosity": {
"type": "string",
"description": "Logging verbosity during build execution. Default is 'Normal'",
"enum": ["Minimal", "Normal", "Quiet", "Verbose"]
}
}
}
}
}

View File

@@ -1,4 +0,0 @@
{
"$schema": "./build.schema.json",
"Solution": "tools/MaaBuilder.sln"
}

View File

@@ -18,10 +18,17 @@ repos:
rev: v3.5.3
hooks:
- id: prettier
files: ^((\.github/ISSUE_TEMPLATE|docs|resource|src|tools|website)/.*|\.pre-commit-config\.yaml|package-definition\.json)
name: prettier (config files)
files: ^((\.github/ISSUE_TEMPLATE|resource|src|tools)/.*|\.pre-commit-config\.yaml|package-definition\.json)
types_or:
- yaml
- json
- repo: https://github.com/rbubley/mirrors-prettier
rev: v3.5.3
hooks:
- id: prettier
name: prettier (docs)
files: ^docs/.*
- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.17.2
hooks:

View File

@@ -1,15 +1,18 @@
**/node_modules/
**/pnpm-lock.yaml
docs/**/*.md
MaaDeps/
3rdparty/
src/maa-cli
src/MaaMacGui
website/
docs/
# website/
# docs/
resource/Arknights-Tile-Pos/
tools/OptimizeTemplates/optimize_templates.json
CITATION.cff
CHANGELOG.md
## FUCK FUCK

View File

@@ -12,6 +12,12 @@
"parser": "yaml",
"tabWidth": 2
}
},
{
"files": ["**/*.md"],
"options": {
"tabWidth": 2
}
}
]
}

View File

@@ -12,5 +12,8 @@
"MaaDeps/vcpkg/buildtrees": true,
"MaaDeps/vcpkg/packages": true
},
"files.associations": {
"**/resource/tasks/**/*.json": "jsonc"
},
"C_Cpp.exclusionPolicy": "checkFilesAndFolders"
}

View File

@@ -7,6 +7,7 @@
#include <ostream>
#include <string>
#include <tuple>
#include <type_traits>
#include <vector>
#include "exception.hpp"
@@ -40,50 +41,49 @@ public:
// explicit basic_array(basic_value<string_t>&& val);
template <
typename collection_t,
typename jsonization_t,
std::enable_if_t<
_utils::is_collection<collection_t>
&& std::is_constructible_v<value_type, _utils::range_value_t<collection_t>>,
_utils::has_to_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_to_json_array_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
basic_array(collection_t arr)
: _array_data(std::make_move_iterator(arr.begin()), std::make_move_iterator(arr.end()))
{
}
template <
typename fixed_array_t,
std::enable_if_t<_utils::is_fixed_array<fixed_array_t>, bool> = true>
basic_array(const fixed_array_t& arr)
: _array_data(arr.begin(), arr.end())
basic_array(const jsonization_t& value)
: basic_array(ext::jsonization<string_t, jsonization_t>().to_json(value))
{
}
template <
typename jsonization_t,
std::enable_if_t<_utils::has_to_json_in_member<jsonization_t>::value, bool> = true>
std::enable_if_t<
_utils::has_to_json_array_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
basic_array(const jsonization_t& value)
: basic_array(value.to_json())
: basic_array(ext::jsonization<string_t, jsonization_t>().to_json_array(value))
{
}
template <
typename jsonization_t,
std::enable_if_t<_utils::has_to_json_in_templ_spec<jsonization_t>::value, bool> = true>
basic_array(const jsonization_t& value)
: basic_array(ext::jsonization<jsonization_t>().to_json(value))
std::enable_if_t<
std::is_rvalue_reference_v<jsonization_t&&>
&& _utils::has_move_to_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_move_to_json_array_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
basic_array(jsonization_t&& value)
: basic_array(ext::jsonization<string_t, jsonization_t>().move_to_json(std::move(value)))
{
}
template <typename... elem_ts>
basic_array(const std::tuple<elem_ts...>& tup)
{
foreach_tuple(tup, std::make_index_sequence<std::tuple_size_v<std::tuple<elem_ts...>>>());
}
template <typename first_t, typename second_t>
basic_array(std::pair<first_t, second_t> pair)
: _array_data({ std::move(pair.first), std::move(pair.second) })
{
}
//template <
// typename jsonization_t,
// std::enable_if_t<
// std::is_rvalue_reference_v<jsonization_t&&>
// && _utils::has_move_to_json_array_in_templ_spec<jsonization_t, string_t>::value,
// bool> = true>
//basic_array(jsonization_t&& value)
// : basic_array(
// ext::jsonization<string_t, jsonization_t>().move_to_json_array(std::move(value)))
//{
//}
~basic_array() noexcept = default;
@@ -120,6 +120,30 @@ public:
template <typename first_t, typename second_t>
std::pair<first_t, second_t> as_pair() const;
template <
typename value_t,
std::enable_if_t<
_utils::has_from_json_array_in_templ_spec<value_t, string_t>::value,
bool> = true>
value_t as() const&
{
value_t res;
ext::jsonization<string_t, value_t>().from_json_array(*this, res);
return res;
}
template <
typename value_t,
std::enable_if_t<
_utils::has_move_from_json_array_in_templ_spec<value_t, string_t>::value,
bool> = true>
value_t as() &&
{
value_t res;
ext::jsonization<string_t, value_t>().move_from_json_array(std::move(*this), res);
return res;
}
// Usage: get(key_1, key_2, ..., default_value);
template <typename... key_then_default_value_t>
auto get(key_then_default_value_t&&... keys_then_default_value) const;
@@ -192,29 +216,19 @@ public:
std::enable_if_t<_utils::is_fixed_array<fixed_array_t<value_t, Size>>, bool> = true>
explicit operator fixed_array_t<value_t, Size>() const
{
return as_fixed_array<value_t, Size, fixed_array_t>();
}
template <typename... elem_ts>
explicit operator std::tuple<elem_ts...>() const
{
return as_tuple<elem_ts...>();
}
template <typename elem1_t, typename elem2_t>
explicit operator std::pair<elem1_t, elem2_t>() const
{
return as_pair<elem1_t, elem2_t>();
return as<fixed_array_t<value_t, Size>>();
}
template <
typename jsonization_t,
std::enable_if_t<_utils::has_from_json_in_member<jsonization_t, string_t>::value, bool> =
true>
explicit operator jsonization_t() const
std::enable_if_t<
_utils::has_from_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_from_json_array_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() const&
{
jsonization_t dst {};
if (!dst.from_json(*this)) {
if (!ext::jsonization<string_t, jsonization_t>().from_json(*this, dst)) {
throw exception("Wrong JSON");
}
return dst;
@@ -223,12 +237,43 @@ public:
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_from_json_in_templ_spec<jsonization_t, string_t>::value,
_utils::has_from_json_array_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() const
explicit operator jsonization_t() const&
{
jsonization_t dst {};
if (!ext::jsonization<jsonization_t>().from_json(*this, dst)) {
if (!ext::jsonization<string_t, jsonization_t>().from_json_array(*this, dst)) {
throw exception("Wrong JSON");
}
return dst;
}
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_move_from_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_move_from_json_array_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() &&
{
jsonization_t dst {};
if (!ext::jsonization<string_t, jsonization_t>().from_json(std::move(*this), dst)) {
throw exception("Wrong JSON");
}
return dst;
}
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_move_from_json_array_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() &&
{
jsonization_t dst {};
if (!ext::jsonization<string_t, jsonization_t>().move_from_json_array(
std::move(*this),
dst)) {
throw exception("Wrong JSON");
}
return dst;
@@ -244,17 +289,6 @@ private:
template <typename value_t>
auto get_helper(const value_t& default_value, size_t pos) const;
template <typename tuple_t>
tuple_t as_tuple_templ() const;
template <size_t index, typename tuple_t>
void set_tuple(tuple_t& tup) const;
template <typename Tuple, std::size_t... Is>
void foreach_tuple(const Tuple& t, std::index_sequence<Is...>)
{
(_array_data.emplace_back(std::get<Is>(t)), ...);
}
string_t format(size_t indent, size_t indent_times) const;
private:
@@ -368,95 +402,32 @@ inline bool basic_array<string_t>::all() const
return true;
}
namespace _as_collection_helper
{
template <typename T>
class has_emplace_back
{
template <typename U>
static auto test(int) -> decltype(std::declval<U>().emplace_back(), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
}
template <typename string_t>
template <typename value_t, template <typename...> typename collection_t>
inline collection_t<value_t> basic_array<string_t>::as_collection() const
{
collection_t<value_t> result;
if constexpr (_as_collection_helper::has_emplace_back<collection_t<value_t>>::value) {
for (const auto& elem : _array_data) {
result.emplace_back(elem.template as<value_t>());
}
}
else {
for (const auto& elem : _array_data) {
result.emplace(elem.template as<value_t>());
}
}
return result;
return as<collection_t<value_t>>();
}
template <typename string_t>
template <typename value_t, size_t Size, template <typename, size_t> typename fixed_array_t>
inline fixed_array_t<value_t, Size> basic_array<string_t>::as_fixed_array() const
{
if (size() != Size) {
throw exception("Wrong array size");
}
fixed_array_t<value_t, Size> result;
for (size_t i = 0; i < Size; ++i) {
result.at(i) = _array_data.at(i).template as<value_t>();
}
return result;
}
template <typename string_t>
template <size_t index, typename tuple_t>
inline void basic_array<string_t>::set_tuple(tuple_t& tup) const
{
using elem_t = std::tuple_element_t<index, tuple_t>;
if constexpr (index > 0) {
set_tuple<index - 1>(tup);
}
std::get<index>(tup) = static_cast<elem_t>(at(index));
}
template <typename string_t>
template <typename tuple_t>
inline tuple_t basic_array<string_t>::as_tuple_templ() const
{
constexpr size_t tuple_size = std::tuple_size_v<tuple_t>;
if (size() != tuple_size) {
throw exception("Wrong array size");
}
tuple_t result;
set_tuple<tuple_size - 1>(result);
return result;
return as<fixed_array_t<value_t, Size>>();
}
template <typename string_t>
template <typename... elem_ts>
inline std::tuple<elem_ts...> basic_array<string_t>::as_tuple() const
{
return as_tuple_templ<std::tuple<elem_ts...>>();
return as<std::tuple<elem_ts...>>();
}
template <typename string_t>
template <typename first_t, typename second_t>
inline std::pair<first_t, second_t> basic_array<string_t>::as_pair() const
{
return as_tuple_templ<std::pair<first_t, second_t>>();
return as<std::pair<first_t, second_t>>();
}
template <typename string_t>

View File

@@ -39,32 +39,50 @@ public:
// explicit basic_object(basic_value<string_t>&& val);
template <
typename map_t,
typename jsonization_t,
std::enable_if_t<
_utils::is_map<map_t>
&& std::is_constructible_v<value_type, _utils::range_value_t<map_t>>,
_utils::has_to_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_to_json_object_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
basic_object(map_t map)
: _object_data(std::make_move_iterator(map.begin()), std::make_move_iterator(map.end()))
basic_object(const jsonization_t& value)
: basic_object(ext::jsonization<string_t, jsonization_t>().to_json(value))
{
}
template <
typename jsonization_t,
std::enable_if_t<_utils::has_to_json_in_member<jsonization_t>::value, bool> = true>
std::enable_if_t<
_utils::has_to_json_object_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
basic_object(const jsonization_t& value)
: basic_object(value.to_json())
: basic_object(ext::jsonization<string_t, jsonization_t>().to_json_object(value))
{
}
template <
typename jsonization_t,
std::enable_if_t<_utils::has_to_json_in_templ_spec<jsonization_t>::value, bool> = true>
basic_object(const jsonization_t& value)
: basic_object(ext::jsonization<jsonization_t>().to_json(value))
std::enable_if_t<
std::is_rvalue_reference_v<jsonization_t&&>
&& _utils::has_move_to_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_move_to_json_object_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
basic_object(jsonization_t&& value)
: basic_object(ext::jsonization<string_t, jsonization_t>().move_to_json(std::move(value)))
{
}
//template <
// typename jsonization_t,
// std::enable_if_t<
// std::is_rvalue_reference_v<jsonization_t&&>
// && _utils::has_move_to_json_object_in_templ_spec<jsonization_t, string_t>::value,
// bool> = true>
//basic_object(jsonization_t&& value)
// : basic_object(
// ext::jsonization<string_t, jsonization_t>().move_to_json_object(std::move(value)))
//{
//}
~basic_object() = default;
bool empty() const noexcept { return _object_data.empty(); }
@@ -91,6 +109,30 @@ public:
template <typename value_t, template <typename...> typename map_t = std::map>
map_t<string_t, value_t> as_map() const;
template <
typename value_t,
std::enable_if_t<
_utils::has_from_json_object_in_templ_spec<value_t, string_t>::value,
bool> = true>
value_t as() const&
{
value_t res;
ext::jsonization<string_t, value_t>().from_json_object(*this, res);
return res;
}
template <
typename value_t,
std::enable_if_t<
_utils::has_move_from_json_object_in_templ_spec<value_t, string_t>::value,
bool> = true>
value_t as() &&
{
value_t res;
ext::jsonization<string_t, value_t>().move_from_json_object(std::move(*this), res);
return res;
}
// Usage: get(key_1, key_2, ..., default_value);
template <typename... key_then_default_value_t>
auto get(key_then_default_value_t&&... keys_then_default_value) const;
@@ -151,12 +193,14 @@ public:
template <
typename jsonization_t,
std::enable_if_t<_utils::has_from_json_in_member<jsonization_t, string_t>::value, bool> =
true>
explicit operator jsonization_t() const
std::enable_if_t<
_utils::has_from_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_from_json_object_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() const&
{
jsonization_t dst {};
if (!dst.from_json(*this)) {
if (!ext::jsonization<string_t, jsonization_t>().from_json(*this, dst)) {
throw exception("Wrong JSON");
}
return dst;
@@ -165,12 +209,43 @@ public:
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_from_json_in_templ_spec<jsonization_t, string_t>::value,
_utils::has_from_json_object_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() const
explicit operator jsonization_t() const&
{
jsonization_t dst {};
if (!ext::jsonization<jsonization_t>().from_json(*this, dst)) {
if (!ext::jsonization<string_t, jsonization_t>().from_json_object(*this, dst)) {
throw exception("Wrong JSON");
}
return dst;
}
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_move_from_json_in_templ_spec<jsonization_t, string_t>::value
&& !_utils::has_move_from_json_object_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() &&
{
jsonization_t dst {};
if (!ext::jsonization<string_t, jsonization_t>().from_json(std::move(*this), dst)) {
throw exception("Wrong JSON");
}
return dst;
}
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_move_from_json_object_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() &&
{
jsonization_t dst {};
if (!ext::jsonization<string_t, jsonization_t>().move_from_json_object(
std::move(*this),
dst)) {
throw exception("Wrong JSON");
}
return dst;
@@ -195,8 +270,8 @@ private:
template <typename string_t>
inline basic_object<string_t>::basic_object(std::initializer_list<value_type> init_list)
: _object_data(
std::make_move_iterator(init_list.begin()),
std::make_move_iterator(init_list.end()))
std::make_move_iterator(init_list.begin()),
std::make_move_iterator(init_list.end()))
{
}
@@ -309,11 +384,7 @@ template <typename string_t>
template <typename value_t, template <typename...> typename map_t>
inline map_t<string_t, value_t> basic_object<string_t>::as_map() const
{
map_t<string_t, value_t> result;
for (const auto& [key, val] : _object_data) {
result.emplace(key, val.template as<value_t>());
}
return result;
return as<map_t<string_t, value_t>>();
}
template <typename string_t>

View File

@@ -32,7 +32,7 @@ using wobject = basic_object<std::wstring>;
namespace json::ext
{
template <typename T>
template <typename string_t, typename T, typename = void>
class jsonization
{
public:
@@ -101,11 +101,19 @@ constexpr bool is_pair = false;
template <typename... args_t>
constexpr bool is_pair<std::pair<args_t...>> = true;
template <typename T, typename = void>
constexpr bool is_tuple_like = false;
template <template <typename...> typename tuple_t, typename... args_t>
constexpr bool is_tuple_like<
tuple_t<args_t...>,
std::void_t<decltype(std::tuple_size<tuple_t<args_t...>>::value)>> =
std::tuple_size<tuple_t<args_t...>>::value == sizeof...(args_t);
template <typename T>
class has_to_json_in_member
class has_emplace_back
{
template <typename U>
static auto test(int) -> decltype(std::declval<U>().to_json(), std::true_type());
static auto test(int) -> decltype(std::declval<U>().emplace_back(), std::true_type());
template <typename U>
static std::false_type test(...);
@@ -115,11 +123,10 @@ public:
};
template <typename T>
class has_to_json_in_templ_spec
class has_to_json_in_member
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<U>>().to_json(std::declval<U>()), std::true_type());
static auto test(int) -> decltype(std::declval<U>().to_json(), std::true_type());
template <typename U>
static std::false_type test(...);
@@ -142,20 +149,6 @@ public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_check_json_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<U>>().check_json(std::declval<json::basic_value<string_t>>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_from_json_in_member
{
@@ -170,12 +163,208 @@ public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_to_json_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().to_json(std::declval<U>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_check_json_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().check_json(std::declval<json::basic_value<string_t>>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_from_json_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<U>>().from_json(std::declval<json::basic_value<string_t>>(), std::declval<U&>()), std::true_type());
-> decltype(std::declval<ext::jsonization<string_t, U>>().from_json(std::declval<json::basic_value<string_t>>(), std::declval<U&>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_move_to_json_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().move_to_json(std::declval<U>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_move_from_json_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().move_from_json(std::declval<json::basic_value<string_t>>(), std::declval<U&>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_to_json_array_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().to_json_array(std::declval<U>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_check_json_array_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().check_json_array(std::declval<json::basic_array<string_t>>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_from_json_array_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().from_json_array(std::declval<json::basic_array<string_t>>(), std::declval<U&>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_move_to_json_array_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().move_to_json_array(std::declval<U>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_move_from_json_array_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().move_from_json_array(std::declval<json::basic_array<string_t>>(), std::declval<U&>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_to_json_object_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().to_json_object(std::declval<U>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_check_json_object_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().check_json_object(std::declval<json::basic_object<string_t>>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_from_json_object_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().from_json_object(std::declval<json::basic_object<string_t>>(), std::declval<U&>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_move_to_json_object_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().move_to_json_object(std::declval<U>()), std::true_type());
template <typename U>
static std::false_type test(...);
public:
static constexpr bool value = decltype(test<T>(0))::value;
};
template <typename T, typename string_t>
class has_move_from_json_object_in_templ_spec
{
template <typename U>
static auto test(int)
-> decltype(std::declval<ext::jsonization<string_t, U>>().move_from_json_object(std::declval<json::basic_object<string_t>>(), std::declval<U&>()), std::true_type());
template <typename U>
static std::false_type test(...);
@@ -279,53 +468,6 @@ inline string_t to_basic_string(any_t&& arg)
}
}
template <std::size_t id, typename string_t, typename variant_t>
inline bool _serialize_variant_impl(basic_value<string_t>& val, variant_t&& var)
{
if (var.index() != id) {
return false;
}
val = basic_value<string_t>(std::get<id>(std::forward<variant_t>(var)));
return true;
}
template <typename string_t, typename variant_t, std::size_t... ids>
inline basic_value<string_t> serialize_variant(variant_t&& var, std::index_sequence<ids...>)
{
basic_value<string_t> val;
(_serialize_variant_impl<ids>(val, std::forward<variant_t>(var)) || ...);
return val;
}
template <std::size_t id, typename string_t, typename variant_t>
inline bool _deserialize_variant_impl(const basic_value<string_t>& val, variant_t& var)
{
using alt_t = std::variant_alternative_t<id, variant_t>;
if (!val.template is<alt_t>()) {
return false;
}
var = val.template as<alt_t>();
return true;
}
template <typename string_t, typename variant_t, std::size_t... ids>
inline variant_t deserialize_variant(const basic_value<string_t>& val, std::index_sequence<ids...>)
{
variant_t var;
(_deserialize_variant_impl<ids>(val, var) || ...);
return var;
}
template <typename string_t, typename variant_t, std::size_t... ids>
inline bool detect_variant(const basic_value<string_t>& val, std::index_sequence<ids...>)
{
return (val.template is<std::variant_alternative_t<ids, variant_t>>() || ...);
}
template <typename string_t, typename tuple_t, std::size_t... ids>
inline bool detect_tuple(const basic_value<string_t>& val, std::index_sequence<ids...>)
{
return val.is_array() && val.as_array().size() == std::tuple_size_v<tuple_t>
&& (val.at(ids).template is<std::tuple_element_t<ids, tuple_t>>() || ...);
}
} // namespace json::_utils
#include "../reflection/extensions.hpp"

View File

@@ -4,6 +4,7 @@
#include <cstddef>
#include <initializer_list>
#include <map>
#include <memory>
#include <optional>
#include <ostream>
@@ -12,6 +13,7 @@
#include <type_traits>
#include <utility>
#include <variant>
#include <vector>
#include "exception.hpp"
#include "utils.hpp"
@@ -68,40 +70,6 @@ public:
template <typename... args_t>
basic_value(value_type type, args_t&&... args);
template <
typename collection_t,
std::enable_if_t<
_utils::is_collection<collection_t>
&& std::is_constructible_v<
typename basic_array<string_t>::value_type,
_utils::range_value_t<collection_t>>,
bool> = true>
basic_value(collection_t&& collection)
: basic_value(basic_array<string_t>(std::forward<collection_t>(collection)))
{
}
template <
typename fixed_array_t,
std::enable_if_t<_utils::is_fixed_array<fixed_array_t>, bool> = true>
basic_value(const fixed_array_t& arr)
: basic_value(basic_array<string_t>(arr))
{
}
template <
typename map_t,
std::enable_if_t<
_utils::is_map<map_t>
&& std::is_constructible_v<
typename basic_object<string_t>::value_type,
_utils::range_value_t<map_t>>,
bool> = true>
basic_value(map_t&& map)
: basic_value(basic_object<string_t>(std::forward<map_t>(map)))
{
}
template <typename enum_t, std::enable_if_t<std::is_enum_v<enum_t>, bool> = true>
basic_value(enum_t e)
: basic_value(static_cast<std::underlying_type_t<enum_t>>(e))
@@ -110,47 +78,24 @@ public:
template <
typename jsonization_t,
std::enable_if_t<_utils::has_to_json_in_member<jsonization_t>::value, bool> = true>
std::enable_if_t<_utils::has_to_json_in_templ_spec<jsonization_t, string_t>::value, bool> =
true>
basic_value(const jsonization_t& value)
: basic_value(value.to_json())
: basic_value(ext::jsonization<string_t, jsonization_t>().to_json(value))
{
}
template <
typename jsonization_t,
std::enable_if_t<_utils::has_to_json_in_templ_spec<jsonization_t>::value, bool> = true>
basic_value(const jsonization_t& value)
: basic_value(ext::jsonization<jsonization_t>().to_json(value))
std::enable_if_t<
std::is_rvalue_reference_v<jsonization_t&&>
&& _utils::has_move_to_json_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
basic_value(jsonization_t&& value)
: basic_value(ext::jsonization<string_t, jsonization_t>().move_to_json(std::move(value)))
{
}
template <typename... elem_ts>
basic_value(std::tuple<elem_ts...>&& tup)
: basic_value(basic_array<string_t>(std::forward<std::tuple<elem_ts...>>(tup)))
{
}
template <typename elem1_t, typename elem2_t>
basic_value(std::pair<elem1_t, elem2_t>&& pair)
: basic_value(basic_array<string_t>(std::pair<elem1_t, elem2_t>(pair)))
{
}
template <
typename variant_t,
std::enable_if_t<_utils::is_variant<std::decay_t<variant_t>>, bool> = true>
basic_value(variant_t&& var)
: basic_value(_utils::serialize_variant<string_t>(
std::forward<variant_t>(var),
std::make_index_sequence<std::variant_size_v<std::decay_t<variant_t>>>()))
{
}
template <
typename value_t,
std::enable_if_t<!std::is_convertible_v<value_t, basic_value<string_t>>, bool> = true>
basic_value(value_t) = delete;
// I don't know if you want to convert char to string or number, so I delete these constructors.
basic_value(char) = delete;
basic_value(wchar_t) = delete;
@@ -230,7 +175,10 @@ public:
map_t<string_t, value_t> as_map() const;
template <typename value_t>
value_t as() const;
value_t as() const&;
template <typename value_t>
value_t as() &&;
basic_array<string_t>& as_array();
basic_object<string_t>& as_object();
@@ -253,13 +201,13 @@ public:
basic_value<string_t>& operator=(const basic_value<string_t>& rhs);
basic_value<string_t>& operator=(basic_value<string_t>&&) noexcept;
template <
typename value_t,
std::enable_if_t<std::is_convertible_v<value_t, basic_value<string_t>>, bool> = true>
basic_value<string_t>& operator=(value_t rhs)
{
return *this = basic_value<string_t>(std::move(rhs));
}
// template <
// typename value_t,
// std::enable_if_t<std::is_convertible_v<value_t, basic_value<string_t>>, bool> = true>
// basic_value<string_t>& operator=(value_t rhs)
// {
// return *this = basic_value<string_t>(std::move(rhs));
// }
bool operator==(const basic_value<string_t>& rhs) const;
@@ -321,16 +269,6 @@ public:
return as_collection<value_t, collection_t>();
}
template <
typename value_t,
size_t Size,
template <typename, size_t> typename fixed_array_t = std::array,
std::enable_if_t<_utils::is_fixed_array<fixed_array_t<value_t, Size>>, bool> = true>
explicit operator fixed_array_t<value_t, Size>() const
{
return as_fixed_array<value_t, Size, fixed_array_t>();
}
template <
typename value_t,
template <typename...> typename map_t = std::map,
@@ -340,57 +278,38 @@ public:
return as_map<value_t, map_t>();
}
template <
typename jsonization_t,
std::enable_if_t<_utils::has_from_json_in_member<jsonization_t, string_t>::value, bool> =
true>
explicit operator jsonization_t() const
{
jsonization_t dst {};
if (!dst.from_json(*this)) {
throw exception("Wrong JSON");
}
return dst;
}
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_from_json_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() const
{
jsonization_t dst {};
if (!ext::jsonization<jsonization_t>().from_json(*this, dst)) {
throw exception("Wrong JSON");
}
return dst;
}
template <typename enum_t, std::enable_if_t<std::is_enum_v<enum_t>, bool> = true>
explicit operator enum_t() const
{
return static_cast<enum_t>(static_cast<std::underlying_type_t<enum_t>>(*this));
}
template <typename... elem_ts>
explicit operator std::tuple<elem_ts...>() const
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_from_json_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() const&
{
return as_array().template as_tuple<elem_ts...>();
jsonization_t dst {};
if (!ext::jsonization<string_t, jsonization_t>().from_json(*this, dst)) {
throw exception("Wrong JSON");
}
return dst;
}
template <typename elem1_t, typename elem2_t>
explicit operator std::pair<elem1_t, elem2_t>() const
template <
typename jsonization_t,
std::enable_if_t<
_utils::has_move_from_json_in_templ_spec<jsonization_t, string_t>::value,
bool> = true>
explicit operator jsonization_t() &&
{
return as_array().template as_pair<elem1_t, elem2_t>();
}
template <typename... args_t>
explicit operator std::variant<args_t...>() const
{
return _utils::deserialize_variant<string_t, std::variant<args_t...>>(
*this,
std::make_index_sequence<std::variant_size_v<std::variant<args_t...>>>());
jsonization_t dst {};
if (!ext::jsonization<string_t, jsonization_t>().move_from_json(std::move(*this), dst)) {
throw exception("Wrong JSON");
}
return dst;
}
private:
@@ -554,11 +473,8 @@ inline bool basic_value<string_t>::is() const noexcept
if constexpr (std::is_same_v<basic_value<string_t>, value_t>) {
return true;
}
else if constexpr (_utils::has_check_json_in_member<value_t, string_t>::value) {
return value_t().check_json(*this);
}
else if constexpr (_utils::has_check_json_in_templ_spec<value_t, string_t>::value) {
return ext::jsonization<value_t>().check_json(*this);
return ext::jsonization<string_t, value_t>().check_json(*this);
}
else if constexpr (std::is_same_v<bool, value_t>) {
return is_boolean();
@@ -575,10 +491,6 @@ inline bool basic_value<string_t>::is() const noexcept
else if constexpr (_utils::is_collection<value_t>) {
return is_array() && all<typename value_t::value_type>();
}
else if constexpr (_utils::is_fixed_array<value_t>) {
return is_array() && all<typename value_t::value_type>()
&& as_array().size() == _utils::fixed_array_size<value_t>;
}
else if constexpr (std::is_same_v<basic_object<string_t>, value_t>) {
return is_object();
}
@@ -586,21 +498,6 @@ inline bool basic_value<string_t>::is() const noexcept
return is_object() && std::is_constructible_v<string_t, typename value_t::key_type>
&& all<typename value_t::mapped_type>();
}
else if constexpr (_utils::is_variant<value_t>) {
return _utils::detect_variant<string_t, value_t>(
*this,
std::make_index_sequence<std::variant_size_v<value_t>>());
}
else if constexpr (_utils::is_pair<value_t>) {
return is_array() && as_array().size() == 2
&& at(0).template is<typename value_t::first_type>()
&& at(1).template is<typename value_t::second_type>();
}
else if constexpr (_utils::is_tuple<value_t>) {
return _utils::detect_tuple<string_t, value_t>(
*this,
std::make_index_sequence<std::tuple_size_v<value_t>>());
}
else {
static_assert(!sizeof(value_t), "Unsupported type");
}
@@ -899,21 +796,33 @@ inline basic_object<string_t>& basic_value<string_t>::as_object()
template <typename string_t>
template <typename value_t>
inline value_t basic_value<string_t>::as() const
inline value_t basic_value<string_t>::as() const&
{
if constexpr (std::is_same_v<basic_value<string_t>, value_t>) {
return *this;
}
else if constexpr (_utils::has_from_json_in_member<value_t, string_t>::value) {
else if constexpr (_utils::has_from_json_in_templ_spec<value_t, string_t>::value) {
value_t dst {};
if (!dst.from_json(*this)) {
if (!ext::jsonization<string_t, value_t>().from_json(*this, dst)) {
throw exception("Wrong JSON");
}
return dst;
}
else if constexpr (_utils::has_from_json_in_templ_spec<value_t, string_t>::value) {
else {
return static_cast<value_t>(*this);
}
}
template <typename string_t>
template <typename value_t>
inline value_t basic_value<string_t>::as() &&
{
if constexpr (std::is_same_v<basic_value<string_t>, value_t>) {
return std::move(*this);
}
else if constexpr (_utils::has_move_from_json_in_templ_spec<value_t, string_t>::value) {
value_t dst {};
if (!ext::jsonization<value_t>().from_json(*this, dst)) {
if (!ext::jsonization<string_t, value_t>().move_from_json(std::move(*this), dst)) {
throw exception("Wrong JSON");
}
return dst;

View File

@@ -2,7 +2,6 @@
// IWYU pragma: begin_exports
#include "common/serialization.hpp"
#include "common/types.hpp"
#include "parser/parser.hpp"
#include "reflection/jsonization.hpp"

View File

@@ -1,8 +0,0 @@
#pragma once
// IWYU pragma: begin_exports
#include "common/types.hpp"
#include "parser5/parser5.hpp"
// IWYU pragma: end_exports

View File

@@ -19,6 +19,7 @@ namespace json
// ****************************
template <
bool accept_jsonc = false,
typename string_t = default_string_t,
typename parsing_t = void,
typename accel_traits = _packed_bytes::packed_bytes_trait_max>
@@ -56,6 +57,7 @@ private:
bool skip_string_literal_with_accel();
bool skip_whitespace() noexcept;
bool skip_comment() noexcept;
bool skip_digit();
bool skip_unicode_escape(uint16_t& pair_high, string_t& result);
@@ -74,14 +76,20 @@ auto parse(const parsing_t& content);
template <typename char_t>
auto parse(char_t* content);
template <typename parsing_t>
auto parsec(const parsing_t& content);
template <typename char_t>
auto parsec(char_t* content);
template <
typename istream_t,
typename = std::enable_if_t<
std::is_base_of_v<std::basic_istream<typename istream_t::char_type>, istream_t>>>
auto parse(istream_t& istream, bool check_bom);
auto parse(istream_t& istream, bool check_bom = false, bool with_commets = false);
template <typename ifstream_t = std::ifstream, typename path_t = void>
auto open(const path_t& path, bool check_bom = false);
auto open(const path_t& path, bool check_bom = false, bool with_commets = false);
namespace literals
{
@@ -105,15 +113,17 @@ const basic_value<string_t> invalid_value();
// * parser impl *
// *************************
template <typename string_t, typename parsing_t, typename accel_traits>
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<basic_value<string_t>>
parser<string_t, parsing_t, accel_traits>::parse(const parsing_t& content)
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse(const parsing_t& content)
{
return parser<string_t, parsing_t, accel_traits>(content.cbegin(), content.cend()).parse();
return parser<accept_jsonc, string_t, parsing_t, accel_traits>(content.cbegin(), content.cend())
.parse();
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<basic_value<string_t>> parser<string_t, parsing_t, accel_traits>::parse()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<basic_value<string_t>>
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse()
{
if (!skip_whitespace()) {
return std::nullopt;
@@ -135,8 +145,7 @@ inline std::optional<basic_value<string_t>> parser<string_t, parsing_t, accel_tr
return std::nullopt;
}
// After the parsing is complete, there should be no more content other than
// spaces behind
// After the parsing is complete, there should be no more content other than spaces behind
if (skip_whitespace()) {
return std::nullopt;
}
@@ -144,8 +153,8 @@ inline std::optional<basic_value<string_t>> parser<string_t, parsing_t, accel_tr
return result_value;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_value()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_value()
{
switch (*_cur) {
case 'n':
@@ -176,8 +185,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_va
}
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_null()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_null()
{
for (const auto& ch : _utils::null_string<string_t>()) {
if (_cur != _end && *_cur == ch) {
@@ -191,8 +200,9 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_nu
return basic_value<string_t>();
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_boolean()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t>
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_boolean()
{
switch (*_cur) {
case 't':
@@ -220,8 +230,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_bo
}
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_number()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_number()
{
const auto first = _cur;
if (*_cur == '-') {
@@ -259,8 +269,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_nu
return basic_value<string_t>(basic_value<string_t>::value_type::number, string_t(first, _cur));
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_string()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_string()
{
auto string_opt = parse_stdstring();
if (!string_opt) {
@@ -271,8 +281,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_st
std::move(string_opt).value());
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_array()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_array()
{
if (*_cur == '[') {
++_cur;
@@ -296,6 +306,12 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ar
return invalid_value<string_t>();
}
if constexpr (accept_jsonc) {
if (*_cur == ']') {
break;
}
}
basic_value<string_t> val = parse_value();
if (!val.valid() || !skip_whitespace()) {
@@ -322,8 +338,8 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ar
return basic_array<string_t>(std::move(result));
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_object()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline basic_value<string_t> parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_object()
{
if (*_cur == '{') {
++_cur;
@@ -347,6 +363,12 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ob
return invalid_value<string_t>();
}
if constexpr (accept_jsonc) {
if (*_cur == '}') {
break;
}
}
auto key_opt = parse_stdstring();
if (key_opt && skip_whitespace() && *_cur == ':') {
@@ -389,8 +411,9 @@ inline basic_value<string_t> parser<string_t, parsing_t, accel_traits>::parse_ob
return basic_object<string_t>(std::move(result));
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<string_t> parser<string_t, parsing_t, accel_traits>::parse_stdstring()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline std::optional<string_t>
parser<accept_jsonc, string_t, parsing_t, accel_traits>::parse_stdstring()
{
if (*_cur == '"') {
++_cur;
@@ -477,8 +500,8 @@ inline std::optional<string_t> parser<string_t, parsing_t, accel_traits>::parse_
return std::nullopt;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_unicode_escape(
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_unicode_escape(
uint16_t& pair_high,
string_t& result)
{
@@ -574,8 +597,9 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_unicode_escape(
return true;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_string_literal_with_accel()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool
parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_string_literal_with_accel()
{
if constexpr (sizeof(*_cur) != 1) {
return false;
@@ -602,8 +626,8 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_string_literal_with_
return _cur != _end;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_whitespace() noexcept
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_whitespace() noexcept
{
while (_cur != _end) {
switch (*_cur) {
@@ -613,6 +637,17 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_whitespace() noexcep
case '\n':
++_cur;
break;
case '/':
if constexpr (accept_jsonc) {
if (!skip_comment()) {
return false;
}
// else continue;
}
else {
return false;
}
break;
case '\0':
return false;
default:
@@ -622,8 +657,59 @@ inline bool parser<string_t, parsing_t, accel_traits>::skip_whitespace() noexcep
return false;
}
template <typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<string_t, parsing_t, accel_traits>::skip_digit()
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
bool json::parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_comment() noexcept
{
if (_cur == _end || *_cur != '/') {
return false;
}
if (++_cur == _end) {
return false;
}
enum class comment_type
{
invalid,
line,
block,
} t = comment_type::invalid;
switch (*_cur++) {
case '/':
t = comment_type::line;
break;
case '*':
t = comment_type::block;
break;
default:
return false;
}
while (_cur != _end) {
switch (*_cur++) {
case '\n':
if (t == comment_type::line) {
return true;
}
break;
case '*':
if (t == comment_type::block && _cur != _end && *_cur == '/') {
++_cur;
return true;
}
break;
default:
break;
}
}
// _cur == _end
return t == comment_type::line;
}
template <bool accept_jsonc, typename string_t, typename parsing_t, typename accel_traits>
inline bool parser<accept_jsonc, string_t, parsing_t, accel_traits>::skip_digit()
{
// At least one digit
if (_cur != _end && std::isdigit(*_cur)) {
@@ -653,7 +739,7 @@ template <typename parsing_t>
auto parse(const parsing_t& content)
{
using string_t = std::basic_string<typename parsing_t::value_type>;
return parser<string_t, parsing_t>::parse(content);
return parser<false, string_t, parsing_t>::parse(content);
}
template <typename char_t>
@@ -663,7 +749,7 @@ auto parse(char_t* content)
}
template <typename istream_t, typename _>
auto parse(istream_t& ifs, bool check_bom)
auto parse(istream_t& ifs, bool check_bom, bool with_commets)
{
using string_t = std::basic_string<typename istream_t::char_type>;
@@ -686,11 +772,11 @@ auto parse(istream_t& ifs, bool check_bom)
str.assign(str.begin() + 3, str.end());
}
}
return parse(str);
return with_commets ? parsec(str) : parse(str);
}
template <typename ifstream_t, typename path_t>
auto open(const path_t& filepath, bool check_bom)
auto open(const path_t& filepath, bool check_bom, bool with_commets)
{
using char_t = typename ifstream_t::char_type;
using string_t = std::basic_string<char_t>;
@@ -701,11 +787,24 @@ auto open(const path_t& filepath, bool check_bom)
if (!ifs.is_open()) {
return return_t(std::nullopt);
}
auto opt = parse(ifs, check_bom);
auto opt = parse(ifs, check_bom, with_commets);
ifs.close();
return opt;
}
template <typename parsing_t>
auto parsec(const parsing_t& content)
{
using string_t = std::basic_string<typename parsing_t::value_type>;
return parser<true, string_t, parsing_t>::parse(content);
}
template <typename char_t>
auto parsec(char_t* content)
{
return parsec(std::basic_string_view<std::decay_t<char_t>> { content });
}
namespace literals
{
inline value operator""_json(const char* str, size_t len)

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,656 @@
// IWYU pragma: private, include <meojson/json.hpp>
#pragma once
#include <cstddef>
#include <filesystem>
#include <queue>
#include <tuple>
#include <type_traits>
#include <utility>
#include <variant>
#include "../common/types.hpp"
namespace json::ext
{
template <typename string_t, typename impl_t, typename var_t, size_t len> // (size_t)-1 for no
// restriction
class __jsonization_array
{
public:
json::basic_value<string_t> to_json(const var_t& value) const
{
return static_cast<const impl_t*>(this)->to_json_array(value);
}
bool check_json(const json::basic_value<string_t>& json) const
{
if (!json.is_array()) {
return false;
}
const auto& arr = json.as_array();
if constexpr (len != static_cast<size_t>(-1)) {
if (len != arr.size()) {
return false;
}
}
return static_cast<const impl_t*>(this)->check_json_array(arr);
}
bool from_json(const json::basic_value<string_t>& json, var_t& value) const
{
if (!json.is_array()) {
return false;
}
const auto& arr = json.as_array();
if constexpr (len != static_cast<size_t>(-1)) {
if (len != arr.size()) {
return false;
}
}
return static_cast<const impl_t*>(this)->from_json_array(arr, value);
}
json::basic_value<string_t> move_to_json(var_t value) const
{
return static_cast<const impl_t*>(this)->move_to_json_array(std::move(value));
}
bool move_from_json(json::basic_value<string_t> json, var_t& value) const
{
if (!json.is_array()) {
return false;
}
auto& arr = json.as_array();
if constexpr (len != static_cast<size_t>(-1)) {
if (len != arr.size()) {
return false;
}
}
return static_cast<const impl_t*>(this)->move_from_json_array(std::move(arr), value);
}
};
template <typename string_t, typename impl_t, typename var_t>
class __jsonization_object
{
public:
json::basic_value<string_t> to_json(const var_t& value) const
{
return static_cast<const impl_t*>(this)->to_json_object(value);
}
bool check_json(const json::basic_value<string_t>& json) const
{
if (!json.is_object()) {
return false;
}
const auto& obj = json.as_object();
return static_cast<const impl_t*>(this)->check_json_object(obj);
}
bool from_json(const json::basic_value<string_t>& json, var_t& value) const
{
if (!json.is_object()) {
return false;
}
const auto& obj = json.as_object();
return static_cast<const impl_t*>(this)->from_json_object(obj, value);
}
json::basic_value<string_t> move_to_json(var_t value) const
{
return static_cast<const impl_t*>(this)->move_to_json_object(std::move(value));
}
bool move_from_json(json::basic_value<string_t> json, var_t& value) const
{
if (!json.is_object()) {
return false;
}
auto& obj = json.as_object();
return static_cast<const impl_t*>(this)->move_from_json_object(std::move(obj), value);
}
};
template <typename string_t>
class jsonization<string_t, std::nullptr_t>
{
public:
json::basic_value<string_t> to_json(const std::nullptr_t&) const
{
return json::basic_value<string_t> {};
}
bool check_json(const json::basic_value<string_t>& json) const { return json.is_null(); }
bool from_json(const json::basic_value<string_t>& json, std::nullptr_t&)
{
return check_json(json);
}
};
template <typename string_t>
class jsonization<
string_t,
std::filesystem::path,
std::enable_if_t<
std::is_same_v<string_t, std::filesystem::path::string_type>
|| std::is_same_v<string_t, std::string>>>
{
public:
json::basic_value<string_t> to_json(const std::filesystem::path& path) const
{
if constexpr (std::is_same_v<string_t, std::filesystem::path::string_type>) {
return path.native();
}
else if constexpr (std::is_same_v<string_t, std::string>) {
#if __cplusplus >= 202002L
std::u8string u8str = path.u8string();
return std::string { u8str.begin(), u8str.end() };
#else
return path.u8string();
#endif
}
#if __cplusplus >= 202002L
else if constexpr (std::is_same_v<string_t, std::u8string>) {
return path.u8string();
}
#endif
}
bool check_json(const json::basic_value<string_t>& json) const { return json.is_string(); }
bool from_json(const json::basic_value<string_t>& json, std::filesystem::path& path) const
{
path = json.as_string();
return true;
}
};
template <
typename string_t,
template <typename, size_t> typename arr_t,
typename value_t,
size_t size>
class jsonization<string_t, arr_t<value_t, size>>
: public __jsonization_array<
string_t,
jsonization<string_t, arr_t<value_t, size>>,
arr_t<value_t, size>,
size>
{
public:
json::basic_array<string_t> to_json_array(const arr_t<value_t, size>& value) const
{
json::basic_array<string_t> result;
for (size_t i = 0; i < size; i++) {
result.emplace_back(value.at(i));
}
return result;
}
bool check_json_array(const json::basic_array<string_t>& arr) const
{
return arr.template all<value_t>();
}
bool from_json_array(const json::basic_array<string_t>& arr, arr_t<value_t, size>& value) const
{
if (!check_json_array(arr)) {
return false;
}
for (size_t i = 0; i < size; i++) {
value.at(i) = arr[i].template as<value_t>();
}
return true;
}
json::basic_array<string_t> move_to_json_array(arr_t<value_t, size> value) const
{
json::basic_array<string_t> result;
for (size_t i = 0; i < size; i++) {
result.emplace_back(std::move(value.at(i)));
}
return result;
}
bool move_from_json_array(json::basic_array<string_t> arr, arr_t<value_t, size>& value) const
{
if (!check_json_array(arr)) {
return false;
}
for (size_t i = 0; i < size; i++) {
value.at(i) = std::move(arr[i]).template as<value_t>();
}
return true;
}
};
template <typename string_t, typename collection_t>
class jsonization<string_t, collection_t, std::enable_if_t<_utils::is_collection<collection_t>>>
: public __jsonization_array<
string_t,
jsonization<string_t, collection_t>,
collection_t,
(size_t)-1>
{
public:
json::basic_array<string_t> to_json_array(const collection_t& value) const
{
json::basic_array<string_t> result;
for (const auto& val : value) {
result.emplace_back(val);
}
return result;
}
bool check_json_array(const json::basic_array<string_t>& arr) const
{
return arr.template all<typename collection_t::value_type>();
}
bool from_json_array(const json::basic_array<string_t>& arr, collection_t& value) const
{
if (!check_json_array(arr)) {
return false;
}
value = {};
for (const auto& val : arr) {
if constexpr (_utils::has_emplace_back<collection_t>::value) {
value.emplace_back(val.template as<typename collection_t::value_type>());
}
else {
value.emplace(val.template as<typename collection_t::value_type>());
}
}
return true;
}
json::basic_array<string_t> move_to_json_array(collection_t value) const
{
json::basic_array<string_t> result;
for (auto& val : value) {
result.emplace_back(std::move(val));
}
return result;
}
bool move_from_json_array(json::basic_array<string_t> arr, collection_t& value) const
{
if (!check_json_array(arr)) {
return false;
}
for (auto& val : arr) {
if constexpr (_utils::has_emplace_back<collection_t>::value) {
value.emplace_back(std::move(val).template as<typename collection_t::value_type>());
}
else {
value.emplace(std::move(val).template as<typename collection_t::value_type>());
}
}
return true;
}
};
template <typename string_t, template <typename...> typename tuple_t, typename... args_t>
class jsonization<
string_t,
tuple_t<args_t...>,
std::enable_if_t<_utils::is_tuple_like<tuple_t<args_t...>>>>
: public __jsonization_array<
string_t,
jsonization<string_t, tuple_t<args_t...>>,
tuple_t<args_t...>,
std::tuple_size_v<tuple_t<args_t...>>>
{
public:
constexpr static size_t tuple_size = std::tuple_size_v<tuple_t<args_t...>>;
json::basic_array<string_t> to_json_array(const tuple_t<args_t...>& value) const
{
json::basic_array<string_t> result;
to_json_impl(result, value, std::make_index_sequence<tuple_size>());
return result;
}
template <std::size_t... Is>
void to_json_impl(
json::basic_array<string_t>& arr,
const tuple_t<args_t...>& t,
std::index_sequence<Is...>) const
{
using std::get;
(arr.emplace_back(get<Is>(t)), ...);
}
bool check_json_array(const json::basic_array<string_t>& arr) const
{
return check_json_impl(arr, std::make_index_sequence<tuple_size>());
}
template <std::size_t... Is>
bool check_json_impl(const json::basic_array<string_t>& arr, std::index_sequence<Is...>) const
{
return (arr[Is].template is<std::tuple_element_t<Is, tuple_t<args_t...>>>() && ...);
}
bool from_json_array(const json::basic_array<string_t>& arr, tuple_t<args_t...>& value) const
{
if (!check_json_array(arr)) {
return false;
}
from_json_impl(arr, value, std::make_index_sequence<tuple_size>());
return true;
}
template <std::size_t... Is>
void from_json_impl(
const json::basic_array<string_t>& arr,
tuple_t<args_t...>& t,
std::index_sequence<Is...>) const
{
using std::get;
((get<Is>(t) = arr[Is].template as<std::tuple_element_t<Is, tuple_t<args_t...>>>()), ...);
}
json::basic_array<string_t> move_to_json_array(tuple_t<args_t...> value) const
{
json::basic_array<string_t> result;
move_to_json_impl(result, std::move(value), std::make_index_sequence<tuple_size>());
return result;
}
template <std::size_t... Is>
void move_to_json_impl(
json::basic_array<string_t>& arr,
tuple_t<args_t...> t,
std::index_sequence<Is...>) const
{
using std::get;
(arr.emplace_back(std::move(get<Is>(t))), ...);
}
bool move_from_json_array(json::basic_array<string_t> arr, tuple_t<args_t...>& value) const
{
if (!check_json_array(arr)) {
return false;
}
move_from_json_impl(arr, value, std::make_index_sequence<tuple_size>());
return true;
}
template <std::size_t... Is>
void move_from_json_impl(
json::basic_array<string_t> arr,
tuple_t<args_t...>& t,
std::index_sequence<Is...>) const
{
using std::get;
((get<Is>(t) =
std::move(arr[Is]).template as<std::tuple_element_t<Is, tuple_t<args_t...>>>()),
...);
}
};
template <typename string_t, typename map_t>
class jsonization<
string_t,
map_t,
std::enable_if_t<_utils::is_map<map_t> && std::is_same_v<typename map_t::key_type, string_t>>>
: public __jsonization_object<string_t, jsonization<string_t, map_t>, map_t>
{
public:
json::basic_object<string_t> to_json_object(const map_t& value) const
{
json::basic_object<string_t> result;
for (const auto& [key, val] : value) {
result.emplace(key, val);
}
return result;
}
bool check_json_object(const json::basic_object<string_t>& arr) const
{
for (const auto& [key, val] : arr) {
if (!val.template is<typename map_t::mapped_type>()) {
return false;
}
}
return true;
}
bool from_json_object(const json::basic_object<string_t>& arr, map_t& value) const
{
// TODO: 是不是直接from不check了算了
if (!check_json_object(arr)) {
return false;
}
value = {};
for (const auto& [key, val] : arr) {
value.emplace(key, val.template as<typename map_t::mapped_type>());
}
return true;
}
json::basic_object<string_t> move_to_json_object(map_t value) const
{
json::basic_object<string_t> result;
for (auto& [key, val] : value) {
result.emplace(key, std::move(val));
}
return result;
}
bool move_from_json_object(json::basic_object<string_t> arr, map_t& value) const
{
// TODO: 是不是直接from不check了算了
if (!check_json_object(arr)) {
return false;
}
value = {};
for (auto& [key, val] : arr) {
value.emplace(key, std::move(val).template as<typename map_t::mapped_type>());
}
return true;
}
};
template <typename string_t, typename... args_t>
class jsonization<string_t, std::variant<args_t...>>
{
public:
using variant_t = std::variant<args_t...>;
constexpr static size_t variant_size = std::variant_size_v<variant_t>;
json::basic_value<string_t> to_json(const variant_t& value) const
{
json::basic_value<string_t> result;
to_json_impl(result, value, std::make_index_sequence<variant_size>());
return result;
}
template <std::size_t... Is>
void to_json_impl(
json::basic_value<string_t>& val,
const variant_t& t,
std::index_sequence<Is...>) const
{
using std::get;
std::ignore = ((t.index() == Is ? (val = get<Is>(t), true) : false) || ...);
}
bool check_json(const json::basic_value<string_t>& json) const
{
return check_json_impl(json, std::make_index_sequence<variant_size>());
}
template <std::size_t... Is>
bool check_json_impl(const json::basic_value<string_t>& val, std::index_sequence<Is...>) const
{
return (val.template is<std::variant_alternative_t<Is, variant_t>>() || ...);
}
bool from_json(const json::basic_value<string_t>& json, variant_t& value) const
{
if (!check_json_impl(json, std::make_index_sequence<variant_size>())) {
return false;
}
from_json_impl(json, value, std::make_index_sequence<variant_size>());
return true;
}
template <std::size_t... Is>
void from_json_impl(
const json::basic_value<string_t>& json,
variant_t& t,
std::index_sequence<Is...>) const
{
std::ignore =
((json.template is<std::variant_alternative_t<Is, variant_t>>()
? (t = json.template as<std::variant_alternative_t<Is, variant_t>>(), true)
: false)
|| ...);
}
json::basic_value<string_t> move_to_json(variant_t value) const
{
json::basic_value<string_t> result;
move_to_json_impl(result, std::move(value), std::make_index_sequence<variant_size>());
return result;
}
template <std::size_t... Is>
void
move_to_json_impl(json::basic_value<string_t>& val, variant_t t, std::index_sequence<Is...>)
const
{
using std::get;
std::ignore = ((t.index() == Is ? (val = std::move(get<Is>(t)), true) : false) || ...);
}
bool move_from_json(json::basic_value<string_t> json, variant_t& value) const
{
if (!check_json_impl(json, std::make_index_sequence<variant_size>())) {
return false;
}
move_from_json_impl(std::move(json), value, std::make_index_sequence<variant_size>());
return true;
}
template <std::size_t... Is>
void move_from_json_impl(
json::basic_value<string_t> json,
variant_t& t,
std::index_sequence<Is...>) const
{
std::ignore =
((json.template is<std::variant_alternative_t<Is, variant_t>>()
? (t = std::move(json).template as<std::variant_alternative_t<Is, variant_t>>(),
true)
: false)
|| ...);
}
};
// TODO: check if has move_xxx in member
template <typename string_t, typename var_t>
class jsonization<
string_t,
var_t,
std::enable_if_t<
_utils::has_to_json_in_member<var_t>::value
&& _utils::has_check_json_in_member<var_t, string_t>::value
&& _utils::has_from_json_in_member<var_t, string_t>::value>>
{
public:
json::basic_value<string_t> to_json(const var_t& value) const { return value.to_json(); }
bool check_json(const json::basic_value<string_t>& json) const
{
var_t value;
return value.check_json(json);
}
bool from_json(const json::basic_value<string_t>& json, var_t& value) const
{
return value.from_json(json);
}
json::basic_value<string_t> move_to_json(var_t value) const { return to_json(value); }
bool move_from_json(json::basic_value<string_t> json, var_t& value) const
{
return from_json(json, value);
}
};
// really need this fucking queue?
template <typename string_t, typename value_t>
class jsonization<string_t, std::queue<value_t>>
: public __jsonization_array<
string_t,
jsonization<string_t, std::queue<value_t>>,
std::queue<value_t>,
(size_t)-1>
{
public:
json::basic_array<string_t> to_json_array(const std::queue<value_t>& value) const
{
return move_to_json_array(value);
}
bool check_json_array(const json::basic_array<string_t>& arr) const
{
return arr.template all<value_t>();
}
bool from_json_array(const json::basic_array<string_t>& arr, std::queue<value_t>& value) const
{
if (!check_json_array(arr)) {
return false;
}
value = {};
for (const auto& val : arr) {
value.emplace(val.template as<value_t>());
}
return true;
}
json::basic_array<string_t> move_to_json_array(std::queue<value_t> value) const
{
json::basic_array<string_t> result;
while (!value.empty()) {
result.emplace_back(std::move(value.front()));
value.pop();
}
return result;
}
bool move_from_json_array(json::basic_array<string_t> arr, std::queue<value_t>& value) const
{
if (!check_json_array(arr)) {
return false;
}
for (auto& val : arr) {
value.emplace(std::move(val).template as<value_t>());
}
return true;
}
};
}

View File

@@ -4,123 +4,295 @@
#include <string>
#include <type_traits>
#include <utility>
#include "../common/types.hpp"
#include "extensions.hpp"
namespace json::_jsonization_helper
{
template <typename value_t>
struct is_optional_t : public std::false_type
{
};
template <typename value_t>
struct is_optional_t<std::optional<value_t>> : public std::true_type
{
};
template <typename value_t>
inline constexpr bool is_optional_v = is_optional_t<value_t>::value;
struct next_is_optional_t
{
};
struct next_override_key_t
{
const char* key;
};
struct next_state_t
{
bool is_optional = false;
const char* override_key = nullptr;
};
struct va_arg_end
{
};
template <typename tag_t>
struct is_tag_t : public std::false_type
{
};
template <>
struct is_tag_t<next_is_optional_t> : public std::true_type
{
};
template <>
struct is_tag_t<next_override_key_t> : public std::true_type
{
};
struct dumper
{
template <typename var_t, typename... rest_t>
json::value _to_json(const char* key, const var_t& var, rest_t&&... rest) const
void _to_json(json::object&, va_arg_end) const {}
template <typename... rest_t>
void _to_json(json::object& result, const char* key, rest_t&&... rest) const
{
json::value result = _to_json(std::forward<rest_t>(rest)...);
result.emplace(key, var);
return result;
_to_json(result, next_state_t {}, key, std::forward<rest_t>(rest)...);
}
template <
typename var_t,
typename... rest_t,
typename _ = std::enable_if_t<!is_tag_t<var_t>::value, void>>
void _to_json(
json::object& result,
next_state_t state,
const char* key,
const var_t& var,
rest_t&&... rest) const
{
if (state.override_key) {
key = state.override_key;
}
if constexpr (is_optional_v<var_t>) {
if (!state.is_optional) {
throw exception("std::optional must be used with MEO_OPT");
}
if (var.has_value()) {
result.emplace(key, var.value());
}
}
else {
result.emplace(key, var);
}
_to_json(result, std::forward<rest_t>(rest)...);
}
template <typename... rest_t>
json::value _to_json(const char*, next_is_optional_t, rest_t&&... rest) const
void _to_json(
json::object& result,
next_state_t state,
const char*,
next_is_optional_t,
rest_t&&... rest) const
{
return _to_json(std::forward<rest_t>(rest)...);
state.is_optional = true;
_to_json(result, state, std::forward<rest_t>(rest)...);
}
json::value _to_json(va_arg_end) const { return {}; }
template <typename... rest_t>
void _to_json(
json::object& result,
next_state_t state,
const char*,
next_override_key_t override_key,
rest_t&&... rest) const
{
state.override_key = override_key.key;
_to_json(result, state, std::forward<rest_t>(rest)...);
}
};
struct checker
{
template <typename var_t, typename... rest_t>
bool _check_json(const json::value&, std::string&, va_arg_end) const { return true; }
template <typename... rest_t>
bool _check_json(
const json::value& in,
std::string& error_key,
const char* key,
rest_t&&... rest) const
{
return _check_json(in, error_key, next_state_t {}, key, std::forward<rest_t>(rest)...);
}
template <
typename var_t,
typename... rest_t,
typename _ = std::enable_if_t<!is_tag_t<var_t>::value, void>>
bool _check_json(
const json::value& in,
std::string& error_key,
next_state_t state,
const char* key,
const var_t&,
rest_t&&... rest) const
{
if (state.override_key) {
key = state.override_key;
}
auto opt = in.find(key);
if (!opt || !opt->is<var_t>()) {
error_key = key;
return false;
if constexpr (is_optional_v<var_t>) {
if (!state.is_optional) {
throw exception("std::optional must be used with MEO_OPT");
}
if (opt && !opt->is<typename var_t::value_type>()) {
error_key = key;
return false;
}
}
else {
if (state.is_optional) {
if (opt && !opt->is<var_t>()) {
error_key = key;
return false;
} // is_optional, ignore key not found
}
else if (!opt || !opt->is<var_t>()) {
error_key = key;
return false;
}
}
return _check_json(in, error_key, std::forward<rest_t>(rest)...);
}
template <typename var_t, typename... rest_t>
template <typename... rest_t>
bool _check_json(
const json::value& in,
std::string& error_key,
next_state_t state,
const char*,
next_is_optional_t,
const char* key,
const var_t&,
rest_t&&... rest) const
{
auto opt = in.find(key);
if (opt) {
if (!opt->is<var_t>()) {
error_key = key;
return false;
}
} // next_is_optional_t, ignore key not found
return _check_json(in, error_key, std::forward<rest_t>(rest)...);
state.is_optional = true;
return _check_json(in, error_key, state, std::forward<rest_t>(rest)...);
}
bool _check_json(const json::value&, std::string&, va_arg_end) const { return true; }
template <typename... rest_t>
bool _check_json(
const json::value& in,
std::string& error_key,
next_state_t state,
const char*,
next_override_key_t override_key,
rest_t&&... rest) const
{
state.override_key = override_key.key;
return _check_json(in, error_key, state, std::forward<rest_t>(rest)...);
}
};
struct loader
{
template <typename var_t, typename... rest_t>
bool _from_json(
const json::value& in,
std::string& error_key,
const char* key,
var_t& var,
rest_t&&... rest) const
{
auto opt = in.find(key);
if (!opt || !opt->is<var_t>()) {
error_key = key;
return false;
}
var = std::move(opt)->as<var_t>();
bool _from_json(const json::value&, std::string&, va_arg_end) const { return true; }
return _from_json(in, error_key, std::forward<rest_t>(rest)...);
template <typename... rest_t>
bool
_from_json(const json::value& in, std::string& error_key, const char* key, rest_t&&... rest)
{
return _from_json(in, error_key, next_state_t {}, key, std::forward<rest_t>(rest)...);
}
template <typename var_t, typename... rest_t>
template <
typename var_t,
typename... rest_t,
typename _ = std::enable_if_t<!is_tag_t<var_t>::value, void>>
bool _from_json(
const json::value& in,
std::string& error_key,
const char*,
next_is_optional_t,
next_state_t state,
const char* key,
var_t& var,
rest_t&&... rest) const
rest_t&&... rest)
{
if (state.override_key) {
key = state.override_key;
}
auto opt = in.find(key);
if (opt) {
if (!opt->is<var_t>()) {
if constexpr (is_optional_v<var_t>) {
if (!state.is_optional) {
throw exception("std::optional must be used with MEO_OPT");
}
if (opt && !opt->is<typename var_t::value_type>()) {
error_key = key;
return false;
}
var = std::move(opt)->as<var_t>();
} // next_is_optional_t, ignore key not found
if (opt) {
var = std::move(opt)->as<typename var_t::value_type>();
}
else {
var = std::nullopt;
}
}
else {
if (state.is_optional) {
if (opt && !opt->is<var_t>()) {
error_key = key;
return false;
} // is_optional, ignore key not found
}
else if (!opt || !opt->is<var_t>()) {
error_key = key;
return false;
}
if (opt) {
var = std::move(opt)->as<var_t>();
}
}
return _from_json(in, error_key, std::forward<rest_t>(rest)...);
}
bool _from_json(const json::value&, std::string&, va_arg_end) const { return true; }
template <typename... rest_t>
bool _from_json(
const json::value& in,
std::string& error_key,
next_state_t state,
const char*,
next_is_optional_t,
rest_t&&... rest)
{
state.is_optional = true;
return _from_json(in, error_key, state, std::forward<rest_t>(rest)...);
}
template <typename... rest_t>
bool _from_json(
const json::value& in,
std::string& error_key,
next_state_t state,
const char*,
next_override_key_t override_key,
rest_t&&... rest)
{
state.override_key = override_key.key;
return _from_json(in, error_key, state, std::forward<rest_t>(rest)...);
}
};
} // namespace json::_jsonization_helper
@@ -141,8 +313,7 @@ namespace json::_private_macro
#define _MEOJSON_EXPAND(x) x
#define _MEOJSON_FOR_EACH_0(pred, ...)
#define _MEOJSON_FOR_EACH_1(pred, x, ...) pred(x)
#define _MEOJSON_FOR_EACH_1(pred, x) pred(x)
#define _MEOJSON_FOR_EACH_2(pred, x, ...) \
pred(x) _MEOJSON_EXPAND(_MEOJSON_FOR_EACH_1(pred, __VA_ARGS__))
#define _MEOJSON_FOR_EACH_3(pred, x, ...) \
@@ -422,9 +593,12 @@ namespace json::_private_macro
#define MEO_TOJSON(...) \
json::value to_json() const \
{ \
return json::_jsonization_helper::dumper()._to_json( \
json::object result; \
json::_jsonization_helper::dumper()._to_json( \
result, \
_MEOJSON_EXPAND(_MEOJSON_FOR_EACH(_MEOJSON_KEY_VALUE, __VA_ARGS__)) \
json::_jsonization_helper::va_arg_end {}); \
return result; \
}
#define MEO_CHECKJSON(...) \
@@ -467,6 +641,7 @@ namespace json::_private_macro
_MEOJSON_EXPAND(MEO_FROMJSON(__VA_ARGS__))
#define MEO_OPT json::_jsonization_helper::next_is_optional_t {},
#define MEO_KEY(key) json::_jsonization_helper::next_override_key_t { key },
#if defined(__clang__)
#pragma clang diagnostic pop // -Wgnu-zero-variadic-macro-arguments

View File

@@ -1,25 +1,49 @@
## v5.17.1
### 主要更新 | Highlight
* 修复 wpfgui 更新后不重启 (但得下个版本才能生效x)
* 海外版新基建 UI 适配 | Global infrastructure adaptation
## v5.26.0-beta.1
### 新增 | New
* Global infrastructure adaptation @Manicsteiner @HX3N @Constrat
* 远程控制协议增加“轮询间隔”参数 @ABA2396
* Global SSS#7 + EN buffchoose @Constrat @HX3N
* EN base no beta (#12901) @Constrat
### 改进 | Improved
* 自动战斗编队固定优先编入所有干员, 且按照作业顺序 @status102
* 次生预案十里坡剑神 @ABA2396
* 设置指引添加更新设置 @ABA2396
* 设置指引添加性能设置 @ABA2396
### 修复 | Fix
* 更新后不重启(但得下个版本才能生效x) @ABA2396 @status102
* 文档首页语言选择按钮的宽度定义方式 (#14199) @lucienshawls
* 傀影肉鸽无法识别四结局 (#14193) @Saratoga-Official
* GamePassSkip2 识别到错误的跳过 @Saratoga-Official
* 萨米肉鸽不期而遇避战 @Saratoga-Official
* Google Play Games Developer shutdown @Constrat
* manual set resource version time @MistEO
* prettier @Constrat
### 文档 | Docs
* update connection doc to reflect latest change. (#12689) @ksharperd
* 补充vsc插件繁中文档 @Rbqwow
* 修复文档站 readme 盾换行 @Rbqwow
* 调整文档站的标题和尾注文本显示 (#14213) @lucienshawls
* 更新网页开发相关文档 (#14167) @Rbqwow @Manicsteiner
* 完善任务流程协议文档 (#13232) @zzyyyl
* 回调消息协议文档视觉更新 @SherkeyXD
* 集成文档视觉更新 @SherkeyXD
* 文档启用 b 站视频播放功能 @SherkeyXD
* 文档添加字段容器功能 @SherkeyXD
* 文档添加功能 @SherkeyXD
* 更新文档编写指南 @SherkeyXD
* 标题 MAA 统一采用缩写 @MistEO
* 再次调整文档站标题( @MistEO
* 调整文档站标题 @MistEO
* Update JP(#14227) @wallsman
* markdown pre-commit @zzyyyl
* add extension's evaluating feature @neko-para
* add telegram icon @SherkeyXD
### 其他 | Other
* 统一显示效果 @ABA2396
* 水月萨米肉鸽不期而遇避战 @Saratoga-Official
* 重写完成后动作仅一次的 ui 字符串 (#14196) @Rbqwow
* 贸易站没其他好用的人再用锏 @ABA2396
* YostarJP Sarkaz roguelike StageEncounter (#14223) @Manicsteiner
* YostarJP sami roguelike 720p (#14210) @Manicsteiner
* YostarJP Mizuki StageEncounter (#14206) @Manicsteiner
* devcontainer.json (#14169) @Rbqwow @lucienshawls

View File

@@ -1,195 +1,61 @@
cmake_minimum_required(VERSION 3.21)
project(MaaAssistantArknights)
cmake_minimum_required(VERSION 3.28)
project(MAA)
if (NOT CMAKE_BUILD_TYPE)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE)
endif ()
endif()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/modules")
option(BUILD_TEST "build a demo" OFF)
option(BUILD_WPF_GUI "build MaaWpfGui" ${WIN32})
option(BUILD_DEBUG_DEMO "build debug demo" OFF)
option(BUILD_XCFRAMEWORK "build xcframework for macOS app" OFF)
option(BUILD_UNIVERSAL "build both arm64 and x86_64 on macOS" OFF)
option(BUILD_SMOKE_TEST "build smoke_test" OFF)
option(INSTALL_PYTHON "install python ffi" OFF)
option(INSTALL_RESOURCE "install resource" OFF)
option(INSTALL_DEVEL "install development files" OFF)
option(INSTALL_FLATTEN "do not use bin lib include directory" ON)
option(INSTALL_THIRD_LIBS "install third party libraries" ON)
option(USE_MAADEPS "use third-party libraries built by MaaDeps" ON)
option(USE_RANGE_V3 "use range-v3" OFF)
option(WITH_EMULATOR_EXTRAS "build with emulator extras" ${WIN32})
option(WITH_THRIFT "build with thrift" OFF)
option(WITH_ASST_DEBUG "build with ASST_DEBUG defined" OFF)
option(WITH_HASH_VERSION "generate version from git hash" OFF)
include(${PROJECT_SOURCE_DIR}/MaaDeps/maadeps.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/config.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/thrift-gen.cmake)
if(USE_MAADEPS)
include(${PROJECT_SOURCE_DIR}/MaaDeps/maadeps.cmake)
endif()
add_library(header_only_libraries INTERFACE)
target_include_directories(header_only_libraries INTERFACE 3rdparty/include 3rdparty/EmulatorExtras)
file(GLOB_RECURSE maa_src src/MaaCore/*.cpp)
add_library(MaaCore SHARED ${maa_src})
if (MSVC)
target_compile_options(MaaCore PRIVATE "/utf-8")
target_compile_options(MaaCore PRIVATE "/MP")
target_compile_options(MaaCore PRIVATE "/W4;/WX")
target_compile_options(MaaCore PRIVATE "/wd4127") # conditional expression is constant
target_compile_options(MaaCore PRIVATE "/Wv:19.35.32217") # disable warning introduced after this version
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
else ()
target_compile_options(MaaCore PRIVATE "-Wall;-Wextra;-Wpedantic")
# LLVM clang 16 will failed with `error: no member named 'join' in namespace 'std::ranges::views'`, but Apple clang 16 won't
# value defined in https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html
if ((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND (NOT CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17))
target_compile_options(MaaCore PRIVATE "-fexperimental-library")
endif ()
endif ()
if (WIN32)
#注意相比VS版本缺少了 -D_CONSOLE -D_WINDLL 两项
target_compile_definitions(MaaCore PRIVATE ASST_DLL_EXPORTS _UNICODE UNICODE)
endif ()
target_include_directories(MaaCore PUBLIC include PRIVATE src/MaaCore)
set(MaaCore_PUBLIC_HEADERS include/AsstCaller.h include/AsstPort.h)
target_sources(MaaCore PUBLIC ${MaaCore_PUBLIC_HEADERS})
set_target_properties(MaaCore PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
PUBLIC_HEADER "${MaaCore_PUBLIC_HEADERS}"
)
include(${PROJECT_SOURCE_DIR}/cmake/version.cmake)
if(APPLE)
set_target_properties(MaaCore PROPERTIES INSTALL_RPATH "@loader_path/")
elseif(UNIX)
set_target_properties(MaaCore PROPERTIES INSTALL_RPATH "$ORIGIN/")
endif()
if (BUILD_TEST)
add_executable(test src/Cpp/main.cpp)
set_target_properties(test PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
)
target_link_libraries(test MaaCore)
endif (BUILD_TEST)
find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs videoio features2d)
find_package(OpenCV QUIET COMPONENTS xfeatures2d)
find_package(ZLIB REQUIRED)
find_package(cpr CONFIG REQUIRED)
list(APPEND maa_libs ${OpenCV_LIBS} ZLIB::ZLIB cpr::cpr header_only_libraries)
if(USE_MAADEPS)
find_package(asio REQUIRED)
list(APPEND maa_libs asio::asio)
endif()
find_package(onnxruntime CONFIG REQUIRED) # provided by onnxruntime>=1.16
list(APPEND maa_libs onnxruntime::onnxruntime)
if(DEFINED fastdeploy_SOURCE_DIR)
# TODO: FetchContent github.com/MaaAssistantArknights/FastDeploy
if(NOT DEFINED fastdeploy_BINARY_DIR)
set(fastdeploy_BINARY_DIR ${CMAKE_BINARY_DIR}/fastdeploy)
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
add_subdirectory(${fastdeploy_SOURCE_DIR} ${fastdeploy_BINARY_DIR} EXCLUDE_FROM_ALL SYSTEM)
if(NOT DEFINED fastdeploy_INCLUDE_DIRS)
set(fastdeploy_INCLUDE_DIRS ${fastdeploy_SOURCE_DIR})
endif()
target_include_directories(MaaCore SYSTEM PRIVATE ${fastdeploy_INCLUDE_DIRS})
get_target_property(fastdeploy_type fastdeploy_ppocr TYPE)
if(fastdeploy_type STREQUAL "SHARED_LIBRARY")
install(TARGETS fastdeploy_ppocr)
endif()
else()
find_package(fastdeploy_ppocr REQUIRED)
endif()
list(APPEND maa_libs fastdeploy_ppocr)
target_link_libraries(MaaCore ${maa_libs})
if(WITH_EMULATOR_EXTRAS AND NOT EXISTS ${PROJECT_SOURCE_DIR}/3rdparty/EmulatorExtras/Mumu)
message(WARNING "EmulatorExtras not found, please run `git submodule update --init 3rdparty/EmulatorExtras`")
set(WITH_EMULATOR_EXTRAS OFF)
endif()
target_compile_definitions(MaaCore PRIVATE ASST_WITH_EMULATOR_EXTRAS=$<BOOL:${WITH_EMULATOR_EXTRAS}>)
if(WITH_THRIFT)
find_package(Thrift CONFIG REQUIRED)
add_subdirectory(src/MaaThriftController)
target_link_libraries(MaaCore MaaThriftController)
endif(WITH_THRIFT)
if (WITH_ASST_DEBUG)
target_compile_definitions(MaaCore PRIVATE ASST_DEBUG)
endif ()
if(WIN32)
target_link_libraries(MaaCore ws2_32)
endif()
if (USE_RANGE_V3)
target_compile_definitions(MaaCore PRIVATE ASST_USE_RANGES_RANGE_V3)
find_package(range-v3 REQUIRED)
target_link_libraries(MaaCore range-v3::range-v3)
endif ()
if(INSTALL_DEVEL)
set(MaaCore_install_extra_args PUBLIC_HEADER DESTINATION devel/include ARCHIVE DESTINATION devel/lib)
include(${PROJECT_SOURCE_DIR}/cmake/macos.cmake)
endif()
if(INSTALL_FLATTEN)
set(MaaCore_install_flatten_args RUNTIME DESTINATION . LIBRARY DESTINATION . PUBLIC_HEADER DESTINATION .)
endif()
install(TARGETS MaaCore ${MaaCore_install_flatten_args} ${MaaCore_install_extra_args})
add_library(HeaderOnlyLibraries INTERFACE)
target_include_directories(HeaderOnlyLibraries INTERFACE 3rdparty/include)
if(INSTALL_THIRD_LIBS AND USE_MAADEPS)
maadeps_install()
find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs)
find_package(Boost REQUIRED CONFIG COMPONENTS system)
find_package(ZLIB REQUIRED)
find_package(fastdeploy_ppocr REQUIRED)
find_package(ONNXRuntime REQUIRED)
add_subdirectory(src/MaaCore)
if(BUILD_WPF_GUI)
include_external_msproject(MaaWpfGui ${PROJECT_SOURCE_DIR}/src/MaaWpfGui/MaaWpfGui.csproj)
add_dependencies(MaaWpfGui MaaCore)
endif()
if (INSTALL_PYTHON)
if(INSTALL_PYTHON)
install(DIRECTORY src/Python DESTINATION .)
endif (INSTALL_PYTHON)
if (INSTALL_RESOURCE)
endif()
if(INSTALL_RESOURCE)
install(DIRECTORY resource DESTINATION .)
endif (INSTALL_RESOURCE)
endif()
if (APPLE)
include(${PROJECT_SOURCE_DIR}/cmake/macos.cmake)
endif (APPLE)
# define MAA_VERSION from git
if (NOT DEFINED MAA_VERSION)
find_package(Git)
endif ()
if (NOT DEFINED MAA_VERSION AND GIT_FOUND)
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
ERROR_VARIABLE err
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (result EQUAL 0)
set(MAA_VERSION "${output}")
else ()
message(WARNING "git rev-parse returning ${result}, output:\n${err}")
endif ()
endif ()
if (NOT MAA_VERSION)
set(MAA_VERSION "DEBUG VERSION")
endif ()
message(STATUS "MAA_VERSION=${MAA_VERSION}")
add_compile_definitions(MAA_VERSION="${MAA_VERSION}")
if(BUILD_DEBUG_DEMO OR BUILD_SMOKE_TEST)
add_subdirectory(src/Cpp)
endif()

View File

@@ -1,15 +0,0 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/UserDictionary/Words/=Arknights/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bilibili/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Infrast/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=oper/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=opers/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pallas/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pormpt/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Rougelike/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=templ/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=thres/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Todays/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=txwy/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=vuvm/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=XYAZ/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

106
MAA.sln
View File

@@ -1,106 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32616.157
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MaaWpfGui", "src\MaaWpfGui\MaaWpfGui.csproj", "{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}"
ProjectSection(ProjectDependencies) = postProject
{362D1E30-F5AE-4279-9985-65C27B3BA300} = {362D1E30-F5AE-4279-9985-65C27B3BA300}
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC} = {F860C043-4D86-41B6-A97E-4A75C9A6C4EC}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MaaCore", "src\MaaCore\MaaCore.vcxproj", "{362D1E30-F5AE-4279-9985-65C27B3BA300}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MaaThriftController", "src\MaaThriftController\MaaThriftController.vcxproj", "{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{11F02235-5785-408B-9651-8A4B41FF36F4}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SyncRes", "src\SyncRes\SyncRes.csproj", "{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Sample", "src\Cpp\MaaSample.vcxproj", "{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}"
ProjectSection(ProjectDependencies) = postProject
{362D1E30-F5AE-4279-9985-65C27B3BA300} = {362D1E30-F5AE-4279-9985-65C27B3BA300}
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC} = {F860C043-4D86-41B6-A97E-4A75C9A6C4EC}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
RelWithDebInfo|x64 = RelWithDebInfo|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Debug|ARM64.ActiveCfg = Debug|ARM64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Debug|ARM64.Build.0 = Debug|ARM64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Debug|x64.ActiveCfg = Debug|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Debug|x64.Build.0 = Debug|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|ARM64.ActiveCfg = Release|ARM64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|ARM64.Build.0 = Release|ARM64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.ActiveCfg = Release|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.Release|x64.Build.0 = Release|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{FFDC8F49-8EAF-45BE-B0A8-7EF0DB9875A2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Debug|ARM64.ActiveCfg = Debug|ARM64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Debug|ARM64.Build.0 = Debug|ARM64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Debug|x64.ActiveCfg = Debug|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Debug|x64.Build.0 = Debug|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|ARM64.ActiveCfg = Release|ARM64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|ARM64.Build.0 = Release|ARM64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.ActiveCfg = Release|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.Release|x64.Build.0 = Release|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{362D1E30-F5AE-4279-9985-65C27B3BA300}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Debug|ARM64.ActiveCfg = Debug|ARM64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Debug|ARM64.Build.0 = Debug|ARM64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Debug|x64.ActiveCfg = Debug|x64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Debug|x64.Build.0 = Debug|x64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Release|ARM64.ActiveCfg = Release|ARM64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Release|ARM64.Build.0 = Release|ARM64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Release|x64.ActiveCfg = Release|x64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.Release|x64.Build.0 = Release|x64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{8238EDB1-19BF-4E3B-AF5B-016120D59D7B}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Debug|ARM64.ActiveCfg = Debug|ARM64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Debug|ARM64.Build.0 = Debug|ARM64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Debug|x64.ActiveCfg = Debug|x64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Debug|x64.Build.0 = Debug|x64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Release|ARM64.ActiveCfg = Release|ARM64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Release|ARM64.Build.0 = Release|ARM64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Release|x64.ActiveCfg = Release|x64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.Release|x64.Build.0 = Release|x64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{F860C043-4D86-41B6-A97E-4A75C9A6C4EC}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Debug|ARM64.ActiveCfg = Debug|ARM64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Debug|ARM64.Build.0 = Debug|ARM64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Debug|x64.ActiveCfg = Debug|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Debug|x64.Build.0 = Debug|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|ARM64.ActiveCfg = Release|ARM64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|ARM64.Build.0 = Release|ARM64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.ActiveCfg = Release|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.Release|x64.Build.0 = Release|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{63B4F1A2-291C-4C85-91E1-A1F6DAE30D64}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4F2C0E4B-4FE9-47C6-A878-6BD2FAD8B9B2}
EndGlobalSection
EndGlobal

View File

@@ -1,170 +0,0 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EN/@EntryIndexedValue">EN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=KR/@EntryIndexedValue">KR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=JP/@EntryIndexedValue">JP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GUI/@EntryIndexedValue">GUI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SWMINIMIZE/@EntryIndexedValue">SWMINIMIZE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=AP/@EntryIndexedValue">AP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=AP_002D/@EntryIndexedValue">AP-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=CA/@EntryIndexedValue">CA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=CA_002D/@EntryIndexedValue">CA-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=CE/@EntryIndexedValue">CE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=CE_002D/@EntryIndexedValue">CE-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=EN/@EntryIndexedValue">EN</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=IS/@EntryIndexedValue">IS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=JP/@EntryIndexedValue">JP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=KR/@EntryIndexedValue">KR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=LD/@EntryIndexedValue">LD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=LS/@EntryIndexedValue">LS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=LS_002D/@EntryIndexedValue">LS-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DA/@EntryIndexedValue">PR-A</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DA_002D/@EntryIndexedValue">PR-A-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DB/@EntryIndexedValue">PR-B</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DB_002D/@EntryIndexedValue">PR-B-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DC/@EntryIndexedValue">PR-C</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DC_002D/@EntryIndexedValue">PR-C-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DD/@EntryIndexedValue">PR-D</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PR_002DD_002D/@EntryIndexedValue">PR-D-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=SK/@EntryIndexedValue">SK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=SK_002D/@EntryIndexedValue">SK-</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=SSS/@EntryIndexedValue">SSS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=WSA/@EntryIndexedValue">WSA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=XYAZ/@EntryIndexedValue">XYAZ</s:String>
<s:Boolean x:Key="/Default/GrammarAndSpelling/GrammarChecking/Exceptions/=Github/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/GrammarAndSpelling/GrammarChecking/Exceptions/=_4E00_9375_8F2A/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/GrammarAndSpelling/GrammarChecking/Exceptions/=_591C_95F4_6A21_5F0F/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=acast/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=acfend/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=acguad/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=acpion/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=acspec/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=acsupo/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=advapi/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Aero/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Affero/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=aguard/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=amedic/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=amiya/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=apionr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=arget/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Arknights/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=arkplanner/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=asnipe/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=autofill/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bilibili/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bluestacks/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=bsconsole/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ccast/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=cdfend/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=cguard/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Chayn/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Chyan/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=cmedic/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Collapsal/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=cpione/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=csnipe/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=cspec/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=csuppo/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ctrler/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=desp/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=dnplayer/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ehem/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=esource/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Eyjafjalla/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Favourite/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=filetime/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=findstr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLASHW/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=FLASHWINFO/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=foldartal/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Foldartals/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=framerate/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=furni/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gacha/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Gavial/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Grandet/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Hotkey/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=hwnd/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Infrast/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Inited/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=iter/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=jsend/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ldconsole/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ldplayer/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=LD_0027s/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=leidian/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Lolicon/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=lpwndpl/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ls_005B_0022sub/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=luestacks/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=maatouch/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=MAA_0027s/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=memuc/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Minitouch/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mirrorc/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mirrorchyan/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mizuki/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mumu/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nemu/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Netease/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=netstat/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nonfriend/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=notstationed/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=objstr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=oper/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=opers/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Originite/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Originium/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=originiums/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Orundum/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Orundums/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=o_FF9Fv_FF9F/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pallas/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=pidl/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Pormpt/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=powrprof/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ppidl/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Prts/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=pwfi/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=qmsg/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Raidian/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rcast/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rdfend/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=removelist/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rguard/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rmean/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rmedic/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Roguelike/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=rsnipe/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Sami/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Sarkaz/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Screencap/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=sctp/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=serilog/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Showminimized/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Shownormal/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Skland/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=specialaccess/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=spid/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=SSS/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=STGM/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Stormeye/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=strlen/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Stylet/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=subtask/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Suppressions/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Surtr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=SWMINIMIZE/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=taskchain/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Todays/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=txwy/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ucrtbase/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=vmonitor/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Webhook/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=XYAZ/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Yahei/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=yituliu/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Yostar/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0020_0020_0020wp_002ELength_0020/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0020_003D_0020stri/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

View File

@@ -4,7 +4,7 @@
<img alt="LOGO" src="./docs/.vuepress/public/images/maa-logo_512x512.png" width="256" height="256" />
# MaaAssistantArknights
# MAA
<br>
<div>
@@ -25,7 +25,7 @@
<!-- markdownlint-restore -->
[简体中文](https://maa.plus/docs/zh-cn/) | [繁體中文](https://maa.plus/docs/zh-tw/) | [English](https://maa.plus/docs/en-us/) | [日本語](https://maa.plus/docs/ja-jp/) | [한국어](https://maa.plus/docs/ko-kr/)
[简体中文](https://docs.maa.plus/zh-cn/) | [繁體中文](https://docs.maa.plus/zh-tw/) | [English](https://docs.maa.plus/en-us/) | [日本語](https://docs.maa.plus/ja-jp/) | [한국어](https://docs.maa.plus/ko-kr/)
MAA 的意思是 MAA Assistant Arknights
@@ -39,12 +39,12 @@ MAA 的意思是 MAA Assistant Arknights
## 下载与安装
请阅读 [文档](https://maa.plus/docs/zh-cn/manual/newbie.html) 后前往 [官网](https://maa.plus) 或 [Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) 下载,并参考 [新手上路](https://maa.plus/docs/zh-cn/manual/newbie.html) 进行安装。
请阅读 [文档](https://docs.maa.plus/zh-cn/manual/newbie.html) 后前往 [官网](https://maa.plus) 或 [Releases](https://github.com/MaaAssistantArknights/MaaAssistantArknights/releases) 下载,并参考 [新手上路](https://docs.maa.plus/zh-cn/manual/newbie.html) 进行安装。
## 亮点功能
- 刷理智,掉落识别及上传 [企鹅物流](https://penguin-stats.cn/)[一图流](https://ark.yituliu.cn/)
- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](https://maa.plus/docs/zh-cn/protocol/base-scheduling-schema.html)
- 智能基建换班,自动计算干员效率,单设施内最优解;同时也支持 [自定义排班](https://docs.maa.plus/zh-cn/protocol/base-scheduling-schema.html)
- 自动公招,可选使用加急许可,一次全部刷完!公招数据自动上传 [企鹅物流](https://penguin-stats.cn/result/stage/recruit/recruit)[一图流](https://ark.yituliu.cn/survey/maarecruitdata)
- 支持手动识别公招界面,方便对高星公招做出选择 ~~(你的这个高资回费出的是推王呢还是推王呢)~~
- 支持识别干员列表,统计已有和未有干员及潜能,并在公招识别显示
@@ -83,16 +83,16 @@ MAA 的意思是 MAA Assistant Arknights
### 功能介绍
请参阅 [用户手册](https://maa.plus/docs/zh-cn/manual/)。
请参阅 [用户手册](https://docs.maa.plus/zh-cn/manual/)。
### 外服支持
目前国际服(美服)、日服、韩服、繁中服的绝大部分功能均已支持。但由于外服用户较少及项目人手不足,很多功能并没有进行全面的测试,所以请自行体验。
若您遇到了 Bug或对某个功能有强需求欢迎在 [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) 和 [讨论区](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) 催更;或加入我们一起建设 MAA请参阅 [外服适配教程](https://maa.plus/docs/zh-cn/develop/overseas-client-adaptation.html)
若您遇到了 Bug或对某个功能有强需求欢迎在 [Issues](https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues) 和 [讨论区](https://github.com/MaaAssistantArknights/MaaAssistantArknights/discussions) 催更;或加入我们一起建设 MAA请参阅 [外服适配教程](https://docs.maa.plus/zh-cn/develop/overseas-client-adaptation.html)
### CLI 支持
MAA 支持命令行界面CLI操作支持 LinuxmacOS 和 Windows可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/zh-cn/manual/cli/)
MAA 支持命令行界面CLI操作支持 LinuxmacOS 和 Windows可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://docs.maa.plus/zh-cn/manual/cli/)
## 加入我们
@@ -103,26 +103,22 @@ MAA 支持命令行界面CLI操作支持 LinuxmacOS 和 Windows
- 全新框架:[MaaFramework](https://github.com/MaaXYZ/MaaFramework)
- [作业站](https://prts.plus) 前端:[maa-copilot-frontend](https://github.com/MaaAssistantArknights/maa-copilot-frontend)
- [作业站](https://prts.plus) 后端:[MaaBackendCenter](https://github.com/MaaAssistantArknights/MaaBackendCenter)
- [官网](https://maa.plus)[前端](website)
- [官网](https://maa.plus)[前端](https://github.com/MaaAssistantArknights/maa-website)
- 深度学习:[MaaAI](https://github.com/MaaAssistantArknights/MaaAI)
### 多语言 (i18n)
MAA 支持多国语言,并使用 Weblate 进行本地化管理。如果您通晓多门语言,欢迎前往 [MAA Weblate](https://weblate.maa-org.net) 帮助我们进行翻译。
MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)为准。
[![Weblate](https://weblate.maa-org.net/widget/maa/wpf-gui/multi-auto.svg)](https://weblate.maa-org.net/engage/maa/)
### 参与开发
#### Windows
请参阅 [开始开发](https://maa.plus/docs/zh-cn/develop/development.html)。
请参阅 [开始开发](https://docs.maa.plus/zh-cn/develop/development.html)。
#### Linux | macOS
请参阅 [Linux 编译教程](https://maa.plus/docs/zh-cn/develop/linux-tutorial.html)。
请参阅 [Linux 编译教程](https://docs.maa.plus/zh-cn/develop/linux-tutorial.html)。
#### API
@@ -135,22 +131,22 @@ MAA 以中文(简体)为第一语言,翻译词条均以中文(简体)
- [Rust 接口](src/Rust/src/maa_sys)[HTTP 接口](src/Rust)
- [TypeScript 接口](https://github.com/MaaAssistantArknights/MaaX/tree/main/packages/main/coreLoader)
- [Woolang 接口](src/Woolang/maa.wo)[集成示例](src/Woolang/demo.wo)
- [集成文档](https://maa.plus/docs/zh-cn/protocol/integration.html)
- [回调消息协议](https://maa.plus/docs/zh-cn/protocol/callback-schema.html)
- [任务流程协议](https://maa.plus/docs/zh-cn/protocol/task-schema.html)
- [自动抄作业协议](https://maa.plus/docs/zh-cn/protocol/copilot-schema.html)
- [集成文档](https://docs.maa.plus/zh-cn/protocol/integration.html)
- [回调消息协议](https://docs.maa.plus/zh-cn/protocol/callback-schema.html)
- [任务流程协议](https://docs.maa.plus/zh-cn/protocol/task-schema.html)
- [自动抄作业协议](https://docs.maa.plus/zh-cn/protocol/copilot-schema.html)
#### 外服适配
请参阅 [外服适配教程](https://maa.plus/docs/zh-cn/develop/overseas-client-adaptation.html),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。
请参阅 [外服适配教程](https://docs.maa.plus/zh-cn/develop/overseas-client-adaptation.html),对于国服已支持的功能,绝大部分的外服适配工作仅需要截图 + 简单的 JSON 修改即可。
#### 想参与开发,但不太会用 GitHub?
[GitHub Pull Request 流程简述](https://maa.plus/docs/zh-cn/develop/development.html#github-pull-request-流程简述)
[GitHub Pull Request 流程简述](https://docs.maa.plus/zh-cn/develop/development.html#github-pull-request-流程简述)
#### Issue bot
请参阅 [Issue Bot 使用方法](https://maa.plus/docs/zh-cn/develop/issue-bot-usage.html)
请参阅 [Issue Bot 使用方法](https://docs.maa.plus/zh-cn/develop/issue-bot-usage.html)
## 致谢

View File

@@ -1,7 +0,0 @@
:; set -eo pipefail
:; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
:; ${SCRIPT_DIR}/build.sh "$@"
:; exit $?
@ECHO OFF
powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %*

View File

@@ -1,69 +0,0 @@
[CmdletBinding()]
Param(
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$BuildArguments
)
Write-Output "PowerShell $($PSVersionTable.PSEdition) version $($PSVersionTable.PSVersion)"
Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { Write-Error $_ -ErrorAction Continue; exit 1 }
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
###########################################################################
# CONFIGURATION
###########################################################################
$BuildProjectFile = "$PSScriptRoot\tools\MaaBuilder\MaaBuilder.csproj"
$TempDirectory = "$PSScriptRoot\\.nuke\temp"
$DotNetGlobalFile = "$PSScriptRoot\\global.json"
$DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1"
$DotNetChannel = "Current"
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1
$env:DOTNET_CLI_TELEMETRY_OPTOUT = 1
$env:DOTNET_MULTILEVEL_LOOKUP = 0
###########################################################################
# EXECUTION
###########################################################################
function ExecSafe([scriptblock] $cmd) {
& $cmd
if ($LASTEXITCODE) { exit $LASTEXITCODE }
}
# If dotnet CLI is installed globally and it matches requested version, use for execution
if ($null -ne (Get-Command "dotnet" -ErrorAction SilentlyContinue) -and `
$(dotnet --version) -and $LASTEXITCODE -eq 0) {
$env:DOTNET_EXE = (Get-Command "dotnet").Path
}
else {
# Download install script
$DotNetInstallFile = "$TempDirectory\dotnet-install.ps1"
New-Item -ItemType Directory -Path $TempDirectory -Force | Out-Null
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
(New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile)
# If global.json exists, load expected version
if (Test-Path $DotNetGlobalFile) {
$DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json)
if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) {
$DotNetVersion = $DotNetGlobal.sdk.version
}
}
# Install by channel or version
$DotNetDirectory = "$TempDirectory\dotnet-win"
if (!(Test-Path variable:DotNetVersion)) {
ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath }
} else {
ExecSafe { & powershell $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath }
}
$env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe"
}
Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)"
ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet }
ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments }

View File

@@ -1,62 +0,0 @@
#!/usr/bin/env bash
bash --version 2>&1 | head -n 1
set -eo pipefail
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
###########################################################################
# CONFIGURATION
###########################################################################
BUILD_PROJECT_FILE="$SCRIPT_DIR/tools/MaaBuilder/MaaBuilder.csproj"
TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp"
DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json"
DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh"
DOTNET_CHANNEL="Current"
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_MULTILEVEL_LOOKUP=0
###########################################################################
# EXECUTION
###########################################################################
function FirstJsonValue {
perl -nle 'print $1 if m{"'"$1"'": "([^"]+)",?}' <<< "${@:2}"
}
# If dotnet CLI is installed globally and it matches requested version, use for execution
if [ -x "$(command -v dotnet)" ] && dotnet --version &>/dev/null; then
export DOTNET_EXE="$(command -v dotnet)"
else
# Download install script
DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh"
mkdir -p "$TEMP_DIRECTORY"
curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL"
chmod +x "$DOTNET_INSTALL_FILE"
# If global.json exists, load expected version
if [[ -f "$DOTNET_GLOBAL_FILE" ]]; then
DOTNET_VERSION=$(FirstJsonValue "version" "$(cat "$DOTNET_GLOBAL_FILE")")
if [[ "$DOTNET_VERSION" == "" ]]; then
unset DOTNET_VERSION
fi
fi
# Install by channel or version
DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix"
if [[ -z ${DOTNET_VERSION+x} ]]; then
"$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path
else
"$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path
fi
export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet"
fi
echo "Microsoft (R) .NET SDK version $("$DOTNET_EXE" --version)"
"$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet
"$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@"

83
cmake/config.cmake Normal file
View File

@@ -0,0 +1,83 @@
set(debug_comp_defs "_DEBUG;ASST_DEBUG")
add_compile_definitions("$<$<CONFIG:Debug>:${debug_comp_defs}>")
if(APPLE)
set(CMAKE_INSTALL_RPATH "@loader_path;@executable_path")
set(CMAKE_BUILD_RPATH "@loader_path;@executable_path")
elseif(UNIX)
set(CMAKE_INSTALL_RPATH "$ORIGIN")
set(CMAKE_BUILD_RPATH "$ORIGIN")
endif()
if(MSVC)
add_compile_options("/utf-8")
add_compile_options("/MP")
add_compile_options("/W4;/WX;/Gy;/permissive-;/sdl")
add_compile_options("/wd4127") # conditional expression is constant
add_compile_options("/wd4251") # export dll with templates
add_compile_options("/DWINVER=0x0A00")
add_compile_options("/D_WIN32_WINNT=0x0A00")
# https://github.com/actions/runner-images/issues/10004 https://github.com/microsoft/STL/releases/tag/vs-2022-17.10
add_compile_definitions("_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR")
set(release_link_options "/OPT:REF;/OPT:ICF")
add_link_options("$<$<CONFIG:Release>:${release_link_options}>")
SET(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO "RelWithDebInfo;Release;")
SET(CMAKE_MAP_IMPORTED_CONFIG_MINSIZEREL "MinSizeRel;Release;")
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
else()
add_compile_options("-Wall;-Werror;-Wextra;-Wpedantic;-Wno-missing-field-initializers")
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
add_compile_options("-Wno-restrict")
endif()
endif()
if(LINUX)
function(copy_and_add_rpath_library LIBNAME)
execute_process(
COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=${LIBNAME}.so.1 -target ${CMAKE_CXX_COMPILER_TARGET} --sysroot=${CMAKE_SYSROOT}
OUTPUT_VARIABLE LIB_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if("${LIB_PATH}" STREQUAL "${LIBNAME}.so.1")
message(FATAL_ERROR "Could not locate ${LIBNAME}.so.1 using compiler")
endif()
file(READ_SYMLINK "${LIB_PATH}" LINK_TARGET)
if(NOT LINK_TARGET)
set(LIB_PATH_REAL "${LIB_PATH}")
elseif(NOT IS_ABSOLUTE "${LINK_TARGET}")
get_filename_component(LIB_PATH_DIR "${LIB_PATH}" DIRECTORY)
file(REAL_PATH "${LIB_PATH_DIR}/${LINK_TARGET}" LIB_PATH_REAL)
else()
set(LIB_PATH_REAL "${LINK_TARGET}")
endif()
if(NOT EXISTS "${LIB_PATH_REAL}")
message(FATAL_ERROR "File not found: ${LIB_PATH_REAL}")
endif()
message(STATUS "${LIBNAME}.so.1 path: ${LIB_PATH_REAL}")
install(FILES "${LIB_PATH_REAL}" DESTINATION . RENAME "${LIBNAME}.so.1" COMPONENT libcxx)
get_filename_component(LIB_PATH_DIR "${LIB_PATH_REAL}" DIRECTORY)
list(APPEND CMAKE_BUILD_RPATH "${LIB_PATH_DIR}")
set(CMAKE_BUILD_RPATH "${CMAKE_BUILD_RPATH}" PARENT_SCOPE)
endfunction()
copy_and_add_rpath_library(libc++)
copy_and_add_rpath_library(libc++abi)
copy_and_add_rpath_library(libunwind)
endif()
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

View File

@@ -25,6 +25,3 @@ if (BUILD_XCFRAMEWORK)
)
endif (BUILD_XCFRAMEWORK)
target_compile_options(MaaCore PRIVATE
-Wno-deprecated-declarations
-Wno-gnu-zero-variadic-macro-arguments)

View File

@@ -0,0 +1,41 @@
find_path(ONNXRuntime_INCLUDE_DIR NAMES onnxruntime/onnxruntime_c_api.h)
find_library(ONNXRuntime_LIBRARY_IMP NAMES onnxruntime)
if (WIN32)
get_filename_component(ONNXRuntime_PATH_LIB ${ONNXRuntime_LIBRARY_IMP} DIRECTORY)
find_file(ONNXRuntime_LIBRARY NAMES onnxruntime_maa.dll PATHS "${ONNXRuntime_PATH_LIB}/../bin")
find_file(ONNXRuntime_LIBRARY_IMP_DEBUG NAMES onnxruntime.lib PATHS "${ONNXRuntime_PATH_LIB}/../debug/lib")
find_file(ONNXRuntime_LIBRARY_DEBUG NAMES onnxruntime_maa.dll PATHS "${ONNXRuntime_PATH_LIB}/../debug/bin")
else ()
set(ONNXRuntime_LIBRARY ${ONNXRuntime_LIBRARY_IMP})
endif (WIN32)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
ONNXRuntime
REQUIRED_VARS ONNXRuntime_LIBRARY_IMP ONNXRuntime_INCLUDE_DIR
)
if(ONNXRuntime_FOUND)
set(ONNXRuntime_INCLUDE_DIRS ${ONNXRuntime_INCLUDE_DIR})
if(NOT TARGET ONNXRuntime::ONNXRuntime)
add_library(ONNXRuntime::ONNXRuntime SHARED IMPORTED)
set_property(TARGET ONNXRuntime::ONNXRuntime APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
if (WIN32)
set_property(TARGET ONNXRuntime::ONNXRuntime APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(ONNXRuntime::ONNXRuntime PROPERTIES
IMPORTED_IMPLIB_RELEASE "${ONNXRuntime_LIBRARY_IMP}"
)
set_target_properties(ONNXRuntime::ONNXRuntime PROPERTIES
IMPORTED_IMPLIB_DEBUG "${ONNXRuntime_LIBRARY_IMP_DEBUG}"
IMPORTED_LOCATION_DEBUG "${ONNXRuntime_LIBRARY_DEBUG}"
)
endif (WIN32)
set_target_properties(ONNXRuntime::ONNXRuntime PROPERTIES
IMPORTED_LOCATION_RELEASE "${ONNXRuntime_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${ONNXRuntime_INCLUDE_DIR}"
)
endif()
endif()

View File

@@ -1,54 +0,0 @@
set(OPENCV_URL_PREFIX "https://github.com/MaaAssistantArknights/build-opencv/releases/download")
set(OPENCV_TAG "4.5.3")
set(COMPRESSED_SUFFIX ".tar.gz")
if(WIN32)
set(OPENCV_FILENAME "OpenCV-Windows")
set(OPENCV_CHECKSUM "bf736b243bbdaa020f139e4dfa1e4f15633f4ce7a8ad885524645e660de47a8b")
elseif(APPLE)
if (CURRENT_OSX_ARCH STREQUAL "arm64")
set(OPENCV_FILENAME "OpenCV-macOS-arm64")
set(OPENCV_CHECKSUM "31beb633c033dd4ee789ffa50911c29c9580860f9a91f334f03d8aa9c85e9700")
else()
set(OPENCV_FILENAME "OpenCV-macOS-x86_64")
set(OPENCV_CHECKSUM "249c5c97cc52257b68d35acf499b1cf1037f5e6f3b40752f82ad5abe7884bea9")
endif()
else(UNIX)
set(OPENCV_FILENAME "OpenCV-Linux")
set(OPENCV_CHECKSUM "edc4138456189c9e8bdf29114ad2be8ec152e8e31087d98e633f6cda59b141ea")
endif(WIN32)
set(OPENCV_URL ${OPENCV_URL_PREFIX}/${OPENCV_TAG}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX})
if(OPENCV_DIRECTORY)
set(OpenCV_DIR ${OPENCV_DIRECTORY})
find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR})
include_directories(${OpenCV_INCLUDE_DIRS})
list(APPEND DEPEND_LIBS ${OpenCV_LIBS})
else()
download_and_decompress(${OPENCV_URL}
${CMAKE_CURRENT_BINARY_DIR}/${OPENCV_FILENAME}${COMPRESSED_SUFFIX}
${OPENCV_CHECKSUM}
${THIRD_PARTY_PATH}/install/)
set(OPENCV_FILENAME opencv)
set(OpenCV_DIR ${THIRD_PARTY_PATH}/install/${OPENCV_FILENAME})
set(OPENCV_DIRECTORY ${OpenCV_DIR})
if (WIN32)
set(OpenCV_DIR ${OpenCV_DIR}/lib)
endif()
find_package(OpenCV REQUIRED PATHS ${OpenCV_DIR} NO_DEFAULT_PATH)
include_directories(${OpenCV_INCLUDE_DIRS})
list(APPEND DEPEND_LIBS ${OpenCV_LIBS})
endif(OPENCV_DIRECTORY)
if (INSTALL_THIRD_LIBS)
if (OpenCV_SHARED)
install(DIRECTORY ${OpenCV_INSTALL_PATH}/lib/
DESTINATION .
USE_SOURCE_PERMISSIONS PATTERN "cmake" EXCLUDE)
endif (OpenCV_SHARED)
endif (INSTALL_THIRD_LIBS)

View File

@@ -1,44 +0,0 @@
macro(GENERATE_THRIFT_LIB LIB_NAME FILENAME OUTPUTDIR SOURCES)
file(MAKE_DIRECTORY ${OUTPUTDIR})
detect_host_triplet(HOST_TRIPLET)
if (CMAKE_CROSSCOMPILING)
if (CMAKE_HOST_WIN32)
set(_host_executable_suffix ".exe")
else()
set(_host_executable_suffix "")
endif()
else()
set(_host_executable_suffix ${CMAKE_EXECUTABLE_SUFFIX})
endif()
if(EXISTS ${PROJECT_SOURCE_DIR}/MaaDeps/vcpkg/installed/maa-${HOST_TRIPLET}/tools/thrift/thrift${_host_executable_suffix})
set(THRIFT_COMPILER ${PROJECT_SOURCE_DIR}/MaaDeps/vcpkg/installed/maa-${HOST_TRIPLET}/tools/thrift/thrift${_host_executable_suffix})
else()
find_program(THRIFT_COMPILER thrift)
endif()
if(NOT THRIFT_COMPILER)
message(FATAL_ERROR "Thrift compiler not found")
endif()
get_filename_component(THRIFT_IDL_NAME ${FILENAME} NAME_WE)
set(THRIFT_IDL_TARGET "${LIB_NAME}_${THRIFT_IDL_NAME}_idl")
set("${THRIFT_IDL_NAME}-gen-cpp"
${OUTPUTDIR}/${THRIFT_IDL_NAME}.cpp
${OUTPUTDIR}/${THRIFT_IDL_NAME}.h
${OUTPUTDIR}/${THRIFT_IDL_NAME}_types.cpp
${OUTPUTDIR}/${THRIFT_IDL_NAME}_types.h)
add_custom_command(OUTPUT ${${THRIFT_IDL_NAME}-gen-cpp}
DEPENDS ${FILENAME}
COMMAND ${THRIFT_COMPILER} --gen cpp:no_skeleton -out ${OUTPUTDIR} ${FILENAME}
VERBATIM)
add_custom_target(${THRIFT_IDL_TARGET} DEPENDS ${${THRIFT_IDL_NAME}-gen-cpp})
add_library(${LIB_NAME} STATIC ${${THRIFT_IDL_NAME}-gen-cpp})
add_dependencies(${LIB_NAME} ${THRIFT_IDL_TARGET})
set_target_properties(${LIB_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_link_libraries(${LIB_NAME} PUBLIC thrift::thrift)
target_include_directories(${LIB_NAME} PUBLIC ${OUTPUTDIR})
set(${SOURCES} ${${SOURCES}} ${GENERATED_SOURCES} PARENT_SCOPE)
endmacro(GENERATE_THRIFT_LIB)
if (WITH_THRIFT)
add_compile_definitions(WITH_THRIFT)
endif (WITH_THRIFT)

View File

@@ -1,50 +1,73 @@
function(download_and_decompress url filename sha256_checksum decompress_dir)
if(EXISTS ${filename})
file(SHA256 ${filename} CHECKSUM_VARIABLE)
endif()
if(NOT EXISTS ${filename} OR NOT CHECKSUM_VARIABLE STREQUAL sha256_checksum)
message("Downloading file from ${url} to ${filename} ...")
file(DOWNLOAD ${url} "${filename}.tmp" SHOW_PROGRESS EXPECTED_HASH SHA256=${sha256_checksum})
file(RENAME "${filename}.tmp" ${filename})
endif()
if(NOT EXISTS ${decompress_dir})
file(MAKE_DIRECTORY ${decompress_dir})
endif()
message("Decompress file ${filename} ...")
execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${filename} WORKING_DIRECTORY ${decompress_dir})
if(EXISTS ${filename})
file(SHA256 ${filename} CHECKSUM_VARIABLE)
endif()
if(NOT EXISTS ${filename} OR NOT CHECKSUM_VARIABLE STREQUAL sha256_checksum)
message("Downloading file from ${url} to ${filename} ...")
file(
DOWNLOAD ${url} "${filename}.tmp"
SHOW_PROGRESS
EXPECTED_HASH SHA256=${sha256_checksum})
file(RENAME "${filename}.tmp" ${filename})
endif()
if(NOT EXISTS ${decompress_dir})
file(MAKE_DIRECTORY ${decompress_dir})
endif()
message("Decompress file ${filename} ...")
execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${filename} WORKING_DIRECTORY ${decompress_dir})
endfunction()
function(get_osx_architecture)
if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
set(CURRENT_OSX_ARCH "arm64" PARENT_SCOPE)
elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
set(CURRENT_OSX_ARCH "x86_64" PARENT_SCOPE)
else()
set(CURRENT_OSX_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR} PARENT_SCOPE)
endif()
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
set(CURRENT_OSX_ARCH
"arm64"
PARENT_SCOPE)
elseif(CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
set(CURRENT_OSX_ARCH
"x86_64"
PARENT_SCOPE)
else()
set(CURRENT_OSX_ARCH
${CMAKE_HOST_SYSTEM_PROCESSOR}
PARENT_SCOPE)
endif()
endfunction()
function(detect_host_triplet outvar)
string(TOLOWER "${CMAKE_HOST_SYSTEM_NAME}" host_triplet_system)
string(TOLOWER "${CMAKE_HOST_SYSTEM_PROCESSOR}" host_triplet_arch)
if(host_triplet_system STREQUAL "darwin")
set(host_triplet_system "osx")
endif()
message("host_triplet_system: ${host_triplet_system}")
message("host_triplet_arch: ${host_triplet_arch}")
if(host_triplet_arch MATCHES "(amd64|x86_64)")
set(host_triplet_arch "x64")
elseif(host_triplet_arch MATCHES "i[3456]86")
set(host_triplet_arch "x86")
elseif(host_triplet_arch MATCHES "(aarch64|armv8l|arm64)")
set(host_triplet_arch "arm64")
else()
message(FATAL_ERROR "Unrecognized CMAKE_HOST_SYSTEM_PROCESSOR: ${CMAKE_HOST_SYSTEM_PROCESSOR}")
endif()
set(${outvar} "${host_triplet_arch}-${host_triplet_system}" PARENT_SCOPE)
endfunction()
if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 13.3) # for to_chars
get_osx_architecture()
endif(APPLE)
if (APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0)
get_osx_architecture()
endif (APPLE)
if(NOT DEFINED MAADEPS_TRIPLET)
detect_maadeps_triplet(MAADEPS_TRIPLET)
endif()
# 创建资源目录链接的函数
function(create_resource_link TARGET_NAME OUTPUT_DIR)
if(WIN32)
# Windows 使用 mklink /J 创建目录链接(不需要管理员权限)
add_custom_command(
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "Creating resource directory link for ${TARGET_NAME}..."
COMMAND ${CMAKE_COMMAND} -E remove_directory "${OUTPUT_DIR}/resource"
COMMAND cmd /c "mklink /J \"${OUTPUT_DIR}/resource\" \"${PROJECT_SOURCE_DIR}/resource\""
COMMAND ${CMAKE_COMMAND} -E echo "Resource directory link created successfully"
COMMENT "Creating junction for resource directory for ${TARGET_NAME}"
)
else()
# Unix/Linux/macOS 使用符号链接
add_custom_command(
TARGET ${TARGET_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "Creating resource directory link for ${TARGET_NAME}..."
COMMAND ${CMAKE_COMMAND} -E remove "${OUTPUT_DIR}/resource"
COMMAND ${CMAKE_COMMAND} -E create_symlink "${PROJECT_SOURCE_DIR}/resource" "${OUTPUT_DIR}/resource"
COMMAND ${CMAKE_COMMAND} -E echo "Resource directory link created successfully"
COMMENT "Creating symlink for resource directory for ${TARGET_NAME}"
)
endif()
endfunction()

27
cmake/version.cmake Normal file
View File

@@ -0,0 +1,27 @@
# define MAA_HASH_VERSION from git
set(MAA_HASH_VERSION
"DEBUG_VERSION"
CACHE STRING "maa version")
if(WITH_HASH_VERSION AND MAA_HASH_VERSION STREQUAL "DEBUG_VERSION")
find_package(Git)
if(GIT_FOUND)
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse HEAD
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE result
OUTPUT_VARIABLE output
ERROR_VARIABLE err
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(result EQUAL 0)
set(MAA_HASH_VERSION "${output}")
else()
message(WARNING "git rev-parse returning ${result}, output:\n${err}")
endif()
endif()
endif()
message(STATUS "MAA_HASH_VERSION=${MAA_HASH_VERSION}")
add_compile_definitions(MAA_VERSION="${MAA_HASH_VERSION}")

View File

@@ -224,3 +224,38 @@ MD052: true
MD053:
# Ignored definitions
ignored_definitions: ["//"]
# MD054/link-image-style - Link and image style
MD054:
# Allow autolinks
autolink: true
# Allow collapsed reference links and images
collapsed: true
# Allow full reference links and images
full: true
# Allow inline links and images
inline: true
# Allow shortcut reference links and images
shortcut: true
# Allow URLs as inline links
url_inline: true
# MD055/table-pipe-style - Table pipe style
MD055:
# Table pipe style
style: "consistent"
# MD056/table-column-count - Table column count
MD056: true
# MD057 - Table column count inconsistencies with table header column count
# (Not documented in official rules list - MD057 appears to be missing or deprecated)
# MD058/blanks-around-tables - Tables should be surrounded by blank lines
MD058: true
# MD059/descriptive-link-text - Link text should be descriptive
MD059:
false
# Prohibited link texts
#prohibited_texts: ["click here", "here", "link", "more"]

2
docs/.prettierignore Normal file
View File

@@ -0,0 +1,2 @@
**/pnpm-lock.yaml
**/*.md

40
docs/.prettierrc.js Normal file
View File

@@ -0,0 +1,40 @@
module.exports = {
printWidth: 120,
tabWidth: 2,
useTabs: false,
bracketSpacing: true,
bracketSameLine: false,
endOfLine: 'auto',
semi: false,
singleQuote: true,
trailingComma: 'all',
arrowParens: 'always',
overrides: [
{
files: ['**/*.ts'],
options: {
semi: true,
},
},
{
files: ['**/*.*css'],
options: {
singleQuote: false,
},
},
{
files: ['**/*.yml', '**/*.yaml'],
options: {
parser: 'yaml',
singleQuote: false,
},
},
{
files: ['**/*.json'],
options: {
tabWidth: 4,
},
},
],
}

View File

@@ -1,12 +1,11 @@
import { defineClientConfig } from "vuepress/client";
import Image1 from "../components/Image1.vue";
import Image2 from "../components/Image2.vue";
import Image4 from "../components/Image4.vue";
import { defineClientConfig } from 'vuepress/client';
import ImageGrid from './components/ImageGrid.vue';
import './styles/index.scss';
export default defineClientConfig({
enhance: ({ app }) => {
app.component("Image1", Image1);
app.component("Image2", Image2);
app.component("Image4", Image4);
app.component('ImageGrid', ImageGrid);
},
});

View File

@@ -0,0 +1,72 @@
<template>
<CardGrid>
<ImageCard v-for="(item, index) of displayImageList" :key="index" :image="item" />
</CardGrid>
</template>
<script lang="ts">
import { PropType, defineComponent, computed, ref, onMounted, onUnmounted } from 'vue'
import { withBase } from 'vuepress/client'
export default defineComponent({
name: 'ImageCardGrid',
props: {
imageList: {
type: Array as PropType<Array<{ light: string; dark: string } | string>>,
required: true,
},
},
setup(props) {
const isDarkMode = ref(false)
let observer: MutationObserver | null = null
let mediaQuery: MediaQueryList | null = null
const updateDarkMode = () => {
if (typeof window !== 'undefined') {
const html = document.documentElement
isDarkMode.value =
html.classList.contains('dark') ||
html.getAttribute('data-theme') === 'dark' ||
window.matchMedia('(prefers-color-scheme: dark)').matches
}
}
onMounted(() => {
updateDarkMode()
if (typeof window !== 'undefined') {
// 监听DOM变化主题切换通常会改变class或data-theme属性
observer = new MutationObserver(updateDarkMode)
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ['class', 'data-theme'],
})
// 监听系统主题变化
mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
mediaQuery.addEventListener('change', updateDarkMode)
}
})
onUnmounted(() => {
if (observer) {
observer.disconnect()
}
if (mediaQuery) {
mediaQuery.removeEventListener('change', updateDarkMode)
}
})
const displayImageList = computed(() => {
return props.imageList.map((item) => {
const src = typeof item === 'string' ? item : isDarkMode.value ? item.dark : item.light
return withBase(src)
})
})
return {
displayImageList,
}
},
})
</script>

View File

@@ -1,52 +0,0 @@
import type { VNode } from "vue";
import { defineComponent, h } from "vue";
import NavbarDropdown from "@theme-hope/modules/navbar/components/NavbarDropdown";
import { I18nIcon } from "@theme-hope/modules/navbar/components/icons/index";
import { useNavbarLanguageDropdown } from "@theme-hope/modules/navbar/composables/index";
export default defineComponent({
name: "LanguageDropdown",
setup() {
const dropdown = useNavbarLanguageDropdown();
const filteredDropdown = () => {
if (!dropdown.value) return null;
const filteredConfig = { ...dropdown.value };
if (filteredConfig.children) {
filteredConfig.children = filteredConfig.children.filter(item => item.link !== '/');
}
return filteredConfig;
};
//console.log("OldLanguageDropdown", dropdown.value);
//console.log("NewLanguageDropdown", filteredDropdown());
return (): VNode | null =>
dropdown.value
? h(
"div",
{ class: "vp-nav-item" },
h(
NavbarDropdown,
{ config: filteredDropdown() },
{
title: () =>
h(I18nIcon, {
"aria-label": filteredDropdown()?.ariaLabel,
style: {
width: "1rem",
height: "1rem",
verticalAlign: "middle",
},
}),
},
),
)
: null;
},
});

View File

@@ -1,92 +1,70 @@
import { defineUserConfig } from "vuepress";
import { getDirname, path } from "vuepress/utils";
import { viteBundler } from "@vuepress/bundler-vite";
import { googleAnalyticsPlugin } from "@vuepress/plugin-google-analytics";
import Theme from "./theme";
import { viteBundler } from '@vuepress/bundler-vite';
import { defineUserConfig } from 'vuepress';
import { googleAnalyticsPlugin } from '@vuepress/plugin-google-analytics';
import { plumeTheme } from 'vuepress-theme-plume';
const __dirname = getDirname(import.meta.url);
import DocSearchConfig from './plugins/search';
const isProd = process.env.NODE_ENV === 'production';
export default defineUserConfig({
base: "/docs/",
lang: "zh-CN",
title: "MaaAssistantArknights",
description: "MAA",
base: '/',
lang: 'zh-CN',
title: 'MAA 文档站',
description: 'MAA —「明日方舟」小助手',
host: '0.0.0.0',
port: 3001,
locales: {
"/": {
lang: " ",
title: " ",
description: " ",
'/zh-cn/': {
lang: 'zh-CN',
title: 'MAA 文档站',
description: '文档',
},
"/zh-cn/": {
lang: "zh-cn",
description: "文档",
'/zh-tw/': {
lang: 'zh-TW',
title: 'MAA 文件站',
description: '文件',
},
"/zh-tw/": {
lang: "zh-tw",
description: "文件",
'/en-us/': {
lang: 'en-US',
title: 'MAA Documentation Site',
description: 'Documentation',
},
"/en-us/": {
lang: "en-us",
description: "Documentation",
'/ja-jp/': {
lang: 'ja-JP',
title: 'MAA ドキュメントサイト',
description: 'ドキュメント',
},
"/ja-jp/": {
lang: "ja-jp",
description: "ドキュメンテーション",
},
"/ko-kr/": {
lang: "ko-kr",
description: "선적 서류 비치",
'/ko-kr/': {
lang: 'ko-KR',
title: 'MAA 문서 사이트',
description: '문서',
},
},
markdown: {
headers: {
level: [2, 3, 4, 5],
},
},
theme: Theme,
alias: {
"@theme-hope/modules/navbar/components/LanguageDropdown": path.resolve(
__dirname,
"./components/LanguageDropdown.ts",
),
},
plugins: [
googleAnalyticsPlugin({
id: "G-FJQDKG394Z",
}),
],
head: [
["link", { rel: "preconnect", href: "https://fonts.googleapis.com" }],
['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],
['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }],
[
"link",
{ rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin: "" },
],
[
"link",
'link',
{
href: "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap",
rel: "stylesheet",
href: 'https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&display=swap',
rel: 'stylesheet',
},
],
[
"link",
'link',
{
href: "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@200..900&display=swap",
rel: "stylesheet",
href: 'https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@200..900&display=swap',
rel: 'stylesheet',
},
],
[
"link",
'link',
{
href: "https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap",
rel: "stylesheet",
href: 'https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap',
rel: 'stylesheet',
},
],
],
@@ -95,4 +73,63 @@ export default defineUserConfig({
viteOptions: {},
vuePluginOptions: {},
}),
shouldPrefetch: false,
theme: plumeTheme({
hostname: 'https://docs.maa.plus',
docsRepo: 'MaaAssistantArknights/MaaAssistantArknights',
docsDir: '/docs',
docsBranch: 'dev',
editLink: true,
lastUpdated: false,
contributors: false,
changelog: false,
blog: false,
cache: 'filesystem',
search: DocSearchConfig,
codeHighlighter: {
themes: { light: 'one-light', dark: 'one-dark-pro' },
},
markdown: {
image: {
lazyload: true,
mark: true,
size: true,
},
icon: { provider: 'iconify' },
plot: true,
field: true,
bilibili: true,
},
watermark: false,
comment: {
provider: 'Giscus',
repo: 'MaaAssistantArknights/maa-website',
repoId: 'R_kgDOHY7Gyg',
category: 'Comments',
categoryId: 'DIC_kwDOHY7Gys4CgoVH',
mapping: 'pathname',
strict: false,
lazyLoading: true,
},
//replaceAssets: isProd ? "https://cdn.maa.plus" : false,
}),
plugins: [
googleAnalyticsPlugin({
id: 'G-FJQDKG394Z',
}),
],
});

5
docs/.vuepress/env.d.ts vendored Normal file
View File

@@ -0,0 +1,5 @@
declare module '*.vue' {
import { DefineComponent } from 'vue';
const component: DefineComponent<{}, {}, any>;
export default component;
}

View File

@@ -1,29 +1,19 @@
import { navbar } from "vuepress-theme-hope";
import { defineNavbarConfig } from 'vuepress-theme-plume';
export const enusNavbar = navbar([
export const enusNavbar = defineNavbarConfig([
{
text: "Home",
icon: "ic:round-home",
link: "/en-us/",
text: 'User Manual',
icon: 'mdi:user',
link: '/en-us/manual/newbie.html',
},
{
text: "User Manual",
icon: "mdi:user",
link: "/en-us/manual/",
text: 'Development Docs',
icon: 'ph:code-bold',
link: '/en-us/develop/development.html',
},
{
text: "Development Docs",
icon: "ph:code-bold",
link: "/en-us/develop/",
},
{
text: "Protocol Docs",
icon: "basil:document-solid",
link: "/en-us/protocol/",
},
{
text: "MAA Website",
icon: "mdi:cow",
link: "https://maa.plus",
text: 'Protocol Docs',
icon: 'basil:document-solid',
link: '/en-us/protocol/integration.html',
},
]);

View File

@@ -1,5 +1,5 @@
export * from "./zh-cn";
export * from "./zh-tw";
export * from "./en-us";
export * from "./ja-jp";
export * from "./ko-kr";
export * from './zh-cn';
export * from './zh-tw';
export * from './en-us';
export * from './ja-jp';
export * from './ko-kr';

View File

@@ -1,29 +1,19 @@
import { navbar } from "vuepress-theme-hope";
import { defineNavbarConfig } from 'vuepress-theme-plume';
export const jajpNavbar = navbar([
export const jajpNavbar = defineNavbarConfig([
{
text: "ホームページ",
icon: "ic:round-home",
link: "/ja-jp/",
text: '使用説明',
icon: 'mdi:user',
link: '/ja-jp/manual/newbie.html',
},
{
text: "使用説明",
icon: "mdi:user",
link: "/ja-jp/manual/",
text: '開発関連',
icon: 'ph:code-bold',
link: '/ja-jp/develop/development.html',
},
{
text: "開発関連",
icon: "ph:code-bold",
link: "/ja-jp/develop/",
},
{
text: "プロトコルドキュメント",
icon: "basil:document-solid",
link: "/ja-jp/protocol/",
},
{
text: "MAA 公式サイト",
icon: "mdi:cow",
link: "https://maa.plus",
text: 'プロトコルドキュメント',
icon: 'basil:document-solid',
link: '/ja-jp/protocol/integration.html',
},
]);

View File

@@ -1,29 +1,19 @@
import { navbar } from "vuepress-theme-hope";
import { defineNavbarConfig } from 'vuepress-theme-plume';
export const kokrNavbar = navbar([
export const kokrNavbar = defineNavbarConfig([
{
text: "홈페이지",
icon: "ic:round-home",
link: "/ko-kr/",
text: '사용자 설명서',
icon: 'mdi:user',
link: '/ko-kr/manual/newbie.html',
},
{
text: "사용자 설명서",
icon: "mdi:user",
link: "/ko-kr/manual/",
text: '개발 문서',
icon: 'ph:code-bold',
link: '/ko-kr/develop/development.html',
},
{
text: "개발 문서",
icon: "ph:code-bold",
link: "/ko-kr/develop/",
},
{
text: "프로토콜 문서",
icon: "basil:document-solid",
link: "/ko-kr/protocol/",
},
{
text: "MAA 공식 홈페이지",
icon: "mdi:cow",
link: "https://maa.plus",
text: '프로토콜 문서',
icon: 'basil:document-solid',
link: '/ko-kr/protocol/integration.html',
},
]);

View File

@@ -1,29 +1,19 @@
import { navbar } from "vuepress-theme-hope";
import { defineNavbarConfig } from 'vuepress-theme-plume';
export const zhcnNavbar = navbar([
export const zhcnNavbar = defineNavbarConfig([
{
text: "主页",
icon: "ic:round-home",
link: "/zh-cn/",
text: '用户手册',
icon: 'mdi:user',
link: '/zh-cn/manual/newbie.html',
},
{
text: "用户手册",
icon: "mdi:user",
link: "/zh-cn/manual/",
text: '开发文档',
icon: 'ph:code-bold',
link: '/zh-cn/develop/development.html',
},
{
text: "开发文档",
icon: "ph:code-bold",
link: "/zh-cn/develop/",
},
{
text: "协议文档",
icon: "basil:document-solid",
link: "/zh-cn/protocol/",
},
{
text: "MAA 官网",
icon: "mdi:cow",
link: "https://maa.plus",
text: '协议文档',
icon: 'basil:document-solid',
link: '/zh-cn/protocol/integration.html',
},
]);

View File

@@ -1,29 +1,19 @@
import { navbar } from "vuepress-theme-hope";
import { defineNavbarConfig } from 'vuepress-theme-plume';
export const zhtwNavbar = navbar([
export const zhtwNavbar = defineNavbarConfig([
{
text: "首頁",
icon: "ic:round-home",
link: "/zh-tw/",
text: '用戶說明書',
icon: 'mdi:user',
link: '/zh-tw/manual/newbie.html',
},
{
text: "用戶說明書",
icon: "mdi:user",
link: "/zh-tw/manual/",
text: '開發文件',
icon: 'ph:code-bold',
link: '/zh-tw/develop/development.html',
},
{
text: "開發文件",
icon: "ph:code-bold",
link: "/zh-tw/develop/",
},
{
text: "協議文件",
icon: "basil:document-solid",
link: "/zh-tw/protocol/",
},
{
text: "MAA 官網",
icon: "mdi:cow",
link: "https://maa.plus",
text: '協議文件',
icon: 'basil:document-solid',
link: '/zh-tw/protocol/integration.html',
},
]);

View File

@@ -0,0 +1,8 @@
import { defineNotesConfig } from 'vuepress-theme-plume';
import { genNotes } from './genSidebar';
export const enusNotes = defineNotesConfig({
dir: 'en-us',
link: '/en-us/',
notes: genNotes('en-us'),
});

View File

@@ -0,0 +1,119 @@
import * as fs from 'fs';
import * as path from 'path';
import * as matterModule from 'gray-matter';
import { defineNoteConfig, ThemeNote, ThemeSidebarItem } from 'vuepress-theme-plume';
const matter = (matterModule as any).default;
interface MetaData {
baseName: string;
order: number;
title: string;
icon: string;
index: boolean;
}
function getMetaData(dir: string, entry: fs.Dirent): MetaData | null {
const currentPath = path.join(dir, entry.name);
if (!fs.existsSync(currentPath)) {
return null;
}
let mdFilePath = '';
if (entry.isDirectory()) {
mdFilePath = path.join(currentPath, 'README.md');
} else if (entry.isFile() && entry.name.endsWith('.md') && entry.name.toLowerCase() !== 'readme.md') {
mdFilePath = currentPath;
} else {
return null;
}
if (!fs.existsSync(mdFilePath)) {
return null;
}
const fileContent = fs.readFileSync(mdFilePath, 'utf-8');
const meta = matter(fileContent).data ?? {};
const baseName = path.parse(entry.name).name;
// 获取顺序目录的order在meta.dir.order里文件的order在meta.order里默认值为一个大数
const order = Number((entry.isDirectory() ? meta?.dir?.order : meta?.order) ?? Number.MAX_SAFE_INTEGER);
// 获取标题先从matter里找title再用正则获取一级标题最后fallback到文件名不含扩展名
const title = String(meta?.title ?? RegExp('# (.+)').exec(fileContent)?.[1] ?? baseName);
// 获取图标
const icon = String(meta?.icon ?? '');
// 是否作为索引页文件永远为true目录则看meta.index默认true
const index = entry.isDirectory() ? (Boolean(meta?.index) ?? true) : true;
return {
baseName: baseName,
order: order,
title: title,
icon: icon,
index: index,
};
}
export function genNotes(lang: string, baseDir = path.resolve(__dirname, '../../')): ThemeNote[] {
// 进入指定语言目录即docs/<i18n>/
const langDir = path.join(baseDir, lang);
// 递归获取目录和文件
function getItems(dir: string, isRoot: boolean): any[] {
// 将内容与对应顺序进行包装
interface Wrapped {
content: ThemeNote | ThemeSidebarItem | string;
order: number;
}
let itemsWithOrder: Wrapped[] = [];
// 获取所有非隐藏文件和目录
const entries = fs.readdirSync(dir, { withFileTypes: true }).filter((e) => !e.name.startsWith('.'));
for (const entry of entries) {
const metaData = getMetaData(dir, entry);
if (!metaData) {
continue;
}
if (entry.isDirectory()) {
// 递归获取子目录内容
const children = getItems(path.join(dir, entry.name), false);
if (isRoot) {
// 一级目录,作为“专题”
const item = defineNoteConfig({
dir: metaData.baseName,
link: `/${metaData.baseName}/`,
text: metaData.title,
sidebar: children,
});
itemsWithOrder.push({ content: item, order: metaData.order });
} else {
// 非一级目录,作为可折叠的子目录
const item: ThemeSidebarItem = {
text: metaData.title,
// 只有当目录设置了index: true时才生成链接否则点击时不跳转、只切换折叠状态
link: metaData.index ? `${metaData.baseName}/` : undefined,
icon: metaData.icon,
// 目前没有文档使用了这个特性,故不处理
// badge: undefined,
collapsed: true,
// 前面不能加斜杠,必须用相对路径
prefix: `${metaData.baseName}/`,
items: children,
};
itemsWithOrder.push({ content: item, order: metaData.order });
}
} else if (entry.isFile() && entry.name.endsWith('.md') && entry.name.toLowerCase() !== 'readme.md') {
// 普通文件,取完整文件名作为链接
const item = entry.name;
itemsWithOrder.push({ content: item, order: metaData.order });
}
}
// 当前dir的内容读取完毕进行排序并返回返回时丢弃order
itemsWithOrder.sort((a, b) => a.order - b.order);
return itemsWithOrder.map((i) => i.content);
}
// 递归起点只有这里是一级目录isRoot传true
return getItems(langDir, true);
}

View File

@@ -0,0 +1,5 @@
export * from './zh-cn';
export * from './zh-tw';
export * from './en-us';
export * from './ja-jp';
export * from './ko-kr';

View File

@@ -0,0 +1,8 @@
import { defineNotesConfig } from 'vuepress-theme-plume';
import { genNotes } from './genSidebar';
export const jajpNotes = defineNotesConfig({
dir: 'ja-jp',
link: '/ja-jp/',
notes: genNotes('ja-jp'),
});

View File

@@ -0,0 +1,8 @@
import { defineNotesConfig } from 'vuepress-theme-plume';
import { genNotes } from './genSidebar';
export const kokrNotes = defineNotesConfig({
dir: 'ko-kr',
link: '/ko-kr/',
notes: genNotes('ko-kr'),
});

View File

@@ -0,0 +1,8 @@
import { defineNotesConfig } from 'vuepress-theme-plume';
import { genNotes } from './genSidebar';
export const zhcnNotes = defineNotesConfig({
dir: 'zh-cn',
link: '/zh-cn/',
notes: genNotes('zh-cn'),
});

View File

@@ -0,0 +1,8 @@
import { defineNotesConfig } from 'vuepress-theme-plume';
import { genNotes } from './genSidebar';
export const zhtwNotes = defineNotesConfig({
dir: 'zh-tw',
link: '/zh-tw/',
notes: genNotes('zh-tw'),
});

View File

@@ -1,88 +1,84 @@
export default {
appId: "99JM20SIFG",
apiKey: "7596a5a8c95cd64d4cf3050c9a4f878e",
indexName: "maa",
// 这里应该把所有本地化配置都放入 locales 中
locales: {
"/zh-cn/": {
placeholder: "搜索",
translations: {
button: {
buttonText: "搜索",
},
modal: {
searchBox: {
resetButtonTitle: "清除查询条件",
cancelButtonText: "取消",
},
startScreen: {
recentSearchesTitle: "搜索历史",
noRecentSearchesText: "没有搜索历史",
saveRecentSearchButtonTitle: "保存至搜索历史",
removeRecentSearchButtonTitle: "从搜索历史中移除",
favoriteSearchesTitle: "收藏",
removeFavoriteSearchButtonTitle: "从收藏中移除",
},
errorScreen: {
titleText: "无法获取结果",
helpText: "你可能需要检查你的网络连接",
},
footer: {
selectText: "选择",
navigateText: "切换",
closeText: "关闭",
searchByText: "搜索提供者",
},
noResultsScreen: {
noResultsText: "无法找到相关结果",
suggestedQueryText: "你可以尝试查询",
reportMissingResultsText: "你认为该查询应该有结果?",
reportMissingResultsLinkText: "点击反馈",
},
},
},
provider: 'algolia' as const,
appId: '99JM20SIFG',
apiKey: '7596a5a8c95cd64d4cf3050c9a4f878e',
indexName: 'maa',
locales: {
'/zh-cn/': {
placeholder: '搜索',
translations: {
button: {
buttonText: '搜索',
},
"/en-us/": {
placeholder: "Search",
translations: {
button: {
buttonText: "Search",
},
modal: {
searchBox: {
resetButtonTitle: "Clear the query",
cancelButtonText: "Cancel",
},
startScreen: {
recentSearchesTitle: "Recent",
noRecentSearchesText: "No recent searches",
saveRecentSearchButtonTitle: "Save this search",
removeRecentSearchButtonTitle:
"Remove this search from history",
favoriteSearchesTitle: "Favorite",
removeFavoriteSearchButtonTitle:
"Remove this search from favorites",
},
errorScreen: {
titleText: "Unable to fetch results",
helpText:
"You might want to check your network connection.",
},
footer: {
selectText: "to select",
navigateText: "to navigate",
closeText: "to close",
searchByText: "Search by",
},
noResultsScreen: {
noResultsText: "No results for",
suggestedQueryText: "Try searching for",
reportMissingResultsText:
"Believe this query should return results?",
reportMissingResultsLinkText: "Let us know.",
},
},
},
modal: {
searchBox: {
resetButtonTitle: '清除查询条件',
cancelButtonText: '取消',
},
startScreen: {
recentSearchesTitle: '搜索历史',
noRecentSearchesText: '没有搜索历史',
saveRecentSearchButtonTitle: '保存至搜索历史',
removeRecentSearchButtonTitle: '从搜索历史中移除',
favoriteSearchesTitle: '收藏',
removeFavoriteSearchButtonTitle: '从收藏中移除',
},
errorScreen: {
titleText: '无法获取结果',
helpText: '你可能需要检查你的网络连接',
},
footer: {
selectText: '选择',
navigateText: '切换',
closeText: '关闭',
searchByText: '搜索提供者',
},
noResultsScreen: {
noResultsText: '无法找到相关结果',
suggestedQueryText: '你可以尝试查询',
reportMissingResultsText: '你认为该查询应该有结果?',
reportMissingResultsLinkText: '点击反馈',
},
},
},
},
'/en-us/': {
placeholder: 'Search',
translations: {
button: {
buttonText: 'Search',
},
modal: {
searchBox: {
resetButtonTitle: 'Clear the query',
cancelButtonText: 'Cancel',
},
startScreen: {
recentSearchesTitle: 'Recent',
noRecentSearchesText: 'No recent searches',
saveRecentSearchButtonTitle: 'Save this search',
removeRecentSearchButtonTitle: 'Remove this search from history',
favoriteSearchesTitle: 'Favorite',
removeFavoriteSearchButtonTitle: 'Remove this search from favorites',
},
errorScreen: {
titleText: 'Unable to fetch results',
helpText: 'You might want to check your network connection.',
},
footer: {
selectText: 'to select',
navigateText: 'to navigate',
closeText: 'to close',
searchByText: 'Search by',
},
noResultsScreen: {
noResultsText: 'No results for',
suggestedQueryText: 'Try searching for',
reportMissingResultsText: 'Believe this query should return results?',
reportMissingResultsLinkText: 'Let us know.',
},
},
},
},
},
};

View File

@@ -0,0 +1,129 @@
import { defineThemeConfig } from 'vuepress-theme-plume';
import { zhcnNavbar, zhtwNavbar, enusNavbar, jajpNavbar, kokrNavbar } from './navbar';
import { zhcnNotes, zhtwNotes, enusNotes, jajpNotes, kokrNotes } from './notes';
export default defineThemeConfig({
logo: '/images/maa-logo_512x512.png',
appearance: true,
social: [
{ icon: 'qq', link: 'https://api.maa.plus/MaaAssistantArknights/api/qqgroup' },
{ icon: 'discord', link: 'https://discord.gg/23DfZ9uA4V' },
{ icon: 'telegram', link: 'https://t.me/+Mgc2Zngr-hs3ZjU1' },
{ icon: 'bilibili', link: 'https://space.bilibili.com/3493274731940507/' },
{ icon: 'github', link: 'https://github.com/MaaAssistantArknights/MaaAssistantArknights/' },
],
navbarSocialInclude: ['qq', 'discord', 'telegram', 'bilibili', 'github'],
aside: true,
// outline: [2, 3, 4, 5],
copyright: false,
prevPage: false,
nextPage: false,
createTime: false,
footer: false,
locales: {
'/zh-cn/': {
navbar: zhcnNavbar,
notes: zhcnNotes,
},
'/zh-tw/': {
navbar: zhtwNavbar,
notes: zhtwNotes,
},
'/en-us/': {
navbar: enusNavbar,
notes: enusNotes,
},
'/ja-jp/': {
navbar: jajpNavbar,
notes: jajpNotes,
},
'/ko-kr/': {
navbar: kokrNavbar,
notes: kokrNotes,
},
},
autoFrontmatter: false,
//plugins: {
// notice: [
// {
// path: "/zh-tw/",
// title: "翻译警告",
// content: "MAA 的文檔以簡體中文為主,其他語言的文檔可能品質低或尚未翻譯,請諒解。",
// fullscreen: true,
// confirm: true,
// showOnce: true,
// actions: [
// {
// text: "我知道了",
// type: "primary",
// },
// {
// text: "前往簡體中文",
// link: "/zh-cn/",
// },
// ],
// },
// {
// path: "/en-us/",
// title: "Translation Warning",
// content: "MAA's documents are mainly in Simplified Chinese. Documents in other languages may be of low quality or not yet translated. Please understand.",
// fullscreen: true,
// confirm: true,
// showOnce: true,
// actions: [
// {
// text: "Okay",
// type: "primary",
// },
// {
// text: "Take me to zh-CN",
// link: "/zh-cn/",
// },
// ],
// },
// {
// path: "/ja-jp/",
// title: "翻訳に関する警告",
// content: "MAA のドキュメントは主に簡体字中国語で書かれており、他の言語のドキュメントは低品質であるか、翻訳されていない可能性がありますので、ご了承ください。",
// fullscreen: true,
// confirm: true,
// showOnce: true,
// actions: [
// {
// text: "OK",
// type: "primary",
// },
// {
// text: "中国語サイトへ行く",
// link: "/zh-cn/",
// },
// ],
// },
// {
// path: "/ko-kr/",
// title: "번역 경고",
// content: "MAA의 문서는 주로 중국어 간체로 되어 있습니다. 다른 언어로 된 문서는 번역이 이상하거나, 번역이 되어있지 않을 수 있습니다.",
// fullscreen: true,
// confirm: true,
// showOnce: true,
// actions: [
// {
// text: "OK",
// type: "primary",
// },
// {
// text: "중국어 간체로 이동",
// link: "/zh-cn/",
// },
// ],
// },
// ],
//},
});

View File

@@ -0,0 +1 @@
docs.maa.plus

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,101 +0,0 @@
# This file MUST use GBK encoding, whatever the system language is.
# You may do more testing, but at least it works like this for me.
# Fuck Microsoft.
# 修改请使用 GBK 编码保存。
# 如果能用 UTF-8 保存而不乱码,那就去做,我实在是研究不明白微软的屎了。
# 你或许想加一条 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 来解决问题。
# 但很神奇的,这根本不管用,甚至还会让中文汉字渲染重叠在一起。
# 我在 CMD 里面都能 chcp 65001 换成 UTF-8。
# 微软什么时候能把 PowerShell 7 集成到系统里。
# 我由衷的认为 Windows 中预装的 PowerShell 就是一坨屎,甚至不如 CMD。
# 用 PowerShell 写这东西真成为了一盘醋包的饺子了。
# 检查 PowerShell 脚本运行策略
# 我真理解不了这个运行策略的存在意义了,明明叫脚本运行策略,却可以用脚本修改。
# 我既可以在不提权的情况下允许所有脚本运行,也可以直接启动一个运行所有脚本运行的会话。
# 本脚本在测试时发现,在不修改策略且不提权的情况下也可以正常运行,只是在安装运行库时需要点安装程序的 UAC 弹窗。
# 而不修改策略且提权时反而因为脚本策略运行不了了,这是什么品种的管理员权限。
# $ExecutionPolicy = Get-ExecutionPolicy
# if ($ExecutionPolicy -eq 'Restricted' -or $ExecutionPolicy -eq 'AllSigned') {
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Write-Host "已修改当前用户的 PowerShell 脚本运行策略为 RemoteSigned 以便运行此脚本。"
# Write-Host "这只需运行一次,且理应不会产生较大的安全风险。"
# Write-Host "如果您对此有疑虑,请在脚本运行结束后,在 PowerShell 中运行以下命令将策略值清空。"
# Write-Host "Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser"
# Pause
# }
# 获取 UAC 权限并启动一个 RemoteSigned 脚本策略会话
If (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {
Write-Host "正在获取管理员权限..."
Start-Process powershell.exe "-ExecutionPolicy RemoteSigned -File `"$PSCommandPath`" -ArgumentList `"$PSCommandPath`"" -Verb RunAs
Exit
}
# 读取系统代理并应用
$Internet_Settings = Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings'
if ($Internet_Settings.ProxyEnable -eq 1) {
$env:HTTP_PROXY = "http://$($Internet_Settings.ProxyServer)"
$env:HTTPS_PROXY = "http://$($Internet_Settings.ProxyServer)"
Write-Host "已应用系统代理:$($Internet_Settings.ProxyServer)"
}
# else {
# Write-Host "未启用系统代理。"
# }
Remove-Variable -Name Internet_Settings
# 新建下载用临时文件夹
New-Item -Path "$env:TEMP" -Name "MAA_Runtime_Fix_Pwsh" -ItemType "Directory" | Out-Null
# 使用 BITS 下载运行库安装包
Write-Host "正在下载运行库安装包..."
# Start-Sleep -Seconds 1
Start-BitsTransfer -Source "https://aka.ms/vs/17/release/vc_redist.x64.exe" -Destination "$env:TEMP\MAA_Runtime_Fix_Pwsh\vc_redist.x64.exe"
Start-BitsTransfer -Source "https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/8.0.11/windowsdesktop-runtime-8.0.11-win-x64.exe" -Destination "$env:TEMP\MAA_Runtime_Fix_Pwsh\windowsdesktop-runtime-8.0.11-win-x64.exe"
# 卸载 vc++ 和 dotnet8
Write-Host ""
Write-Host "尝试调用 WinGet 卸载已安装的运行库..."
winget uninstall "Microsoft.VCRedist.2015+.x64" "Microsoft.DotNet.DesktopRuntime.8" --force --all-versions
# 安装 vc++
Write-Host ""
Write-Host "正在安装/修复 Microsoft Visual C++ 可再发行程序包..."
$vcProcess = Start-Process "$env:TEMP\MAA_Runtime_Fix_Pwsh\vc_redist.x64.exe" -ArgumentList '/repair', '/passive', '/norestart' -PassThru
$vcProcess.WaitForExit()
# 安装 dotnet8
Write-Host "正在安装/修复 .NET 桌面运行时 8..."
$dotnetProcess = Start-Process "$env:TEMP\MAA_Runtime_Fix_Pwsh\windowsdesktop-runtime-8.0.11-win-x64.exe" -ArgumentList '/repair', '/passive', '/norestart' -PassThru
$dotnetProcess.WaitForExit()
# 删除临时文件夹
Write-Host ""
Write-Host "正在清理临时文件..."
Remove-Item -Path "$env:TEMP\MAA_Runtime_Fix_Pwsh" -Recurse -Force
Write-Host "运行库修复完成,请再次尝试运行 MAA。"
Write-Host ""
Pause
# 使用 winget 安装/更新运行库并卸载旧版本
# winget install "Microsoft.VCRedist.2015+.x64" "Microsoft.DotNet.DesktopRuntime.8" --uninstall-previous --accept-package-agreements
# 使用 winget 下载运行库安装包
# winget download --id "Microsoft.VCRedist.2015+.x64" -d "$env:TEMP\MAA_Runtime_Fix_Pwsh\"
# winget download --id "Microsoft.DotNet.DesktopRuntime.8" -d "$env:TEMP\MAA_Runtime_Fix_Pwsh\"
# 不使用 winget 卸载 vc++
# 会进行卸载 但是卸不掉
# Get-Package -Name "Microsoft Visual C++ 2015-2022 Redistributable (x64) - *" | Uninstall-Package -Force
# 不使用 winget 卸载 dotnet8
# 会进行卸载 但是卸不掉
# Get-Package -Name "Microsoft Windows Desktop Runtime - 8.* (x64)" | Uninstall-Package -Force
# 下载安装包那里注释了一个睡一秒是因为本来下载文件的那个进度条会把上面输出过的所有内容都覆盖掉,上来就只能看到个下载进度条,别的啥也看不到。
# 但当我去掉新建文件夹时输出的一大坨东西之后,这行就能露出来了。
# 我建议每个人都去看一下 PowerShell 的 New-Item 新建文件夹能输出多大一坨玩意。
# 还有 PowerShell 弱智一样的进度条显示机制,非得搞个固定不透明一大坨的浮窗上去干什么,就不能和别人一样在命令底部显示吗。
# 再用 Pwsh 写脚本我就是傻逼。

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Some files were not shown because too many files have changed in this diff Show More