Compare commits

...

404 Commits

Author SHA1 Message Date
uye
2b179c673c chore: ui 日志增加 adb devices 输出 2025-10-24 23:11:40 +08:00
uye
e48cb49e4a chore: 基建降低会清空其他干员效率的技能优先级
fix #14524
2025-10-24 22:51:31 +08:00
github-actions[bot]
7f7b124bc7 chore: Auto Update Game Resources - 2025-10-24
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18781459022

[skip changelog]
2025-10-24 13:38:14 +00:00
uye
2c656db087 Release v5.27.0-beta.1 (#14502) 2025-10-24 00:24:44 +08:00
SherkeyXD
63420e9808 docs: 优化文档代码的高亮主题 2025-10-23 23:24:47 +08:00
github-actions[bot]
d8207fb5b5 docs: Auto Update Changelogs of v5.27.0-beta.1 (#14523)
* docs: Auto Generate Changelog of Release v5.27.0-beta.1

* docs: Fix formatting and update entries in 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-10-23 23:19:40 +08:00
萨拉托加
cb9bc0f87f chore: 同心暂时去掉5选项 2025-10-23 23:04:04 +08:00
Weiyou Wang
f863a6f4b6 fix: 降低萨米肉鸽进入 “诡秘的预感” 所需模版匹配分数阈值 (#14521) 2025-10-23 22:46:10 +08:00
萨拉托加
2651b1bc01 fix: 公招按钮roi错误
fix #14514
2025-10-23 12:12:32 +08:00
晓丶梦丶仁
99b4e75567 fix: JP Task.png (#14516)
* fix: JP Task.png
2025-10-23 12:10:31 +08:00
Weiyou Wang
904a8f3d4c fix: 掉落识别修复 (#14508) 2025-10-23 01:15:22 +08:00
github-actions[bot]
7c710fcee5 chore: Auto Templates Optimization
Triggered by a6a3451217

[skip changelog]
2025-10-22 16:06:15 +00:00
pre-commit-ci[bot]
a6a3451217 chore: Auto update by pre-commit hooks [skip changelog] 2025-10-22 16:05:45 +00:00
pre-commit-ci[bot]
93a0e2d4a1 chore: Auto update by pre-commit hooks [skip changelog] 2025-10-23 00:03:17 +08:00
SherkeyXD
7f6622e51d feat: 界面主题「齐聚」 2025-10-23 00:03:17 +08:00
SherkeyXD
0b533468d1 chore: GetImageFromRoi 工具优化 2025-10-23 00:03:17 +08:00
Constrat
6d26ccace1 chore: remove global templates for 3294b29f54 2025-10-22 17:03:58 +02:00
HY
c101f9cea6 chore: txwy add SwitchTheme@ConfirmThemeChange.png (#14511)
* chore: txwy add SwitchTheme@ConfirmThemeChange.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-10-22 16:29:46 +02:00
github-actions[bot]
f5921c7293 chore: Auto Update Game Resources - 2025-10-22
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18715072426

[skip changelog]
2025-10-22 11:45:27 +00:00
Weiyou Wang
880bdea7d3 refactor: 将 Copilot ActionType::ResetTimer 更改为更适合的 ResetStopwatch (#14507)
* refactor: 为 ActionType::ResetTimer 加入中文变种

* refactor: Timer -> Stopwatch
2025-10-22 22:20:50 +11:00
Weiyou Wang
9c53ea10c6 docs: 补充模拟器相关文档和协议文档 (#14478)
* docs: 为 #13913 跳过使用未准备好的技能 && 全局计时器补充作业协议文档

* docs: MuMu 模拟器显存使用策略警告。

* docs: 删除冗余的蓝叠模拟器 faq

* docs: 补充外服 CopilotTask 文档

* docs: 改改

* docs: timer -> stopwatch

docs: 繁体中文文档里的指令简体化 —— 我们并不支持繁体指令啊

---------

Co-authored-by: Rbqwow <55343783+Rbqwow@users.noreply.github.com>
2025-10-22 21:49:20 +11:00
uye
9ea6057145 fix: 变更弃用的参数 2025-10-22 17:04:51 +08:00
uye
05b377981a fix: 开始唤醒会回到主界面 2025-10-22 16:49:38 +08:00
github-actions[bot]
465c2bcf62 chore: Auto Templates Optimization
Triggered by 3294b29f54

[skip changelog]
2025-10-22 08:44:58 +00:00
uye
3294b29f54 chore: 调整截图 2025-10-22 16:44:25 +08:00
uye
f967903a4b feat: 资源更新完成后等待空闲时再加载
fix: #14500
2025-10-22 16:35:51 +08:00
萨拉托加
7622cff5b4 feat: 界园DLC新关卡战斗逻辑 2025-10-22 15:34:53 +08:00
github-actions[bot]
4e36c78691 chore: Auto Templates Optimization
Triggered by afb0f8f647

[skip changelog]
2025-10-22 07:15:00 +00:00
uye
afb0f8f647 chore: 文件路径错误 2025-10-22 15:14:22 +08:00
Weiyou Wang
35e437d372 fix: 尝试为活动商店小游戏适配新的时装购买动画 (#14490)
* fix: 尝试为活动商店小游戏适配新的时装购买动画

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

* 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-10-22 15:00:52 +08:00
Initial-heart
3d9732a930 docs: 添加关于实体设备上账号切换问题的说明 (#14468)
* docs: 加一段关于实体设备上账号切换问题的说明

rt

* docs: 调整措辞和格式

* docs: 修正措辞

* docs: ko-kr

* i18n: en-us translation

* i18n: ja-jp translation

* docs: zh-tw

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

---------

Co-authored-by: Lucien Shaw <myxlc55@outlook.com>
Co-authored-by: HX3N <scarlet7518@gmail.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
Co-authored-by: Manicsteiner <Manicsteiner@outlook.com>
Co-authored-by: momomochi987 <as99us301@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-22 09:15:39 +08:00
github-actions[bot]
d12588f62b chore: Auto Templates Optimization
Triggered by e3d48ae65d

[skip changelog]
2025-10-22 00:47:15 +00:00
Manicsteiner
e3d48ae65d chore: YostarJP SwitchTheme@ConfirmThemeChang 2025-10-22 08:46:15 +08:00
HX3N
2a2e360f3e chore: YostarKR add SwitchTheme@ConfirmThemeChang
ref 979e0c4b1b
2025-10-22 08:46:54 +09:00
Constrat
df5af18b93 fix: precommit maacore 2025-10-21 21:02:23 +02:00
Constrat
55b3cdafaa chore: add SwitchTheme@ConfirmThemeChange.png 2025-10-21 21:02:13 +02:00
github-actions[bot]
538760dbbe chore: Auto Templates Optimization
Triggered by 979e0c4b1b

[skip changelog]
2025-10-21 18:29:00 +00:00
uye
979e0c4b1b feat: 不是我认识的主题,直接切换 2025-10-22 02:28:17 +08:00
github-actions[bot]
d9eb1e50d9 chore: Auto Update Game Resources - 2025-10-21
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18689594250

[skip changelog]
2025-10-21 15:46:43 +00:00
Constrat
7e9f862f62 test: remove cancelled() and add mentions 2025-10-21 15:31:56 +02:00
Constrat
20c86b0fff fix: change default issue + remove always as not necessary 2025-10-21 15:31:06 +02:00
Constrat
072a98dd41 fix: add always() 2025-10-21 15:26:20 +02:00
Constrat
a053e6547d ci: test using a single issue by adding comments and hiding previous comments 2025-10-21 15:23:17 +02:00
Constrat
bfcb02104c ci: increase sleep delay for resource updater 2025-10-21 14:42:01 +02:00
Lucien Shaw
1e9ae031ea ci: refine display names for existing workflows (#14419)
---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-10-21 14:37:49 +02:00
github-actions[bot]
d70d939947 chore: Auto Templates Optimization
Triggered by 37ad3a2f35

[skip changelog]
2025-10-21 09:10:28 +00:00
github-actions[bot]
37ad3a2f35 chore: Auto Update Game Resources - 2025-10-21
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18678814343

[skip changelog]
2025-10-21 09:09:47 +00:00
github-actions[bot]
7d233513ff chore: Auto Update Game Resources - 2025-10-21
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18676270061

[skip changelog]
2025-10-21 07:29:13 +00:00
Goat Boring(山羊博宁88)
b93d39b77e docs: 在不支持列表中添加腾讯应用宝 (#14477)
* docs: Add Tencent App Treasure note in notSupport list

* 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-10-21 10:49:00 +08:00
Constrat
c91c1ff279 style: run prettier as there's missing stuff apparently 2025-10-20 21:30:13 +02:00
status102
d7524a4f9e perf: 进入新任务后重置任务超时计时器, 以避免非单任务卡阻的误报 2025-10-21 03:00:35 +08:00
status102
fff05d45b5 perf: ProcSubTask static 2025-10-21 02:36:49 +08:00
SherkeyXD
201c856594 chore: 我是铸币 2025-10-21 00:12:33 +08:00
SherkeyXD
97756b1200 feat: 界园 dlc2 通宝数据更新 2025-10-20 23:48:16 +08:00
uye
79bea9b98d fix: 无人机协助点击无效时增加自动重试机制
fix #13327
2025-10-20 23:37:52 +08:00
dependabot[bot]
f94a79a1a3 ci: bump actions/setup-node from 5 to 6 in /.github/workflows in the github-actions group (#14475)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 23:30:34 +08:00
Status102
eb90a19e8b docs: 增加换行以提升文档在GitHub的阅读体验 (#14338) 2025-10-20 23:27:04 +08:00
SherkeyXD
957b486c53 fix: 每日任务领取延迟载荷移位 2025-10-20 23:20:37 +08:00
SherkeyXD
87a892ad7a fix: 每日任务领取因为延迟卡住 2025-10-20 23:16:00 +08:00
SherkeyXD
363c4dbb47 docs: vscode插件文档视觉优化 2025-10-20 22:32:59 +08:00
SherkeyXD
b639fd3a62 docs: 利用tabs优化视觉表现-part2 2025-10-20 22:32:58 +08:00
SherkeyXD
8bbd104ea6 docs: 利用tabs优化视觉表现 2025-10-20 22:32:58 +08:00
uye
b63bd4b6eb feat: 支持剿灭关卡名识别 2025-10-20 22:27:26 +08:00
SherkeyXD
7264f26b14 docs: 利用步骤容器优化视觉效果-part2 2025-10-20 21:50:56 +08:00
SherkeyXD
e3be737a3c docs: 利用步骤容器优化视觉效果 2025-10-20 21:45:29 +08:00
SherkeyXD
e5a823d476 docs: 更新algolia配置 2025-10-20 21:27:43 +08:00
uye
25513ab692 chore: ALL~ the Announcements 中新公告标题中加 * 2025-10-20 21:26:10 +08:00
HY
26acc07463 fix: 繁中服無法進入資源收藏關卡 (#14469) 2025-10-20 10:23:43 +08:00
Constrat
38a801a8c1 i18n: translate ElapsedTime
ref: 1edd006982
2025-10-20 01:16:31 +02:00
Weiyou Wang
1edd006982 feat: 跳过使用未准备好的技能 && 全局计时器 (#13913)
* feat: skip_if_not_ready

* feat: elapsed_time

* feat: WpfGui log 输出计时器信息

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

* feat: 不默认启用全局计时器

* refactor: 支持 ResetTimer 拼写变种

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-20 01:35:37 +11:00
Weiyou Wang
45025dd168 fix: 为界园放弃探索任务添加备用模版 (#14466)
* fix: add alternative template for JieGarden@Roguelike@Abandon

* 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-10-19 23:19:59 +11:00
github-actions[bot]
3b10c1518a chore: Auto Update Game Resources - 2025-10-19
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18630203409

[skip changelog]
2025-10-19 12:12:03 +00:00
Weiyou Wang
5efdab7fbf fix: 肉鸽跳一战打一战刷钱 (#14450)
* refactor: 在 RoguelikeConfig 中加入 skip_recruit_in_fast_pass flag,用于判断是否在特定情况下跳过招募

* refactor: refine 一下 RoguelikeRecruit-GiveUp 任务

* refactor: 重命名 RoutingStrategy

* feat: 一战快速投资/烧水

* refactor: 合并冗余 Roguelike@RoutingConfig 任务,重命名为 RoguelikeRouting-Config

* refactor: 统一 RoguelikeRoutingAction 命名

* refactor: 统一导航插件任务命名

* refactor: 这些任务不需要用 RoguelileRoutingAction

* fix: 重命名相关模版

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

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

* fix: 漏网之鱼

* refactor: MapNode 模版搬家

* refactor: 岁兽残识导航相关任务搬家

* refactor: 改改任务名

* refactor: 模版改名 Roguelike@MapNodeX -> RoguelikeMapNode-X

* refactor: 换一个似乎更简单的写法

* fix: 忘了外服了

* refactor: 漏了这个

* 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-10-19 22:49:08 +11:00
uye
930de73324 feat: 本次更新的公告右上角添加红点 2025-10-18 23:22:58 +08:00
萨拉托加
527ebee6af fix: 傀影不期而遇选项 2025-10-18 20:27:50 +08:00
github-actions[bot]
c24baee8ff chore: Auto Update Game Resources - 2025-10-18
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18613855248

[skip changelog]
2025-10-18 09:28:09 +00:00
Weiyou Wang
11f9d6e0a4 refactor: 拆出界园岁兽残识地图导航 (#14432)
* refactor: 舍弃 AbstractRoguelikeMap,拆到 RoguelikeMapConfig 与 RoguelikeBoskyPassageMap

* refactor: 拆出界园岁兽残识地图导航
2025-10-18 20:15:36 +11:00
Weiyou Wang
6733f49d8b fix: 界园 dlc 背景无法放弃探索 (#14425)
* fix: refine template for JieGarden@Roguelike@Abandon

* 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-10-18 15:27:27 +08:00
萨拉托加
e7f909c807 fix: 界园狭路相逢选项 2025-10-18 10:39:36 +08:00
HX3N
147cf766c1 fix: YostarKR RoguelikeCustom-HijackSquad squad recognition 2025-10-18 00:37:52 +09:00
HY
b9edba6cf5 chore: 繁中服主線、肉鴿導航 UI 更新 (#14433)
* chore: 繁中服主線、肉鴿導航 UI 更新

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

* chore: sarkaz DLC

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-17 22:43:27 +08:00
HY
39326e177b chore: 繁中服「輓歌燃燒殆盡」活動導航 (#14434)
* 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-10-17 22:42:22 +08:00
萨拉托加
e6cfa25f81 fix: Award模板阈值还是小了
fix #14431
2025-10-17 19:53:26 +08:00
MistEO
2c247bbeda fix: 掉落识别增加越界检查 (#14312)
Co-authored-by: Weiyou Wang <44151844+Alan-Charred@users.noreply.github.com>
2025-10-17 16:08:54 +08:00
萨拉托加
af69b6172c fix: 界园杂疑选项 2025-10-17 14:22:55 +08:00
github-actions[bot]
5626880d19 chore: Auto Update Game Resources - 2025-10-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18584128794

[skip changelog]
2025-10-17 06:11:57 +00:00
Jim-Happy
445ce5352f fix: 修复 "设置-外部通知" 存在多个通知渠道时只会发送到第一个成功的渠道问题 (#14380)
* feat: 添加选项:发送到所有通知渠道

* style: 删除调试注释

* refactor(settings): 删除原PR逻辑,改为修复通知驱动只通知一个的bug

删除原PR逻辑,改为修复通知驱动只通知一个的bug
2025-10-17 13:55:29 +08:00
travellerse
dce6fbfbce feat: 添加刷常乐节点策略 (#13868)
* feat: 支持识别常乐节点的子类型

* perf: 将树洞节点优先级拆到配置里

* refactor: 将界园树洞策略从通用Routing策略中分离出来

* feat: 初步实现刷常乐节点

* feat: 为刷常乐节点功能添加UI

* refactor: 重命名节点类型获取函数

* perf: 优化节点类型的日志输出

* feat: 添加发现目标常乐节点后退出

* i18n: CN常乐节点显示文本

* fix: 修复type2name映射初始化潜在问题

* perf: 添加目标子类型的设置和获取方法

* refactor: 优化优先级节点类型解析逻辑

* feat: 刷常乐节点策略下保存路上的招募券

* i18n: 为其它语言提供占位

* perf: 将新增的本地化键值放到一起

* chore: 调整日志输出中的空格

* perf: 仅在非开局招募时保存招募券

* perf: 保留招募券到达上限时正常招募

* fix: 修复gui日志输出没有使用本地化

* fix: 给界园树洞节点点击加上200ms的前置延时

* perf: 在 RoguelikeRoutingTaskPlugin 中添加运行模式以区分普通地图与界园树洞

* refactor: 优化RoguelikeBoskyPassageMap的单例使用

* feat: 添加界园树洞节点类型wpf输出及其颜色配置

* fix: 不在每次开始肉鸽重置m_target_subtype
2025-10-17 16:54:30 +11:00
github-actions[bot]
724130da50 chore: Auto Update Game Resources - 2025-10-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18583431830

[skip changelog]
2025-10-17 05:29:46 +00:00
萨拉托加
12315868c7 fix: 界园肉鸽选项 2025-10-17 13:08:00 +08:00
萨拉托加
230b3b9169 fix: 给ClickToStartPoint加点延迟
fix #14421
2025-10-17 12:51:01 +08:00
github-actions[bot]
3c61b10de5 chore: Auto Update Game Resources - 2025-10-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18582491372

[skip changelog]
2025-10-17 04:31:47 +00:00
萨拉托加
5456428eb7 fix: 萨卡兹去伪存真弹窗有延迟无法退出 2025-10-17 12:21:06 +08:00
github-actions[bot]
1ca780ef0d chore: Auto Update Game Resources - 2025-10-17
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18581606017

[skip changelog]
2025-10-17 03:35:51 +00:00
HX3N
8f3ff813a1 chore: YostarKR SSS#8 SSSBuffChoose 2025-10-17 11:38:29 +09:00
Constrat
a4688ebeed chore: update SSS#8 buff choose ocr for EN 2025-10-16 22:08:30 +02:00
Constrat
7d028cdbd5 chore: SSS#8 global changes (add acahuallan, remove dossoles and barrenbeasts) 2025-10-16 22:03:28 +02:00
Constrat
ef187657ba fix: cleanup ifdef + fix AsstDestroy missed calls + lldb 2025-10-16 21:49:14 +02:00
Constrat
403f3c5644 Release v5.26.2 (#14399) 2025-10-16 20:08:32 +02:00
不留
369add1890 ci: 为 CodeQL 相关工作流添加仓库所有者检查 (#14413)
* ci: 为 CodeQL 相关工作流添加仓库所有者检查

* ci: 为 CodeQL 相关工作流添加仓库所有者检查
2025-10-16 20:04:23 +02:00
github-actions[bot]
0ae21436c8 chore: Auto Templates Optimization
Triggered by a322706241

[skip changelog]
2025-10-16 14:38:37 +00:00
pre-commit-ci[bot]
a322706241 chore: Auto update by pre-commit hooks [skip changelog] 2025-10-16 14:38:00 +00:00
Constrat
ec2b92002b fix: Fix contro center mini for EN 2025-10-16 16:34:34 +02:00
晓丶梦丶仁
36dd631606 fix: MiniGame Value 重复 2025-10-16 17:10:48 +08:00
github-actions[bot]
a201b3da65 chore: Auto Update Game Resources - 2025-10-16
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18556208810

[skip changelog]
2025-10-16 09:09:46 +00:00
晓丶梦丶仁
7421100998 fix: JP GreenGrass 2025-10-16 16:44:19 +08:00
萨拉托加
e98ff0ee35 fix: 萨米肉鸽深入探索触发暂时撤退会卡住 (#14275)
* fix: 萨米肉鸽深入探索触发暂时撤退会卡住

不知道MissionFailedFlag原来的next有什么用,暂时撤退的话感觉next个MissionCompletedFlag就够了

* chore: 加点延迟
2025-10-16 15:50:32 +08:00
Lucien Shaw
d7acdfda36 docs: 为文档站字符画组件更换缩放方法和添加主题切换支持 (#14387)
* docs: 文档站字符画组件的大小调整改用transform: scale

* docs: 字符画适应窗口垂直高度

* chore: 我们精简了字符画,这样你才知道这是字符画

* fix: 调整字符画尺寸前先判断分母是否为0

* refactor: 字符画组件卸载时一并移除窗体resize事件监听

* feat: 切换主题时保留当前随机到的字符画名称

* style: prettier fix
2025-10-16 15:37:39 +08:00
github-actions[bot]
6dfffdc45b chore: Auto Templates Optimization
Triggered by 6834ee1abe

[skip changelog]
2025-10-16 04:34:13 +00:00
HX3N
6834ee1abe fix: YostarKR update Infrast Mini tempalte 2025-10-16 13:28:54 +09:00
Manicsteiner
a571e974b6 chore: YostarJP RecruitingActivities 2025-10-16 08:58:16 +08:00
github-actions[bot]
2440f365c9 docs: Auto Update Changelogs of v5.26.2 (#14400)
* docs: Auto Generate Changelog of Release v5.26.2

* i18n: simple highlight for global

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-10-15 18:40:15 +02:00
Constrat
f182d36014 fix: RecruitingActivities EN 2025-10-15 16:18:03 +02:00
github-actions[bot]
cd6a3efc4e chore: Auto Update Game Resources - 2025-10-15
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18530257413

[skip changelog]
2025-10-15 13:19:46 +00:00
Manicsteiner
3ee20cee2e chore: YostarJP ocr update (#14402) 2025-10-15 11:01:05 +02:00
HX3N
d9aa14333e fix: KR update RecruitingActivities ocr text 2025-10-15 09:44:28 +09:00
github-actions[bot]
a1cc9df6bd chore: Auto Templates Optimization
Triggered by 9313a606f2

[skip changelog]
2025-10-15 00:10:10 +00:00
HX3N
9313a606f2 fix: BattleQuickFormation KR 2025-10-15 09:05:25 +09:00
github-actions[bot]
3c6c7624dd chore: Auto Templates Optimization
Triggered by 0e00b05128

[skip changelog]
2025-10-14 21:47:56 +00:00
Constrat
0e00b05128 fix: ReceptionMini for EN 2025-10-14 23:47:35 +02:00
Constrat
fbf8b5636d chore: revert temp fix 715c2c13b5 for EN / JP and KR
@momomochi987this will likely happen to txwy... Try to remember?
2025-10-14 23:26:08 +02:00
Constrat
c535cbdf6d fix: Various store OCR for EN IS 2025-10-14 23:20:56 +02:00
Constrat
a872c08a32 fix: MT minigame EN 2025-10-14 23:20:32 +02:00
Manicsteiner
ff457fbd21 chore: Enable phantom roguelike difficulty for Yostar servers (#14332)
* chore: enable phantom roguelike difficulty for Yostar servers

* chore: JP translate
2025-10-14 23:10:01 +02:00
Constrat
b4fcf37b35 i18n: update MT mini event EN 2025-10-14 23:09:04 +02:00
github-actions[bot]
b5ba39174d chore: Auto Templates Optimization
Triggered by 319ee8876a

[skip changelog]
2025-10-14 21:05:58 +00:00
Constrat
319ee8876a fix: operbox, battlequick, infrast expand role EN 2025-10-14 23:05:33 +02:00
Constrat
2a8b0f7f01 fix: Exusiai and Hoshiguma prepare for alters 2025-10-14 20:25:59 +02:00
Constrat
a7dc1f791f fix: increase ROI for Orundum and SpecialAccess 2025-10-14 20:04:16 +02:00
HX3N
16a160f3a5 chore: YostarKR MT ocr edit (#14398)
* chore: YostarKR MT ocr edit

* chore: IS1 dlc
2025-10-14 19:58:54 +02:00
Constrat
7676b7235b fix: OrundumActivities MT event for EN 2025-10-14 17:13:18 +02:00
github-actions[bot]
e100cc68e2 chore: Auto Update Game Resources - 2025-10-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18496105506

[skip changelog]
2025-10-14 12:14:33 +00:00
github-actions[bot]
5923efe988 chore: Auto Update Game Resources - 2025-10-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18494958090

[skip changelog]
2025-10-14 11:27:27 +00:00
HX3N
6b91bd8106 chore: YostarKR MiniGame (#14395)
* chore: YostarKR MiniGame

* chore: fix typo
2025-10-14 11:50:38 +02:00
github-actions[bot]
24df42e14a chore: Auto Update Game Resources - 2025-10-14
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18484871142

[skip changelog]
2025-10-14 03:49:09 +00:00
Manicsteiner
6fc5800e02 chore: YostarJP update VisitNext (#14390) 2025-10-13 16:17:00 +02:00
dependabot[bot]
eb91fc34a6 ci: bump the github-actions group in /.github/workflows with 2 updates (#14391)
Bumps the github-actions group in /.github/workflows with 2 updates: [softprops/action-gh-release](https://github.com/softprops/action-gh-release) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `softprops/action-gh-release` from 2.3.4 to 2.4.1
- [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.4...v2.4.1)

Updates `github/codeql-action` from 3 to 4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: github/codeql-action
  dependency-version: '4'
  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-10-13 16:15:31 +02:00
萨拉托加
03f71f02cb chore: 调整Award模板阈值 2025-10-13 14:38:38 +08:00
github-actions[bot]
966c7a251a chore: Auto Templates Optimization
Triggered by 3b74c1c4c9

[skip changelog]
2025-10-12 12:50:04 +00:00
Constrat
3b74c1c4c9 fix: update ChooseDifficulty for EN phantom 2025-10-12 14:49:39 +02:00
Constrat
295e7742f1 fix: revert IS2 EN StrategyChange changes 2025-10-12 14:49:22 +02:00
Constrat
bfdd20f6ff fix: add IS2 invest mode to EN, JP and txwy
cc @Manicsteiner @momomochi987

28a768a changed unilaterally tasks that were dependant on global
5516809 fixed but I forgot to add Phantom back
2025-10-12 14:49:05 +02:00
MistEO
63cce9811f docs: update prts.plus repo link 2025-10-12 20:02:28 +08:00
MistEO
0bed1d777a docs: 移除前端公招 2025-10-12 19:59:57 +08:00
Constrat
8ec0974d1b ci: add ownership check to Deploy to GitHub Pages
thanks to @weinibuliu
2025-10-12 13:46:33 +02:00
不留
6d9a6e5a4b ci: Add repo owner judgment to some steps of website-workflow.yml (#14378)
* ci: 为 website-workflow 增加仓库所有者判断

* ci: update workflow

* ci: move ownership check to only configure-gh-pages

---------

Co-authored-by: Constrat <56174894+Constrat@users.noreply.github.com>
2025-10-12 13:38:02 +02:00
Constrat
7079975bd2 chore: auto run smoke testing on tools/SmokeTesting modifications 2025-10-11 22:53:01 +02:00
Constrat
f06030ac44 ci(revert): remove lldb as it just crashed the workflow erroring out 2025-10-11 22:52:11 +02:00
Constrat
b56d60aa8f fix: POSIX compliant 2025-10-11 22:43:16 +02:00
Constrat
d7f936cb3c ci(fix): use sh for smoketesting 2025-10-11 22:34:24 +02:00
Constrat
b7b80ebbea fix: preload Minigame EN 2025-10-11 20:43:55 +02:00
HX3N
daa4eab296 chore: YostarKR preload minigame (#14375) 2025-10-11 20:35:16 +02:00
Constrat
fad643985e fix: python formatting 2025-10-11 12:52:05 +02:00
HX3N
b562b6b231 fix: KR monthly card reward 2025-10-11 08:19:26 +09:00
Lucien Shaw
aa89062bdf docs: 更新plume主题并适应新版的collections配置 (#14360)
* chore: 更新pnpm版本

* chore: 更新plume主题

* docs: 适应新版文档主题的collections配置

* style: pre-commit fix
2025-10-10 21:11:54 +08:00
github-actions[bot]
374e9ed1f2 chore: Auto Update Game Resources - 2025-10-10
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18406450197

[skip changelog]
2025-10-10 12:26:59 +00:00
Constrat
959063b34c fix(ci): task sorter UTF-8 BOM fix 2025-10-10 14:25:37 +02:00
Constrat
fbf16d00c1 chore: preload minigame for MT EN 2025-10-10 14:12:10 +02:00
Manicsteiner
bacc34531e chore: YostarJP MT stages and Duel channel (#14362)
* chore: YostarJP MT stages and Duel channel
2025-10-10 14:01:30 +02:00
HX3N
6507ac0072 chore: KR MT navigation (#14365)
* chore: KR MT navigation
2025-10-10 13:59:10 +02:00
Constrat
965b6f69ce fix: EN monthly card reward 2025-10-10 13:51:01 +02:00
github-actions[bot]
eb924b816d chore: Auto Templates Optimization
Triggered by 72bc6d8ace

[skip changelog]
2025-10-10 10:58:15 +00:00
HX3N
72bc6d8ace fix: YostarKR update VisitNext
ref #14357
2025-10-10 19:57:39 +09:00
Constrat
df1a16aca3 feat: preload MT navigation EN
@Manicsteiner @HX3N Just a heads up. The tweets have been posted
2025-10-10 12:16:51 +02:00
Constrat
87f4440209 fix: update VisitNext
ref #14357
2025-10-10 12:05:57 +02:00
uye
76252d42e3 style: c# 统一使用文件范围限定的 namespace 2025-10-10 13:36:18 +08:00
github-actions[bot]
cca22c1493 chore: Auto Update Game Resources - 2025-10-10
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18396496857

[skip changelog]
2025-10-10 04:31:39 +00:00
github-actions[bot]
b0ddb9e28e chore: Auto Templates Optimization
Triggered by 3195129fa7

[skip changelog]
2025-10-10 04:24:57 +00:00
uye
3195129fa7 feat: 支持访问好友半透明界面 2025-10-10 12:24:23 +08:00
status102
42bd5ceaf0 chore: 16-16地图 2025-10-10 12:01:13 +08:00
github-actions[bot]
aae1faef41 chore: Auto Update Game Resources - 2025-10-10
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18395654688

[skip changelog]
2025-10-10 03:34:29 +00:00
Constrat
baf3bc69ca i18n: remove global info for mumu 2025-10-10 00:11:14 +02:00
uye
fde7e7dfa4 Release v5.26.1 (#14351) 2025-10-10 01:08:02 +08:00
github-actions[bot]
0af9034bad docs: Auto Update Changelogs of v5.26.1 (#14352)
* docs: Auto Generate Changelog of Release v5.26.1

* docs: Release v5.26.1 with new features and fixes

This version introduces initial support for the Rebuilding Mandate and significant improvements to the Auto I.S. recruitment strategy, enhancing gameplay experience and fixing various issues.

---------

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-10-10 00:50:43 +08:00
uye
516d47bb9d fix: 游戏更新公招界面后无法确认招募 (#14335)
* 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-10-10 00:32:48 +08:00
uye
afc16cf6e6 feat: 新增 cdk 被封禁的提示信息 2025-10-10 00:16:47 +08:00
uye
e52f573a7f fix: 第一次访问 mirror酱 失败时错误提示 cdk 已过期 2025-10-10 00:16:47 +08:00
MistEO
04206e7e5e ci: use sh install zsh to fix resource updater
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18378946272/job/52360092110

Zsh seems to treat the array as a whole string and cannot split it, resulting in traversal errors @Constrat
2025-10-09 22:16:48 +08:00
MistEO
8c71f709db fix: resource version 2025-10-09 21:22:38 +08:00
github-actions[bot]
7f6b490d00 chore: Auto Update Game Resources - 2025-10-09
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18377623299

[skip changelog]
2025-10-09 13:18:11 +00:00
github-actions[bot]
a0bd928f75 chore: Auto Update Game Resources - 2025-10-09
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18370407108

[skip changelog]
2025-10-09 08:33:27 +00:00
github-actions[bot]
fc7c823b9f chore: Auto Update Game Resources - 2025-10-09
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18367676923

[skip changelog]
2025-10-09 06:33:51 +00:00
MistEO
488b16e8e7 fix: Update last_updated date in version.json 2025-10-09 09:07:03 +08:00
MistEO
fcc146ad2a fix: Update last_updated timestamp in version.json 2025-10-09 09:06:16 +08:00
github-actions[bot]
64ec655631 chore: Auto Templates Optimization
Triggered by 35cf87547c

[skip changelog]
2025-10-08 23:09:46 +00:00
github-actions[bot]
35cf87547c chore: Auto Update Game Resources - 2025-10-08
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18360388224

[skip changelog]
2025-10-08 23:08:38 +00:00
uye
4db7a06f01 fix: 手动关闭模拟器后未重启 MAA 时 minitouch 可能失效 2025-10-08 16:48:27 +08:00
Weiyou Wang
24bb443e08 docs: 补充 CopilotTask 的文档 (#14319) 2025-10-08 19:28:21 +11:00
Weiyou Wang
02133548c4 fix: 尝试修复生息演算任务识别并删除编队时卡住的问题 (#14290)
* fix: 尝试修复生息演算任务识别并删除编队时卡住的问题

* refactor: 改用 #self
2025-10-08 16:07:45 +08:00
uye
eff2818404 refactor: 使用 BeginAnimation 替代 新建 Storyboard 并添加动画 2025-10-07 21:38:43 +08:00
dependabot[bot]
8017430308 ci: bump the github-actions group across 1 directory with 2 updates (#14311)
Bumps the github-actions group with 2 updates in the /.github/workflows directory: [softprops/action-gh-release](https://github.com/softprops/action-gh-release) and [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact).


Updates `softprops/action-gh-release` from 2.3.3 to 2.3.4
- [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.3...v2.3.4)

Updates `actions/upload-pages-artifact` from 3 to 4
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.3.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/upload-pages-artifact
  dependency-version: '4'
  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-10-07 15:28:22 +02:00
github-actions[bot]
9b10bb6e02 chore: Auto Update Game Resources - 2025-10-07
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18306279350

[skip changelog]
2025-10-07 08:11:26 +00:00
Horror Proton
b89777ec07 chore: run smoke test in lldb 2025-10-07 05:41:49 +00:00
Lucien Shaw
e72b6d5e24 docs: 添加目录自动跳转组件并使locale自动生成 (#14299)
* feat: 文档站添加重定向vue小组件

* revert: "docs: 将文档中指向部分文档目录的链接改为指向对应目录下的第一篇文档 (#14292)"

This reverts commit a24c772880.

* docs: zh-tw 目录自动跳转

* docs: zh-cn 目录自动跳转

* docs: ko-kr 目录自动跳转

* docs: ja-jp 目录自动跳转

* docs: en-us 目录自动跳转

* docs: 修复了多语言faq文章中的外链对应语言错误的问题

* refactor: 将matter模块改为default import

* feat: 将文档站的i18n和导航相关设置改为全自动生成

* fix: 去除了冗余的locale属性

文档站根据文件目录名称进行索引,linkName和dirName不可能不相同,故简化为单属性name

* refactor: 调整导航组件生成模块中的部分数据类型

* style: prettier fix
2025-10-04 23:44:54 +08:00
Lucien Shaw
fb0bf0a510 docs: 文档站新增字符画组件 (#14270)
* docs: 拯救牛牛!

* chore: 字符画使用单独目录

* feat: 随机动态加载字符画

* feat: 文档站的开发者工具console会打印随机字符画

* fix: 调整字符画初始行高,修正比例

* refactor: 简化冗余的缩放逻辑

* fix: 测量基准宽度时添加100ms延迟

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

* refactor: 加上类型注解,避免编辑器报错

* chore: 更改prettier配置,typescript行尾不使用分号

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

* fix: 完善字符画大小调整算法,稳定后再调整字体

* fix: 字符画的自适应调整逻辑

* feat: 字符画支持自定义主题

* docs: 调整“字号不要用小数”的注释提示

* fix: 判断document是否定义,避免构建失败

* refactor: 完善字符画获取逻辑

* feat: 为console中展示的字符画添加自动检测主题功能

* fix: 避免因滚动条等原因造成的字符画尺寸抖动

* chore: Priestess

* refactor: 将字符画调取模块置于插件目录下

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-10-04 23:21:12 +08:00
Goat Boring(山羊博宁88)
a24c772880 docs: 将文档中指向部分文档目录的链接改为指向对应目录下的第一篇文档 (#14292)
* Update newbie.md

* Update newbie.md

* Update newbie.md

* Update newbie.md

* Update newbie.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md

* Update readme.md
2025-10-04 02:12:26 +08:00
Pylinx171
7a3484dc52 chore: 将mac开发环境下的cmake_osx版本改为13.4 (#14283)
Co-authored-by: lihao2Gops5m9x <li@m8@cx7H5g3eM>
2025-10-03 19:12:11 +08:00
晓丶梦丶仁
2aa2e87fd6 fix: "MiniGame@RM-1@Wait" 2025-10-03 17:20:12 +08:00
Status102
2ef25416f9 perf: RegionOCRer 中 useRaw=false 时, 使用原图二值蒙版代替直接 OCR 二值图像 (#14276)
perf: RegionOCRer中useRaw=false时, 使用原图裁剪代替二值化图像
2025-10-03 16:13:59 +08:00
Rain Yang
435e17867e fix: 增强 playtools 关闭连接时的异常处理,确保套接字安全关闭 (#14280)
* fix: 增强playtools关闭连接时的异常处理,确保套接字安全关闭

* 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-10-03 14:14:02 +08:00
Constrat
707d31bb30 fix: EN IS3 encounter ocr
fix MAA,EN服水月肉鸽 事件名识别错误bug
Fixes #1427214272
2025-10-01 15:32:24 +02:00
status102
de08a33db1 fix: 理智药使用数量ocr不准确时中断使用 2025-10-01 19:25:07 +08:00
status102
d724b8ff9c fix: 使用理智药 执行减少次数循环在asst_stop时缺少中断判断 2025-10-01 19:21:47 +08:00
萨拉托加
1bb7828255 chore: YostarJP ocr fix 2025-10-01 15:26:15 +08:00
萨拉托加
d2a81987b2 fix: 修复因失败导致次生预算出错 (#14267) 2025-10-01 07:38:13 +08:00
github-actions[bot]
ed7ee78952 chore: Auto Update Game Resources - 2025-09-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18137728844

[skip changelog]
2025-09-30 17:07:49 +00:00
晓丶梦丶仁
2973ebbbdb feat: RM-1 (#14271) 2025-10-01 00:54:41 +08:00
Lucien Shaw
e461208bf9 chore: 完善容器配置及依赖安装 (#14208)
格式化工具部分:
1. pre-commit 引入 python 的格式化工具,包括 black(代码格式化)和 isort(对“包导入顺序”的规范)
2. 允许 prettier 对文档站的 markdown 文件格式化
3. 不允许 prettier 对 markdown 文件中的代码块的代码本身进行格式化
4. 升级了 pre-commit 的各个 hook 的版本
5. 优化了 pre-commit 的日志文本显示

容器总览部分:
1. 由原来的单一轻量环境转为区分空环境、轻量环境和全量环境
2. 空环境是裸 Linux 镜像(Ubuntu),为默认环境
3. 轻量环境适合开发文档站前端
4. 全量环境适合开发 MaaCore
5. 目前,全量环境完整包含了轻量环境,轻量环境完整包含了空环境
6. 在仓库 README.md 中更新了三个环境的描述,并将链接分别设置为对应环境的创建链接
   **注意:没有修改文档站中的对应文件**
7. 在各个语言的开发指南的最后,移除了 Codespace 部分的“安装额外依赖”相关描述,且将链接设置为全量环境的创建链接
   **注意:没有添加“开发文档站”的指南和对应 codespace 的使用方式**

容器的轻量环境和全量环境共有部分:
1. 安装 black 和 isort 包
2. 调整 VS Code 设置,取消先前(对 markdown 文件单独指定 markdownlint 扩展作为格式化工具)的错误设置,现在 markdown 文件仍然使用默认的 prettier 扩展作为格式化工具
3. 引入 markdown-all-in-one 扩展作为语法提示工具
4. 将 node_modules 和 3rdparty 排除在 VS Code 的文本的搜索路径之外

容器的全量环境部分:
1. 为 tools 下的所有 python 脚本安装依赖
2. 使用 tools/maadeps-download.py 下载 maadeps,且将必要二进制文件软链接到 /usr/local/bin/
3. 使用 apt 安装 cmake 和 clangd-20,将后者通过 update-alternatives 设置为系统 clangd 的默认版本
4. 使用 cmake tools 扩展,并按照 Linux 编译方法进行配置
5. 使用 clang-format 作为 c/cpp 的格式化工具,clang-format 程序主体来自 maadeps(已经软链接到 /usr/local/bin/)
6. 使用 clangd 作为 c/cpp 的语法提示工具
7. 将 MaaDeps、install 和 build 排除在 VS Code 的文本搜索路径之外

其它手动调整:
1. 更新文档站的 package.json,指定 pnpm 包管理器的版本
2. 手动保证 markdown 文件中的列表前后有空行(注意到 MarkdownLint 官方规则不一定能精准定位所有“列表前后空行”的问题,详见:https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md032---lists-should-be-surrounded-by-blank-lines )
3. 修改了部分 markdown 文件中的 json 代码块的语法问题
   **注意:相同的问题并未全部发现,仅修改了两处**
4. 在 tools 目录中,一处 python 脚本的包名误用(本地包名和某个 pip 包重名),这里修改了相应代码
5. 在 tools 目录中,一处 python 脚本使用了弃用的包 cchardet 的问题,这里更换了推荐使用的功能相近的包并修改了相应代码

自动化脚本提交的修改:
1. 自动格式化了大量 tools 中的 python 脚本
2. 自动格式化了大量 docs 中的 markdown 文件

Commits:

* chore: pre-commit引入black和isort规范py文件

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

* chore: devcontainer添加isort扩展,排序python导入

* chore: pre-commit任务命名及更名

* style: isort fix

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

* chore: 更新pre-commit的hook版本

* fix: 模块名与第三方库重名,大忌

* chore: 容器构建时额外安装isort

* docs: md -> markdown

* chore: 容器安装python包和maadeps

* fix: 修复过时python包

* chore: 指定pnpm版本

* chore: container支持选择轻量环境

* chore: 去掉rust

* chore: add plain env

* chore: 使用clangd语言服务器

* chore: 无需单独设置markdown的格式化工具

* chore: 更新安装的clangd版本

* docs: 简易文档适配

* docs: 在仓库README中重新编排codespaces相关指引

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

* style: 调整缩进

* chore: 格式化工具不用特意排除被gitignore忽略的文件

* chore: sh文件在gitattributes中单列一类

* chore: 格式化docs下的markdown文件

* chore: 暂时不修改md文件中的代码块

* style: 人为明确markdown中的部分列表相关格式

* docs: 补上部分markdown的json代码块中缺失的逗号

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

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

* fix: 补上tools的服务器排序相关代码中缺失的逗号

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

* chore: 使用maadeps的clangd

* build: 更新maadeps工具链版本

* style: prettier fix

* revert: 还原maadeps版本

* revert: 取消使用maadeps的clangd依赖,改用系统apt安装

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-30 19:39:48 +08:00
github-actions[bot]
22faefe71a chore: Auto Update Game Resources - 2025-09-30
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18121756589

[skip changelog]
2025-09-30 07:09:27 +00:00
uye
7d080de077 Release v5.26.0 (#14261) 2025-09-30 14:21:11 +08:00
github-actions[bot]
cc65a68384 docs: Auto Update Changelogs of v5.26.0 (#14262)
* docs: Auto Generate Changelog of Release v5.26.0

* docs: Update CHANGELOG for v5.26.0 enhancements and fixes

* docs: Update CHANGELOG with recent fixes and optimizations

* docs: 更新 CHANGELOG,添加次生预案支持和自动肉鸽优化说明

* docs: 修正 CHANGELOG 中关于次生预案的描述格式

* docs: 更新 CHANGELOG,添加「次生预案」和自动肉鸽的提示信息

* docs: 修正 CHANGELOG 中关于次生预案的描述,优化提示信息

* docs: 更新 CHANGELOG,修正次生预案部分的描述,优化资源点数说明

* docs: 修正 CHANGELOG 中关于次生预案提示信息的描述格式

* docs: 更新 CHANGELOG,完善次生预案功能描述,增加资源点数和材料信息

* docs: Revise CHANGELOG for recent updates and fixes

Updated the changelog to reflect changes in recruitment strategy, settings guide improvements, and documentation website redesign.

* docs: Revise CHANGELOG for new features and fixes

Updated the changelog to reflect changes in the '次生预案' feature and adjustments in the automatic meat pigeon recruitment strategy.

---------

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-09-30 14:20:54 +08:00
萨拉托加
0bb19a7376 fix: 水月肉鸽委托任务完成检测优先级过低 2025-09-30 13:59:19 +08:00
Weiyou Wang
ea6540cf6b fix: 商店刷新两步走 (#14201)
* fix: 商店刷新两步走

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

* refactor: buy once only when both steps succeed (suggested by status102)

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>
Co-authored-by: Status102 <102887808+status102@users.noreply.github.com>
2025-09-29 17:20:32 +08:00
萨拉托加
df75025dc5 perf: 调整界园肉鸽招募策略 (#14255) 2025-09-29 12:32:25 +08:00
Rbqwow
7ab8994ed8 docs: 更新文档 (#14236)
* docs: 补充自动战斗前提

* docs: 自动战斗傀影开局添加丰川祥子

* docs: 更新肉鸽闪断处理相关描述

* 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>
Co-authored-by: 萨拉托加 <151550168+Saratoga-Official@users.noreply.github.com>
2025-09-29 12:29:40 +08:00
Manicsteiner
a263b62e63 feat: 萨卡兹肉鸽 待诉说的故事 二次选择 (#14246) 2025-09-29 12:21:24 +08:00
萨拉托加
bf7b2e633b fix: 水月肉鸽商店刷新延迟不够
fix #14256
2025-09-29 10:49:25 +08:00
github-actions[bot]
65b84f5dbd chore: Auto Update Game Resources - 2025-09-28
https://github.com/MaaAssistantArknights/MaaAssistantArknights/actions/runs/18079189511

[skip changelog]
2025-09-28 20:08:28 +00:00
Manicsteiner
347f1e191e chore: YostarJP roguelike edits (#14252) 2025-09-28 21:00:23 +02:00
uye
7905eb9fed fix: 按钮显示文字错误 2025-09-28 13:55:30 +08:00
萨拉托加
3a6c49de0c fix: 次生预案模拟器卡了容易点过头 2025-09-28 09:38:03 +08:00
Hao Guan
0be1253334 ci: update macOS runner 2025-09-27 23:29:43 +08:00
Hao Guan
a10ab607b0 chore(mac): 新图标和界面风格 2025-09-27 22:24:14 +08:00
Lancarus
45649de131 perf: 优化界园肉鸽部分关卡策略 (#14244)
* perf: 优化界园肉鸽部分关卡策略

* 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-09-27 20:03:03 +08:00
uye
c3ebfce07b feat: mac 支持次生预案 2025-09-27 14:59:39 +08:00
Constrat
a57e5cf98a fix: clang 2025-09-26 21:54:06 +02:00
uye
78ff33d6f0 fix: 怎么还有人在用 adb input 2025-09-27 00:32:11 +08:00
uye
a64bfc5ba3 perf: 优化次生预案执行速度 2025-09-26 23:21:22 +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
1017 changed files with 197966 additions and 43072 deletions

View File

@@ -0,0 +1,30 @@
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 \
&& conda activate maa \
&& conda install -y \
python=$PYTHON_VERSION \
conda-forge::nodejs=$NODEJS_VERSION \
&& pip install pre-commit black isort
# Finalize conda setup
RUN conda init \
&& conda config --set auto_activate false \
&& echo "conda activate maa" >> ~/.bashrc

View File

@@ -0,0 +1,64 @@
// 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
{
"name": "MAA Docs Env (Light)",
// 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"
},
// 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/0/post-create.sh",
// Configure tool-specific properties.
"customizations": {
"vscode": {
"extensions": [
"nekosu.maa-support",
"ms-python.python",
"ms-python.black-formatter",
"ms-python.isort",
"esbenp.prettier-vscode",
"DavidAnson.vscode-markdownlint",
"yzhang.markdown-all-in-one",
"vue.volar",
"mkxml.vscode-filesize"
],
"settings": {
// Editor formatting
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
// Language-specific formatting
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
// Python formatting and linting
"isort.args": ["--profile", "black"],
// Python runtime
"python.terminal.launchArgs": ["-u"],
"python.defaultInterpreterPath": "/home/vscode/miniconda/envs/maa/bin/python",
"python.terminal.activateEnvironment": false,
// Performance optimizations
"search.exclude": {
"**/node_modules": true,
"**/3rdparty": true
}
}
}
}
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

View File

@@ -0,0 +1,16 @@
#!/bin/bash
WORKSPACE=$(pwd)
# conda activate maa
echo "===================="
cd "$WORKSPACE"
echo "Setting up git safe.directory for $WORKSPACE and its submodules..."
git config --global --add safe.directory "$WORKSPACE"
git submodule foreach --recursive 'git config --global --add safe.directory "$toplevel/$path"'
echo "===================="
cd "$WORKSPACE"/docs
echo "Installing node modules..."
npm install -g pnpm
pnpm install --frozen-lockfile

View File

@@ -0,0 +1,39 @@
FROM mcr.microsoft.com/devcontainers/base:ubuntu
USER vscode
ENV CONDA_DIR=/home/vscode/miniconda
ENV PATH="$CONDA_DIR/bin:$PATH"
ARG CLANGD_VERSION=20
ARG PYTHON_VERSION=3.12
ARG NODEJS_VERSION=24
# Install system dependencies
RUN sudo apt update \
&& sudo apt upgrade -y \
&& sudo apt install -y \
cmake clangd-${CLANGD_VERSION}
RUN sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-${CLANGD_VERSION} 100
# 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 \
&& conda activate maa \
&& conda install -y \
python=${PYTHON_VERSION} \
conda-forge::nodejs=${NODEJS_VERSION} \
&& pip install pre-commit black isort
# Finalize conda setup
RUN conda init \
&& conda config --set auto_activate false \
&& echo "conda activate maa" >> ~/.bashrc

View File

@@ -0,0 +1,83 @@
// 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
{
"name": "MAA Core Env (Full)",
// 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"
},
// 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/1/post-create.sh",
// Configure tool-specific properties.
"customizations": {
"vscode": {
"extensions": [
"nekosu.maa-support",
"ms-vscode.cmake-tools",
"xaver.clang-format",
"llvm-vs-code-extensions.vscode-clangd",
"ms-python.python",
"ms-python.black-formatter",
"ms-python.isort",
"esbenp.prettier-vscode",
"DavidAnson.vscode-markdownlint",
"yzhang.markdown-all-in-one",
"vue.volar",
"mkxml.vscode-filesize"
],
"settings": {
// Editor formatting
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
// Language-specific formatting
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
},
"[cpp]": {
"editor.defaultFormatter": "xaver.clang-format"
},
"[c]": {
"editor.defaultFormatter": "xaver.clang-format"
},
// Python formatting and linting
"isort.args": ["--profile", "black"],
// Python runtime
"python.terminal.launchArgs": ["-u"],
"python.defaultInterpreterPath": "/home/vscode/miniconda/envs/maa/bin/python",
"python.terminal.activateEnvironment": false,
// CMake settings
"cmake.configureSettings": {
"BUILD_DEBUG_DEMO": "ON",
"CMAKE_TOOLCHAIN_FILE": "MaaDeps/cmake/maa-x64-linux-toolchain.cmake"
},
"cmake.configureOnOpen": false,
// Performance optimizations
"search.exclude": {
"**/node_modules": true,
"**/build": true,
"**/install": true,
"**/MaaDeps": true,
"**/3rdparty": true
}
}
}
}
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

View File

@@ -0,0 +1,42 @@
#!/bin/bash
WORKSPACE=$(pwd)
# conda activate maa
echo "===================="
cd "$WORKSPACE"
echo "Setting up git safe.directory for $WORKSPACE and its submodules..."
git config --global --add safe.directory "$WORKSPACE"
git submodule foreach --recursive 'git config --global --add safe.directory "$toplevel/$path"'
echo "===================="
cd "$WORKSPACE"/docs
echo "Installing node modules..."
npm install -g pnpm
pnpm install --frozen-lockfile
echo "===================="
cd "$WORKSPACE"
echo "Installing Python dependencies..."
# Install Python dependencies from all tools
for req_file in tools/*/requirements.txt; do
if [ -f "$req_file" ]; then
echo "Installing from $req_file"
pip install -r "$req_file"
fi
done
for req_file in tools/*/requirements-dev.txt; do
if [ -f "$req_file" ]; then
echo "Installing from $req_file"
pip install -r "$req_file"
fi
done
echo "===================="
cd "$WORKSPACE"
echo "Installing MaaDeps..."
python tools/maadeps-download.py
# Link clang-format & clangd to /usr/local/bin for easy access
sudo ln -s $WORKSPACE/MaaDeps/x-tools/llvm/bin/clang-format /usr/local/bin/clang-format
# sudo ln -s $WORKSPACE/MaaDeps/x-tools/llvm/bin/clangd /usr/local/bin/clangd

View File

@@ -1,13 +1,5 @@
{
"image": "mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04",
"features": {
"ghcr.io/devcontainers/features/python:1": {},
"ghcr.io/devcontainers/features/sshd:1": {}
},
"postCreateCommand": "sudo sh -ce 'wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && ./llvm.sh 20'",
"customizations": {
"vscode": {
"extensions": ["llvm-vs-code-extensions.vscode-clangd", "DavidAnson.vscode-markdownlint"]
}
}
"name": "Plain Env (Nothing Installed)",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"postCreateCommand": "git config --global --add safe.directory \"$(pwd)\" && git submodule foreach --recursive 'git config --global --add safe.directory \"$toplevel/$path\"'"
}

2
.gitattributes vendored
View File

@@ -10,3 +10,5 @@
*.md text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.sh text eol=lf

View File

@@ -15,7 +15,7 @@ body:
required: false
- label: 我使用的是当前更新版本的最新版, 并已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/), [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容并未提及该 Bug 已被修复的情况
required: false
- label: 我已检查了 [常见问题](https://maa.plus/docs/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) 确认我的问题未被提及
- 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

View File

@@ -15,7 +15,7 @@ body:
required: false
- label: 我使用的是当前更新版本的最新版, 并已查看版本发布至今的 [更新内容](https://github.com/MaaAssistantArknights/MaaAssistantArknights/commits/dev/), [Pull Requests](https://github.com/MaaAssistantArknights/MaaAssistantArknights/pulls) 中尚未发布的更新内容,确认我的建议未被提及
required: false
- label: 我已检查了 [常见问题](https://maa.plus/docs/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) 确认我的建议未被提及
- 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

View File

@@ -17,7 +17,7 @@ body:
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), [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.
- 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

View File

@@ -17,7 +17,7 @@ body:
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), [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.
- 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

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

@@ -1,4 +1,4 @@
name: Git Blame Ignore
name: Blame Ignore Update
on:
schedule:
@@ -7,6 +7,7 @@ on:
jobs:
blame-ignore:
name: Update Git Blame Ignore Revs
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
@@ -26,7 +27,7 @@ jobs:
git diff --quiet .git-blame-ignore-revs
- name: Commit and Push changes
- name: Commit changes
if: ${{ steps.check_changes.outcome == 'failure' }}
run: |
git config user.name "github-actions[bot]"

View File

@@ -1,4 +1,4 @@
name: Delete Cache
name: Cache Cleanup
on:
pull_request:
@@ -11,13 +11,14 @@ on:
jobs:
cache-delete:
name: Delete PR Cache
# Run only on organization branches with PRs
if: github.event_name == 'workflow_dispatch' ||
github.event.pull_request.head.repo.full_name ==
github.event.pull_request.base.repo.full_name
runs-on: ubuntu-latest
steps:
- name: Delete cache on PR merged
- name: Delete PR cache
run: |
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
PR_NUMBER=${{ github.event.inputs.pr_number }}

View File

@@ -1,4 +1,4 @@
name: ci
name: Release Pipeline
on:
push:
@@ -7,25 +7,26 @@ on:
branches-ignore:
- "master"
paths:
- ".github/workflows/ci.yml"
- "3rdparty/include/**"
- "include/**"
- "src/**"
- "cmake/**"
- "CMakeLists.txt"
- ".github/workflows/ci.yml"
- "!**/*.md"
- "include/**"
- "src/**"
- "tools/maadeps-download.py"
- "!**/*.md"
pull_request:
branches:
- "dev"
paths:
- ".github/workflows/ci.yml"
- "3rdparty/include/**"
- "include/**"
- "src/**"
- "cmake/**"
- "CMakeLists.txt"
- "!**/*.md"
- "include/**"
- "src/**"
- "tools/maadeps-download.py"
- "!**/*.md"
workflow_dispatch:
concurrency:
@@ -34,6 +35,7 @@ concurrency:
jobs:
meta:
name: Gather Meta Information
# Prevent duplicate runs on organization branches with PRs
if: github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.full_name !=
@@ -44,42 +46,36 @@ jobs:
tag: ${{ steps.set_tag.outputs.tag }}
prerelease: ${{ steps.set_pre.outputs.prerelease }}
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
path: temp
fetch-depth: 0
show-progress: false
- name: Fetch history
if: ${{ !startsWith(github.ref, 'refs/pull/') }}
run: |
git init
cp $GITHUB_WORKSPACE/temp/.git/config ./.git
rm -rf $GITHUB_WORKSPACE/temp
# git config remote.origin.fetch '+refs/*:refs/*'
git fetch --filter=tree:0 # --update-head-ok
git reset --hard origin/$(git branch --show-current) || true
git checkout ${{ github.ref_name }}
- name: Set tag
id: set_tag
run: |
${{ startsWith(github.ref, 'refs/pull/') && 'cd temp' || '' }}
echo tag=$(git describe --tags --match "v*" ${{ github.ref }} || git rev-parse --short HEAD) | tee -a $GITHUB_OUTPUT
exit ${PIPESTATUS[0]}
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
# For tag pushes, use the tag name
tag="${{ github.ref_name }}"
else
# For PRs and branch pushes, use git describe or fallback
tag=$(git describe --tags --match "v*" HEAD 2>/dev/null || echo "v0.0.1-$(git rev-parse --short HEAD)")
fi
echo "tag=${tag}" | tee -a $GITHUB_OUTPUT
- name: Judge pre-release
- name: Check if it is a pre-release
id: set_pre
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
if: startsWith(github.ref, 'refs/tags/v')
run: |
if [[ '${{ steps.set_tag.outputs.tag }}' =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo prerelease=false | tee -a $GITHUB_OUTPUT
echo "prerelease=false" | tee -a $GITHUB_OUTPUT
else
echo prerelease=true | tee -a $GITHUB_OUTPUT
echo "prerelease=true" | tee -a $GITHUB_OUTPUT
fi
- name: Generate changelog
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
- name: Finalize changelog
if: startsWith(github.ref, 'refs/tags/v')
run: |
this_tag=${{ steps.set_tag.outputs.tag }}
if [[ '${{ steps.set_pre.outputs.prerelease }}' != 'false' ]]; then
@@ -92,14 +88,15 @@ jobs:
echo >> CHANGELOG.md
echo "[已有 Mirror酱 CDK前往 Mirror酱 高速下载](https://mirrorchyan.com/zh/projects?rid=MAA&source=maagh-release)" >> CHANGELOG.md
- name: Upload changelog to Github
- name: Upload changelog to GitHub
uses: actions/upload-artifact@v4
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
if: startsWith(github.ref, 'refs/tags/v')
with:
name: changelog
path: CHANGELOG.md
windows:
name: Build for Windows
# Prevent duplicate runs on organization branches with PRs
if: github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.full_name !=
@@ -113,7 +110,7 @@ jobs:
runs-on: windows-latest
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
@@ -128,7 +125,7 @@ jobs:
with:
path: |
./MaaDeps
key: ${{ runner.os }}-${{ matrix.arch }}-maadeps-${{ hashFiles('./tools/maadeps-download.py') }}
key: ${{ runner.os }}-${{ matrix.arch }}-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-maadeps.outputs.cache-hit != 'true'
@@ -158,13 +155,13 @@ jobs:
path: |
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('**/*.csproj') }}
key: ${{ runner.os }}-${{ matrix.arch }}-nuget-${{ hashFiles('**/*.csproj') }}
- name: Restore dependencies
if: steps.cache-nuget.outputs.cache-hit != 'true'
run: dotnet restore src/MaaWpfGui/MaaWpfGui.csproj
- name: Taggify Version for csproj
- name: Taggify version for csproj
run: |
$csprojPath = "src/MaaWpfGui/MaaWpfGui.csproj"
$csprojPath = Resolve-Path -Path $csprojPath
@@ -187,7 +184,7 @@ jobs:
run: |
dotnet publish src/MaaWpfGui/MaaWpfGui.csproj -c Release -o install
- name: Organize Install Files
- name: Organize install files
shell: bash
run: |
rm -rf install/*.pdb
@@ -196,13 +193,19 @@ jobs:
cp tools/DependencySetup_依赖库安装.bat install
- name: Upload MAA to Github
- 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.arch }}
path: install
path: install/*.zip
ubuntu:
name: Build for Ubuntu
# Prevent duplicate runs on organization branches with PRs
if: github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.full_name !=
@@ -215,7 +218,7 @@ jobs:
arch: [aarch64, x86_64]
fail-fast: false
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
@@ -225,26 +228,19 @@ jobs:
git submodule update --init --depth 1 3rdparty/EmulatorExtras
git submodule update --init --depth 1 src/maa-cli
- name: Cache MaaDeps and Toolchain
- 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', 'tools/linux-toolchain-download.py') }}
key: ${{ runner.os }}-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps and Toolchain
- 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 == 'x86_64' && 'x64' || 'arm64' }}-linux
python3 tools/linux-toolchain-download.py ${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}
- name: Install llvm 20
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
- name: Config cmake
run: |
@@ -255,7 +251,7 @@ jobs:
-DINSTALL_RESOURCE=ON \
-DINSTALL_PYTHON=ON \
-DMAA_HASH_VERSION='${{ needs.meta.outputs.tag }}' \
-DCMAKE_TOOLCHAIN_FILE=cmake/linux/maa-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux-toolchain.cmake
-DCMAKE_TOOLCHAIN_FILE=MaaDeps/cmake/maa-${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}-linux-toolchain.cmake
- name: Build
run: |
@@ -268,7 +264,7 @@ jobs:
mkdir -p install
cmake --install build --prefix install --config Release
- name: Setup Cross Compile Toolchains for CLI
- name: Setup cross compile toolchains for CLI
uses: ./src/maa-cli/.github/actions/setup
with:
os: ubuntu-latest
@@ -325,7 +321,7 @@ jobs:
cd install
tar czvf $GITHUB_WORKSPACE/release/MAA-${{ needs.meta.outputs.tag }}-linux-${{ matrix.arch }}.tar.gz .
- name: Upload MAA to Github
- name: Upload MAA to GitHub
uses: actions/upload-artifact@v4
with:
name: MAA-linux-${{ matrix.arch }}
@@ -334,29 +330,36 @@ jobs:
release/*.tar.gz
macOS-Core:
name: Build Core for macOS
# 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
needs: meta
runs-on: macos-latest
runs-on: macos-26
strategy:
matrix:
arch: [arm64, x86_64]
fail-fast: false
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
# ninja 1.13.1 is already installed and up-to-date. To reinstall 1.13.1, run: brew reinstall ninja
# - name: Install Dependencies
# ninja 1.13.1 is already installed and up-to-date.
# - name: Install dependencies
# run: |
# brew install ninja
# Caching not necessary on macOS runner
- 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') }}
- name: Bootstrap MaaDeps
run: |
[[ ${{ matrix.arch }} = "arm64" ]] && triplet="arm64-osx" || triplet="x64-osx"
@@ -373,33 +376,34 @@ jobs:
- name: Build
run: |
cmake --build build --config Release --parallel $(nproc)
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
- name: Upload MAA to GitHub
uses: actions/upload-artifact@v4
with:
name: MAACore-macos-${{ matrix.arch }}
path: "install/*.dylib"
macOS-GUI:
name: Build GUI for macOS
# 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
needs: [meta, macOS-Core]
runs-on: macos-latest
runs-on: macos-26
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
- name: Install Dependencies
- name: Install dependencies
if: startsWith(github.ref, 'refs/tags/v')
run: |
brew install graphicsmagick imagemagick
@@ -409,26 +413,26 @@ jobs:
run: |
git submodule update --init --depth 1 src/MaaMacGui
- name: Download Arm64 MAA from Github
- name: Download MAA (arm64) from GitHub
uses: actions/download-artifact@v5
with:
name: MAACore-macos-arm64
path: install-arm64
- name: Download x64 MAA from Github
- name: Download MAA (x64) from GitHub
uses: actions/download-artifact@v5
with:
name: MAACore-macos-x86_64
path: install-x86_64
- name: Install Developer ID Certificate
- name: Install Developer ID certificate
if: startsWith(github.ref, 'refs/tags/v')
uses: apple-actions/import-codesign-certs@v5
with:
p12-file-base64: ${{ secrets.HGUANDL_SIGN_CERT_P12 }}
p12-password: ${{ secrets.HGUANDL_SIGN_CERT_PASSWD }}
- name: Download Provisioning Profiles
- name: Download provisioning profiles
if: startsWith(github.ref, 'refs/tags/v')
uses: apple-actions/download-provisioning-profiles@v4
with:
@@ -437,19 +441,19 @@ jobs:
api-key-id: ${{ secrets.HGUANDL_APPSTORE_KEYID }}
api-private-key: ${{ secrets.HGUANDL_APPSTORE_KEY }}
- name: Setup Xcode Toolchain
if: true
- name: Setup Xcode toolchain
if: false
run: |
sudo xcode-select -s /Applications/Xcode_16.1.app/Contents/Developer
- name: Build Universal Binaries
- name: Build universal binaries
run: |
mkdir build
for LIB_NAME in $(ls install-arm64); do
lipo -create install-arm64/$LIB_NAME install-x86_64/$LIB_NAME -output build/$LIB_NAME
done
- name: Archive Runtime Files
- name: Archive runtime files
run: |
mkdir runtime && cd runtime
name='MAA-${{ needs.meta.outputs.tag }}-macos-runtime-universal'
@@ -461,7 +465,7 @@ jobs:
cd .. || exit 1
zip -yrX9 "$name.zip" "$name"
- name: Upload MAA runtime to Github
- name: Upload MAA runtime to GitHub
uses: actions/upload-artifact@v4
with:
name: MAA-macos-runtime-universal
@@ -475,7 +479,7 @@ jobs:
xcodebuild -create-xcframework -library libopencv*.dylib -output OpenCV.xcframework
working-directory: build
- name: Setup GUI Version
- name: Setup GUI version
run: |
RELEASE_COUNT=$(git ls-remote --tags origin | grep refs/tags/v | awk 'END{print NR}')
echo 'MARKETING_VERSION = ${{ needs.meta.outputs.tag }}' | tee src/MaaMacGui/Version.xcconfig
@@ -496,20 +500,20 @@ jobs:
xcodebuild -exportArchive -archivePath MAA.xcarchive -exportOptionsPlist ExportOptions.plist -exportPath Export
working-directory: src/MaaMacGui
- name: Create Disk Image
- name: Create disk image
if: startsWith(github.ref, 'refs/tags/v')
run: |
create-dmg Export/MAA.app
mv MAA*.dmg MAA.dmg
working-directory: src/MaaMacGui
- name: Archive Debug Symbols
- name: Archive debug symbols
if: startsWith(github.ref, 'refs/tags/v')
run: |
ditto -c -k --keepParent MAA.app.dSYM MAA.app.dSYM.zip
working-directory: src/MaaMacGui/MAA.xcarchive/dSYMs
- name: Place Packages
- name: Place packages
if: startsWith(github.ref, 'refs/tags/v')
run: |
GIT_TAG=${{ needs.meta.outputs.tag }}
@@ -519,7 +523,7 @@ jobs:
mv src/MaaMacGui/MAA.dmg release/${APP_DMG}
mv src/MaaMacGui/MAA.xcarchive/dSYMs/MAA.app.dSYM.zip release/${APP_SYM}
- name: Notarize Image
- name: Notarize image
if: startsWith(github.ref, 'refs/tags/v')
uses: nick-fields/retry@v3
with:
@@ -535,20 +539,21 @@ jobs:
APPSTORE_KEY: ${{ secrets.HGUANDL_APPSTORE_KEY }}
ISSUER_ID: ${{ secrets.HGUANDL_APPSTORE_ISSUER }}
- name: Attach Notarization Tickets
- name: Attach notarization tickets
if: startsWith(github.ref, 'refs/tags/v')
run: |
dmg="MAA-${{ needs.meta.outputs.tag }}-macos-universal.dmg"
xcrun stapler staple ${dmg}
working-directory: release
- name: Upload MAA to Github
- name: Upload MAA to GitHub
uses: actions/upload-artifact@v4
with:
name: MAA-macos-universal
path: ${{ startsWith(github.ref, 'refs/tags/v') && 'release/MAA*' || 'src/MaaMacGui/MAA.xcarchive/**' }}
release:
name: Publish Release
# Prevent duplicate runs on organization branches with PRs
if: (github.event_name != 'pull_request' ||
github.event.pull_request.head.repo.full_name !=
@@ -557,12 +562,12 @@ jobs:
needs: [meta, windows, ubuntu, macOS-Core, macOS-GUI]
runs-on: ubuntu-latest
steps:
- name: Download MAA from Github
- name: Download MAA from GitHub
uses: actions/download-artifact@v5
with:
path: assets
- name: Cleanup files
- name: Clean up files
run: |
mv -vf assets/changelog/* .
rm -rf assets/MAACore-macos-*
@@ -570,23 +575,32 @@ jobs:
# find . -type f | xargs mv -fvt .
find . -type f | while read f; do mv -fvt . $f; done
- name: Release to Github
uses: softprops/action-gh-release@v2.3.3
- name: Publish release to GitHub
uses: softprops/action-gh-release@v2.4.1
with:
body_path: CHANGELOG.md
files: |
assets/*
prerelease: ${{ needs.meta.outputs.prerelease != 'false' }}
- name: Trigger MirrorChyan
- name: Trigger MirrorChyan-related workflows
run: |
gh workflow run --repo $GITHUB_REPOSITORY mirrorchyan
gh workflow run --repo $GITHUB_REPOSITORY mirrorchyan_release_note
gh workflow run --repo $GITHUB_REPOSITORY mirrorchyan.yml
gh workflow run --repo $GITHUB_REPOSITORY mirrorchyan_release_note.yml
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Trigger secondary workflows # ref: https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow
- name: Trigger OTA release workflow # ref: https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow
run: |
gh workflow run --repo $GITHUB_REPOSITORY release-ota
gh workflow run --repo $GITHUB_REPOSITORY release-ota.yml
env:
GH_TOKEN: ${{ secrets.MISTEOWORKFLOW }}
- name: Create issue if failed
if: failure()
uses: actions-cool/issues-helper@v3
with:
actions: "create-issue"
title: "Errors occured during release ${{ needs.meta.outputs.tag }}"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

View File

@@ -1,15 +1,15 @@
name: "CodeQL MaaCore and MaaWpfGui Analysis"
name: CodeQL Code Analysis
on:
pull_request:
branches: ["dev"]
paths:
- ".github/workflows/codeql-core.yml"
- "3rdparty/include/**"
- "include/**"
- "src/**"
- "cmake/**"
- "CMakeLists.txt"
- ".github/workflows/codeql-core.yml"
- "include/**"
- "src/**"
- "!**/*.md"
- "!**/*.xaml"
schedule:
@@ -25,6 +25,7 @@ permissions:
jobs:
analyze-manual:
name: Analyze MaaCore and MaaWpfGui
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: windows-latest
steps:
- name: Checkout repository
@@ -33,15 +34,13 @@ jobs:
show-progress: false
- name: Setup CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: c-cpp,csharp
build-mode: manual
- name: Run CodeQL
uses: github/codeql-action/analyze@v3
with:
category: "/language:multi-manual"
uses: github/codeql-action/analyze@v4
- name: Delete old caches
shell: pwsh

View File

@@ -1,50 +0,0 @@
name: "CodeQL Website Analysis"
on:
pull_request:
branches: ["dev"]
paths:
- "website/**"
- "!**/*.md"
schedule:
- cron: "10 12 * * *" # Runs daily at 12:10 UTC
workflow_dispatch:
permissions:
actions: write
contents: read
security-events: write
jobs:
analyze-website:
name: Analyze Website (JavaScript/TypeScript)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
- name: Setup CodeQL for JavaScript/TypeScript
uses: github/codeql-action/init@v3
with:
languages: javascript-typescript
build-mode: none
- name: Run CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:multi-none"
- name: Delete old caches
shell: bash
run: |
oldCaches=$(gh cache list --key codeql --order asc --json key | jq -r '.[] | .key' | head -n -1)
for cache in $oldCaches; do
if [ -n "$cache" ]; then
echo "Deleting cache: $cache"
gh cache delete "$cache" --confirm
fi
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,4 +1,4 @@
name: "CodeQL Workflows Analysis"
name: CodeQL Workflow Analysis
on:
pull_request:
@@ -17,6 +17,7 @@ permissions:
jobs:
analyze-workflows:
name: Analyze GitHub Workflows
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
@@ -25,12 +26,12 @@ jobs:
show-progress: false
- name: Setup CodeQL for GitHub Actions
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: actions
build-mode: none
- name: Run CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
with:
category: "/language:multi-none"

View File

@@ -1,4 +1,4 @@
name: gen-changelog
name: Changelog Generation
on:
pull_request:
@@ -10,17 +10,18 @@ on:
jobs:
gen:
name: Generate Changelog
# startsWith 表达式不区分大小写
if: github.event.pull_request.draft == false && startsWith(github.event.pull_request.title, 'Release v')
runs-on: ubuntu-latest
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0
show-progress: false
- name: Extract tag name
- name: Extract release information
id: extract_tag
env:
PR_BODY: ${{ format('{0}/{1}', runner.temp, 'output' ) }}
@@ -50,7 +51,7 @@ jobs:
echo 'Target PR: ${{ github.event.pull_request.html_url }}' >> $PR_BODY
echo '' >> $PR_BODY
echo '<details><summary>Debug info</summary>' >> $PR_BODY
echo '<details><summary>Debug information</summary>' >> $PR_BODY
echo '' >> $PR_BODY
echo '```' >> $PR_BODY
sed 's/=/: /1' $GITHUB_OUTPUT >> $PR_BODY
@@ -60,14 +61,14 @@ jobs:
cat $PR_BODY
- name: Generate Changelog
- name: Generate changelog
run: |
git switch dev
python3 tools/ChangelogGenerator/changelog_generator.py --tag "${{ steps.extract_tag.outputs.tag_name }}" --latest "${{ steps.extract_tag.outputs.latest }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Add files to git
- name: Commit changes
run: |
git status
@@ -78,7 +79,7 @@ jobs:
commit_msg="docs: Auto Generate Changelog of Release ""${{ steps.extract_tag.outputs.tag_name }}"
git commit -m "$commit_msg"
- name: Create PR
- name: Create changelog PR
uses: peter-evans/create-pull-request@v7
with:
sign-commits: true
@@ -93,7 +94,7 @@ jobs:
assignees: |
AnnAngela
- name: Add reviewers to release PR
- name: Assign reviewers to release PR
uses: kentaro-m/auto-assign-action@v2.0.0
with:
configuration-path: ".github/release_reviewers.yaml"

View File

@@ -1,4 +1,4 @@
name: Auto Close not reading issues or Fold checkboxes
name: Issue Review
on:
issues:
@@ -6,6 +6,7 @@ on:
jobs:
check-then-close-or-fold:
name: Review and Modify Issues
runs-on: ubuntu-latest
permissions:
issues: write
@@ -63,7 +64,7 @@ jobs:
}
}
- name: Check checkbox status
- name: Check for issue checkboxes
id: unread-checkbox-check
uses: actions/github-script@v8
with:
@@ -86,7 +87,7 @@ jobs:
'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
- name: Close low-quality issue
if: steps.unread-checkbox-check.outputs.result == 'true'
uses: actions/github-script@v8
with:

View File

@@ -1,4 +1,4 @@
name: "Issue Checker"
name: Issue Triage
on:
issues:
@@ -15,9 +15,11 @@ permissions:
jobs:
triage:
name: Triage Issues and PRs
runs-on: ubuntu-latest
steps:
- uses: MaaAssistantArknights/issue-checker@v1.14
- name: Label issues and PRs Automatically
uses: MaaAssistantArknights/issue-checker@v1.14
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/issue-checker.yml

View File

@@ -1,4 +1,4 @@
name: Check Dead Links
name: Markdown Link Check
on:
schedule:
@@ -7,22 +7,22 @@ on:
branches:
- dev
paths:
- "**/*.md"
- "docs/**"
- ".github/workflows/markdown-checker.yml"
- "docs/**"
- "**/*.md"
pull_request:
branches:
- dev
paths:
- "**/*.md"
- "docs/**"
- ".github/workflows/markdown-checker.yml"
- "docs/**"
- "**/*.md"
workflow_dispatch:
jobs:
check-links:
if: github.repository_owner == 'MaaAssistantArknights' && github.event.head_commit.author.email != '41898282+github-actions[bot]@users.noreply.github.com'
name: Check Dead Links
if: github.repository_owner == 'MaaAssistantArknights' && github.event.head_commit.author.email != '41898282+github-actions[bot]@users.noreply.github.com'
runs-on: ubuntu-latest
permissions:
pull-requests: write
@@ -30,19 +30,18 @@ jobs:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Check out code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
- name: Cache Primes
id: cache-primes
- name: Cache lychee responses
uses: actions/cache@v4
with:
path: .lycheecache
key: lychee-cache
- name: Check dead links
- name: Check dead internal links
uses: lycheeverse/lychee-action@v2
with:
# 仅检查内部链接,排除所有外部链接
@@ -52,7 +51,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

@@ -1,10 +1,11 @@
name: mirrorchyan
name: Release Package Distribution
on:
workflow_dispatch:
jobs:
mirrorchyan:
name: Upload to MirrorChyan
runs-on: macos-latest
steps:

View File

@@ -1,5 +1,4 @@
name: mirrorchyan_release_note
name: Release Note Distribution
on:
workflow_dispatch:
release:
@@ -7,10 +6,11 @@ on:
jobs:
mirrorchyan:
name: Upload to MirrorChyan
runs-on: macos-latest
steps:
- name: Release Note for MAA
- name: Upload release notes to MirrorChyan
uses: MirrorChyan/release-note-action@v1
with:
mirrorchyan_rid: MAA

View File

@@ -1,14 +1,12 @@
name: Optimize PNG Templates
name: PNG Image Optimization
on:
push:
branches:
- "dev"
paths:
- "resource/**/*.png"
- "docs/.vuepress/public/images/**"
- "website/apps/web/public/**"
- "website/apps/web/src/assets/links/**"
- "resource/**/*.png"
workflow_dispatch:
inputs:
commit_message:
@@ -18,12 +16,13 @@ on:
jobs:
optimize-png:
name: Optimize PNG Images
# Skip workflow to prevent double consecutive runs
# Skip workflow on PR merges
if: github.repository_owner == 'MaaAssistantArknights' && ${{ github.event.head_commit.author.email != '41898282+github-actions[bot]@users.noreply.github.com' }}
runs-on: ubuntu-latest
steps:
- name: Check for direct push
- name: Check if it is a direct push
id: check_push
run: |
if [[ "${{ github.event_name }}" != "workflow_dispatch" ]]; then
@@ -75,7 +74,7 @@ jobs:
with:
crate: oxipng
- name: Run optimize_templates
- name: Optimize png images
if: steps.check_push.outputs.is_pr != 'True'
run: |
python3 tools/OptimizeTemplates/optimize_templates.py

View File

@@ -1,4 +1,4 @@
name: Auto Tag Release PR
name: Release Version Tagging
on:
pull_request:
@@ -15,22 +15,23 @@ on:
jobs:
auto_tag_release:
name: Tag Release
if: github.event.pull_request.merged == true && (startsWith(github.event.pull_request.title, 'Release v') || startsWith(github.event.pull_request.title, 'release v')) || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
fetch-depth: 0
token: ${{ secrets.MAARELEASE_RELEASE }}
- name: Git config
- name: Configure git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Extract tag name
- name: Determine tag name
id: extract_tag
run: |
if ${{ github.event_name != 'workflow_dispatch' }}; then
@@ -40,12 +41,12 @@ jobs:
echo "tag_name=${{ inputs.tag }}" >> $GITHUB_OUTPUT
fi
- name: Create release tag and push
- name: Create and push release tag
run: |
git tag -a "${{ steps.extract_tag.outputs.tag_name }}" -m "${{ steps.extract_tag.outputs.tag_name }}" -f
git push origin "${{ steps.extract_tag.outputs.tag_name }}"
- name: Merge into dev and push
- name: Merge tag into dev and push
run: |
git switch dev
git merge "${{ steps.extract_tag.outputs.tag_name }}"

View File

@@ -1,4 +1,4 @@
name: PR Checker
name: PR Commit Check
on:
pull_request_target:
@@ -6,10 +6,11 @@ on:
jobs:
check_commit_name_in_pr:
name: Check Commits in PR
if: ${{ !github.event.pull_request.merged && github.base_ref != 'master' }}
runs-on: ubuntu-latest
steps:
- name: Cleanup Previous Comment
- name: Clean up previous comment
uses: actions/github-script@v8
with:
script: |
@@ -27,7 +28,7 @@ jobs:
comment_id: previousComment.id
});
}
- name: Check Commits
- name: Check commits
uses: actions/github-script@v8
with:
script: |

View File

@@ -1,4 +1,4 @@
name: release-nightly-ota
name: Release Pipeline (Nightly OTA)
on:
schedule:
@@ -16,16 +16,17 @@ 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:
build-win-nightly:
name: Build Nightly for Windows
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: windows-latest
strategy:
@@ -38,7 +39,8 @@ jobs:
main_tag_name: ${{ steps.push_main_tag.outputs.main_tag_name }}
changelog: ${{ steps.read_changelog.outputs.content }}
steps:
- uses: actions/checkout@v5
- name: Checkout repository
uses: actions/checkout@v5
with:
# repository: 'MaaAssistantArknights/MaaAssistantArknights'
#ref: ${{ inputs.ref }}
@@ -138,7 +140,7 @@ jobs:
gh run watch ${{ github.run_id }}
- name: Generate Changelog
- name: Generate changelog
id: generate_changelog
run: |
python3 tools/ChangelogGenerator/changelog_generator.py --latest "${{ steps.set_tag.outputs.latest_tag }}" --tag "${{ steps.set_tag.outputs.tag }}"
@@ -160,7 +162,7 @@ jobs:
gh run watch ${{ github.run_id }}
- name: Read Changelog to variable
- name: Read changelog to variable
id: read_changelog
uses: juliangruber/read-file-action@v1
with:
@@ -172,7 +174,7 @@ jobs:
with:
path: |
./MaaDeps
key: ${{ runner.os }}-${{ matrix.arch }}-maadeps-${{ hashFiles('./tools/maadeps-download.py') }}
key: ${{ runner.os }}-${{ matrix.arch }}-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.cache-maadeps.outputs.cache-hit != 'true'
@@ -202,13 +204,13 @@ jobs:
path: |
.nuke/temp
~/.nuget/packages
key: ${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('**/*.csproj') }}
key: ${{ runner.os }}-${{ matrix.arch }}-nuget-${{ hashFiles('**/*.csproj') }}
- name: Restore dependencies
if: steps.cache-nuget.outputs.cache-hit != 'true'
run: dotnet restore src/MaaWpfGui/MaaWpfGui.csproj
- name: Taggify Version for csproj
- name: Taggify version for csproj
run: |
$csprojPath = "src/MaaWpfGui/MaaWpfGui.csproj"
$csprojPath = Resolve-Path -Path $csprojPath
@@ -230,7 +232,7 @@ jobs:
run: |
dotnet publish src/MaaWpfGui/MaaWpfGui.csproj -c Release -o install
- name: Organize Install Files
- name: Organize install files
shell: bash
run: |
rm -rf install/*.pdb
@@ -239,7 +241,7 @@ jobs:
cp tools/DependencySetup_依赖库安装.bat install
- name: Upload MAA to Github
- name: Upload MAA to GitHub
uses: actions/upload-artifact@v4
with:
name: MAA-win-${{ matrix.arch }}
@@ -257,11 +259,12 @@ jobs:
echo "main_tag_name=$main_tag_name" >> $env:GITHUB_OUTPUT
push-tag:
name: Push Tag to MaaRelease
if: github.repository_owner == 'MaaAssistantArknights'
needs: build-win-nightly
runs-on: ubuntu-latest
steps:
- name: Fetch MaaRelease
- name: Checkout MaaRelease
uses: actions/checkout@v5
with:
repository: ${{ format('{0}/{1}', github.repository_owner, 'MaaRelease') }}
@@ -280,6 +283,7 @@ jobs:
git push --tags origin HEAD:refs/tags/${{ needs.build-win-nightly.outputs.tag }}
make-ota:
name: Build and Upload Nightly OTA for Windows
if: github.repository_owner == 'MaaAssistantArknights'
needs: [build-win-nightly, push-tag]
strategy:
@@ -287,24 +291,24 @@ jobs:
target: [x64]
runs-on: ubuntu-latest
steps:
- name: Echo tag version
- name: Show tag version
run: |
echo ${{ needs.build-win-nightly.outputs.tag }}
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
path: MaaAssistantArknights
token: ${{ secrets.MAARELEASE_RELEASE }}
show-progress: false
- name: Download MAA from Github
- name: Download MAA from GitHub
uses: actions/download-artifact@v5
with:
name: MAA-win-${{ matrix.target }}
path: ${{ format('{0}/{1}', 'build-ota', needs.build-win-nightly.outputs.tag) }}
- name: Fetch release info
- name: Fetch release information
run: |
mkdir -pv build-ota && cd build-ota
@@ -313,12 +317,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

View File

@@ -1,4 +1,4 @@
name: release-ota
name: Release Pipeline (OTA)
on:
release:
@@ -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:
@@ -22,9 +22,10 @@ env:
jobs:
create-tag:
name: Create OTA Release Tag in MaaRelease
runs-on: ubuntu-latest
steps:
- name: Fetch MaaRelease
- name: Checkout MaaRelease
uses: actions/checkout@v5
with:
show-progress: false
@@ -33,7 +34,7 @@ jobs:
fetch-depth: 0
token: ${{ secrets.MAARELEASE_RELEASE }}
- name: Fetch release info
- name: Fetch release information
id: fetchReleaseInfo
run: |
mkdir -pv build-ota && cd build-ota
@@ -86,6 +87,7 @@ jobs:
release_tag: ${{ steps.fetchReleaseInfo.outputs.release_tag }}
make-ota:
name: Build and Upload OTA for Windows
needs: create-tag
runs-on: ubuntu-latest
strategy:
@@ -95,8 +97,11 @@ jobs:
steps:
- name: Download release config
uses: actions/download-artifact@v5
with:
name: MaaReleaseConfig
path: ./MaaReleaseConfig
- name: Fetch MaaRelease
- name: Checkout MaaRelease
uses: actions/checkout@v5
with:
show-progress: false
@@ -105,7 +110,7 @@ jobs:
fetch-depth: 0
token: ${{ secrets.MAARELEASE_RELEASE }}
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
@@ -134,11 +139,21 @@ 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 to make OTA release for Windows"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
make-ota-mac:
name: Build and Upload OTA for macOS
needs: create-tag
runs-on: macos-14
steps:
- name: Fetch release info
- name: Fetch release information
run: gh release list --repo 'MaaAssistantArknights/MaaAssistantArknights' --limit ${{ inputs.limit || 31 }} | tee ./release_maa.txt
- name: Download release packages
@@ -154,7 +169,7 @@ jobs:
run: |
gh release download --repo 'sparkle-project/Sparkle' --clobber -O - -p 'Sparkle-*.tar.xz' | tar xf -
- name: Generate Update Packages
- name: Generate update packages
run: |
if [ $(head -n 1 release_maa.txt | awk '{ print $2 }') = 'Pre-release' ]; then
echo ${{ secrets.SPARKLE_PRIV_KEY }} | ./bin/generate_appcast --channel beta --ed-key-file - ./packages
@@ -162,7 +177,7 @@ jobs:
echo ${{ secrets.SPARKLE_PRIV_KEY }} | ./bin/generate_appcast --ed-key-file - ./packages
fi
- name: Cleanup files
- name: Clean up files
run: |
find ./packages -type f ! \( -name 'MAA-${{ needs.create-tag.outputs.release_tag }}-macos-universal.dmg' -o -name '*.delta' -o -name '*.xml' \) -print -delete
@@ -177,7 +192,17 @@ 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 to make OTA release for macOS"
body: |
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
release:
name: Publish to Release Mirrors
needs:
- make-ota
- make-ota-mac

View File

@@ -1,4 +1,4 @@
name: Resource Updater
name: Game Resource Update
on:
schedule:
@@ -12,6 +12,7 @@ on:
jobs:
clone-resources-official:
name: Download Official Resources
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
steps:
@@ -35,7 +36,7 @@ jobs:
/gamedata/excel/roguelike_topic_table.json
/gamedata/excel/activity_table.json
- name: Upload Official
- name: Upload Official resources
uses: actions/upload-artifact@v4
with:
name: official
@@ -43,6 +44,7 @@ jobs:
compression-level: 0
clone-resources-overseas:
name: Download Overseas Resources
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
steps:
@@ -77,7 +79,7 @@ jobs:
/kr/gamedata/excel/roguelike_topic_table.json
/kr/gamedata/excel/activity_table.json
- name: Upload Official
- name: Upload Overseas resources
uses: actions/upload-artifact@v4
with:
name: overseas
@@ -85,6 +87,7 @@ jobs:
compression-level: 0
clone-resources-txwy:
name: Download Taiwan Resources
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
steps:
@@ -117,7 +120,7 @@ jobs:
done
wait
- name: Upload Official
- name: Upload Taiwan resources
uses: actions/upload-artifact@v4
with:
name: txwy
@@ -125,13 +128,14 @@ jobs:
compression-level: 0
update-game-resources:
name: Update Game Resources
# In case of rate limitations on the runners/instances, add dependency, by removing the comment
# needs: [clone-resources-official, clone-resources-overseas, clone-resources-txwy]
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
runs-on: macos-latest
steps:
- name: Checkout MAA
- name: Checkout repository
uses: actions/checkout@v5
with:
# TL;DR https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/9872#issuecomment-2251378371
@@ -146,11 +150,8 @@ jobs:
with:
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}
path: |
./tools/ResourceUpdater/libc++.so.1
./tools/ResourceUpdater/libc++abi.so.1
./tools/ResourceUpdater/libopencv_world4.so.411
./tools/ResourceUpdater/libunwind.so.1
./tools/ResourceUpdater/ResourceUpdater
./tools/ResourceUpdater/libopencv_world4.4.11.0.dylib
./tools/ResourceUpdater/res_updater
- name: Cache MaaDeps
if: steps.resupd-cache.outputs.cache-hit != 'true'
@@ -159,42 +160,34 @@ jobs:
with:
path: |
./MaaDeps
key: ${{ runner.os }}-x64-maadeps-${{ hashFiles('tools/maadeps-download.py', 'tools/linux-toolchain-download.py') }}
key: ${{ runner.os }}-arm64-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.resupd-cache.outputs.cache-hit != 'true' && steps.maadeps-cache.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 tools/maadeps-download.py x64-linux
python3 tools/linux-toolchain-download.py x64
- name: Install llvm-20
if: steps.resupd-cache.outputs.cache-hit != 'true'
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
python3 tools/maadeps-download.py arm64-osx
- name: Config cmake
if: steps.resupd-cache.outputs.cache-hit != 'true'
run: |
cd tools/ResourceUpdater
mkdir -p build
cmake -B build \
cmake -B build -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DMAADEPS_TRIPLET='maa-x64-linux' \
-DBUILD_RES_UPDATER=ON \
-DCMAKE_TOOLCHAIN_FILE=cmake/linux/maa-x64-linux-toolchain.cmake
-DMAADEPS_TRIPLET='maa-arm64-osx' \
-DWITH_HASH_VERSION=ON
- name: Build
if: steps.resupd-cache.outputs.cache-hit != 'true'
run: |
cmake --build build --config Release --parallel $(nproc)
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 build --config Release --prefix tools/ResourceUpdater
cmake --install tools/ResourceUpdater/build --prefix tools/ResourceUpdater --config Release
- name: Save ResourceUpdater to cache
if: always() && steps.resupd-cache.outputs.cache-hit != 'true'
@@ -202,11 +195,8 @@ jobs:
with:
key: ResourceUpdater-${{ runner.os }}-${{ hashFiles('tools/ResourceUpdater/main.cpp') }}
path: |
./tools/ResourceUpdater/libc++.so.1
./tools/ResourceUpdater/libc++abi.so.1
./tools/ResourceUpdater/libopencv_world4.so.411
./tools/ResourceUpdater/libunwind.so.1
./tools/ResourceUpdater/ResourceUpdater
./tools/ResourceUpdater/libopencv_world4.4.11.0.dylib
./tools/ResourceUpdater/res_updater
- name: Download txwy
id: download-txwy
@@ -216,10 +206,10 @@ jobs:
name: txwy
path: ./tools/ResourceUpdater/Overseas/tw/gamedata/excel
- name: Delay txwy
- name: Delay for txwy
if: steps.download-txwy.outcome == 'failure'
run: |
sleep 10
sleep 30
- name: Re-download txwy
if: steps.download-txwy.outcome == 'failure'
@@ -236,10 +226,10 @@ jobs:
name: overseas
path: ./tools/ResourceUpdater/Overseas
- name: Delay Overseas
- name: Delay for Overseas
if: steps.download-overseas.outcome == 'failure'
run: |
sleep 10
sleep 30
- name: Re-download Overseas
if: steps.download-overseas.outcome == 'failure'
@@ -256,10 +246,10 @@ jobs:
name: official
path: ./tools/ResourceUpdater/Official
- name: Delay Official
- name: Delay for Official
if: steps.download-official.outcome == 'failure'
run: |
sleep 10
sleep 30
- name: Re-download Official
if: steps.download-official.outcome == 'failure'
@@ -268,11 +258,11 @@ jobs:
name: official
path: ./tools/ResourceUpdater/Official
- name: Run Resource Updater
- name: Update resources
run: |
./tools/ResourceUpdater/ResourceUpdater
./tools/ResourceUpdater/res_updater
- name: Task Sorting
- name: Sort tasks
id: task_sorting
run: |
python3 tools/TaskSorter/TaskSorter.py
@@ -286,7 +276,7 @@ jobs:
- name: Update version.json date if necessary
id: update_version
run: |
tools/ResourceUpdater/version.sh
sh ./tools/ResourceUpdater/version.sh
- name: Setup python
if: steps.update_version.outputs.contains_png == 'True'
@@ -294,7 +284,7 @@ jobs:
with:
python-version: "3.11"
- name: Cache Python packages
- name: Cache python packages
if: always() && steps.update_version.outputs.contains_png == 'True'
id: cache_python
uses: actions/cache@v4
@@ -313,12 +303,12 @@ jobs:
with:
crate: oxipng
- name: Run optimize_templates
- name: Optimize png images
if: steps.update_version.outputs.contains_png == 'True'
run: |
python3 tools/OptimizeTemplates/optimize_templates.py -p resource/template/items/ resource/template/infrast/
- name: Add files to git
- name: Commit changes
if: steps.update_version.outputs.changes == 'True'
id: add_files
run: |
@@ -360,7 +350,30 @@ 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.yml -f release_body="Auto Release of Resource Updates"
- name: Comment on issue if failed
if: failure() && github.ref == 'refs/heads/dev'
run: |
# Minimize old failure comments
comments=$(gh api repos/${{ github.repository }}/issues/14493/comments --jq '.[] | select(.user.login == "github-actions[bot]") | select(.body | contains("${{ github.server_url }}/${{ github.repository }}/actions/runs/")) | .node_id')
for node_id in $comments; do
gh api graphql -f query='
mutation {
minimizeComment(input: {subjectId: "'"$node_id"'", classifier: OUTDATED}) {
minimizedComment {
isMinimized
}
}
}'
done
# Add new failure comment
gh issue comment 14493 -R ${{ github.repository }} --body "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
@MistEO @ABA2396 @Constrat"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,43 +1,44 @@
name: smoke-testing
name: Smoke Test
on:
push:
paths:
- ".github/workflows/smoke-testing.yml"
- "3rdparty/include/**"
- "include/**"
- "src/Cpp/**"
- "src/MaaCore/**"
- "resource/**"
- "!**/*.md"
- "cmake/**"
- "CMakeLists.txt"
- "include/**"
- "resource/**"
- "src/Cpp/**"
- "src/MaaCore/**"
- "tools/maadeps-download.py"
- "tools/SmokeTesting/**"
- "!**/*.md"
pull_request:
paths:
- ".github/workflows/smoke-testing.yml"
- "3rdparty/include/**"
- "include/**"
- "src/Cpp/**"
- "src/MaaCore/**"
- "resource/**"
- "!**/*.md"
- "cmake/**"
- "CMakeLists.txt"
- "include/**"
- "resource/**"
- "src/Cpp/**"
- "src/MaaCore/**"
- "tools/maadeps-download.py"
- "tools/SmokeTesting/**"
- "!**/*.md"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
smoke-testing:
name: Run Smoke Test
# 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: ubuntu-latest
runs-on: macos-latest
steps:
- name: Checkout code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
@@ -47,21 +48,16 @@ jobs:
run: |
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
- name: Restore cache for Smoke Test
id: smoke-cache
uses: actions/cache/restore@v4
with:
key: ${{ steps.cache_key.outputs.key }}
path: |
./install/AsstCaller.h
./install/AsstPort.h
./install/libc++.so.1
./install/libc++abi.so.1
./install/libfastdeploy_ppocr.so
./install/libMaaCore.so
./install/libonnxruntime.so.1
./install/libopencv_world4.so.411
./install/libunwind.so.1
./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
@@ -75,37 +71,30 @@ jobs:
uses: actions/cache@v4
with:
path: ./MaaDeps
key: ${{ runner.os }}-x64-maadeps-${{ hashFiles('tools/maadeps-download.py', 'tools/linux-toolchain-download.py') }}
key: ${{ runner.os }}-arm64-maadeps-${{ hashFiles('tools/maadeps-download.py') }}
- name: Bootstrap MaaDeps
if: steps.smoke-cache.outputs.cache-hit != 'true' && steps.maadeps-cache.outputs.cache-hit != 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python3 tools/maadeps-download.py x64-linux
python3 tools/linux-toolchain-download.py x64
- name: Install llvm-20
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 20
python3 tools/maadeps-download.py arm64-osx
- name: Config cmake
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
mkdir -p build
cmake -B build \
cmake -B build -GNinja \
-DCMAKE_BUILD_TYPE=Debug \
-DMAADEPS_TRIPLET='maa-x64-linux' \
-DMAADEPS_TRIPLET='maa-arm64-osx' \
-DBUILD_SMOKE_TEST=ON \
-DCMAKE_TOOLCHAIN_FILE=cmake/linux/maa-x64-linux-toolchain.cmake
-DINSTALL_RESOURCE=ON \
-DWITH_HASH_VERSION=ON
- name: Build
if: steps.smoke-cache.outputs.cache-hit != 'true'
run: |
cmake --build build --config Debug --parallel $(nproc)
cmake --build build --config Debug --parallel $(sysctl -n hw.logicalcpu)
- name: Install
if: steps.smoke-cache.outputs.cache-hit != 'true'
@@ -113,25 +102,25 @@ jobs:
mkdir -p install
cmake --install build --prefix install --config Debug
- name: Make link to Smoke Test cache
if: steps.smoke-cache.outputs.cache-hit == 'true'
run: |
ln -s "$(pwd)/resource" install/resource
- name: Run tests
run: |
./tools/SmokeTesting/run_tests.sh
sh ./tools/SmokeTesting/run_tests.sh
- name: Save cache smoke-testing (only in dev)
- name: Save cache for Smoke Test (only in 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: |
./install/AsstCaller.h
./install/AsstPort.h
./install/libc++.so.1
./install/libc++abi.so.1
./install/libfastdeploy_ppocr.so
./install/libMaaCore.so
./install/libonnxruntime.so.1
./install/libopencv_world4.so.411
./install/libunwind.so.1
./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

View File

@@ -1,4 +1,4 @@
name: "Inactive Issues Closer"
name: Issue Staleness Management
on:
schedule:
@@ -11,6 +11,7 @@ env: # config
jobs:
stale:
name: Handle Stale Issues
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
permissions:
@@ -20,7 +21,7 @@ jobs:
pull-requests: none
contents: none
steps:
- name: Close inactive issues
- name: Handle stale issues
uses: actions/stale@v10
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,26 +1,27 @@
name: sync-resource
name: Resource Sync
on:
push:
branches:
- dev
paths:
- "resource/**"
- ".github/workflows/sync-resource.yml"
- "resource/**"
workflow_dispatch:
jobs:
sync-resource:
name: Sync Resource to MaaResource
if: github.repository_owner == 'MaaAssistantArknights'
runs-on: ubuntu-latest
steps:
- name: Checkout MaaAssistantArknights
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
- name: Setup Git
- name: Configure git
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'

View File

@@ -1,4 +1,4 @@
name: MaaWebsite Workflow
name: Documentation Site
on:
push:
@@ -8,108 +8,67 @@ 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
name: Build and Deploy Documentation Site
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Check out code
- name: Checkout repository
uses: actions/checkout@v5
with:
show-progress: false
- name: Setup Pages
if: github.repository_owner == 'MaaAssistantArknights'
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@v5
uses: actions/setup-node@v6
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 site
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@v4
with:
name: dist
path: "./website/dist"
publish:
runs-on: ubuntu-latest
needs: build
if: github.event_name != 'pull_request'
steps:
- name: Download website artifacts
uses: actions/download-artifact@v5
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 }}
path: "./docs/.vuepress/dist"
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
if: env.AZURE_TARGET_ENV == 'prod'
if: github.repository_owner == 'MaaAssistantArknights' && (inputs.deploy-to-prod == true || github.ref == 'refs/heads/master')
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: "."
publish_dir: "./docs/.vuepress/dist"
publish_branch: gh-pages
- 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

6
.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
@@ -473,4 +474,7 @@ Thumbs.db
# build & install
build
install
install
# pnpm cache
.pnpm-store

View File

@@ -4,29 +4,47 @@ ci:
autofix_prs: true
repos:
- repo: https://github.com/shssoichiro/oxipng
rev: v9.1.4
rev: v9.1.5
hooks:
- id: oxipng
name: PNG Image Compression
args: ["-q", "-o", "2", "-s", "--ng"]
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v20.1.0
rev: v21.1.1
hooks:
- id: clang-format
name: Clang-Format (MaaCore)
files: ^src/MaaCore/.*
args: ["--assume-filename", ".clang-format"]
- repo: https://github.com/rbubley/mirrors-prettier
rev: v3.5.3
rev: v3.6.2
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
- id: prettier
name: Prettier (Documentation)
files: ^docs/.*
- repo: https://github.com/psf/black
rev: 25.9.0
hooks:
- id: black
name: Black Formatter (Python)
- repo: https://github.com/pycqa/isort
rev: 6.0.1
hooks:
- id: isort
name: Isort (Python)
args: ["--profile", "black", "--filter-files"]
- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.17.2
rev: v0.18.1
hooks:
- id: markdownlint-cli2
name: MarkdownLint (Documentation)
files: ^docs/.*|^README\.md$
types:
- markdown
args: ["--fix", "--config", "docs/.markdownlint.yaml", "#**/node_modules"]
args: ["--fix", "--config", "docs/.markdownlint.yaml"]

View File

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

View File

@@ -1,234 +1,84 @@
## v5.24.2
### 特殊说明
由于本次活动代号 SS 与 SideStory 的内部代号冲突,关卡命名统一采用 AveMujica-x 格式(例如 AveMujica-8请使用 手动输入关卡名 / cli 的博士使用此代号。
### 功能进化 | Highlight
本次更新继续扩展自动化能力,一起来看看吧
#### 自动战斗优化
这个版本我们优化了自动战斗功能,现在你可以在更多的场景下使用自动战斗功能。目前 MAA 支持以下场景:
* `主线/故事集/SideStory`:基础模式,注意只能在当前章节/页面内导航(即 SS 里不能用于切换普通关、EX 关和 S 关);
* `保全派驻`:用于保全派驻模式,可以点击神秘代码输入框右侧的向下小箭头来选择内置作业,并且可以设置循环次数;
* `悖论模拟`:新增的专用于干员悖论模拟的场景,分为以下两种使用方式:
* 直接使用单次战斗:输入神秘代码后,在干员的悖论模拟入口,<u>选择好技能,出现【开始模拟】按钮后,点击 MAA 的开始按钮</u>
* 多个干员连续作战:右键粘贴按钮可以粘贴作业集的神秘代码(或是勾选战斗列表依次输入每个干员的作业的神秘代码),然后<u>在干员列表界面,点击 MAA 的开始按钮</u>。
* `其他活动`:兜底模式,不可使用战斗列表。
现在,博士们可以直接使用悖论模拟的战斗列表功能完成所有悖论模拟作业,支持按职业找人、自动跳过未拥有的干员,并在战斗列表中直接显示干员名,真正实现“点一下,全都打完”~
#### 新内容支持
- **争锋频道:蜜果城** 入口适配(本质还是跑的青草城代码)
- 外服也同步适配了 **新版终端界面**
#### 其他优化
- 自动战斗在关卡结束后增加了黑色返回按钮的检测,更加稳健
- 界面与交互细节继续优化,深色模式显示效果更自然
----
### [CN ONLY] Special Notice
Due to a conflict between this event's code SS and the internal code for SideStory, the stage naming will use the format AveMujica-x (e.g., AveMujica-8). Please use this code when entering the stage manually or via CLI.
#### Copilot Optimization
In this version, we've optimized the Copilot, allowing you to use it in more scenarios. Currently, MAA supports the following scenarios:
* `Main Theme/Intermezzi/SideStory`: Basic mode. Note that navigation is only possible within the current chapter/page (i.e., in SideStory, you cannot switch between normal stages, EX stages, and S stages);
* `SSS`: For SSS mode. You can click the small downward arrow on the right side of the mysterious code input box to select built-in files, also you can set the number of loop times;
* `Paradox Simulation`: A newly added scenario specifically designed for operator paradox simulations, available in the following two usage methods:
* Direct single battle usage: After entering the secret code, you need to navigate to the operator's paradox simulation entry point, <u>select the skills, wait for the [Start Simulation] button to appear, then click MAA's start button</u> to start;
* Continuous battles for multiple operators: You need to rightclick the paste button to paste the mysterious code for the job set, or check the battle list checkbox and sequentially enter each operator's mysterious code for the operation, then <u>click MAA's start button on the operator list interface</u>.
* `Other Events`: Fallback mode, battle list cannot be used.
Now, Doctors can directly use the combat list feature in Paradox Simulation to complete all Paradox Simulation assignments. It supports filtering by profession, automatically skipping unowned Operators, and displaying Operator names directly in the combat list — truly achieving "one click, all done"~
#### New Content Support
- [CN ONLY] **Arena Channel: Honeydew** entry (Use the same code for Green Grass City)
- **New Terminal interface** adaptation for global servers
#### Other Improvements
- Added detection for the black return button after auto-battle ends, making runs more robust
- UI and interaction polish — dark mode looks more natural
----
以下是详细内容:
## v5.24.2
## v5.27.0-beta.1
### 新增 | New
* 适配 命运(AveMujica) 主题 (#13970) @weinibuliu
* SideStory「无忧梦呓」导航 (#13969) @SherkeyXD
* 勾选 「下次公告更新前不再显示」 勾选框时不需要滚到底才能关闭公告 @ABA2396
* 界面主题「齐聚」 @SherkeyXD
* 资源更新完成后等待空闲时再加载 @ABA2396
* 界园 DLC 新关卡战斗逻辑 @Saratoga-Official
* 不是我认识的主题,直接切换 @ABA2396
* 界园 dlc2 通宝数据更新 @SherkeyXD
* 支持剿灭关卡名识别 @ABA2396
* 跳过使用未准备好的技能 && 全局计时器 (#13913) @Alan-Charred
* 本次更新的公告右上角添加红点 @ABA2396
* 添加刷常乐节点策略 (#13868) @travellerse
### 改进 | Improved
* 优化关卡验证逻辑,避免导入错误类型关卡时直接崩溃 @ABA2396
* GetImageFromRoi 工具优化 @SherkeyXD
* 进入新任务后重置任务超时计时器, 以避免非单任务卡阻的误报 @status102
* 繁中服主線、肉鴿導航 UI 更新 (#14433) @momomochi987
* ProcSubTask static @status102
### 修复 | Fix
* 肉鸽因模拟器卡顿偶现无法退出商店 @ABA2396
* OF-1 无法切换分队 @status102
* 蜜果城模拟器卡顿时可能无法返回主界面 @Windsland52
* 八幡海铃识别错误 @Saratoga-Official
* 选技能可能会点到技能范围 @ABA2396
* 降低萨米肉鸽进入 “诡秘的预感” 所需模版匹配分数阈值 (#14521) @Alan-Charred
* 公招按钮 roi 错误 @Saratoga-Official
* 掉落识别修复 (#14508) @Alan-Charred
* 变更弃用的参数 @ABA2396
* 开始唤醒会回到主界面 @ABA2396
* 尝试为活动商店小游戏适配新的时装购买动画 (#14490) @Alan-Charred
* 无人机协助点击无效时增加自动重试机制 @ABA2396
* 每日任务领取延迟载荷移位 @SherkeyXD
* 每日任务领取因为延迟卡住 @SherkeyXD
* 繁中服無法進入資源收藏關卡 (#14469) @momomochi987
* 为界园放弃探索任务添加备用模版 (#14466) @Alan-Charred
* 肉鸽跳一战打一战刷钱 (#14450) @Alan-Charred
* 傀影不期而遇选项 @Saratoga-Official
* 界园 dlc 背景无法放弃探索 (#14425) @Alan-Charred
* 界园狭路相逢选项 @Saratoga-Official
* Award模板阈值还是小了 @Saratoga-Official
* 掉落识别增加越界检查 (#14312) @MistEO @Alan-Charred
* 界园杂疑选项 @Saratoga-Official
* 修复 "设置-外部通知" 存在多个通知渠道时只会发送到第一个成功的渠道问题 (#14380) @Jim-Happy
* 界园肉鸽选项 @Saratoga-Official
* 给 ClickToStartPoint 加点延迟 @Saratoga-Official
* 萨卡兹去伪存真弹窗有延迟无法退出 @Saratoga-Official
* JP Task.png (#14516) @Daydreamer114
* precommit maacore @Constrat
* change default issue + remove always as not necessary @Constrat
* add always() @Constrat
* YostarKR RoguelikeCustom-HijackSquad squad recognition @HX3N
* cleanup ifdef + fix AsstDestroy missed calls + lldb @Constrat
### 其他 | Other
* 关卡小提示改用 Value @ABA2396
* 调整日志输出格式 @ABA2396
* 悖论模拟选技能改用固定位置,避免透明背景影响 @ABA2396
## v5.24.1
### 新增 | New
* 适配 悬想(界园肉鸽) 主题 (#13948) @weinibuliu
* 繁中服「視相」主題介面 (#13947) @momomochi987
* 悖论通关后自动取消勾选,遇到战斗失败的关卡时停止 (#13963) @ABA2396
### 改进 | Improved
* 日志记录增加 ClassName 输出debug 模式下属性切换新增反引号显示 @ABA2396
* 优化 Copilot 列表验证逻辑,提高性能 @ABA2396
### 修复 | Fix
* 自动编队后续追加自定干员失败 @status102
* 错误的关卡名可能导致验证崩溃 @ABA2396
* 公告重复点击时不会前置窗口 @ABA2396
* 战斗列表无法进入 1/2 星干员悖论 @ABA2396
* 悖论模拟战斗列表页尾干员错位 @ABA2396
* 空作业列表点开始崩溃 @status102
* 繁中服薩米肉鴿第五層名稱 (#13961) @momomochi987
* EN not picking up Trade Orders @Constrat
* IS5 EN StageRefresh not working, updated template @Constrat
* IS2 and IS3 not starting for EN @Constrat
* update Infrast templates for EN @Constrat
### 文档 | Docs
* 修正文档中的部分错误 (#13923) @lucienshawls
* 补充模拟器相关文档和协议文档 (#14478) @Alan-Charred
* 添加关于实体设备上账号切换问题的说明 (#14468) @Initial-heart-1 @lucienshawls @HX3N @Constrat @Manicsteiner @momomochi987
* 在不支持列表中添加腾讯应用宝 (#14477) @JasonHuang79
* 增加换行以提升文档在 GitHub 的阅读体验 (#14338) @status102
* vscode 插件文档视觉优化 @SherkeyXD
* 利用 tabs 优化视觉表现 @SherkeyXD
* 利用步骤容器优化视觉效果 @SherkeyXD
* 更新 algolia 配置 @SherkeyXD
### 其他 | Other
*「掉线时自动重连」 从 「运行设置」 移到 「刷理智设置」 中 @ABA2396
* 将 「自动肉鸽在战斗结束前延迟停止动作」 从 「运行设置」 移到 「肉鸽设置」 中 @ABA2396
* 繁中服「銀心湖列車」復刻活動導航 (#13945) @momomochi987
* 调整公告日志记录 @ABA2396
* 提取 isBuildOutputFolder @ABA2396
* 编译目录下不检查 dll @ABA2396
* 长草任务运行状态 (#13928) @status102
* 简化 Split @ABA2396
* OperatorType -> OperatorRole @status102
* JP ocr fix (#13938) @Manicsteiner
* i18n @Constrat @Manicsteiner
## v5.24.0
### 新增 | New
* 悖论模拟战斗列表通过职业找人 @ABA2396
* 悖论模拟战斗列表支持跳过未拥有的干员 @ABA2396
* 战斗列表悖论模拟关卡名转为干员名 @ABA2396
* 支持一键悖论模拟 (#13893) @status102 @Constrat @Burnside999 @momomochi987 @HX3N @Manicsteiner @ABA2396
* 争锋频道:蜜果城 @ABA2396
* mac 支持蜜果城 @ABA2396
* 调整战斗列表提示描述 @ABA2396
* 远程通知添加 `[MAA]` 前缀 @ABA2396
* 加个启动提醒 @ABA2396
* 在启动时检测额外的 DLL 文件 (#13850) @Rbqwow @ABA2396
* 自动战斗关卡结束后增加识别使用黑色返回按钮的检测 @status102
* 更新源为海外源时隐藏 Mirror酱 CDK 输入框 @ABA2396
### 改进 | Improved
* 覆盖 ThirdlyTextBrush优化深色模式下的显示效果 @ABA2396
* 任务 baseTask @status102
* 重构自动战斗战斗列表 (#13852) @status102
* 更新 CsWin32 @ABA2396
* ToastNotification 重构 @ABA2396
* 向战斗队列中添加 SSS 作业时追加错误输出 @status102
* limit codeql run only to source code (#13802) @Constrat
### 修复 | Fix
* 悖论模拟单文件无法使用 @ABA2396
* 关卡名下划线被解释成 CheckBox 访问键 @ABA2396
* 勾八导航乱写 @ABA2396
* 自动战斗界面 Idle setter 限制 @status102
* 自动战斗-战斗列表使用错误的作业战斗 @status102
* 信用购物有时候点不掉危机合约支援界面 @ABA2396
* ServerChan 未使用通用 httpService @ABA2396
* 错误清除 _tasksStatus 的时机 @ABA2396
* 肉鸽入口等待 ocr 识别错误 @ABA2396
* 界园肉鸽商店钱包余额ocr roi @status102
* 自动战斗-战斗列表`突袭`提示显示在运行期显示效果 @status102
* 不再点击停止任务时移除存储的 TaskId @status102
* 繁中服薩米肉鴿第四層名稱 (#13846) @momomochi987
* 肉鸽投资存款不变重试 20 次退出 @status102
* required version 显示错误 @ABA2396
* 会客室换班失败(如选人过程中弹出线索交流完成)时重开任务 @ABA2396
* 肉鸽开局招募在无开局干员时, 无法识别两招募的左侧位 @status102
* 千古鸭帝进战斗 @Saratoga-Official
* 日服的萨卡兹第五层怎么全 jb 改成 exit 了 @ABA2396
* 自动战斗干员编队状态; 修复编队中干员属性未达标时反复报错; 缺少干员输出时, 干员组内干员打平输出 (#13795) @status102
* 修正生息演算中 "丰饶灌木林" 的 OCR 识别 (#13825) @Alan-Charred
* 资源更新文件处理 @hguandl
* 萨卡兹肉鸽因动画延时偶发无法领取去伪存真合成物品 @ABA2396
* 萨米投资进二层会卡在预见密文板 @ABA2396
* CrownSlayer -> Crownslayer for EN @Constrat
* RoguelikeDialogSkip for EN @Constrat
* BattleQuickFormationExpandRole text ocr @Constrat
* OfficeMini template for EN @Constrat
* OfficeMini template for EN @Constrat
* ROI and text for EA YostarEN @Constrat
* YostarEN text render template changes @Constrat
* var type @status102
* YostarKR EA navigation @HX3N
* filters @ABA2396
### 其他 | Other
* 整合枚举类 OperProfession 和 Role (#13914) @soundofautumn
* 悖论模拟使用多任务流程 @status102
* 移除MaaCore不再支持的自动战斗作业代码解析 @status102
* 删掉 core 的联网功能 @ABA2396
* core 删除 cpr @ABA2396
* dll 检测排除带 maa 的 dll @ABA2396
* 自动战斗模组错误本地化 & 移除多余的行末空格 (#13800) @soundofautumn @Constrat @HX3N
* 调整小游戏内容顺序 @ABA2396
* 修改 RA 和肉鸽的进入终端等待时间 @ABA2396
* 调整萨卡兹,界园的古米精二优先度 @Saratoga-Official
* 修改备份文件写入时间 @ABA2396
* 关机/休眠/睡眠 统一调用 PowerManagement @ABA2396
* 调整 GetModuleFileName 判断 @ABA2396
* 移除未使用的 container @ABA2396
* mumu 使用 7555 端口时禁用 Index 检测,添加日志警告 @ABA2396
* file header @status102
* 自动编队助战的确实干员读取 @status102
* 加点肉鸽事件 fallback 前延迟,可能减轻点网络波动影响 @ABA2396
* 自动战斗不再使用 `need_navigate` 字段作为导航启用开关, 而是直接使用 `navigate_name` 字段 @status102
* 调整技能截图判断 @ABA2396
* YostarEN updated main stage navigation (#13906) @Constrat
* Give new line for English downloading from @Constrat
* YostarJP remove old navigation (#13905) @Manicsteiner
* YostarJP/KR new main stage navigation and ocr fix @Manicsteiner @HX3N
* A single-line comment within C# code is not preceded by a blank line. @ABA2396
* A C# partial element is missing a documentation header. @ABA2396
* An item within a C# enumeration is missing an Xml documentation header. @ABA2396
* A C# method, constructor, delegate or indexer element is missing documentation for one or more of its parameters. @ABA2396
* The XML header documentation for a C# element is missing a tag. @ABA2396
* Copyright 2025 @ABA2396
* Update localization strings for Mini Game section @AnnAngela
*Copilot ActionType::ResetTimer 更改为更适合的 ResetStopwatch (#14507) @Alan-Charred
* 调整截图 @ABA2396
* 文件路径错误 @ABA2396
* 我是铸币 @SherkeyXD
* ALL~ the Announcements 中新公告标题中加 * @ABA2396
* 拆出界园岁兽残识地图导航 (#14432) @Alan-Charred
* 繁中服「輓歌燃燒殆盡」活動導航 (#14434) @momomochi987
* remove global templates for 3294b29f54dadc4198a40538e85b71902c79c875 @Constrat
* txwy add SwitchTheme@ConfirmThemeChange.png (#14511) @momomochi987
* YostarJP SwitchTheme@ConfirmThemeChang @Manicsteiner
* YostarKR add SwitchTheme@ConfirmThemeChang @HX3N
* add SwitchTheme@ConfirmThemeChange.png @Constrat
* remove cancelled() and add mentions @Constrat
* YostarKR SSS#8 SSSBuffChoose @HX3N
* update SSS#8 buff choose ocr for EN @Constrat
* SSS#8 global changes (add acahuallan, remove dossoles and barrenbeasts) @Constrat
* translate ElapsedTime ref: 1edd00698200b7c2a14406d7a29f51689f6871d1 @Constrat

View File

@@ -1,22 +1,21 @@
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/modules")
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_FLATTEN "do not use bin lib include directory" ON)
option(WITH_EMULATOR_EXTRAS "build with emulator extras" ${WIN32})
option(BUILD_SMOKE_TEST "build smoke_test" OFF)
option(BUILD_RES_UPDATER "build ResourceUpdater" OFF)
option(WITH_HASH_VERSION "generate version from git hash" OFF)
include(${PROJECT_SOURCE_DIR}/MaaDeps/maadeps.cmake)
@@ -24,12 +23,16 @@ include(${PROJECT_SOURCE_DIR}/cmake/config.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/utils.cmake)
include(${PROJECT_SOURCE_DIR}/cmake/version.cmake)
if(APPLE)
include(${PROJECT_SOURCE_DIR}/cmake/macos.cmake)
endif()
if(INSTALL_FLATTEN)
set(MaaCore_install_flatten_args RUNTIME DESTINATION . LIBRARY DESTINATION . PUBLIC_HEADER DESTINATION .)
endif()
add_library(HeaderOnlyLibraries INTERFACE)
target_include_directories(HeaderOnlyLibraries INTERFACE 3rdparty/include 3rdparty/EmulatorExtras)
file(GLOB_RECURSE maa_src src/MaaCore/*.h src/MaaCore/*.hpp src/MaaCore/*.cpp)
add_library(MaaCore SHARED ${maa_src})
target_include_directories(HeaderOnlyLibraries INTERFACE 3rdparty/include)
find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs)
find_package(Boost REQUIRED CONFIG COMPONENTS system)
@@ -37,113 +40,22 @@ find_package(ZLIB REQUIRED)
find_package(fastdeploy_ppocr REQUIRED)
find_package(ONNXRuntime REQUIRED)
target_link_libraries(MaaCore HeaderOnlyLibraries ${OpenCV_LIBS} fastdeploy_ppocr ONNXRuntime::ONNXRuntime ZLIB::ZLIB Boost::system)
if(WIN32)
target_link_libraries(MaaCore ws2_32)
endif()
if(LINUX)
target_link_libraries(MaaCore pthread)
endif()
add_subdirectory(src/MaaCore)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${maa_src})
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 PUBLIC_HEADER "${MaaCore_PUBLIC_HEADERS}")
if(WIN32)
add_custom_command(
TARGET MaaCore
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different
"${PROJECT_SOURCE_DIR}/MaaDeps/runtime/${MAADEPS_TRIPLET}/$<$<CONFIG:Debug>:msvc-debug/>"
$<TARGET_FILE_DIR:MaaCore>
COMMAND_EXPAND_LISTS)
endif()
if (BUILD_WPF_GUI)
if(BUILD_WPF_GUI)
include_external_msproject(MaaWpfGui ${PROJECT_SOURCE_DIR}/src/MaaWpfGui/MaaWpfGui.csproj)
add_dependencies(MaaWpfGui MaaCore)
endif()
if(APPLE)
set_target_properties(MaaCore PROPERTIES INSTALL_RPATH "@loader_path/")
elseif(UNIX)
set_target_properties(MaaCore PROPERTIES INSTALL_RPATH "$ORIGIN/")
endif()
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(INSTALL_FLATTEN)
set(MaaCore_install_flatten_args RUNTIME DESTINATION . LIBRARY DESTINATION . PUBLIC_HEADER DESTINATION .)
endif()
install(TARGETS MaaCore ${MaaCore_install_flatten_args})
maadeps_install(.)
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 (BUILD_DEBUG_DEMO)
add_executable(debug_demo src/Cpp/main.cpp)
if(MSVC)
target_compile_options(debug_demo PRIVATE "/WX-")
else()
target_compile_options(debug_demo PRIVATE "-Wno-error")
endif()
target_link_libraries(debug_demo MaaCore)
add_dependencies(debug_demo MaaCore)
# install(TARGETS debug_demo ${MaaCore_install_flatten_args})
endif (BUILD_DEBUG_DEMO)
if (BUILD_SMOKE_TEST)
add_executable(smoke_test src/Cpp/main.cpp)
if(MSVC)
target_compile_options(smoke_test PRIVATE "/WX-")
else()
target_compile_options(smoke_test PRIVATE "-Wno-error")
endif()
target_compile_definitions(smoke_test PRIVATE SMOKE_TESTING)
target_link_libraries(smoke_test MaaCore)
add_dependencies(smoke_test MaaCore)
install(TARGETS smoke_test ${MaaCore_install_flatten_args})
endif (BUILD_SMOKE_TEST)
if (BUILD_RES_UPDATER)
add_executable(ResourceUpdater tools/ResourceUpdater/main.cpp)
target_include_directories(ResourceUpdater PUBLIC include PRIVATE src/MaaCore) # For Utils/Time.hpp
target_link_libraries(ResourceUpdater HeaderOnlyLibraries ${OpenCV_LIBS})
if(LINUX)
target_link_libraries(ResourceUpdater pthread)
endif()
install(TARGETS ResourceUpdater DESTINATION . COMPONENT ResourceUpdater)
# Copy from maadeps_install, adding component
if(MSVC)
install(DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/MaaDeps/runtime/${MAADEPS_TRIPLET}/$<$<CONFIG:Debug>:msvc-debug/>" DESTINATION . USE_SOURCE_PERMISSIONS COMPONENT ResourceUpdater)
else()
install(DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/MaaDeps/runtime/${MAADEPS_TRIPLET}/" DESTINATION . USE_SOURCE_PERMISSIONS COMPONENT ResourceUpdater)
endif()
endif (BUILD_RES_UPDATER)
if (APPLE)
include(${PROJECT_SOURCE_DIR}/cmake/macos.cmake)
endif (APPLE)
if(BUILD_DEBUG_DEMO OR BUILD_SMOKE_TEST)
add_subdirectory(src/Cpp)
endif()

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,27 +83,25 @@ 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/)
## 加入我们
### 主要关联项目
**目前项目组非常缺前端大佬,若您有相关经验,欢迎加入我们!**
- 全新框架:[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://prts.plus) 前端:[zoot-plus-frontend](https://github.com/ZOOT-Plus/zoot-plus-frontend)
- [作业站](https://prts.plus) 后端:[ZootPlusBackend](https://github.com/ZOOT-Plus/ZootPlusBackend)
- [官网](https://maa.plus)[前端](https://github.com/MaaAssistantArknights/maa-website)
- 深度学习:[MaaAI](https://github.com/MaaAssistantArknights/MaaAI)
### 多语言 (i18n)
@@ -114,11 +112,11 @@ 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
@@ -131,22 +129,40 @@ 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-流程简述)
#### 想参与开发,但面对庞大的项目仓库望而却步?
请使用 GitHub Codespaces 在线开发环境,尽情尝试!
我们预置了多种不同的开发环境以供选择:
- 空白环境,裸 Linux 容器(默认)
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2Fdevcontainer.json)
- 轻量环境,适合文档站前端开发
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2F0%2Fdevcontainer.json)
- 全量环境,适合 MAA Core 相关开发
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg?color=green)](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2F1%2Fdevcontainer.json)
#### 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

@@ -43,7 +43,7 @@ if(LINUX)
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if("${LIB_PATH}" STREQUAL "${LIBNAME}.so.1}")
if("${LIB_PATH}" STREQUAL "${LIBNAME}.so.1")
message(FATAL_ERROR "Could not locate ${LIBNAME}.so.1 using compiler")
endif()
@@ -63,7 +63,7 @@ if(LINUX)
message(STATUS "${LIBNAME}.so.1 path: ${LIB_PATH_REAL}")
install(FILES "${LIB_PATH_REAL}" DESTINATION . RENAME "${LIBNAME}.so.1")
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}")

View File

@@ -1,19 +0,0 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(XTOOLS_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../MaaDeps/x-tools/aarch64-linux-gnu)
set(CMAKE_C_COMPILER_TARGET aarch64-linux-gnu)
set(CMAKE_C_COMPILER clang-20)
set(CMAKE_CXX_COMPILER_TARGET aarch64-linux-gnu)
set(CMAKE_CXX_COMPILER clang++-20)
set(CMAKE_ASM_COMPILER_TARGET aarch64-linux-gnu)
set(CMAKE_ASM_COMPILER clang-20)
set(CMAKE_SYSROOT ${XTOOLS_ROOT}/aarch64-linux-gnu/sysroot)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT} -fuse-ld=lld --gcc-toolchain=${XTOOLS_ROOT}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT} -fuse-ld=lld --gcc-toolchain=${XTOOLS_ROOT}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT} -fuse-ld=lld --gcc-toolchain=${XTOOLS_ROOT}")
set(CMAKE_LINKER_TYPE LLD)

View File

@@ -1,19 +0,0 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(XTOOLS_ROOT ${CMAKE_CURRENT_LIST_DIR}/../../MaaDeps/x-tools/x86_64-linux-gnu)
set(CMAKE_C_COMPILER_TARGET x86_64-linux-gnu)
set(CMAKE_C_COMPILER clang-20)
set(CMAKE_CXX_COMPILER_TARGET x86_64-linux-gnu)
set(CMAKE_CXX_COMPILER clang++-20)
set(CMAKE_ASM_COMPILER_TARGET x86_64-linux-gnu)
set(CMAKE_ASM_COMPILER clang-20)
set(CMAKE_SYSROOT ${XTOOLS_ROOT}/x86_64-linux-gnu/sysroot)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT} -fuse-ld=lld --gcc-toolchain=${XTOOLS_ROOT}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT} -fuse-ld=lld --gcc-toolchain=${XTOOLS_ROOT}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIC -stdlib=libc++ --sysroot=${CMAKE_SYSROOT} -fuse-ld=lld --gcc-toolchain=${XTOOLS_ROOT}")
set(CMAKE_LINKER_TYPE LLD)

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

@@ -37,10 +37,37 @@ function(get_osx_architecture)
endfunction()
if(APPLE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 13.3) # for to_chars
set(CMAKE_OSX_DEPLOYMENT_TARGET 13.4) # for to_chars
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()

View File

@@ -3,23 +3,23 @@ set(MAA_HASH_VERSION
"DEBUG_VERSION"
CACHE STRING "maa version")
if(MAA_HASH_VERSION STREQUAL "DEBUG_VERSION")
if(WITH_HASH_VERSION AND MAA_HASH_VERSION STREQUAL "DEBUG_VERSION")
find_package(Git)
endif()
if(MAA_HASH_VERSION STREQUAL "DEBUG_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(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}")
if(result EQUAL 0)
set(MAA_HASH_VERSION "${output}")
else()
message(WARNING "git rev-parse returning ${result}, output:\n${err}")
endif()
endif()
endif()

1
docs/.prettierignore Normal file
View File

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

40
docs/.prettierrc.cjs 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: ['**/*.*css'],
options: {
singleQuote: false,
},
},
{
files: ['**/*.yml', '**/*.yaml'],
options: {
parser: 'yaml',
singleQuote: false,
},
},
{
files: ['**/*.json'],
options: {
tabWidth: 4,
},
},
{
files: ['**/*.md'],
options: {
embeddedLanguageFormatting: 'off',
},
},
],
}

View File

@@ -1,12 +1,21 @@
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 { getAsciiArt } from './plugins/asciiArt.mts'
import AsciiArt from './components/AsciiArt.vue'
import ImageGrid from './components/ImageGrid.vue'
import Redirect from './components/Redirect.vue'
import './styles/index.scss'
export default defineClientConfig({
enhance: ({ app }) => {
app.component("Image1", Image1);
app.component("Image2", Image2);
app.component("Image4", Image4);
app.component('AsciiArt', AsciiArt)
app.component('ImageGrid', ImageGrid)
app.component('Redirect', Redirect)
// 输出一个随机的字符画
const asciiArtData = getAsciiArt(undefined, 'auto', 'console')
console.log('%c' + asciiArtData.text, 'white-space: pre;')
},
});
})

View File

@@ -0,0 +1,106 @@
<template>
<div ref="asciiArtWrapperElement" class="ascii-art-wrapper">
<pre ref="asciiArtContentElement" class="ascii-art-content">{{ asciiArtText }}</pre>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount } from 'vue'
import { getAsciiArt, ThemeType, AsciiArtScope } from '../plugins/asciiArt.mts'
// -------- Props --------
interface AsciiArtProps {
name?: string
theme?: ThemeType
scope?: AsciiArtScope
}
const props = defineProps<AsciiArtProps>()
// -------- Refs --------
const asciiArtWrapperElement = ref<HTMLElement>()
const asciiArtContentElement = ref<HTMLElement>()
// -------- Data --------
let asciiArtNameInUse = props.name
const asciiArtText = ref('')
let layoutObserver: ResizeObserver
let themeObserver: MutationObserver
let isScaleUpLocked = false
let lastScaleRatio = 1
function refreshAsciiArt() {
const asciiArtData = getAsciiArt(asciiArtNameInUse, props.theme, props.scope)
asciiArtNameInUse = asciiArtData.name
asciiArtText.value = asciiArtData.text
}
function scaleAsciiArt() {
if (!asciiArtWrapperElement.value || !asciiArtContentElement.value) return
// 原始高度和宽度无视scale
const contentWidth = asciiArtContentElement.value.scrollWidth
const contentHeight = asciiArtContentElement.value.scrollHeight
if (contentWidth === 0 || contentHeight === 0) return
const targetWidth = asciiArtWrapperElement.value.clientWidth
const targetHeight = window.innerHeight
const scaleRatio = Math.min(targetWidth / contentWidth, targetHeight / contentHeight)
// 锁定状态不允许放大
if (scaleRatio > lastScaleRatio && isScaleUpLocked) return
lastScaleRatio = scaleRatio
isScaleUpLocked = true
asciiArtContentElement.value.style.transform = `scale(${scaleRatio})`
asciiArtWrapperElement.value.style.height = `${contentHeight * scaleRatio}px`
}
function forceScaleAsciiArt() {
isScaleUpLocked = false
scaleAsciiArt()
}
onMounted(() => {
if (!asciiArtWrapperElement.value || !asciiArtContentElement.value) return
layoutObserver = new ResizeObserver(scaleAsciiArt)
layoutObserver.observe(asciiArtContentElement.value)
layoutObserver.observe(asciiArtWrapperElement.value)
themeObserver = new MutationObserver(refreshAsciiArt)
themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] })
window.addEventListener('resize', forceScaleAsciiArt)
refreshAsciiArt()
})
onBeforeUnmount(() => {
if (layoutObserver) {
layoutObserver.disconnect()
}
if (themeObserver) {
themeObserver.disconnect()
}
window.removeEventListener('resize', forceScaleAsciiArt)
})
</script>
<style scoped>
.ascii-art-wrapper {
display: flex;
justify-content: center;
align-items: flex-start;
}
.ascii-art-content {
display: block;
white-space: pre;
margin: 0 auto;
transform-origin: top;
line-height: 1;
font-family: 'JetBrains Mono', monospace;
}
</style>

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,55 +0,0 @@
import type { VNode } from "vue";
import { defineComponent, h, computed } 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 = computed(() => {
if (!dropdown.value) return null;
const filteredConfig = { ...dropdown.value };
if (filteredConfig.children) {
filteredConfig.children = filteredConfig.children.filter(item => {
// 过滤掉跳转到根目录的项目
return item.link !== '/' && item.link !== '/docs/' && !item.link?.endsWith('/docs/');
});
}
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.value },
{
title: () =>
h(I18nIcon, {
"aria-label": filteredDropdown.value?.ariaLabel,
style: {
width: "1rem",
height: "1rem",
verticalAlign: "middle",
},
}),
},
),
)
: null;
},
});

View File

@@ -0,0 +1,25 @@
<template />
<script setup lang="ts">
import { onMounted } from 'vue'
import { useRouter, useRoute } from 'vuepress/client'
interface Props {
to?: string
}
const props = defineProps<Props>()
const route = useRoute()
const router = useRouter()
function resolvePath(to: string) {
const target = new URL(to, 'http://example.com' + route.path) // 使用一个虚拟的基础 URL
return target.pathname
}
onMounted(() => {
if (!props.to) return
const targetPath = resolvePath(props.to)
router.replace(targetPath)
})
</script>

View File

@@ -1,87 +1,46 @@
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 { genSiteLocales } from './navigation/genLocales'
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: {
"/zh-cn/": {
lang: "zh-cn",
description: "文档",
},
"/zh-tw/": {
lang: "zh-tw",
description: "文件",
},
"/en-us/": {
lang: "en-us",
description: "Documentation",
},
"/ja-jp/": {
lang: "ja-jp",
description: "ドキュメンテーション",
},
"/ko-kr/": {
lang: "ko-kr",
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",
}),
],
locales: genSiteLocales(),
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',
},
],
],
@@ -90,4 +49,62 @@ 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,
cache: 'filesystem',
search: DocSearchConfig,
codeHighlighter: {
themes: { light: 'snazzy-light', dark: 'night-owl' },
},
markdown: {
annotation: true,
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',
}),
],
})

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

@@ -0,0 +1,7 @@
/// <reference types="vite/client" />
declare module '*.vue' {
import { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
}

View File

@@ -1,29 +0,0 @@
import { navbar } from "vuepress-theme-hope";
export const enusNavbar = navbar([
{
text: "Home",
icon: "ic:round-home",
link: "/en-us/",
},
{
text: "User Manual",
icon: "mdi:user",
link: "/en-us/manual/",
},
{
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",
},
]);

View File

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

View File

@@ -1,29 +0,0 @@
import { navbar } from "vuepress-theme-hope";
export const jajpNavbar = navbar([
{
text: "ホームページ",
icon: "ic:round-home",
link: "/ja-jp/",
},
{
text: "使用説明",
icon: "mdi:user",
link: "/ja-jp/manual/",
},
{
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",
},
]);

View File

@@ -1,29 +0,0 @@
import { navbar } from "vuepress-theme-hope";
export const kokrNavbar = navbar([
{
text: "홈페이지",
icon: "ic:round-home",
link: "/ko-kr/",
},
{
text: "사용자 설명서",
icon: "mdi:user",
link: "/ko-kr/manual/",
},
{
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",
},
]);

View File

@@ -1,29 +0,0 @@
import { navbar } from "vuepress-theme-hope";
export const zhcnNavbar = navbar([
{
text: "主页",
icon: "ic:round-home",
link: "/zh-cn/",
},
{
text: "用户手册",
icon: "mdi:user",
link: "/zh-cn/manual/",
},
{
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",
},
]);

View File

@@ -1,29 +0,0 @@
import { navbar } from "vuepress-theme-hope";
export const zhtwNavbar = navbar([
{
text: "首頁",
icon: "ic:round-home",
link: "/zh-tw/",
},
{
text: "用戶說明書",
icon: "mdi:user",
link: "/zh-tw/manual/",
},
{
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",
},
]);

View File

@@ -0,0 +1,29 @@
import { SiteLocaleConfig, LocaleConfig } from 'vuepress'
import { ThemeLocaleData } from 'vuepress-theme-plume'
import { locales } from './i18n'
import { genNavigationComponents } from './genNavigationComponents'
export function genSiteLocales(): SiteLocaleConfig {
const siteLocales: SiteLocaleConfig = {}
for (const locale of locales) {
siteLocales[`/${locale.name}/`] = {
lang: locale.htmlLang,
title: locale.siteTitle,
description: locale.siteDescription,
}
}
return siteLocales
}
export function genThemeLocales(): LocaleConfig<ThemeLocaleData> {
const themeLocales: LocaleConfig<ThemeLocaleData> = {}
for (const locale of locales) {
const navigationComponents = genNavigationComponents(locale)
themeLocales[`/${locale.name}/`] = {
navbar: navigationComponents.navbar,
collections: navigationComponents.collections,
}
}
return themeLocales
}

View File

@@ -0,0 +1,161 @@
import * as fs from 'fs'
import * as path from 'path'
import { default as matter } from 'gray-matter'
import { ThemeCollectionItem, ThemeNavItem, ThemeSidebarItem } from 'vuepress-theme-plume'
import { Locale } from './i18n'
interface MetaData {
baseName: string
order: number
title: string
icon: string
index: boolean
}
interface NavigationComponents {
navbar: ThemeNavItem[]
collections: ThemeCollectionItem[]
}
type SidebarItem = ThemeSidebarItem | string
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,
}
}
function getSidebarItems(dir: string): SidebarItem[] {
interface WrappedSidebarItem {
sidebarItem: SidebarItem
order: number
}
const entries = fs.readdirSync(dir, { withFileTypes: true }).filter((e) => !e.name.startsWith('.'))
const sidebarItemsWithOrder: WrappedSidebarItem[] = []
for (const entry of entries) {
let sidebarItem: SidebarItem
const metaData = getMetaData(dir, entry)
if (!metaData) {
continue
}
if (entry.isDirectory()) {
const children = getSidebarItems(path.join(dir, entry.name))
// 可折叠的子目录
sidebarItem = {
text: metaData.title,
// 只有当目录设置了index: true时才生成链接否则点击时不跳转、只切换折叠状态
link: metaData.index ? `${metaData.baseName}/` : undefined,
icon: metaData.icon,
// 目前没有文档使用了badge这个特性故不处理
// badge: undefined,
collapsed: true,
// 前面不能加斜杠,必须用相对路径
prefix: `${metaData.baseName}/`,
items: children,
}
} else if (entry.isFile() && entry.name.endsWith('.md') && entry.name.toLowerCase() !== 'readme.md') {
// 普通文件,取完整文件名作为链接
sidebarItem = entry.name
}
sidebarItemsWithOrder.push({ sidebarItem: sidebarItem, order: metaData.order })
}
sidebarItemsWithOrder.sort((a, b) => a.order - b.order)
return sidebarItemsWithOrder.map((i) => i.sidebarItem)
}
export function genNavigationComponents(
locale: Locale,
baseDir = path.resolve(__dirname, '../../'),
): NavigationComponents {
interface WrappedNavigationComponent {
navItem: ThemeNavItem
collectionItem: ThemeCollectionItem
order: number
}
const navigationComponentsWithOrder: WrappedNavigationComponent[] = []
// 进入指定语言目录即docs/<i18n>/
const langDir = path.join(baseDir, locale.name)
// 获取所有非隐藏文件和目录
const entries = fs.readdirSync(langDir, { withFileTypes: true }).filter((e) => !e.name.startsWith('.'))
for (const entry of entries) {
if (!entry.isDirectory()) continue
const metaData = getMetaData(langDir, entry)
if (!metaData) {
continue
}
const navbarItem: ThemeNavItem = {
text: metaData.title,
icon: metaData.icon,
link: `/${locale.name}/${metaData.baseName}/`,
}
const collectionItem: ThemeCollectionItem = {
type: 'doc',
title: metaData.title,
dir: metaData.baseName,
linkPrefix: `/${metaData.baseName}/`,
sidebar: getSidebarItems(path.join(langDir, entry.name)),
}
navigationComponentsWithOrder.push({
navItem: navbarItem,
collectionItem: collectionItem,
order: metaData.order,
})
}
navigationComponentsWithOrder.sort((a, b) => a.order - b.order)
return {
navbar: navigationComponentsWithOrder.map((i) => i.navItem),
collections: navigationComponentsWithOrder.map((i) => i.collectionItem),
}
}

View File

@@ -0,0 +1,45 @@
export interface Locale {
name: string
// displayName: string
htmlLang: string
siteTitle: string
siteDescription: string
}
export const locales: Locale[] = [
{
name: 'zh-cn',
// displayName: '简体中文',
htmlLang: 'zh-CN',
siteTitle: 'MAA 文档站',
siteDescription: '文档',
},
{
name: 'zh-tw',
// displayName: '繁體中文',
htmlLang: 'zh-TW',
siteTitle: 'MAA 文件站',
siteDescription: '文件',
},
{
name: 'en-us',
// displayName: 'English',
htmlLang: 'en-US',
siteTitle: 'MAA Documentation Site',
siteDescription: 'Documentation',
},
{
name: 'ja-jp',
// displayName: '日本語',
htmlLang: 'ja-JP',
siteTitle: 'MAA ドキュメントサイト',
siteDescription: 'ドキュメント',
},
{
name: 'ko-kr',
// displayName: '한국어',
htmlLang: 'ko-KR',
siteTitle: 'MAA 문서 사이트',
siteDescription: '문서',
},
]

View File

@@ -0,0 +1,90 @@
const modules = import.meta.glob<string>('../../asciiArts/*.txt', { query: '?raw', import: 'default', eager: true })
const asciiArts: Record<string, string> = {}
for (const path in modules) {
const name = path
.split('/')
.pop()
?.replace(/\.txt$/, '')!
asciiArts[name] = modules[path]
}
export type ThemeType = 'auto' | 'disable' | string
export type AsciiArtScope = 'web' | 'console'
interface AsciiArtData {
name: string | null
text: string
}
function pickAsciiArt(
arts: Record<string, string>,
artFilter?: (key: string) => boolean,
keyToName?: (key: string) => string,
): AsciiArtData {
const keys = artFilter ? Object.keys(arts).filter(artFilter) : Object.keys(arts)
let asciiArtKey: string | null
let asciiArtText: string
if (keys.length === 0) {
asciiArtKey = null
asciiArtText = ''
} else if (keys.length === 1) {
asciiArtKey = keys[0]
asciiArtText = arts[keys[0]]
} else {
const randomKey = keys[Math.floor(Math.random() * keys.length)]
asciiArtKey = randomKey
asciiArtText = arts[randomKey]
}
if (!asciiArtKey || !keyToName) {
return { name: asciiArtKey, text: asciiArtText }
} else {
return { name: keyToName(asciiArtKey), text: asciiArtText }
}
}
export function getAsciiArt(name?: string, theme: ThemeType = 'auto', scope: AsciiArtScope = 'web'): AsciiArtData {
let resolvedTheme: ThemeType = theme
// auto 模式
if (theme === 'auto') {
let currentTheme: string | null = null
if (scope === 'web' && typeof document !== 'undefined') {
// 浏览器中读取 HTML data-theme
currentTheme = document?.documentElement?.getAttribute('data-theme')
} else if (scope === 'console' && typeof window !== 'undefined' && window.matchMedia) {
// fallback: 检查系统首选主题
currentTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
}
resolvedTheme = currentTheme ? currentTheme : 'disable'
}
if (resolvedTheme !== 'disable') {
// light/dark/... 模式
return name
? pickAsciiArt(
asciiArts,
(k) => k === name + '.' + resolvedTheme,
() => name,
)
: pickAsciiArt(
asciiArts,
(k) => k.endsWith('.' + resolvedTheme),
(k) => k.replace(new RegExp('\\.' + resolvedTheme + '$'), ''),
)
} else {
// disable 模式
return name
? pickAsciiArt(
asciiArts,
(k) => k === name || k.startsWith(name + '.'),
() => name,
)
: pickAsciiArt(
asciiArts,
() => true,
(k) => k,
)
}
}

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: '9ARM1N4899',
apiKey: 'f42bf1d18c786d5a46da30eccac5cb34',
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,107 @@
import { defineThemeConfig } from 'vuepress-theme-plume'
import { genThemeLocales } from './navigation/genLocales'
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: genThemeLocales(),
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.

Before

Width:  |  Height:  |  Size: 266 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
<text x="16" y="31" font-size="12" text-anchor="middle" font-family="monospace">maa</text>
<path transform="translate(4, 0)" fill-rule="evenodd" clip-rule="evenodd" d="M19.85 8.75l4.15.83v4.84l-4.15.83 2.35 3.52-3.43 3.43-3.52-2.35-.83 4.15H9.58l-.83-4.15-3.52 2.35-3.43-3.43 2.35-3.52L0 14.42V9.58l4.15-.83L1.8 5.23 5.23 1.8l3.52 2.35L9.58 0h4.84l.83 4.15 3.52-2.35 3.43 3.43-2.35 3.52zm-1.57 5.07l4-.81v-2l-4-.81-.54-1.3 2.29-3.43-1.43-1.43-3.43 2.29-1.3-.54-.81-4h-2l-.81 4-1.3.54-3.43-2.29-1.43 1.43L6.38 8.9l-.54 1.3-4 .81v2l4 .81.54 1.3-2.29 3.43 1.43 1.43 3.43-2.29 1.3.54.81 4h2l.81-4 1.3-.54 3.43 2.29 1.43-1.43-2.29-3.43.54-1.3zm-8.186-4.672A3.43 3.43 0 0 1 12 8.57 3.44 3.44 0 0 1 15.43 12a3.43 3.43 0 1 1-5.336-2.852zm.956 4.274c.281.188.612.288.95.288A1.7 1.7 0 0 0 13.71 12a1.71 1.71 0 1 0-2.66 1.422z"/>
</svg>

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -1,32 +0,0 @@
import { sidebar } from "vuepress-theme-hope";
export const enusSidebar = sidebar({
"/en-us/": [
{
text: "MAA",
icon: "ic:round-home",
link: "/en-us/",
},
{
text: "User Manual",
icon: "mdi:user",
prefix: "manual/",
collapsible: true,
children: "structure",
},
{
text: "Development Docs",
icon: "ph:code-bold",
prefix: "develop/",
collapsible: true,
children: "structure",
},
{
text: "Protocol Docs",
icon: "basil:document-solid",
prefix: "protocol/",
collapsible: true,
children: "structure",
},
],
});

View File

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

View File

@@ -1,32 +0,0 @@
import { sidebar } from "vuepress-theme-hope";
export const jajpSidebar = sidebar({
"/ja-jp/": [
{
text: "MAA",
icon: "ic:round-home",
link: "/ja-jp/",
},
{
text: "使用説明",
icon: "mdi:user",
prefix: "manual/",
collapsible: true,
children: "structure",
},
{
text: "開発関連",
icon: "ph:code-bold",
prefix: "develop/",
collapsible: true,
children: "structure",
},
{
text: "プロトコルドキュメント",
icon: "basil:document-solid",
prefix: "protocol/",
collapsible: true,
children: "structure",
},
],
});

View File

@@ -1,32 +0,0 @@
import { sidebar } from "vuepress-theme-hope";
export const kokrSidebar = sidebar({
"/ko-kr/": [
{
text: "MAA",
icon: "ic:round-home",
link: "/ko-kr/",
},
{
text: "사용자 설명서",
icon: "mdi:user",
prefix: "manual/",
collapsible: true,
children: "structure",
},
{
text: "개발 관련",
icon: "ph:code-bold",
prefix: "develop/",
collapsible: true,
children: "structure",
},
{
text: "프로토콜 문서",
icon: "basil:document-solid",
prefix: "protocol/",
collapsible: true,
children: "structure",
},
],
});

View File

@@ -1,32 +0,0 @@
import { sidebar } from "vuepress-theme-hope";
export const zhcnSidebar = sidebar({
"/zh-cn/": [
{
text: "MAA",
icon: "ic:round-home",
link: "/zh-cn/",
},
{
text: "用户手册",
icon: "mdi:user",
prefix: "manual/",
collapsible: true,
children: "structure",
},
{
text: "开发文档",
icon: "ph:code-bold",
prefix: "develop/",
collapsible: true,
children: "structure",
},
{
text: "协议文档",
icon: "basil:document-solid",
prefix: "protocol/",
collapsible: true,
children: "structure",
},
],
});

View File

@@ -1,32 +0,0 @@
import { sidebar } from "vuepress-theme-hope";
export const zhtwSidebar = sidebar({
"/zh-tw/": [
{
text: "MAA",
icon: "ic:round-home",
link: "/zh-tw/",
},
{
text: "用戶說明書",
icon: "mdi:user",
prefix: "manual/",
collapsible: true,
children: "structure",
},
{
text: "開發文件",
icon: "ph:code-bold",
prefix: "develop/",
collapsible: true,
children: "structure",
},
{
text: "協議文件",
icon: "basil:document-solid",
prefix: "protocol/",
collapsible: true,
children: "structure",
},
],
});

View File

@@ -1 +0,0 @@
$theme-colors: #2196f3, #f26d6d, #3eaf7c, #fb9b5f;

View File

@@ -0,0 +1,16 @@
:root {
--vp-font-family-base:
-apple-system, BlinkMacSystemFont, "Noto Sans SC", "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans",
"Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", sans-serif;
--vp-font-family-heading:
Georgia, -apple-system, "Nimbus Roman No9 L", "PingFang SC", "Hiragino Sans GB", "Noto Serif SC", "Microsoft Yahei",
"WenQuanYi Micro Hei", "ST Heiti", sans-serif;
--vp-font-family-mono:
"Maple Mono NF CN", "JetBrains Mono", "Fira Code", "Noto Sans SC", Consolas, monospace, Menlo, "Courier New";
}
html[lang="ja-JP"] {
--vp-font-family-base: "Helvetica Neue", Arial, "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
}

View File

@@ -0,0 +1,40 @@
:root {
--vp-home-hero-name: var(--vp-c-text-1);
--vp-home-hero-text: var(--vp-c-text-2);
--vp-home-hero-tagline: var(--vp-c-text-3);
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: linear-gradient(350deg, var(--vp-c-yellow-1) 10%, var(--vp-c-red-2));
--vp-home-hero-image-background-image: linear-gradient(-45deg, var(--vp-c-yellow-1) 50%, var(--vp-c-yellow-1) 50%);
--vp-home-hero-image-filter: blur(50px);
--vp-home-hero-name-font-size: 4rem;
--vp-home-hero-name-line-height: 1.1;
@media (min-width: 640px) {
--vp-home-hero-name-font-size: 5rem;
}
@media (min-width: 960px) {
--vp-home-hero-name-font-size: 6rem;
}
}
.vp-home-doc-hero {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
.container {
margin: 0 auto;
display: flex;
align-items: center;
width: 100%;
max-width: 1152px;
}
.name {
font-size: var(--vp-home-hero-name-font-size) !important;
line-height: var(--vp-home-hero-name-line-height) !important;
}
}

View File

@@ -0,0 +1,22 @@
@use "home.scss";
@use "fonts.scss";
/* 按钮组容器 */
.actions .action {
display: flex;
flex-wrap: wrap;
justify-content: center;
max-width: 100%;
padding: 0;
}
/* 按钮 */
.actions .action .vp-button {
margin: 0.5rem;
min-width: 7em;
}
/* 首页标题 */
.is-home .name.clip {
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3);
}

View File

@@ -1,20 +0,0 @@
$sidebar-width: 16rem;
$content-width: 1000px;
$vp-font: '-apple-system, BlinkMacSystemFont, "Noto Sans SC", "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", sans-serif';
$vp-font-heading: 'Georgia, -apple-system, "Nimbus Roman No9 L", "PingFang SC", "Hiragino Sans GB", "Noto Serif SC", "Microsoft Yahei", "WenQuanYi Micro Hei", "ST Heiti", sans-serif';
$vp-font-mono: '"Sarasa Gothic", "Jetbrains mono", "Fira Code", "Noto Sans SC", Consolas, monospace, Menlo, "Courier New"';
.vp-hero-slide-down-button {
display: none !important;
visibility: hidden !important;
}
.vp-skip-link.sr-only {
display: none !important;
visibility: hidden !important;
}
html[lang="ja-JP"] {
$vp-font: "Helvetica Neue, Arial, Hiragino Kaku Gothic ProN, Hiragino Sans, Meiryo, sans-serif";
}

View File

@@ -1,185 +0,0 @@
import { hopeTheme } from "vuepress-theme-hope";
import DocSearchConfig from './plugins/search';
import { zhcnNavbar, zhtwNavbar, enusNavbar, jajpNavbar, kokrNavbar } from "./navbar/index";
import { zhcnSidebar, zhtwSidebar, enusSidebar, jajpSidebar, kokrSidebar } from "./sidebar/index";
export default hopeTheme({
hostname: "https://maa.plus",
author: "MaaAssistantArknights",
license: "AGPL-3.0",
repo: "MaaAssistantArknights/MaaAssistantArknights",
docsBranch: "dev",
docsDir: "/docs",
lastUpdated: false,
contributors: false,
locales: {
"/zh-cn/": {
navbar: zhcnNavbar,
sidebar: zhcnSidebar,
displayFooter: false,
metaLocales: {
editLink: "在 Github 上编辑此页面",
},
},
"/zh-tw/": {
navbar: zhtwNavbar,
sidebar: zhtwSidebar,
displayFooter: false,
title: '繁体中文',
metaLocales: {
editLink: "在 Github 上編輯此頁面",
},
},
"/en-us/": {
navbar: enusNavbar,
sidebar: enusSidebar,
displayFooter: false,
metaLocales: {
editLink: "Edit this page on Github",
},
},
"/ja-jp/": {
navbar: jajpNavbar,
sidebar: jajpSidebar,
displayFooter: false,
metaLocales: {
editLink: "このページを Github で編集する",
},
},
"/ko-kr/": {
navbar: kokrNavbar,
sidebar: kokrSidebar,
displayFooter: false,
metaLocales: {
editLink: "Github 에서 이 페이지를 편집",
},
},
},
markdown: {
align: true,
codeTabs: true,
//echarts: true,
footnote: true,
gfm: true,
hint: true,
imgLazyload: true,
imgMark: true,
imgSize: true,
//mathjax: true,
mark: true,
//mermaid: true,
tabs: true,
tasklist: true,
vPre: true,
component: true,
highlighter: {
'type': 'shiki',
themes: {
light: "light-plus",
dark: "nord",
}
},
},
plugins: {
activeHeaderLinks: false,
comment: {
provider: "Giscus",
repo: "MaaAssistantArknights/maa-website",
repoId: "R_kgDOHY7Gyg",
category: "Comments",
categoryId: "DIC_kwDOHY7Gys4CgoVH",
mapping: "pathname",
strict: true,
},
docsearch: DocSearchConfig,
icon: {
assets: "iconify",
},
sitemap: true,
seo: true,
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/",
},
],
},
],
},
}, { custom: true });

View File

@@ -1,74 +1,14 @@
---
home: true
pageInfo: false
breadcrumb: false
pageLayout: home
navbar: false
sidebar: false
index: false
lastUpdated: false
editLink: false
contributors: false
prev: false
next: false
config:
- type: custom
---
!: .7:~!.
:. :?55 ?5~::~J?:
:P5YY?7~: .!JYYJG. 7P! .7Y!.
^5JJJY55PPG5!. .?JYYJYG. ~P?. ~YJ: :PY~.
^5YYYYYYY5PPPPYJ??7!!~^!?YYYYY5 :5Y. :J5!. :G&#5^
~PY5555555PPPGGPPPPPPPPJ5YJYPP???5?57::.. !5J: Y&##P:
^YPP5JJY5555PPGG55PP555PGPPPGGPPP555555555YYYJJ?77!~^::...~5P^:. P####7
!GPPJ?JYYYYY5P5PPG57:...:!5GG?~!?JJY55PPPPPPPPPPP555555555YJYPYY57!~^::... .#####!
.?PY?YYYYYYY5PP5G?..:!??JYYPYY7. .....:^~!?JJYY5PPPPPPPP555555555555YYYJJ?77!!B####P
.5Y5YYYYYY555PGY.!?JYJJYJ5P:.?5^...:.::^~^^:::... ....::::~!!7?J5P55PPPPPPPP5P55PPGG###P
.:~?P5555PPPPGY:J77YYJY55Y: ..Y5?Y5PPGGBBBBGGGGP555J!^. ^~...^!77YY5G5::~:.:!5#G
^5555PPPG5?.~5JYYYYY7: :~?5PPG5BBBBB########BBB####BGY7~~^:..:: .:^!~^~?Y7~. ~J7Y
P55PPPGY~...?5?~^:...:75PPGP5PG#####BGBBBBBBBBBB######BGGP5YJ???7!7JY?!!?YYYJYJ^^GJ..
.!?P5YPB^ ....... :!J5PGB#######BBGY7~!!7?PYJJ7!5GB#######BBGPYYYYYJJYYYYY55GB##5^...
75YYPG... .::::JPGB####BGPP55J5?^~~~~~~~~~~!!!?PGGBBBB#####GGBBBBBB##########&G^^~
Y5YYGY... ..:^7PBB#####GPJ!~~~^~?!~~~~~~~~~~~~!!J7!7?JPG###&###############&&&&#5~
.PYY5B!... ..^YBBBB####GPJ~~~~~~~?J!~~~^^~~^^~~^^~!!::^75GB####&&&&&&&&&&&&&&##BG5
^PYY5G:... .^^PB#B###GP5JJ7~~~~~~~!7?~~~^..^:^~~~!~~~!~^~~5JJ555G##&&&&&&&#BBBGGPB!
?5YYPP......:Y######G?!~!!~~~~~~~~~~!7^^^^:^~~~~~~!7~~!~^~~~~~!7?YGB###P77!:JGGGGB:
5YYYGJ..... 7#B####GP!^~!~~~~~~^::!~~!~^^~~~~!~~~~~!J!~7!^~~~~~~!?Y5GPPPP5!^PGGGGP
.7 .PYY5B^..:::^GBB####PP!^7!^^~~~^^:^7~~~!^~~~~~~7~!~~~?5J?J7:~~~~~~~!?YY5YY55PPPGGGP~^:
^5 ~PYYPG...:.!PP#####G5J!:?!^^~~~~~~~!~~~~^~~~~~!J7!??!!J!!JY~^~~~~~~~7?Y5YY55PPGGGGGB#P
^G J5YYGY ..:!5YB####G5!^~~?!~~~!~~~~~~~~~~~~~~~!!77..~7^7~ .:7^~~~~!!~JGPPGGGBGB#####GY^
^&! 5YY5B! ^J5YGB###B5!^~~~?7~~~!7~~^??!~~~!~~~~~~!! :77!.::~!^~~~7!~!Y#########BBP.
^&#~ :PYY5B:.!YYJG#####GG!~~~~7?~~~?J~7?P57~~~!7~~~!~7:..:~5PGBJ~^!^~~!J~~!7P##B###BGGG7
^&##Y^. ?P5PGGJYYYYPB#####BG!~~~~~J!~!55?7?!~J?!!77!777?::JPBBGP5J~ .!~~7J!~~!7YGG5BBGGGGB:
^&###BG555YYYY5GBBB#B#####GGJ~~~~^7775?J~!!. .~??J?7??J7..!:7?7YY~7.^!~?J!~~!!7JP55PBGGGGG
^&######BBBBB##########&#B5?!~~~~^~55~.7!~ .:~!7Y?J?!!~. :!~^~~.:^.??!!!7??YP5PPBGGGGY
^&###################&##PY7~~!~~~~:?~ ^7:.^?5GBG7?!:. ... .:.:J????JY?5P57^:^75B!
.G&&&############&&&###GYJ?~~7~~~~~:!:.!YBBBGP5J^ :?JJJJJYGPG!. .. .5:
!G#&&&&&&&&&&&&#B5?GGGY5?~~~~~~~~~^755^~Y??57~!. :!J55YYY55GGPY .. !.
.~YBBBB#GYJ?77~7BBP55P7~7!~!77~~~~~~~^^^!~^~! .. ^?PGGGGGGG#BP7 !.
^5YY5G^ ..!GP55555?YP5!~~!77!!7?J~. .^:. .. .^5#57GPBBBBBBP. ....:Y~
J5YYPP:...:7GP55555GP5G#P!~~~~!!!7?!:^:...:^: .^J?5GP:.YPY7JJGB#Y .:~YGB.
5YYYGJ:::^YGGY:?P5G#BB##B57!77777777???JJJYY: ..:~!!YP7YYP^ ??7~7?5BBBJ~!5GG5
:PYY5B!:^JGGPGBJ5G#####PJGPPJ5Y????JJJJJYY5PY?YYY??JJJ?7~!~JBG: !??~!?YBBB#BGGGB7
!5YYPG5GGGGB###?B###BB?!JG555PPYJ?77JYPP5GP57!J5G5YGGPY?!:~BP~^. .7J?~~?JBBB#5Y5GB:
Y5YY5Y5P5555^!PJPJ^?GGJYGPPGG!. .!Y55Y5Y: ..:~7J555JPPY!P~.~YJ?~~7JG#BBYYYPG
^7?JJYYYY5557:.^^:7PPY55YY5P7 :. !PPPBP^... .J!5B5BB57JYP7?~~!J5B#GYYYGY
...^J!~^.^JG55PPPPPGJ... . ~BP55PYJJJ?7~~^?5PGBBBGGPGGJ!^^~JYBBPYY5B!
^^^:.:::?. ...:^~~~~^^::~!.:PGGPPPP5555555555555555PPPGP??7?YYBB5YY5B.
...::^~!7?JYY5PPPPPPPP55555YYY555555555YYPP
...:^~!7??JY555PPPPP55555BJ
...:^^~!7?Y^
. . . . .
7^.::?7:^: :7?:...P:. :~~~7P~~~^. :Y ^~~G!~~. :J?:^.?^^5 !! Y^ :Y.. ~~~^~Y!^~~: :P. :^^^JY .7~!.!~::5.
.:. ~^ 7? :YJ.77.P:~? Y~~7P~~J: ~7J^~!!P7!!.::JY?J:Y ?^ ^G..5~:P^!J .YJ Y7^Y Y^ :? 5 Y. P
Y: :JY? .GY^?!.P.~? :!!~?P~~?7 .^? !?!!!7? .7YJ~~ Y ^7.~Y.!7!!!~7: :7!~Y.!!^ 5 ~7^^!G^^::? 5 7~^~?J
Y^ ^~^.~! 7?!.::.P::: ~!!~?P!!J5. .J JJ!!~7P .57:^P Y: Y^ J.5 !7 PY 7~ :5 ^^ .YP: P :5~5:^^^^.P
!!~7!^:::!~ ~! Y .~?7 .. .? ?^ .~!J ?7^~5 J::. J.7::^7^~! :5 .!: : :~J ^^!?
.
# Ciallo (∠・ω< )⌒★
<!-- markdownlint-disable-file -->
<!-- Use a Random Ascii Art -->
<AsciiArt theme="auto" />
<!-- Use a specific Ascii Art -->
<!-- <AsciiArt name="maa-logo-with-endorsement" theme="disable" /> -->

27
docs/README.md Normal file
View File

@@ -0,0 +1,27 @@
---
pageLayout: home
title: 首页
config:
- type: doc-hero
hero:
name: MAA
text: 文档站 | Documentation
tagline: 选择语言 | Select Language
image: /images/maa-logo_512x512.png
actions:
- theme: brand
text: 简体中文
link: /zh-cn/
- theme: alt
text: 繁體中文
link: /zh-tw/
- theme: alt
text: English
link: /en-us/
- theme: alt
text: 日本語
link: /ja-jp/
- theme: alt
text: 한국어
link: /ko-kr/
---

View File

@@ -0,0 +1,59 @@
!: .7:~!.
:. :?55 ?5~::~J?:
:P5YY?7~: .!JYYJG. 7P! .7Y!.
^5JJJY55PPG5!. .?JYYJYG. ~P?. ~YJ: :PY~.
^5YYYYYYY5PPPPYJ??7!!~^!?YYYYY5 :5Y. :J5!. :G&#5^
~PY5555555PPPGGPPPPPPPPJ5YJYPP???5?57::.. !5J: Y&##P:
^YPP5JJY5555PPGG55PP555PGPPPGGPPP555555555YYYJJ?77!~^::...~5P^:. P####7
!GPPJ?JYYYYY5P5PPG57:...:!5GG?~!?JJY55PPPPPPPPPPP555555555YJYPYY57!~^::... .#####!
.?PY?YYYYYYY5PP5G?..:!??JYYPYY7. .....:^~!?JJYY5PPPPPPPP555555555555YYYJJ?77!!B####P
.5Y5YYYYYY555PGY.!?JYJJYJ5P:.?5^...:.::^~^^:::... ....::::~!!7?J5P55PPPPPPPP5P55PPGG###P
.:~?P5555PPPPGY:J77YYJY55Y: ..Y5?Y5PPGGBBBBGGGGP555J!^. ^~...^!77YY5G5::~:.:!5#G
^5555PPPG5?.~5JYYYYY7: :~?5PPG5BBBBB########BBB####BGY7~~^:..:: .:^!~^~?Y7~. ~J7Y
P55PPPGY~...?5?~^:...:75PPGP5PG#####BGBBBBBBBBBB######BGGP5YJ???7!7JY?!!?YYYJYJ^^GJ..
.!?P5YPB^ ....... :!J5PGB#######BBGY7~!!7?PYJJ7!5GB#######BBGPYYYYYJJYYYYY55GB##5^...
75YYPG... .::::JPGB####BGPP55J5?^~~~~~~~~~~!!!?PGGBBBB#####GGBBBBBB##########&G^^~
Y5YYGY... ..:^7PBB#####GPJ!~~~^~?!~~~~~~~~~~~~!!J7!7?JPG###&###############&&&&#5~
.PYY5B!... ..^YBBBB####GPJ~~~~~~~?J!~~~^^~~^^~~^^~!!::^75GB####&&&&&&&&&&&&&&##BG5
^PYY5G:... .^^PB#B###GP5JJ7~~~~~~~!7?~~~^..^:^~~~!~~~!~^~~5JJ555G##&&&&&&&#BBBGGPB!
?5YYPP......:Y######G?!~!!~~~~~~~~~~!7^^^^:^~~~~~~!7~~!~^~~~~~!7?YGB###P77!:JGGGGB:
5YYYGJ..... 7#B####GP!^~!~~~~~~^::!~~!~^^~~~~!~~~~~!J!~7!^~~~~~~!?Y5GPPPP5!^PGGGGP
.7 .PYY5B^..:::^GBB####PP!^7!^^~~~^^:^7~~~!^~~~~~~7~!~~~?5J?J7:~~~~~~~!?YY5YY55PPPGGGP~^:
^5 ~PYYPG...:.!PP#####G5J!:?!^^~~~~~~~!~~~~^~~~~~!J7!??!!J!!JY~^~~~~~~~7?Y5YY55PPGGGGGB#P
^G J5YYGY ..:!5YB####G5!^~~?!~~~!~~~~~~~~~~~~~~~!!77..~7^7~ .:7^~~~~!!~JGPPGGGBGB#####GY^
^&! 5YY5B! ^J5YGB###B5!^~~~?7~~~!7~~^??!~~~!~~~~~~!! :77!.::~!^~~~7!~!Y#########BBP.
^&#~ :PYY5B:.!YYJG#####GG!~~~~7?~~~?J~7?P57~~~!7~~~!~7:..:~5PGBJ~^!^~~!J~~!7P##B###BGGG7
^&##Y^. ?P5PGGJYYYYPB#####BG!~~~~~J!~!55?7?!~J?!!77!777?::JPBBGP5J~ .!~~7J!~~!7YGG5BBGGGGB:
^&###BG555YYYY5GBBB#B#####GGJ~~~~^7775?J~!!. .~??J?7??J7..!:7?7YY~7.^!~?J!~~!!7JP55PBGGGGG
^&######BBBBB##########&#B5?!~~~~^~55~.7!~ .:~!7Y?J?!!~. :!~^~~.:^.??!!!7??YP5PPBGGGGY
^&###################&##PY7~~!~~~~:?~ ^7:.^?5GBG7?!:. ... .:.:J????JY?5P57^:^75B!
.G&&&############&&&###GYJ?~~7~~~~~:!:.!YBBBGP5J^ :?JJJJJYGPG!. .. .5:
!G#&&&&&&&&&&&&#B5?GGGY5?~~~~~~~~~^755^~Y??57~!. :!J55YYY55GGPY .. !.
.~YBBBB#GYJ?77~7BBP55P7~7!~!77~~~~~~~^^^!~^~! .. ^?PGGGGGGG#BP7 !.
^5YY5G^ ..!GP55555?YP5!~~!77!!7?J~. .^:. .. .^5#57GPBBBBBBP. ....:Y~
J5YYPP:...:7GP55555GP5G#P!~~~~!!!7?!:^:...:^: .^J?5GP:.YPY7JJGB#Y .:~YGB.
5YYYGJ:::^YGGY:?P5G#BB##B57!77777777???JJJYY: ..:~!!YP7YYP^ ??7~7?5BBBJ~!5GG5
:PYY5B!:^JGGPGBJ5G#####PJGPPJ5Y????JJJJJYY5PY?YYY??JJJ?7~!~JBG: !??~!?YBBB#BGGGB7
!5YYPG5GGGGB###?B###BB?!JG555PPYJ?77JYPP5GP57!J5G5YGGPY?!:~BP~^. .7J?~~?JBBB#5Y5GB:
Y5YY5Y5P5555^!PJPJ^?GGJYGPPGG!. .!Y55Y5Y: ..:~7J555JPPY!P~.~YJ?~~7JG#BBYYYPG
^7?JJYYYY5557:.^^:7PPY55YY5P7 :. !PPPBP^... .J!5B5BB57JYP7?~~!J5B#GYYYGY
...^J!~^.^JG55PPPPPGJ... . ~BP55PYJJJ?7~~^?5PGBBBGGPGGJ!^^~JYBBPYY5B!
^^^:.:::?. ...:^~~~~^^::~!.:PGGPPPP5555555555555555PPPGP??7?YYBB5YY5B.
...::^~!7?JYY5PPPPPPPP55555YYY555555555YYPP
...:^~!7??JY555PPPPP55555BJ
...:^^~!7?Y^
. . . . .
7^.::?7:^: :7?:...P:. :~~~7P~~~^. :Y ^~~G!~~. :J?:^.?^^5 !! Y^ :Y.. ~~~^~Y!^~~: :P. :^^^JY .7~!.!~::5.
.:. ~^ 7? :YJ.77.P:~? Y~~7P~~J: ~7J^~!!P7!!.::JY?J:Y ?^ ^G..5~:P^!J .YJ Y7^Y Y^ :? 5 Y. P
Y: :JY? .GY^?!.P.~? :!!~?P~~?7 .^? !?!!!7? .7YJ~~ Y ^7.~Y.!7!!!~7: :7!~Y.!!^ 5 ~7^^!G^^::? 5 7~^~?J
Y^ ^~^.~! 7?!.::.P::: ~!!~?P!!J5. .J JJ!!~7P .57:^P Y: Y^ J.5 !7 PY 7~ :5 ^^ .YP: P :5~5:^^^^.P
!!~7!^:::!~ ~! Y .~?7 .. .? ?^ .~!J ?7^~5 J::. J.7::^7^~! :5 .!: : :~J ^^!?
.

View File

@@ -0,0 +1,72 @@
. ,:.
;, .,NNd'.
. 'cl:. .' ..
;;'... ,clllc. .' ..
.,cll;::;,'. .loclllc. .'. '.
.;lolllccc::;;,. .olccclcc. ., '. ...
:ccccccccc:::;,.. locccllcc. '' .,. .....
ccccccccccc:::;;::::;;,,'...xlccclcc: ''. '. .....
.cccccc:::::::::,;;;;:::ccc:llc:clcc''....lkx. ,. ......
';::;:cc:;::;;;;;,;::::;;;::,c::cc:,:ccccc::;;;,''.... ,. .......
,:::;odlcccc::::;;';:::::;;::;,;:;;,;::cccccccccccccccc::;;;,''.... .'';. .......
,:::;dlcccccccc:::;,;::;:d00Oxoc;,';;,,,,,;;;;;:::::cccccccccccccccc::;;;,'.',dx:. .......
.:::;dolcccccccc:::::;,lONNNNNKOkl;;:kXXKOkkxdolc::;,,,,;;;:::::::ccccccccccccccc:::;;,''.... .......
;;lolccccccccc:::::;kNNNOdlc:::cc;l;lXNNNNNNNNNXWWNXKOkxdoc:;;,,,,;;;;:::::ccccccccccccccccc:::;;,'......'.....
:occccccccccc::::;:NKdl:llllcccc,KO;:O0KXXNNNNNWNNNWWWWWWNXNNXKOdollccc:;,,,,;;;;::::::ccccccccccccccc:.;.....
,lcccccccccc:::::;;O0:odllllllll;lNNO;;0KKK000OkxooooddxxO0XNNNK0KXNNNNWWNX0Okxdoc;;;,,,,,;;;::::::;c:;;':.....
.::ccccc:::::;;,xO:xxoccllllc;cXNNNk;okdlc:,,;;;;,;;;;,,',;:ldx0NNNNNMWNNNNNNNN0x0XXKkdlcl:;;;,,c0OOok0xl,...
';::::;;;;;;;kKoloocllllc;:kNNNKkd,;,;:;;;;;,'''.'',,,;;;;;,'',:oxKNNNNKKXNNXkkKNNNKKkkxddxdo,XOOOXWNNNXd;.
:ccc::::::::dNN;lllll:;:oONN0Oxc;:,:'c,,,,'''..........''...'...''':lddkOKXXX00XNNXNKKkxdxxxdccoxXNNNNKclO;
'cc:::::;;;oK0X0;c::cod0XKXNKo;:c:;oolo'.......''....''........''..',;:cc:cclodxk0KNKOdodOKKOcc;:::oKN0;.;O0
;c;;;;;,'oXXNXN0;lxKNNXXXKXd::c:;,,',,......',,c;,,;;;;;;,,;;''.....'''',;:clolc:::c:c:;clc::cloool:,o0cckXN
.:ccc;'ONNNKXNNXXXXNX0Od::c;,''''.....''';;:dxxxdol:,::coxx;;,.......'''''',:ccloooooooooooollc:,...;K0XN0
,cccc;'XXNNNNNN00XO0NOc;c;'.....',',,,,;;;okkkkkkkkxoxxdddkkc:;'........'...'::;;;;:::;;;,,,'........,0K0O
;ccc:;;XXXNNNNNX00O0x;:;'......;';;::ccolckkkkkkkkkkkkkkkxodxo;;;;;,,,'......,,.......................;OO,
:ccc:,lXKXXNNNXK0Oko,:'.'.....'c,odxxkkkkoxkkkkkkkkkkkkkkkkdodcoolc::;c'...............................o.
.cccc;,xXKXXNNXKKOOl;,'''.....';;lxkkkkkkklldkkkkkkkkkkkkkkkk0xoxkOOkxo,:'............................''.
'cccc;'0XXXXNNXKKOo,,.'''...'',:lkkkkkkkkkdoldkkkkkOkkkOkkkkkOOkddkKKOxo;:,..........................';,
,cccc;,XXXXXNNKK0l''''''...';;::lxkkkkkkkkxoolkkkkOXKOkKKkkkkxkkkxdxO0kkx,;;;,,,,..................,;;;'
;ccc:,cNXXXXNXxkd.,''...';::coxdxkkkkkkkkkkddodOkkO0XXOkOkkkkkdxkkkdxOkkklxxdlccc:''..........,:l';;;;;'
:ccc:,xXXXXXNX0O;',..'...:ldkkddkkkkkkkkkkkkkxoOk0Ok0KOkkkkkkkkddkkkdk0kkkkkkkxoooc,'....,odxok0x';;;;;.
.cccc;'0XXKKXNXXx''..'..',cdkkkxkkkkkkkkkOOxkkkxxOOOkkkkkkkkkkkkkooxkxox0kkkkkkkkxool;;;,'';loxX0l,;;;;,.
'cccc;'XXXKKKNN0''''.'..'::xkkokkkkkkkkkkKKdxkkko0kOkkkkkkdkkkkkkkloxkdokOkkkkkkkkxocl:;::;;;,cxk:,;;;;,
,ccc:;:XXKKK0XN:;'''...',:ckkklkkkkkkkk0OK0dxkkkdkOkkkkkkkoxkkkkkkx:lodolkOkkkkkkkkkdlcclcccccc:;,,,,,,'.
. ;ccc:,dXXKKKkkx,,'''...':,;o0klkO0kkkkkkkkkdxkkkkx0kkkkkkkkoOddxdddcc:lllcKkkkkkkkkkkkdlc::ccc::::::::;;,,,,
. .cccc:,ONXKKK0d'c'''...',c:dx0xlkkkkkkkkkkkkdkkkkkk0kkkkkkxdcddo:ddxd:kxccld0kkkkkkkkxxolc::ccc::;:,;;;;;,,,,
. .cccc;'NNXKKK0;c:''...';;:kkkkxoxkkkkxkkkkkkxkkkkkkOkkkkkdoolkKXOlkkkcOXXko:0kkkkkkxkkd:cccc::::;;;'.........
.. ,ccc:;;WNXK0k::l'''...,,ckkkkkdoxkkkkxkkkkkkxkkkkkkkkkkkkkkkdoXNN0ckkoxXNNN0xOkkkkkdxkxc',,;''''''........
.. ;ccc:;lWNXKk;cl,''...',ldkkkkkdodkkkkxdkkkkxoxkkkkkxkkkkkkkkxoNNNNKlkoxNNNNNo0kkkkkoxkxd:''.........'''.
... :ccc;,xNNXl;ll:'''...,,cdkkkkkxldkkkkdokkkkl:cxkkkkxxxxkxxkkd0NNNNN0lcllc::lc0kkkkxlkkxxd,.........';;;.
.... .cccc;,ONk:colc,'.....';,xkkkkkkcdkkkklckkoc;:oxkkkxxdxxxxxxxoNK0K0xl,;'':kKNx0kkkkookxxxdc'......',;;;;
...'. 'ccc:;'l:clll:;........;'xkkkkk0cdxkkx::dcoxckcldkxxxdxxxxddlOk0d:''',;:ccXWNxOkkkocxkxxxdl,':l';';;;;;,
....',....';,,,,:lll:::;';.......:'kkkkkkOooxkxoc:lkkcOKOlcodxdddddddlxXX;'',;:::cdxOWWxkkkolokkxxxoo,:;:',';;;;;,
.....',:ccccllllc:;,'''..'......'c':kkkkkkOodxo;ockkddXNNXOocooooooolc0WNdOXlodl:;xxxWXdkxlloxxxxxdoo;:::;,';;;;;'
........',;;;;,''''.............:;ldkkkkkk0olc;x0ckxdNNNXK00xdccoollooco0WWWNkxxxOOkoNxdOKloxxxxddooo,::::;,;;;;;.
............'.................',,dxxkkkkkk0d:;kXKoxoXNNNKKOxdkOlocoxxkOKNWWWWNkdkkdxKNXK0Nldddddooooo,c:::,,;;;;;
..............................;clxxkxkkkkkkKckKXkoxNNXOo:''';l,lxKNWWWWWWWWWWWWX00KNNNdXK0cooooolllol;c;:xxkxl,;,
.............................'lolxxxdxkkkkkOOdNNxONOl,''',,;OWOXWWWWWNNNNNNWWWWNNNNNNXXXXoollllllc,o::ckNNNNNN0:'
...........................',locxxxxdkkkkkk0xdXNx:'',;;::colKWWWWWNNNNNNNNNWWNNNNNNNNNXdllllllll;;,,cXWWNX00NNK.
......................'o:,;,ll:xkkkkkkkkkkkOko:,lk::cl::lxxkWWWWWNNNNNNNNWWWNNNNNNNKdccccccllc;;::,KWWNNNNXNNX.
................':okc';,,cc:xkkxkxdkkkkkkklloNW0lxxdoOkkdWWWWWNNNNNNWWWWWWWWWN0o::::cccc:;;,',c:WWWNNNNNNNN:
.'.....';clodkkkc'',:cc:lxkxxkkxldkkkkkkkxod0KkxxO0OdkWWWWWWNWWWWWNNWWWWWWWKdl:;;;;,,,:;''':lWWNNNNNNNNN,
;cccc;:0NNNKOkkx';::::c;dxd:ckkkkoodxkkkkkxdckNOxdddONNWWWWWWWWWNOOXWWWWWWWWNx,',,':,'''',,;;NWNNNNNNNKd
:ccc:,oKNNNNXXx,;::::c:;lc;:;oxkkkxxddddoc;xXNNNXXXNNNNNNNNWWWWWNNWWWWWWWWNk:'':kO,:,,,,'''''oNXNNNNX0:.
.cccc;'kKNXXK0O,;;::::cc;;:c;''oxkxxkkkxxxxlckXK0XKXXXNX0NNNNWWWWWWWWWWWN0o:l;;'xK0;;:ldolc''''0XOOkd:;,
'cccc;,kO0O0Ox,;;:o:::cc,':,'..,dxxxxxxxxdxxxolodxkkxdoloNNNWWWWWWWWWNKko,,x:l;:KXXcoodkool,'''kNNK0:,;,
,cccc;;OO000x,;;,kNk;::'......',;ddddddddddddddddllccllcKWWWWWWWWN0kxddo,ckl;o,ONNNcoodkooo,''''oxkc,;;'
:ccc:;c000Oc,;;;;;o::;.......;,;::docdddooooooolllllcc;dOOOOOOkoc:;::cddkkx,,:xNNNXooodkdoo;'''''';;;;;.
.cccc:,oOko;,;;;,'.d,,......,ld;;::;c,:cloooolllccccc:;:;;'''';olcodkkkOxOd;;'oNNNNXxoodkxoo;''''.::;;;;.
'cccc;,:,,;;;,,'..'d''...'':ddd':::::;c:,;cllc:cc::;;::lxxl:;';oc;',:ldk0Nc'':0kNNNKolodkkoo:''''.ccc;;;
,cccc;::,,,,,,',,''d..';,:,odd:;:::,c:dOXNWWWN0x;,:l':c:OXXXK0xoc;'''';'.d:;lXX:oNN0llodkkool'''''cccc;,
;cccccccccccccoNKd:o:o0Nd',;::,;;;,'cKWWWWWWWWWWXdc,lc:;;kXNNNNNXK0kxllld:;:':;,kKkocllxkkdol,.'',ccc:;'
,;:::ccccccccckNN0dkWXd;;ccccccc::,KNNNNNNNNNNOKWNc:::;,:OXNXNNNNNNNdx0k,.;,';dxcd;:dckkkxol;'.';ccc:;'
',:ONNKk:,;;:cccccccccNNNNNNNNNNNkKNWo,,;;,'oxOKKXXNNNNK:;;;,c,''';o;:;klkkkkolc,'.:ccc:;.
,kOxkNNO:. .,,,;;;:;;0NNXXXNNNNNKNNWl;;ccccc::::cclodxdoo:,;',';;,;,;,olkkkkolc,,'cccc:,
'XKl dXX: .:kKXXXXNK0NNK;;;ccccccccccccccccc::;;;;,;;;,,,,;xkkkkllc,,,cccc;,
ox;,,,,;;;::::::ccccccccccccccccccc::;::ccc::;'',cccc;'
.,,,,;;;;::::cccccccccccccccccccc::c:ccc;.
.,,;;;::::::cccccccccc:cc:,
.,,;;;:::::cc;,
..,'

View File

@@ -0,0 +1,72 @@
xX XkdKx
kxk: cKk :kKd
lXK .NOoldx .XO' xK0
cxxO0KXN0 Okolllok l0x xK0
kXkollxddxkOKk Klcolllok XOc OKO d'
xxlcllloooddxxkKx Oclooolook ;Kk. OKO x0KNl
.dooooooooodddxkKXNNNNXl. lcooollooc KOd ,kKx :000KK
,ooooooooooodddxxddddxxkkO00K;looolood' .NOO: OKN O000Kx
loooooodddddddddkxxxxdddooodllodolooOO0KKKl,;0d. 'k0O .00000X.
cOxddxdoodxddxxxxxkxddddxxxddkoddoodkdoooooddxxxkOO0KXXNNWK; 'kKO l00000K'
dkdddxc:looooddddxxOxdddddxxddxkxdxxkxddooooooooooooooooddxxxkOO0KXXNNWO' cOOxK; 0000000
okdddx:loooooooodddxkxddxd:..';coxkOxxkkkkkxxxxxdddddooooooooooooooooddxxxkO0Ok:;d0Nd. c000000x
;dddx:cloooooooodddddxkl' .',lxxd,...',,;:cloddxkkkkxxxdddddddooooooooooooooodddxxkOO00KXNNNWKc .0000000
xxlclooooooooodddddx, ':lodddooxlxl. . ..',;:codxxkkkkxxxxdddddooooooooooooooooodddxxkO00KXK0O00000
cdcoooooooooooddddxd .:ldllllooook.'xd'.... . ..':cllooodxkkkkxxxxddddddoooooooooooooood0x00000
;kloooooooooodddddxx'.dc:llllllllxl 'xx.......',;cccc::;;'.. .... ..',;:coxxxkkkkkxxxddddddxodxxOd00000
:ddooooodddddxxk;'d;;coolllloxo. ,xc,:lodkkxxxxkxxxxkkOkxdl:;. .;....,:loldxxxkko.''c,.;lk000
Oxddddxxxxxxx,.clccolllloxd, .,:kxkxdxxxxxkOOO0OOkkkxxxxxkOOkdc;. ... .,,. ..,,;::;:ck.'''. .:x0
ddooodddddddd: xllllldxdc' .';oxdkdOokkkkOOO0000000000OO000O000OOOdl::,'....... . ..,;:;;;:ooc;. .ol'x
.Ooodddddxxxc....xoddoc:.... .cxdodxcclcO0000000OO0000OO00000000OO00Okxdoodoolc:;,.. .':c:'..'ooxdddc. .x0x'.
,xoxxxxxkOc.. . .xl;. .....:ddodxkkOkk000000OkkoxkkxxxxxxkkxxOO00000OOOOkxdolclodddododxoloddolcccldkc.oo,.
0doooxO' .. .... ..':ddoxkOOOO00000OOOxxd:;;;:cldkddoc;;xxk0000000OOOOOOkdoolccccccccccccllodk000x... .
.kooooxO.. ...'. 'oxoxO00000OkOkkkkxxxc,,,,,,,,;c;;:::,,odxO00000000O000OddxxxxdddxxxkkkO00000000k...'
;xooodxx... ...'.;xdxO000000xOxxddooclo,,,,,,,,,,,,,,,;c:;cxxxxxkkkO000000kk00000000000000000000000x'':
ldooodkl.... ...',ckdO0O00000Ookc:;;,,,,c;,,,,,,,,,,,,,,,,:c:occloddxoO0000000000000000000000000KKKK00c'
xooooxk;.... ...''lxkOOO00000Oxxl;,,,,,,,ll:,,,,,,,,,,,,,,,,.;c;,'',;ckdO000KKKKKK0000000000000KKKKK0OOx
kooooxO..... ...'ckk0OOO000OOkdl,,,,,,,,,:cl:,,,,,',,,',,,,,'',::,..';cxdk00000KKKKKKKKKKKKKKKKKKKK0Oxkc
.kooooxk..... ...lOOOOOO000Oxxddl;,,,,,,,,;ccl,,,,'..',..,,,,;,,,;:;'.,,;kxxxkkkk0KKKKKKKKKKKKKKKK0kxxxO'
;xooodko .... .;,:0kOO000Oxddoc;:;,,,,,,,,,,::c:',,'...',',,,,,:;,,,:;',,,l;;:looodOO0KKKKKKKK0kdlOxxxxxO
odooodk;..... ..'xOk00O000dl:,,::,,,,,,,,,,,,,;c',.',..',,,,,,,,::,,,:,.,,,,,,,;cccokO0000kc:;c,.;Oxxxxxk
kooooxO...... ..;OO00O00Oko:,,,;,,,,,,,,,'';,,,;;''',,,,,,,,,,,,,cc;,;c;.,,,,,,,,;cclxxxkOOxlc;..lkxxxxkl
OooooxO...... .OOOO0O00Odd;,,c,,,,,,,,,,..:;,,,c.,',,,,,,:,,,,,,,lc;,:c,',,,,,,,,;coldxddxxxko;,dkxxxxk;
Nc 'kooodxd....... dxOOO000Okdo,,,l,,,,,,,,.'..:;,,,:,',,,,,,,c;,,,,,,;dlc:cl,',,,,,,,,,:looloooooodxkkkkkkOXNd.
0' cxooodk:.....,,;kkOOO000Odkxc.,l,'.,,,,,,,,,:;,,,,;.,,,,,,,,c'::;:::oodlllo.,,,,,,,,,,,:loddoooddddddddxxkkkk
0, xoooodk' .....:OoOOO000Okod:;.;l,,,,,,,,,,,,:,,,,,,.,,,,,,;:o::cd::;:d,;ool:.,,,,,,,,;;cloddoooddxdkxxxxxkkkk
0c 0ooooxO .....xodOO000Oxxd,,,,;c;,,,,;,,,,,,;,,,,,,',,,,,:ccl,..'l,,,o'..,cd.,,,,,,;,,:dooooddddxxxO00000000l
0k .kooodxx ...,ddlOOO000kko,,,,,:c;,,,,;,,,,,,;,,,,,,,,,,,,,,,:c. .o,,c;. .;',,,,,:;,;oOkkxOOOOOO0000000l
00; ;xooodxl ..,xolkOO000Okl:,,,,,:c:,,,,;:,,,,;c;,,,,,;,,,,,,,,;c .l,c; c.,,,,,c;,;:dOO000000000OOOO
00K. ddoooxk; .lxlldOOO000kko:,,,,,;l:,,,,:c,,,,ldo;,,,,;;;;,;;,,:. .lolloddlo.,,,,;l,,;;:k000000000Oxxxx
000K, Oooooxk' ,doclokO00000Oxk;,,,,,,o:,,,,lo,,coxdc;,,,;;:;;;;;;;c ....;lkxOOd,. ;.,,,,cc,;;;:oO000000Okxxxxl
000O0O OooodxOldollldx00000000xO;,,,,,.o:;,,;dd:oc;o,ol:,;;;:;;;;::l',.:dOOOkxdoo. ;',,,co;,;;;:lkOdlOxOxxxxxk;
0000Ok0XXXOxkkkkdllldddxOx0000000dO,,,,,,'cc;,;codl,,o'.'loc:;:::::::l;..xOOkxdddo:;' ;,,,clc,,;;;cckdxdOkOxxxxxk.
00000OkdoooollllodxkOOO00O000000OoOd,,,,,,'c:;cxco,,::. .'coccccccclo. :'.lc:ldx;;; .:,;llc;;;;;:ccxdddxkOxxxxxO
00000000OkxxxxkOOOO000000000KK00dxl:,,,,,,.clox;.o,;: ....;:ooccllccoc. ,;;;'',c ;:'.lc;;;;::ccckddddxkxxxxxx
000000000000O00000000000000KK0Okk:;;,,,,,,.:dx,..c;c. ..';:,'lcoc;;,'. ,:,,:;. ... l:::::ccccckodddkkxxxxxl
K0000000000000000000000000KK00xol;;,;,,,,,,.o,..,c; .'cdOOOxlkl;. .... :...occccclllclxoxd;;,;lkxk,
0KK000000000000000000000KKK00Olcl;;;:;,,,,,'': ;' 'lkOOOkkx' '. ....ccllllllokcddo, .dO.
kKKKK00000000KK00000KKKKK00Oklco;;;;:,,,,,,.;:. ;dOOkxxddocl. .:llllllllxxkko. ... .x
:0KKKKKKKKKKKKKKKKKKKKOcdkxklld;,,,,,,,,,,,',cdkl,ddolddl;;, .:oooooolloxxddk. . .o
.00KKKKKKKKKKKKKKOdc,oOxkkood;,,;,;:,,,,,,,llc .l;;:c',,: .cddddoooodxxkOkod d
.0O00000Oxolc:,,,oOOkdoodl;,;;,,;l:,,,,,,,;c:..,;;'.':, .:ldxxxxkkkdxOOOdl l
;xooooxd. .',,;Oxddddox:;:do,,,,cc:;,,,,,;:o, ';:::' ''. ;kOkkOdkOOOOkkxx .:
odooodkc. ..;kxddddodxloxdxc;,,,;;::::cox;. ... ,dOOd,'kdkkkkOOOOOc . ..dx
OooooxO,. ....'kxxddddooxxdoxOOc;,;;,,,;;;;lo,........ .. .cdlxxO;..xxdl:cloOOOO..'',:dxkc
Oooooxk,'.'.';kxxdcdddookOdkO00k:;;;;;;;;:;;;clc:;,,;:clc .,ckk;dlxd...occ:,cclkOOO, ..dkxk'
,kooooxx''...;kxxk, ,xddO000000Okx::::::::::::::::lloollo. .,;::cko,lxck' occ:,ccckOOOOc;,okxxO
cdooodxo...'okxxxxxcddx0000000xkxdd:co:::cccccccllllloox:'''''',codxddo::,,;kkd; .ccc:,:ccxOOOOOOxxxxxx
koooodkc',cxkxxxkO0:kk000000kl:xxddxokdolcccclllooooodxdxxOOOOxcloc:,,,';':xxOc .;cc:,;ccxOOOO0ddxxxxo
OooooxkdkkxxxkkO00O:OO000OOd:::Odddddxodkxollodooddxxddl;;ldxOxcoxOkdl:,. oOOd., .clc:,,ccdOOOO0oooxxx:
.kooooxddkkkkkkOkkOO:00Oxkdkc::dxdddkod:'. .;xkdlOdod'.....;coxOOOOxO0:dxl..dc .llc:,,cclOOOOOooooxk'
;xoooooooooooooc .:dcdc. :OkxddkxxxkOo. .:oklodxx,. ...,;lll:dxdOdxk,.,coll;,,:clk0OOkooodxO.
.dxdddooooooooo, .:, .:xxoooooooddk. '. odddxkd'. . :;.,k0xkOx:;o:xd:o,,,;clxO0Oxooodxk
.ckd' .,dkxxdooooooooo ,. ckkxxkOc;'.... .dxxxkokOOOxcxdx,l,,,,clokO0dooodxo
'k,';, 'dc'dkkkxxxdxx. ... . lxxoooooddddoolc:;:ccdkxOkOxxkxkxkcl,,,,clokkOoooodk:
.k..; ,..dc ,c,..... .. .xxxoooooooooooooooooddxxxxkxxxkkkkx;,,,,llokkkooooxk.
,,lkkkkxxxddddddoooooooooooooooooooddxddoooddxOOkooooxO
;xkkkxxxxddddooooooooooooooooooooddodoooxx
.lkkxxxddddddoooooooooodoodkc
.dkkxxxdddddooxk'
;xkO.

View File

@@ -0,0 +1,54 @@
WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMWWMMMMMMMMWKOdoxdxolc:::;;:::;;;;;:ccclc:c:lxNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWWMMMMMMMMMMMMMMMMMMMMMMMW
WWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMWWMMWMWMMMMMMWWKkxodxddl;;;;;;;;;;;;;;;,,;;:::;;;:l0NWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWMWWWMWWMMMMMMMMMMMMMMMMMMMMMMMMM
WMMMMMWMMMMMMMMMMMMMMMMMMMMMMMMWWWMMMMMMMMWWWXOxdoddOk::;;:cllccc::::;;,,,,,;;;;;,;:xKWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMWWWMWWWWWMMMMMMMMMMMMMMMMMMMMMM
WWWWWMMMMMMMMMMMMMMMMMMMMMMMMMWWWWWWMMMMMWWWKOOoloOkdc::::::::::::;;:;::;,,,,,,;;,,,;cxKNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMMMMMMMMMWMMM
WWWWWWMMMMMMMMMMMMMWMMMMMMMMMMMWWWWWMMMMWWWXkOoclOXlccccc::::::cc:::;:;,::;,,';,;;,,,,:ok0NWWWWWWWWWWNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMWMMMMMMMMMMMMMMMMMMMMWMMM
WWWWWWWWWMWMWWWWMMMMMMMMMMMMWWWWWWWWWMMMWWWOxo:ckl:lcc:ccclooooldolc:::;;;:;;,';;;,,,,;;lkOKNWWWWWWWWWWWWWNNWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMWWMMMMMMMWWMMMMM
WWMWWWWWWWMWWWWMMMMMMMMWMWMMMWWWWWWWWWWWWMKxdc:ll::c;::lldxxdoolldddlllc:;;:;:;,;;,,,;;;;cxO0KWWWNWWWWWWNNWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMMMMWWWWMMMMMWWWWWWW
WMMMMWWWWWWWWWWWWWWMWMWWMMMWMWWWWWWWWWWMNWkxlc::locc;ccollllclccc:looll:c:;:c::,;;,'',;,;;cxkO0XWNNNNNWWWWWNNWWWWWWWWWWWWWWWWWWWWWWWWWMWMMMMMMMMWMMMMMMMMMWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNWNW0Oco:;:llll:c:clccccllc:::c::::;:;,ccc;',,'',;;;,,:x00O0NWNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMWWMMMMMMMWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNXMxx:l;;:olo::;::clllolllc::::;;;;;;;oc;,,,',''';;;,,;l00OkNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWMWMMMMMMMWMMMMMMMWMWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXNNNNoo;c,::c:::c:;:clllllllcc:::;;;;,;;lko,,''''''':l:;;;;o00xXNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWMMMMMMMMMWMWWWMMWWMWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWNNNWKX:c;c::;:;;:l;;;clllcccccc::;;;;;;;;c0kl'''.'..'.,::;;:;;oOkXNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMWMWWWMMMMWWWWMWMMW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNWNWOk;;;l;',;,:xlcc::ccccc:ccc:lc;;;;;,;c0xO;'''.'..',;,:,,::,;co0KNWWNWNNNNNNNWNNWWWWNWNWNWWWWWWWMWWMMWWMWWWWWWMMMWWWWMWWWW
WWWWWWWWWNWWWWWWWWWWWWWWWWWWMWWWWWWNMXN0o;';c'',;,lOxlcooc:::cl::cldx::lco:,dOxOl,.'......',,:;,,:;;;:O00KXNWNNWWWNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWW
WWWWWWWWWWNWWWWWWWWWWWWWWWWMWWWWWNXMNKNOl:';;'.',;lO0OdloxxddoollxxxxdxxxxxxOOOOx,.........',,:;;,,;;:oONNNXXNWWWWNNNNWWNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWMWWWWWWWNNXMKXXOc:'','..';okkxollodxkkkkkOOkxxolcccoxkOOx,..'.......,:;;:;;,;:clxKWWNNNWMMWWWWWNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWNWNWWNWWWWWWWWWWWWWWWWWWNXWW0NKO::'''.'..',';'.''.;x00000000x;',;,','',lo'..''.......,:;;:;;;,:cldOXWWNNNNNNWWWWWWNWWWWWWWWWWWWWWWMWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWN0NNKNKkcc,,'.....:kxldkkdkO00OOOOOOOkoOOxoxOo:c'...',... .,'',;:;,,;;;,;cox0NNWNNNNXNNNWMWWNNWWWNNNWWWWWWMMWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNKO00KX00ll,,'.....ckOxxxxkOOOOOOOOOOOOkxdxdkkxkc....',,... .,,,;,;:,;;;;,,;clkKNNNWWWWWWNNNNWWWWWWWWNNNNNNNNWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXW0OOoXK0kol,''.....'xkkkkOOOOOOkkkOkkkkkkkkkkkko...:;',,... .';,;:;;;;:c:;;;;:cldOKKXXWWWWWWWWNNXXNWWWWWWWWWWNXXNNNNWWWWWNWWWWWWN
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXNX0xdKKKodl,','.....,xkkkkkkkkkxxkkkkkkkkkkkkxo:;':l;','.... .';;;:::;,;ccllc:cclodxO00KKXNXXXXXXKKKK0OO00KKKXXXNWWNNNNNNNNNNNNNN
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWK0NNkxKKOo:o,',,.....;.okkkkkkkkkkkkkkkkkkkkkxdoo,clc,'.,.... .''::;:cc:,,:clloooddoloddxkOO0KXK0OOOOKKXNNNXXKKKKKKXXXXK0KXNNNNNNN
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWNKkKWNxKNxl::,,.''.':.;ocokkkkkkkkkkkkkkkkkkkxxxx;cl:,,''''......',:;;:ccl;',;:lloooddoldxxxxxkkkOOOKKKKKXKK0KNWWNNNNXNNXXNXKXNNNNN
WWWWWWWWWWWWWWWWWWWNNWWWWWWWWNXdKNW0KOdl:;,,.....,cdoxoxkkkkxkkkkkkxxkkkkxxxx::c;,,,,'.... ...'';:;:ccccc;,;,;cldoodddxk0NNNNNNXNNNNWNNNNNXXXNNNNXXXNXXNNXNNXXNN
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWNXdKWOkOxoc:,,''.....':dxxxxxkkkxkkkkxxxxxxxxxxlccc::;;;'.'.......',;;;clcccl::cccclolodxkxOKNNWWWWNNNNNNNNNNNNXXNNNNNNNNNNNXXXXXXN
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWX00Kdxxdlc:'.,'.'....;coxxxxxxxxxxxxxxxxxxxxdodoooc:;:c:',,......';;,,clllccc;lloodddoddxkOOO0XNNNNNNNNNNNNNNNNNXXNNNXXXNNXNXXXXXX
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWN0xdoddoll',..'.......:llldxxxxxxxxxxxxxxxoooddddddoc::cl,;,......,;;;cooooolcolooodddxxkk0OOOO0KXXNNNNNNXNNXNNXNXXNWNXXNNXXXXXXXX
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWNK0dcooolx,,,;.'........clllccdxxxxxxxxxo:oddddddxxdddddolo;;.......:::ccoooddod0xdodddxkOOKXK0OOXNXXXXKXNNNNXXXXNXXXXWXXXXNXXXXXXX
NNNNWWWNWWWWNWWWNWWWWWWWWWWWWKKkccccldd',,:;,'.......'cloc,,:ldxxxoc;;;ddddddddxxxxxdxkxooc'...'.;cc:llloodddkWXOdxxxxkkO0XWX00XNNNNXKKXNNXXNNNXNXXXWXXNXXXXXXXK
NNNNNWNNNNNNNNNNNWWNWWNNWWWWN0Kkc;loxO:;.,:;:.....,:''':oc;;,;;:c:;;,,,ddoooddddxxxxxxkkOokd;''',':lclodoooxxxxXWNKOkOk0KKXXNXKXKNWWNNNXXNNXNXXNXXXXNWNNNXXXKKKK
NNNNNNNNNNNNNNNWWWWWWWWNNNNWKOXO:lxxOd',',:,:. :..,::'.'''',;;;;;;,,''.dddooooddddxxxxxkOkdOx,.,,,,;loddxxdokxxk0NWWK00OXNNNNNXNWXNNWNNNNXXXXNXXXXXXNMXXXXXXXKKK
NNNNNNNNNWWNWNWWWWNNWWWWWNWKkKXkoKXOo',;;';;;..l. :o:,..'...':;;;;,,,,,,:ddddoodddddxxxxkkxxOx,'c:,,;oddOKxdkkx0K0KNWNX0KXNNNNNNNNXXXNNNNNNNNNXXXXXXNMXXNXXXXKKK
NNNNNNNNNNNNWNWWNNXXWWWWWWNkxOKONW0::':l:,;:'..l. dloc:'..'.:c::::;:::cc:xxxxxddxddddddxxxkdxOx,;dlc;;coOWOxkkONX0XKXNW0NNKKXNWWNWKXXXWNXXXXXNNNNXXXWNXXXXXXXKXK
XNNNNNNNNNNNNNNNNNNXXWWWWW0olx0WKd,:::ol:::;.,.l. lxdoc:....'::::cclllllcx0OOOOkkX0xdxOkxkkkdxOx,;dol;;coOkx0OKNNX0XKXXKNNXKXXXNWNXXXXXXXXXKNXXKXNXNNXXXXNXXXXKX
NNNNNNNNNXXXNNNNNNNNXXXXNKxclxxo:;lxdcdoOkd,.'.. .xxdlcc.. ,'.;cllllllcc:,:oxkkO00NNKkk0XNNX0kxxkc;dddl:cllldx0XNNX0X0KXNNXXXXXXNXXXXXXXXXXKXXKKKKXKKXXXXXXXXXXK
NNXNNNNNNNNNXNNNNNNNNWNX0OOdllllokkkxcxOW0d;;'' ;dxolc,. .;:;';cc:ccc::;::;:ccxOkk00XNXKKNWWNKkxkxcloddlcdxodxxOKXX0XKXXXKKXWNWWXXXXKXXXXXXXXXXXXKXKXXXXXXXXXXX
NNNNXXXNNNNNNNNNNNNNNWWWXXKOd0kO0000OlxNXxcOco...c,;,'...;odxol:';:::;:clcll:ll:oxkxkxk0KXXXXXXN0kkkkxolooodXNK0OkxOOKXXNXXXXXNNXXXXXXXXXXXKKXXXXKXKKKXXXXNXXXXX
NNNNNXNNNNNNNNNNNNNWWWWNNNXKk0XNKKKKXkx0okK0kl....;..l,,,dodxxxdo'.cccooooololoocoxxxxddxkkkkkkO0KKkO0KKxk0kxKNNNXKOOkO0XXXXXXXXXXXXXXXXXXXXKKKKXKKKXKXXXXXXXXXX
XNNNXNNNNNNNNNNNNNNNWWWWWXXXXNNNXK0OOkolxxkkxxc:.....;l:xdlldxko;,;':clooooollooolodddddoodddxkO00KkKKXNXOOKkxO0KKXXK0OkxO0XXXXXXXXXXXXXXXXXXKKXXXXXXXKXXXXXXXXX
NNNNNNNNNNNNNNNNNNNNWWWWWXXKKXXXXXXXXX0xdO0OO0ool:,..,:codoclc.'',,;'.'loooooooooocoddddddodxOOO0O0xKKXNNX0XNKk0KXXKKXXXK0kk0XXXXXXXXXXXXXXXXKXXXXXXXXXXXXXXKXXX
NNNNNNNNNNNNNNNNNNNNWWWWWNKW0KXXXXXXXXK000OO00:dxxxc:,...',;,'.'.',,,'':ooooooolool:oodddxxxxxkkkk0x00NNNNNKXXXkK0XXXXXXXXX0kkKXXXXXXXXXXXXXXKXXXXXXXXXXXXXXXXXX
NNNNNNNNNNNNNNNNNNNNNWWWWNWN0KKXXXXXK0KK00000dllodloxxkdc;,''..''..',cl,,loooolllolccddddxxxxxdddkOxOOKNNNNNXXNKkKKXXXXXXXXXK0O0XXXXXXXXXXKXKXXXXXXXXXKXXXXXXXXX
XNNXNNNNNNNNNNNNNNNNNWWWWXW0k00KKXX0KXXK0000xkkxdloxOkkkkxdll:l:lllloooo:,cooollllll:oddddddxxxxddkxO00KXNNNNKXN0kX0XXXXXXXXXKXKOKXXXXXKKXXXKKXXXXXKXKKXXXXXXXXX
XXXXNNNNNNNNNNNNNNNNNNNWXNXkdOO00K0XXXXKK00KOxxOxkOO00Okkkkdo::lldoooooooc::oooooooolcddddxxxxxxldxdx000XNNNNN0XNx00XXXXXXXXXXXXXOXXXXXXXXKXXKKXXXXXXKKXXXXXXXXX
XXXXNNNNNNNNNNNNNNNNNNNNXN0OxkOOO0KKKKKK00KKX0xkOO0KK000OkOxkl:;cdxdoooooocclooooooooooddxxxxxxllodxxO0KNNNXXXX0KKx0XXXXXXXXKKKK0KXXXXXXXXXXXXXXXXXKXXKXXXXXXXXX
XXXXXXNNNNNNNNNNNNNNNNNXWKOkxxkkk0KKKK0000KXKOxOO0KKK0000OOkkkl:clkxddoooodcooooooooooldxxxxxxl:clddkxO0XNNNNNXXKKkKXXXXXXXXXKXXXXXXXXXXXXXXXXXXXXXXXXKKKKXXXXXX
KKXXXXXXXXXXXXXXNNNNNXXXWkkxxxkkxxO0K00000XX0xOOOKKKK000000kOOkxdxxxddoddddoddddooooooooxxxxko:cloookxk0KNXXXXXXXKkKXXXXXXKKXKKXXXXXXXXXXXXXXXXXXNNNXXXKXXXXXXXX
KKXXXXXXXXXXXXXXXNNXXXKWKkxxxxxxxxxdk0000KXKOkOO0KKKK000000kOOkkxdkxddoxdddxddddddddooolxkkko:cdddolkxkO0XNXXXXXXXK0KKKKKXXKXKKKKKKXXXXKKKKXXXXXNXNNNXXXXXXXXXXX
KKXXXXXXXXKXXXXXXXXXXKNWkxxxxxdxxxdolxxOKKXKOkO0KKKKK000000kkOOkxdkxddoxxxxdxxxxdddddoolokkd:lxxdxcokxkO0KNXXXXXXXXKK0KKKKKKKKKKKKKXKKKKKKKKKXXXXXXNXXXXXXXXNXXX
0KKKKKKXXXKXXXXXXXNXKKKKxxxddxdxddlldxxdx0K0kOO0KKKKK000000kkkkkxdxxdodddxddxxxxxdddddoolxkooxxxxxlxkkkO00NNXXKXKKKKKK00KKKKKKKKKKKKKKKKKKKKKXXXXXXXXXXXXXXXNNXX
000KKKKXKKKKKKXXXXNX0OOxkxddxxxd::;lxxxxdd0OkO00KK00000000OkxkkkxdxxdoddddddddxxxdddddooldOOkxxxdddxxdkOOOKNNXKXKKKKKKKKKKKKKKKKKKKKKKK0KKKKKXXXXXXXXXXXXXXXXXXX
00KKKKKKKKKXXXXXXXXKO0OO0xddxxkd. .:kkxkO00OxO00000000000OOkxkkxxdxddodddddddddddddddooollk0000000OOklOOO00NNWNKKKK00K00K000000KKK00KKK0K00KKKKKKXKKKKKKKXXXXXXX
OO00000KKKKKXXXXXX0kkOO0OOdoxxxl. .oxkkkO00kxOO000000000OOOkkkxxxdddooddddddddddddddoooolcdO0000000K0dO000OXNNWWK0KK00000000K000000000000000K000KKKKKKKKKKKKKKKK
kkOOO00000KKKXXXKkO0000OOOOkxddOOcldxxxxkOOxxkkOOOOOOOOOOkkkxxxxddoooodooodoooddooooooollcok00000000kxOO00O0NNNWW00000OO00000OOOOOOOOOOOO000K00000KKKK000KK0K0KK

View File

@@ -0,0 +1,54 @@
.':c;:;clodddxxdddxxxxxdooolododl;
.,;c:;::lxxxxxxxxxxxxxxxkkxxdddxxxdl.
.';:c::',ddxxdolloooddddxxkkkkkxxxxxkxd;.
.''clc',:oddddddddddddxxdxddxkkkkkkxxkkkxo;.
.,'col'.loooooddddddoodddxdxkddxkkOxkxxkkkkdc,.
';cdo,ldloodooolccccl:clodddxxxdxxkOxxxkkkkxxl,'.
.;:odllddoxddll:;;:ccll:::lllodxxdxdxkxxkkkxxxxo;'..
,;loddlcooxoocllllolooodlcclldodxdoddkxxkOOkxkxxo;,'..
.'ocdxdlllldodoloooollodddoddddxdxkoooxOkkOOkxxxkkd;..'.
. ;;dlxxdclcddxddolllcllloddddxxxxxxxcoxkkkOkOOOxxxkkxl..',
. ccxokddodddodxdollllllloodddxxxxkxxl,ckkOOOOOOOdldxxxxc..;.
..doxoddxdxxdlxxxolllooooooddxxxxxxxxo.,lOOO0O00O0kddxxdxxc',.
',xxxlxOkxkd;looddooooodooodloxxxxxkxo.;'xOOO0O00Okxkdkkddkxoc..
. .cxOxoOOkxkl';loccodddolddol:;ddlocdk:';'lk0O000000Okkdxkkdxxxd'....
. . 'ldOxxO0Okxl'.':lc;;::ccll;;;;:;;;;;;'''';k000K0KK00Okkdxxkkxxdc' ..
. ...'odOOkO00Oxc,,;cllc:;,,,,,'',;;cloooc;,'';k0KO0KKX000kdxxdxxkxdol;.
. . .'ddOOOKO00OkOxO0OO0x;........;xOkxkOkOOklcOXKOOKKXX000kdxxdxxxkdol:'.
. . .,ookkO000K0d,;l:,,:,'..''''''',c'';c;'cdoOKX0Ok0KKNXkOOkxdxkkxxxkxoc;. .
.'......llkkOKK0KKo,';;;;,'''''''''''',;:;:,,;,oKXK0OkkKKXN0kkkxkxdkxxxxkkxol,.
. .''c...,clkOO0KKKKO;,,,,'''''',,,',,,,,,,,,,,,c0KXdxOkk0KXNXOxkxdxxxxdodxxxxdol:'.... .. ..
. ..;:...c:lkOkOKXXKKk;,,,,,,,,,;;,,,,,,,,,,,,;cdxOdlxOkO0KKXN0Oxxxdddxkxoollodoolc:;'..... ...........''........
.. ,;..'cdckOkk0X0XKx0c,,,,,,,,,,,,,,,,,,,,,;:cckolokO0k0KKKNXOOddxdoodkkdollccc::clc::;,''.....''''... ................
.,. ;. ;lddkk0OOKOd0xcoc,,,,,,,,,,,,,,,,,,,;;;;xoldkkOOOOKXXXX0OkdxxdoolxOkxdllccc::cl:;;;;;,,,'''.......... . .. ...
.:. ..':ldxkk00K0Kko:c;c;,,,,;,,,,,,;;,,,,;;;;ddoxkkkkO000XNXXKOOxdxdoooooxkxkxol:cc:::;,. . ... ... .. . ..
.:. ',';codkkOO00XXXOd:;;;;;,,,;,,,,;;;;;;;;;;loooddxxxO0O0KXXXK0Okxxxolooolddoooolclc:;,;'. .. ......
....:;;:lodOKkO0OKXXKxoc;;;;;;;;;;;;;;;;;;;;:c:cccodxdodOkkKKKXKKOxxkkollloooxllcc:::c::;,'''.. .. ... . ......
.;:c::cllOk00O00KKXK0dlll:;;;;;;;;;;;;;;;ccc::::::coddolkxkKKKKKKkxxxocccccloclccc:::;;,,.''''.... . . . .. .. ........
..:occcl;kkkx0O00KXKKK0ollloo:;;;;;;;;;cdc::::::;;:::::clcxx0KX00K0dddooccc::c:.;:c:::;,''....''. ...... .... .... .... .......
..,ooool::OkkdxkOKXX00K0Oolcokkdl:;;;coxxx::::::::;;;;;:;,;ccoOKK0O0xoodlllcc:::, .':;;;;,,'.. .... .... .. . ... .. ........
..,oxlc;'dx0kdxd0XKXKkdOOOdcoxxkxxdodxxkkk::ccc::::;;;;;;,,'c,:xOOOkOdlolc:ccc;;;;. .',',..... .... .. . .. .... .......
.'.'dl;;':OkOkdkd0NdXXkddO0OOOOkxxxxxxkkOO0:::cccc::::;;;;;,',:';k0kkkkxlc::;;:c,;;,. ...'. . . .... ...... ..........
.,..,c..'cOkxxOxxxXKlXNdcdk00O00KOdxxxxkkkkkkd::::cc:::::;;;;,,;;';kOodkkxc::'.;:,,;.... .... ... ...... .. .......
.. ,;'.' .ddOdldkxdOKXl0N:lcodOK0OKdoddddxdddood;;;;;::;::::::;;;,:;';kx:loxxoc' ';,,' ..... . ... .... ..... ... ..........
. .. .cl;. .:kdddcldddxXkXlKNl;:codKKK0Oddddoolllllo;.'''',,..;:;',;,,,:;';kx:clxxoc',;.'. ....... ..... .......... .... . .... ......
... .... .;ol;;cdxl;:o:c',:kKOK0NX;;:loo0XNkO0xolllllloodkdc;,,'.. .,,.. ..,;;,ox:::ldolll:;.. ...... ...... ...............................
. . ..'':llllc,,,;o;' .:xxOONNx:;clokKNKxdxOxoodoooddxddxdoo;',,... ... .,;,;olc::lo:;c:;;'............ ...............................
... ...':.,'....'l; .;o'oc0KKokxkOXXKxc:;cldOxdddxdololldlldc;,;,;,........ .,,,,;clccc:. ..',;''... ..... .......................... .....
. ..,.. .....,;.c,..,l0KXKxKXlkkk:c:;;;:cO0oooccccclclccoc;;;;::;,,,,,,'...,'...;,.,;. ..'','.........................................
. . .... ...'',cl;;,,;;od0XXK0xld;:ll:;,cxkxOdolcccccllccclc:::::cc:::;,'...,... .''.,;'.......',;'......................................
..............;:'.''.ccldkKKkdoc:colo0OOkkxO0Olccccccccccoc::::::c:;'''.'.;... ... .,...........,,....................................
. ..............''..d:;;;odkKX0OkxkO0O0OkkkOOdccccccclccldcc:::;;;;;,,,,.;.. ....,............,,..................................
.................:llc:lc;;,:oxkOO00OOK0Okolkklcccclllcloo::::;;;;;:::,';''. .. .,.............'.................................
. . . .,...............;,,;:lc;',,,,;:lldldllllccccdkoccclllllldc::::::;;;;::,;'.... .. .,..............'...............................
.... . .,:''.............';;';,''..',,,,:cddll:cccccccoddcccccccclo::::;;;;;;l:;:;.... .. ;...............'..............................
.... . .';,'''.............;,''......',';,ldxo:;:ccccccoolcccccccccc::;;;;;;llc:;;'.. .......;.............................................
...... . .',;;,,,............';''........'',,,ldol,;::cccc:occccccccccl:;;;;;;ldol::,;'.. ....,.............................................
................ ... ,,;;;,,;;'..........;'''..........,'',;:;;;::c::::c::::cccccccc;;;;,cdolccc,;,.. ........,.............................. ............
................. .... .,;;;;;;;;;:,.......',''...........,'',,;:,;::c;:::;::::::::cccl;,,,cdo:::cl,;,'.. ..................................... . ...........
...................... ,;;;;;:;;;:cl;;'....','............,,'',;:,;::c;;;;:;;;;:::::cclc,,:dl;;:;oc,;,'.. ........................................ ........ ...
.................. .....;;;::;:;::ll:;;:;...,''............,,,,,;:;;:c:::;::;;;;;:::::ccl;,cc;;;;;l;,,,'.. ................................................ ..
.................. ..'';,;::;;;:ddxl;;;;::.','............',;,,,;:;;:c::::::::;;;:::::ccl:'',;;;:::;;:,'''. ...................................................
....................'.''.;::;;,:KWKd,,;,'..';'...........'',;,,;;:;::c:::::::::::::::cccll,.......'',l'''.. .................................................
''.................,,''.'':c;;;lKNKc;,,,'..,;''.........''',,,;;;:::cc::::::::::::::cccclo:'.........:'...'. ................................................
,,'''............,'....'''',;::''ol:;;;;,'';;,,'''''''''',,,;;;;::cccc:ccc:ccc::ccccccclloc,........,;''..'. .....''.....''''''''''''.......................

View File

@@ -1,41 +0,0 @@
<template>
<div>
<img v-for="src of displayImageList" class="image" :src="src" alt="" />
</div>
</template>
<script lang="ts">
import { PropType, defineComponent } from "vue";
import { withBase } from "vuepress/client";
export default defineComponent({
props: {
imageList: Array as PropType<
Array<{ light: string; dark: string } | string>
>,
},
computed: {
displayImageList() {
return this.imageList.map((item) => {
const src =
typeof item === "string"
? item
: this.$isDarkmode
? item.dark
: item.light;
return withBase(src);
});
},
},
});
</script>
<style scoped>
.image {
box-sizing: border-box;
width: auto;
padding: 9px;
border-radius: 16px;
}
</style>

View File

@@ -1,47 +0,0 @@
<template>
<div>
<img v-for="src of displayImageList" class="image" :src="src" alt="" />
</div>
</template>
<script lang="ts">
import { PropType, defineComponent } from "vue";
import { withBase } from "vuepress/client";
export default defineComponent({
props: {
imageList: Array as PropType<
Array<{ light: string; dark: string } | string>
>,
},
computed: {
displayImageList() {
return this.imageList.map((item) => {
const src =
typeof item === "string"
? item
: this.$isDarkmode
? item.dark
: item.light;
return withBase(src);
});
},
},
});
</script>
<style scoped>
.image {
box-sizing: border-box;
width: 50%;
padding: 9px;
border-radius: 16px;
}
@media (max-width: 419px) {
.image {
width: auto;
}
}
</style>

View File

@@ -1,52 +0,0 @@
<template>
<div>
<img v-for="src of displayImageList" class="image" :src="src" alt="" />
</div>
</template>
<script lang="ts">
import { PropType, defineComponent } from "vue";
import { withBase } from "vuepress/client";
export default defineComponent({
props: {
imageList: Array as PropType<
Array<{ light: string; dark: string } | string>
>,
},
computed: {
displayImageList() {
return this.imageList.map((item) => {
const src =
typeof item === "string"
? item
: this.$isDarkmode
? item.dark
: item.light;
return withBase(src);
});
},
},
});
</script>
<style scoped>
.image {
box-sizing: border-box;
width: 25%;
padding: 9px;
border-radius: 16px;
}
@media (max-width: 719px) {
.image {
width: 50%;
}
}
@media (max-width: 419px) {
.image {
width: auto;
}
}
</style>

View File

@@ -6,4 +6,4 @@ dir:
order: 2
---
<Catalog base='/en-us/develop/' />
<Redirect to="development" />

View File

@@ -15,15 +15,15 @@ You can quickly navigate to the section you want to see by searching for CI file
Workflow files are all stored under `.github/workflows`, and each file can be categorized into the following functional parts:
+ [Code Testing](#code-testing)
+ [Code Building](#code-building)
+ [Version Release](#version-release)
+ [Resource Updates](#resource-updates)
+ [Website Building](#website-building)
+ [Issues Management](#issues-management)
+ [Pull Requests Management](#pull-requests-management)
+ [MirrorChyan Related](#mirrorchyan-related)
+ [Others](#others)
- [Code Testing](#code-testing)
- [Code Building](#code-building)
- [Version Release](#version-release)
- [Resource Updates](#resource-updates)
- [Website Building](#website-building)
- [Issues Management](#issues-management)
- [Pull Requests Management](#pull-requests-management)
- [MirrorChyan Related](#mirrorchyan-related)
- [Others](#others)
Additionally, we use [pre-commit.ci](https://pre-commit.ci/) to implement automatic code formatting and image resource optimization, which runs automatically after creating PRs and generally requires no special attention.
@@ -51,10 +51,10 @@ This workflow runs automatically on any new commit and PR. When triggered by a r
Version release is the necessary operation to publish updates to users, consisting of the following workflows:
+ `release-nightly-ota.yml` Release nightly builds
+ `release-ota.yml` Release stable/beta versions
+ `gen-changelog.yml` Generate changelog for stable/beta versions
+ `pr-auto-tag.yml` Generate tags for stable/beta versions
- `release-nightly-ota.yml` Release nightly builds
- `release-ota.yml` Release stable/beta versions
- `gen-changelog.yml` Generate changelog for stable/beta versions
- `pr-auto-tag.yml` Generate tags for stable/beta versions
::: tip
The "ota" in the above file names stands for Over-the-Air, which is what we commonly call "incremental update packages". Therefore, MAA's release process actually includes building OTA packages for past versions.
@@ -82,9 +82,9 @@ The release process for these two channels is relatively more complex. We'll exp
This section of workflows is mainly responsible for MAA's resource updates and optimization, with the following specific workflows:
+ `res-update-game.yml` Executes periodically to pull game resources from specified repositories
+ `sync-resource.yml` Syncs resources to the MaaResource repository for resource updates
+ `optimize-templates.yml` Optimizes template image sizes
- `res-update-game.yml` Executes periodically to pull game resources from specified repositories
- `sync-resource.yml` Syncs resources to the MaaResource repository for resource updates
- `optimize-templates.yml` Optimizes template image sizes
### Website Building
@@ -119,8 +119,8 @@ This workflow checks whether commit messages in PRs conform to [Conventional Com
MirrorChyan is a paid update mirror service, with the following related workflows:
+ `mirrorchyan.yml` Sync update packages to MirrorChyan
+ `mirrorchyan_release_note.yml` Generate MirrorChyan Release Notes
- `mirrorchyan.yml` Sync update packages to MirrorChyan
- `mirrorchyan_release_note.yml` Generate MirrorChyan Release Notes
### Others

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