mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-12 16:00:25 +08:00
Compare commits
404 Commits
ci/check
...
feat/HolyL
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b179c673c | ||
|
|
e48cb49e4a | ||
|
|
7f7b124bc7 | ||
|
|
2c656db087 | ||
|
|
63420e9808 | ||
|
|
d8207fb5b5 | ||
|
|
cb9bc0f87f | ||
|
|
f863a6f4b6 | ||
|
|
2651b1bc01 | ||
|
|
99b4e75567 | ||
|
|
904a8f3d4c | ||
|
|
7c710fcee5 | ||
|
|
a6a3451217 | ||
|
|
93a0e2d4a1 | ||
|
|
7f6622e51d | ||
|
|
0b533468d1 | ||
|
|
6d26ccace1 | ||
|
|
c101f9cea6 | ||
|
|
f5921c7293 | ||
|
|
880bdea7d3 | ||
|
|
9c53ea10c6 | ||
|
|
9ea6057145 | ||
|
|
05b377981a | ||
|
|
465c2bcf62 | ||
|
|
3294b29f54 | ||
|
|
f967903a4b | ||
|
|
7622cff5b4 | ||
|
|
4e36c78691 | ||
|
|
afb0f8f647 | ||
|
|
35e437d372 | ||
|
|
3d9732a930 | ||
|
|
d12588f62b | ||
|
|
e3d48ae65d | ||
|
|
2a2e360f3e | ||
|
|
df5af18b93 | ||
|
|
55b3cdafaa | ||
|
|
538760dbbe | ||
|
|
979e0c4b1b | ||
|
|
d9eb1e50d9 | ||
|
|
7e9f862f62 | ||
|
|
20c86b0fff | ||
|
|
072a98dd41 | ||
|
|
a053e6547d | ||
|
|
bfcb02104c | ||
|
|
1e9ae031ea | ||
|
|
d70d939947 | ||
|
|
37ad3a2f35 | ||
|
|
7d233513ff | ||
|
|
b93d39b77e | ||
|
|
c91c1ff279 | ||
|
|
d7524a4f9e | ||
|
|
fff05d45b5 | ||
|
|
201c856594 | ||
|
|
97756b1200 | ||
|
|
79bea9b98d | ||
|
|
f94a79a1a3 | ||
|
|
eb90a19e8b | ||
|
|
957b486c53 | ||
|
|
87a892ad7a | ||
|
|
363c4dbb47 | ||
|
|
b639fd3a62 | ||
|
|
8bbd104ea6 | ||
|
|
b63bd4b6eb | ||
|
|
7264f26b14 | ||
|
|
e3be737a3c | ||
|
|
e5a823d476 | ||
|
|
25513ab692 | ||
|
|
26acc07463 | ||
|
|
38a801a8c1 | ||
|
|
1edd006982 | ||
|
|
45025dd168 | ||
|
|
3b10c1518a | ||
|
|
5efdab7fbf | ||
|
|
930de73324 | ||
|
|
527ebee6af | ||
|
|
c24baee8ff | ||
|
|
11f9d6e0a4 | ||
|
|
6733f49d8b | ||
|
|
e7f909c807 | ||
|
|
147cf766c1 | ||
|
|
b9edba6cf5 | ||
|
|
39326e177b | ||
|
|
e6cfa25f81 | ||
|
|
2c247bbeda | ||
|
|
af69b6172c | ||
|
|
5626880d19 | ||
|
|
445ce5352f | ||
|
|
dce6fbfbce | ||
|
|
724130da50 | ||
|
|
12315868c7 | ||
|
|
230b3b9169 | ||
|
|
3c61b10de5 | ||
|
|
5456428eb7 | ||
|
|
1ca780ef0d | ||
|
|
8f3ff813a1 | ||
|
|
a4688ebeed | ||
|
|
7d028cdbd5 | ||
|
|
ef187657ba | ||
|
|
403f3c5644 | ||
|
|
369add1890 | ||
|
|
0ae21436c8 | ||
|
|
a322706241 | ||
|
|
ec2b92002b | ||
|
|
36dd631606 | ||
|
|
a201b3da65 | ||
|
|
7421100998 | ||
|
|
e98ff0ee35 | ||
|
|
d7acdfda36 | ||
|
|
6dfffdc45b | ||
|
|
6834ee1abe | ||
|
|
a571e974b6 | ||
|
|
2440f365c9 | ||
|
|
f182d36014 | ||
|
|
cd6a3efc4e | ||
|
|
3ee20cee2e | ||
|
|
d9aa14333e | ||
|
|
a1cc9df6bd | ||
|
|
9313a606f2 | ||
|
|
3c6c7624dd | ||
|
|
0e00b05128 | ||
|
|
fbf8b5636d | ||
|
|
c535cbdf6d | ||
|
|
a872c08a32 | ||
|
|
ff457fbd21 | ||
|
|
b4fcf37b35 | ||
|
|
b5ba39174d | ||
|
|
319ee8876a | ||
|
|
2a8b0f7f01 | ||
|
|
a7dc1f791f | ||
|
|
16a160f3a5 | ||
|
|
7676b7235b | ||
|
|
e100cc68e2 | ||
|
|
5923efe988 | ||
|
|
6b91bd8106 | ||
|
|
24df42e14a | ||
|
|
6fc5800e02 | ||
|
|
eb91fc34a6 | ||
|
|
03f71f02cb | ||
|
|
966c7a251a | ||
|
|
3b74c1c4c9 | ||
|
|
295e7742f1 | ||
|
|
bfdd20f6ff | ||
|
|
63cce9811f | ||
|
|
0bed1d777a | ||
|
|
8ec0974d1b | ||
|
|
6d9a6e5a4b | ||
|
|
7079975bd2 | ||
|
|
f06030ac44 | ||
|
|
b56d60aa8f | ||
|
|
d7f936cb3c | ||
|
|
b7b80ebbea | ||
|
|
daa4eab296 | ||
|
|
fad643985e | ||
|
|
b562b6b231 | ||
|
|
aa89062bdf | ||
|
|
374e9ed1f2 | ||
|
|
959063b34c | ||
|
|
fbf16d00c1 | ||
|
|
bacc34531e | ||
|
|
6507ac0072 | ||
|
|
965b6f69ce | ||
|
|
eb924b816d | ||
|
|
72bc6d8ace | ||
|
|
df1a16aca3 | ||
|
|
87f4440209 | ||
|
|
76252d42e3 | ||
|
|
cca22c1493 | ||
|
|
b0ddb9e28e | ||
|
|
3195129fa7 | ||
|
|
42bd5ceaf0 | ||
|
|
aae1faef41 | ||
|
|
baf3bc69ca | ||
|
|
fde7e7dfa4 | ||
|
|
0af9034bad | ||
|
|
516d47bb9d | ||
|
|
afc16cf6e6 | ||
|
|
e52f573a7f | ||
|
|
04206e7e5e | ||
|
|
8c71f709db | ||
|
|
7f6b490d00 | ||
|
|
a0bd928f75 | ||
|
|
fc7c823b9f | ||
|
|
488b16e8e7 | ||
|
|
fcc146ad2a | ||
|
|
64ec655631 | ||
|
|
35cf87547c | ||
|
|
4db7a06f01 | ||
|
|
24bb443e08 | ||
|
|
02133548c4 | ||
|
|
eff2818404 | ||
|
|
8017430308 | ||
|
|
9b10bb6e02 | ||
|
|
b89777ec07 | ||
|
|
e72b6d5e24 | ||
|
|
fb0bf0a510 | ||
|
|
a24c772880 | ||
|
|
7a3484dc52 | ||
|
|
2aa2e87fd6 | ||
|
|
2ef25416f9 | ||
|
|
435e17867e | ||
|
|
707d31bb30 | ||
|
|
de08a33db1 | ||
|
|
d724b8ff9c | ||
|
|
1bb7828255 | ||
|
|
d2a81987b2 | ||
|
|
ed7ee78952 | ||
|
|
2973ebbbdb | ||
|
|
e461208bf9 | ||
|
|
22faefe71a | ||
|
|
7d080de077 | ||
|
|
cc65a68384 | ||
|
|
0bb19a7376 | ||
|
|
ea6540cf6b | ||
|
|
df75025dc5 | ||
|
|
7ab8994ed8 | ||
|
|
a263b62e63 | ||
|
|
bf7b2e633b | ||
|
|
65b84f5dbd | ||
|
|
347f1e191e | ||
|
|
7905eb9fed | ||
|
|
3a6c49de0c | ||
|
|
0be1253334 | ||
|
|
a10ab607b0 | ||
|
|
45649de131 | ||
|
|
c3ebfce07b | ||
|
|
a57e5cf98a | ||
|
|
78ff33d6f0 | ||
|
|
a64bfc5ba3 | ||
|
|
a8ef1420b6 | ||
|
|
1d7a893950 | ||
|
|
ef8964e0a7 | ||
|
|
775c640dba | ||
|
|
634ebb55db | ||
|
|
5ac171d40c | ||
|
|
0ae323c855 | ||
|
|
8aaba7d60e | ||
|
|
caed828770 | ||
|
|
3f252eb12e | ||
|
|
e8051a6a39 | ||
|
|
e0860ed779 | ||
|
|
1324165cfe | ||
|
|
96aa7ada11 | ||
|
|
ca3160bd72 | ||
|
|
c3bac8b504 | ||
|
|
642c62498c | ||
|
|
56cf52808d | ||
|
|
5d47ede186 | ||
|
|
a48fe44663 | ||
|
|
a872081615 | ||
|
|
485ef8fcbf | ||
|
|
c450e596f7 | ||
|
|
f9c16319a8 | ||
|
|
5db20fe2c4 | ||
|
|
e12c7f948d | ||
|
|
cb546b4370 | ||
|
|
c193b26b62 | ||
|
|
91c8a22d1c | ||
|
|
b8205b5593 | ||
|
|
68248df197 | ||
|
|
db98bb370e | ||
|
|
bf2375a44f | ||
|
|
d12fb7d565 | ||
|
|
9838dec4fd | ||
|
|
793d03d47b | ||
|
|
56d796c92e | ||
|
|
aae995aef5 | ||
|
|
9159e5d979 | ||
|
|
705c5a4c68 | ||
|
|
a563b14f47 | ||
|
|
400fd6bf53 | ||
|
|
2915338cac | ||
|
|
09dc393c98 | ||
|
|
0650cdb64e | ||
|
|
385c521eb4 | ||
|
|
a37a74a4e2 | ||
|
|
1d2d49920a | ||
|
|
da82e14efc | ||
|
|
ad9103ea12 | ||
|
|
26296b3b82 | ||
|
|
72ba949f1c | ||
|
|
1102771ea1 | ||
|
|
9d9f95ea4a | ||
|
|
0e33a53068 | ||
|
|
081c0b7597 | ||
|
|
e3de09ddcc | ||
|
|
81e22e5bf9 | ||
|
|
424687c3e1 | ||
|
|
94e6fabb76 | ||
|
|
8d346ed392 | ||
|
|
fd3204e965 | ||
|
|
7109310145 | ||
|
|
a424520a1d | ||
|
|
b98ae1be2d | ||
|
|
5eaf466128 | ||
|
|
8dc7893459 | ||
|
|
e891471750 | ||
|
|
9014a20c25 | ||
|
|
4280d9356a | ||
|
|
b8e739bcad | ||
|
|
f9c76d4995 | ||
|
|
28ca820784 | ||
|
|
d8dbec69ca | ||
|
|
ada9b0849b | ||
|
|
99e64b3ea8 | ||
|
|
e7be333557 | ||
|
|
8da2271af1 | ||
|
|
7b58ddee5b | ||
|
|
fcfa9c033c | ||
|
|
1992af7159 | ||
|
|
a6b5101e0c | ||
|
|
e03a96774d | ||
|
|
261ddc49d9 | ||
|
|
bb735b6ee7 | ||
|
|
c54b45c09f | ||
|
|
eb061dcc59 | ||
|
|
bc7dc763fe | ||
|
|
3bfc2662e3 | ||
|
|
f4c21be051 | ||
|
|
2936006087 | ||
|
|
efa364043d | ||
|
|
7b6dada3ea | ||
|
|
be3b1a2057 | ||
|
|
67ceb02116 | ||
|
|
aa7a2731e0 | ||
|
|
df8f3786f0 | ||
|
|
20b167119a | ||
|
|
b1f02a2eb5 | ||
|
|
f9e424cd3b | ||
|
|
5eecbe21c1 | ||
|
|
32a3523bc4 | ||
|
|
7dd2dbdcbe | ||
|
|
27f9df768d | ||
|
|
2350a05fc4 | ||
|
|
3ea9912802 | ||
|
|
a9e31c75d0 | ||
|
|
4e46a392a3 | ||
|
|
2f09f9e591 | ||
|
|
55f675fb8d | ||
|
|
36fc9a8e0a | ||
|
|
cfd463a7fd | ||
|
|
2884f2d0ae | ||
|
|
0af752b083 | ||
|
|
212cb506d6 | ||
|
|
6ed32b3344 | ||
|
|
4a2901c473 | ||
|
|
18bec2504d | ||
|
|
7c4002351e | ||
|
|
4e0b5ace24 | ||
|
|
acfb173cc3 | ||
|
|
feb7b6109f | ||
|
|
552d7784a2 | ||
|
|
b1d10a87dc | ||
|
|
30bb86bade | ||
|
|
80511c660f | ||
|
|
45ca28ed74 | ||
|
|
a208c1f03b | ||
|
|
5b33bc3f00 | ||
|
|
6202eedeb3 | ||
|
|
a70502521d | ||
|
|
66a5095ede | ||
|
|
5b750ca194 | ||
|
|
b18e4e6ff6 | ||
|
|
31761d7e5d | ||
|
|
c881362cb1 | ||
|
|
00e5c1eb9f | ||
|
|
7e3ab62aae | ||
|
|
b0713bb9df | ||
|
|
42343f8978 | ||
|
|
e9383a7783 | ||
|
|
e0ee76115b | ||
|
|
d6bf677bb1 | ||
|
|
746816c6c7 | ||
|
|
4d74abfd8f | ||
|
|
5853354357 | ||
|
|
022ab93c1c | ||
|
|
cd8d22d23e | ||
|
|
da1170ecc9 | ||
|
|
df46d6bcb0 | ||
|
|
bf27a7fc86 | ||
|
|
482f21620e | ||
|
|
1472d80c12 | ||
|
|
5bfc5fce9f | ||
|
|
dcd2d52a5a | ||
|
|
2c87975e52 | ||
|
|
e3245a4163 | ||
|
|
43ea1f94df | ||
|
|
1077b08c19 | ||
|
|
d02393f174 | ||
|
|
bc59477b24 | ||
|
|
e4cb99c0c0 | ||
|
|
e65219efc5 | ||
|
|
8bffeaa368 | ||
|
|
b017e90b6b | ||
|
|
36da60ed9d | ||
|
|
a71eb71eff | ||
|
|
283329f8ea | ||
|
|
01eed2a376 | ||
|
|
a13212ea6e | ||
|
|
cb31aa0dbd | ||
|
|
61265768e5 | ||
|
|
85975d642c | ||
|
|
8d5806b9e1 | ||
|
|
5b32c3a985 | ||
|
|
4dc488229d |
30
.devcontainer/0/Dockerfile
Normal file
30
.devcontainer/0/Dockerfile
Normal 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
|
||||
64
.devcontainer/0/devcontainer.json
Normal file
64
.devcontainer/0/devcontainer.json
Normal 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"
|
||||
}
|
||||
16
.devcontainer/0/post-create.sh
Normal file
16
.devcontainer/0/post-create.sh
Normal 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
|
||||
39
.devcontainer/1/Dockerfile
Normal file
39
.devcontainer/1/Dockerfile
Normal 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
|
||||
83
.devcontainer/1/devcontainer.json
Normal file
83
.devcontainer/1/devcontainer.json
Normal 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"
|
||||
}
|
||||
42
.devcontainer/1/post-create.sh
Normal file
42
.devcontainer/1/post-create.sh
Normal 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
|
||||
@@ -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
2
.gitattributes
vendored
@@ -10,3 +10,5 @@
|
||||
*.md text eol=lf
|
||||
*.yml text eol=lf
|
||||
*.yaml text eol=lf
|
||||
|
||||
*.sh text eol=lf
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/cn-bug-report.yaml
vendored
2
.github/ISSUE_TEMPLATE/cn-bug-report.yaml
vendored
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/en-bug-report.yaml
vendored
2
.github/ISSUE_TEMPLATE/en-bug-report.yaml
vendored
@@ -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
|
||||
|
||||
@@ -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
75
.github/stale_cache_cleanup.ps1
vendored
Normal 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
59
.github/stale_cache_dev.ps1
vendored
Normal 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"
|
||||
5
.github/workflows/blame-ignore.yml
vendored
5
.github/workflows/blame-ignore.yml
vendored
@@ -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]"
|
||||
|
||||
5
.github/workflows/cache-delete.yml
vendored
5
.github/workflows/cache-delete.yml
vendored
@@ -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 }}
|
||||
|
||||
190
.github/workflows/ci.yml
vendored
190
.github/workflows/ci.yml
vendored
@@ -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 }}
|
||||
|
||||
15
.github/workflows/codeql-core.yml
vendored
15
.github/workflows/codeql-core.yml
vendored
@@ -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
|
||||
|
||||
50
.github/workflows/codeql-web.yml
vendored
50
.github/workflows/codeql-web.yml
vendored
@@ -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 }}
|
||||
7
.github/workflows/codeql-wf.yml
vendored
7
.github/workflows/codeql-wf.yml
vendored
@@ -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"
|
||||
|
||||
17
.github/workflows/gen-changelog.yml
vendored
17
.github/workflows/gen-changelog.yml
vendored
@@ -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"
|
||||
|
||||
7
.github/workflows/issue-checkbox-checker.yml
vendored
7
.github/workflows/issue-checkbox-checker.yml
vendored
@@ -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:
|
||||
|
||||
6
.github/workflows/issue-checker.yml
vendored
6
.github/workflows/issue-checker.yml
vendored
@@ -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
|
||||
|
||||
20
.github/workflows/markdown-checker.yml
vendored
20
.github/workflows/markdown-checker.yml
vendored
@@ -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)
|
||||
|
||||
3
.github/workflows/mirrorchyan.yml
vendored
3
.github/workflows/mirrorchyan.yml
vendored
@@ -1,10 +1,11 @@
|
||||
name: mirrorchyan
|
||||
name: Release Package Distribution
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
mirrorchyan:
|
||||
name: Upload to MirrorChyan
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
|
||||
@@ -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
|
||||
|
||||
11
.github/workflows/optimize-templates.yml
vendored
11
.github/workflows/optimize-templates.yml
vendored
@@ -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
|
||||
|
||||
13
.github/workflows/pr-auto-tag.yml
vendored
13
.github/workflows/pr-auto-tag.yml
vendored
@@ -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 }}"
|
||||
|
||||
7
.github/workflows/pr-checker.yml
vendored
7
.github/workflows/pr-checker.yml
vendored
@@ -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: |
|
||||
|
||||
46
.github/workflows/release-nightly-ota.yml
vendored
46
.github/workflows/release-nightly-ota.yml
vendored
@@ -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
|
||||
|
||||
45
.github/workflows/release-ota.yml
vendored
45
.github/workflows/release-ota.yml
vendored
@@ -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
|
||||
|
||||
111
.github/workflows/res-update-game.yml
vendored
111
.github/workflows/res-update-game.yml
vendored
@@ -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 }}
|
||||
|
||||
93
.github/workflows/smoke-testing.yml
vendored
93
.github/workflows/smoke-testing.yml
vendored
@@ -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
|
||||
|
||||
5
.github/workflows/stale.yml
vendored
5
.github/workflows/stale.yml
vendored
@@ -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 }}
|
||||
|
||||
9
.github/workflows/sync-resource.yml
vendored
9
.github/workflows/sync-resource.yml
vendored
@@ -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'
|
||||
|
||||
95
.github/workflows/website-workflow.yml
vendored
95
.github/workflows/website-workflow.yml
vendored
@@ -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
6
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
284
CHANGELOG.md
284
CHANGELOG.md
@@ -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
|
||||
|
||||
136
CMakeLists.txt
136
CMakeLists.txt
@@ -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()
|
||||
|
||||
58
README.md
58
README.md
@@ -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)操作,支持 Linux,macOS 和 Windows,可用于自动化脚本或在无图形界面的服务器上使用。请参阅 [CLI 使用指南](https://maa.plus/docs/zh-cn/manual/cli/)
|
||||
MAA 支持命令行界面(CLI)操作,支持 Linux,macOS 和 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 容器(默认)
|
||||
|
||||
[](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2Fdevcontainer.json)
|
||||
|
||||
- 轻量环境,适合文档站前端开发
|
||||
|
||||
[](https://codespaces.new/MaaAssistantArknights/MaaAssistantArknights?devcontainer_path=.devcontainer%2F0%2Fdevcontainer.json)
|
||||
|
||||
- 全量环境,适合 MAA Core 相关开发
|
||||
|
||||
[](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)
|
||||
|
||||
## 致谢
|
||||
|
||||
|
||||
@@ -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}")
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -25,6 +25,3 @@ if (BUILD_XCFRAMEWORK)
|
||||
)
|
||||
endif (BUILD_XCFRAMEWORK)
|
||||
|
||||
target_compile_options(MaaCore PRIVATE
|
||||
-Wno-deprecated-declarations
|
||||
-Wno-gnu-zero-variadic-macro-arguments)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
1
docs/.prettierignore
Normal file
@@ -0,0 +1 @@
|
||||
**/pnpm-lock.yaml
|
||||
40
docs/.prettierrc.cjs
Normal file
40
docs/.prettierrc.cjs
Normal 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',
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -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;')
|
||||
},
|
||||
});
|
||||
})
|
||||
|
||||
106
docs/.vuepress/components/AsciiArt.vue
Normal file
106
docs/.vuepress/components/AsciiArt.vue
Normal 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>
|
||||
72
docs/.vuepress/components/ImageGrid.vue
Normal file
72
docs/.vuepress/components/ImageGrid.vue
Normal 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>
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
25
docs/.vuepress/components/Redirect.vue
Normal file
25
docs/.vuepress/components/Redirect.vue
Normal 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>
|
||||
@@ -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
7
docs/.vuepress/env.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/// <reference types="vite/client" />
|
||||
|
||||
declare module '*.vue' {
|
||||
import { DefineComponent } from 'vue'
|
||||
const component: DefineComponent<{}, {}, any>
|
||||
export default component
|
||||
}
|
||||
@@ -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",
|
||||
},
|
||||
]);
|
||||
@@ -1,5 +0,0 @@
|
||||
export * from "./zh-cn";
|
||||
export * from "./zh-tw";
|
||||
export * from "./en-us";
|
||||
export * from "./ja-jp";
|
||||
export * from "./ko-kr";
|
||||
@@ -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",
|
||||
},
|
||||
]);
|
||||
@@ -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",
|
||||
},
|
||||
]);
|
||||
@@ -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",
|
||||
},
|
||||
]);
|
||||
@@ -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",
|
||||
},
|
||||
]);
|
||||
29
docs/.vuepress/navigation/genLocales.ts
Normal file
29
docs/.vuepress/navigation/genLocales.ts
Normal 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
|
||||
}
|
||||
161
docs/.vuepress/navigation/genNavigationComponents.ts
Normal file
161
docs/.vuepress/navigation/genNavigationComponents.ts
Normal 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),
|
||||
}
|
||||
}
|
||||
45
docs/.vuepress/navigation/i18n.ts
Normal file
45
docs/.vuepress/navigation/i18n.ts
Normal 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: '문서',
|
||||
},
|
||||
]
|
||||
90
docs/.vuepress/plugins/asciiArt.mts
Normal file
90
docs/.vuepress/plugins/asciiArt.mts
Normal 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,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -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.',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
107
docs/.vuepress/plume.config.ts
Normal file
107
docs/.vuepress/plume.config.ts
Normal 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/",
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// ],
|
||||
//},
|
||||
})
|
||||
1
docs/.vuepress/public/CNAME
Normal file
1
docs/.vuepress/public/CNAME
Normal file
@@ -0,0 +1 @@
|
||||
docs.maa.plus
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@@ -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 |
4
docs/.vuepress/public/images/maa-support-panel.svg
Normal file
4
docs/.vuepress/public/images/maa-support-panel.svg
Normal 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 |
BIN
docs/.vuepress/public/images/preview.jpg
Normal file
BIN
docs/.vuepress/public/images/preview.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
@@ -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",
|
||||
},
|
||||
],
|
||||
});
|
||||
@@ -1,5 +0,0 @@
|
||||
export * from "./zh-cn";
|
||||
export * from "./zh-tw";
|
||||
export * from "./en-us";
|
||||
export * from "./ja-jp";
|
||||
export * from "./ko-kr";
|
||||
@@ -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",
|
||||
},
|
||||
],
|
||||
});
|
||||
@@ -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",
|
||||
},
|
||||
],
|
||||
});
|
||||
@@ -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",
|
||||
},
|
||||
],
|
||||
});
|
||||
@@ -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",
|
||||
},
|
||||
],
|
||||
});
|
||||
@@ -1 +0,0 @@
|
||||
$theme-colors: #2196f3, #f26d6d, #3eaf7c, #fb9b5f;
|
||||
16
docs/.vuepress/styles/fonts.scss
Normal file
16
docs/.vuepress/styles/fonts.scss
Normal 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;
|
||||
}
|
||||
40
docs/.vuepress/styles/home.scss
Normal file
40
docs/.vuepress/styles/home.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
22
docs/.vuepress/styles/index.scss
Normal file
22
docs/.vuepress/styles/index.scss
Normal 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);
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
@@ -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 });
|
||||
@@ -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^
|
||||
~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###&###############&&&~
|
||||
.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
27
docs/README.md
Normal 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/
|
||||
---
|
||||
59
docs/asciiArts/maa-logo-with-endorsement.txt
Normal file
59
docs/asciiArts/maa-logo-with-endorsement.txt
Normal 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^
|
||||
~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###&###############&&&~
|
||||
.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 ^^!?
|
||||
.
|
||||
|
||||
|
||||
|
||||
72
docs/asciiArts/maa-logo.dark.txt
Normal file
72
docs/asciiArts/maa-logo.dark.txt
Normal 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;,
|
||||
..,'
|
||||
|
||||
72
docs/asciiArts/maa-logo.light.txt
Normal file
72
docs/asciiArts/maa-logo.light.txt
Normal 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.
|
||||
|
||||
54
docs/asciiArts/priestess.dark.txt
Normal file
54
docs/asciiArts/priestess.dark.txt
Normal 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
|
||||
54
docs/asciiArts/priestess.light.txt
Normal file
54
docs/asciiArts/priestess.light.txt
Normal 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,........,;''..'. .....''.....''''''''''''.......................
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -6,4 +6,4 @@ dir:
|
||||
order: 2
|
||||
---
|
||||
|
||||
<Catalog base='/en-us/develop/' />
|
||||
<Redirect to="development" />
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user