Skip to content

Commit 0f78cda

Browse files
committed
Merge branch 'main' into Frogmonster
2 parents ec4ff0b + 16559e7 commit 0f78cda

File tree

631 files changed

+172673
-20020
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

631 files changed

+172673
-20020
lines changed

.github/pyright-config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"reportMissingImports": true,
3030
"reportMissingTypeStubs": true,
3131

32-
"pythonVersion": "3.10",
32+
"pythonVersion": "3.11",
3333
"pythonPlatform": "Windows",
3434

3535
"executionEnvironments": [

.github/workflows/analyze-modified-files.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
- uses: actions/setup-python@v5
5454
if: env.diff != ''
5555
with:
56-
python-version: '3.10'
56+
python-version: '3.11'
5757

5858
- name: "Install dependencies"
5959
if: env.diff != ''

.github/workflows/build.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,25 @@ on:
99
- 'setup.py'
1010
- 'requirements.txt'
1111
- '*.iss'
12+
- 'worlds/*/archipelago.json'
1213
pull_request:
1314
paths:
1415
- '.github/workflows/build.yml'
1516
- 'setup.py'
1617
- 'requirements.txt'
1718
- '*.iss'
19+
- 'worlds/*/archipelago.json'
1820
workflow_dispatch:
1921

2022
env:
2123
ENEMIZER_VERSION: 7.1
2224
# NOTE: since appimage/appimagetool and appimage/type2-runtime does not have tags anymore,
2325
# we check the sha256 and require manual intervention if it was updated.
24-
APPIMAGETOOL_VERSION: continuous
25-
APPIMAGETOOL_X86_64_HASH: '363dafac070b65cc36ca024b74db1f043c6f5cd7be8fca760e190dce0d18d684'
26-
APPIMAGE_RUNTIME_VERSION: continuous
27-
APPIMAGE_RUNTIME_X86_64_HASH: 'e70ffa9b69b211574d0917adc482dd66f25a0083427b5945783965d55b0b0a8b'
26+
APPIMAGE_FORK: 'PopTracker'
27+
APPIMAGETOOL_VERSION: 'r-2025-11-18'
28+
APPIMAGETOOL_X86_64_HASH: '4577a452b30af2337123fbb383aea154b618e51ad5448c3b62085cbbbfbfd9a2'
29+
APPIMAGE_RUNTIME_VERSION: 'r-2025-11-07'
30+
APPIMAGE_RUNTIME_X86_64_HASH: '27ddd3f78e483fc5f7856e413d7c17092917f8c35bfe3318a0d378aa9435ad17'
2831

2932
permissions: # permissions required for attestation
3033
id-token: 'write'
@@ -139,9 +142,9 @@ jobs:
139142
- name: Install build-time dependencies
140143
run: |
141144
echo "PYTHON=python3.12" >> $GITHUB_ENV
142-
wget -nv https://github.com/AppImage/appimagetool/releases/download/$APPIMAGETOOL_VERSION/appimagetool-x86_64.AppImage
145+
wget -nv https://github.com/$APPIMAGE_FORK/appimagetool/releases/download/$APPIMAGETOOL_VERSION/appimagetool-x86_64.AppImage
143146
echo "$APPIMAGETOOL_X86_64_HASH appimagetool-x86_64.AppImage" | sha256sum -c
144-
wget -nv https://github.com/AppImage/type2-runtime/releases/download/$APPIMAGE_RUNTIME_VERSION/runtime-x86_64
147+
wget -nv https://github.com/$APPIMAGE_FORK/type2-runtime/releases/download/$APPIMAGE_RUNTIME_VERSION/runtime-x86_64
145148
echo "$APPIMAGE_RUNTIME_X86_64_HASH runtime-x86_64" | sha256sum -c
146149
chmod a+rx appimagetool-x86_64.AppImage
147150
./appimagetool-x86_64.AppImage --appimage-extract

.github/workflows/docker.yml

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
name: Build and Publish Docker Images
2+
3+
on:
4+
push:
5+
paths:
6+
- "**"
7+
- "!docs/**"
8+
- "!deploy/**"
9+
- "!setup.py"
10+
- "!.gitignore"
11+
- "!.github/workflows/**"
12+
- ".github/workflows/docker.yml"
13+
branches:
14+
- "main"
15+
tags:
16+
- "v?[0-9]+.[0-9]+.[0-9]*"
17+
workflow_dispatch:
18+
19+
env:
20+
REGISTRY: ghcr.io
21+
22+
jobs:
23+
prepare:
24+
runs-on: ubuntu-latest
25+
outputs:
26+
image-name: ${{ steps.image.outputs.name }}
27+
tags: ${{ steps.meta.outputs.tags }}
28+
labels: ${{ steps.meta.outputs.labels }}
29+
package-name: ${{ steps.package.outputs.name }}
30+
steps:
31+
- name: Checkout repository
32+
uses: actions/checkout@v4
33+
34+
- name: Set lowercase image name
35+
id: image
36+
run: |
37+
echo "name=${GITHUB_REPOSITORY,,}" >> $GITHUB_OUTPUT
38+
39+
- name: Set package name
40+
id: package
41+
run: |
42+
echo "name=$(basename ${GITHUB_REPOSITORY,,})" >> $GITHUB_OUTPUT
43+
44+
- name: Extract metadata
45+
id: meta
46+
uses: docker/metadata-action@v5
47+
with:
48+
images: ${{ env.REGISTRY }}/${{ steps.image.outputs.name }}
49+
tags: |
50+
type=ref,event=branch,enable={{is_not_default_branch}}
51+
type=semver,pattern={{version}}
52+
type=semver,pattern={{major}}.{{minor}}
53+
type=raw,value=nightly,enable={{is_default_branch}}
54+
55+
- name: Compute final tags
56+
id: final-tags
57+
run: |
58+
readarray -t tags <<< "${{ steps.meta.outputs.tags }}"
59+
60+
if [[ "${{ github.ref_type }}" == "tag" ]]; then
61+
tag="${{ github.ref_name }}"
62+
if [[ "$tag" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
63+
full_latest="${{ env.REGISTRY }}/${{ steps.image.outputs.name }}:latest"
64+
# Check if latest is already in tags to avoid duplicates
65+
if ! printf '%s\n' "${tags[@]}" | grep -q "^$full_latest$"; then
66+
tags+=("$full_latest")
67+
fi
68+
fi
69+
fi
70+
71+
# Set multiline output
72+
echo "tags<<EOF" >> $GITHUB_OUTPUT
73+
printf '%s\n' "${tags[@]}" >> $GITHUB_OUTPUT
74+
echo "EOF" >> $GITHUB_OUTPUT
75+
76+
build:
77+
needs: prepare
78+
runs-on: ${{ matrix.runner }}
79+
permissions:
80+
contents: read
81+
packages: write
82+
strategy:
83+
matrix:
84+
include:
85+
- platform: amd64
86+
runner: ubuntu-latest
87+
suffix: amd64
88+
cache-scope: amd64
89+
- platform: arm64
90+
runner: ubuntu-24.04-arm
91+
suffix: arm64
92+
cache-scope: arm64
93+
steps:
94+
- name: Checkout repository
95+
uses: actions/checkout@v4
96+
97+
- name: Set up Docker Buildx
98+
uses: docker/setup-buildx-action@v3
99+
100+
- name: Log in to GitHub Container Registry
101+
uses: docker/login-action@v3
102+
with:
103+
registry: ${{ env.REGISTRY }}
104+
username: ${{ github.actor }}
105+
password: ${{ secrets.GITHUB_TOKEN }}
106+
107+
- name: Compute suffixed tags
108+
id: tags
109+
run: |
110+
readarray -t tags <<< "${{ needs.prepare.outputs.tags }}"
111+
suffixed=()
112+
for t in "${tags[@]}"; do
113+
suffixed+=("$t-${{ matrix.suffix }}")
114+
done
115+
echo "tags=$(IFS=','; echo "${suffixed[*]}")" >> $GITHUB_OUTPUT
116+
117+
- name: Build and push Docker image
118+
uses: docker/build-push-action@v5
119+
with:
120+
context: .
121+
file: ./Dockerfile
122+
platforms: linux/${{ matrix.platform }}
123+
push: true
124+
tags: ${{ steps.tags.outputs.tags }}
125+
labels: ${{ needs.prepare.outputs.labels }}
126+
cache-from: type=gha,scope=${{ matrix.cache-scope }}
127+
cache-to: type=gha,mode=max,scope=${{ matrix.cache-scope }}
128+
provenance: false
129+
130+
manifest:
131+
needs: [prepare, build]
132+
runs-on: ubuntu-latest
133+
permissions:
134+
contents: read
135+
packages: write
136+
steps:
137+
- name: Log in to GitHub Container Registry
138+
uses: docker/login-action@v3
139+
with:
140+
registry: ${{ env.REGISTRY }}
141+
username: ${{ github.actor }}
142+
password: ${{ secrets.GITHUB_TOKEN }}
143+
144+
- name: Create and push multi-arch manifest
145+
run: |
146+
readarray -t tag_array <<< "${{ needs.prepare.outputs.tags }}"
147+
148+
for tag in "${tag_array[@]}"; do
149+
docker manifest create "$tag" \
150+
"$tag-amd64" \
151+
"$tag-arm64"
152+
153+
docker manifest push "$tag"
154+
done

.github/workflows/label-pull-requests.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ env:
1212
jobs:
1313
labeler:
1414
name: 'Apply content-based labels'
15-
if: github.event.action == 'opened' || github.event.action == 'reopened' || github.event.action == 'synchronize'
1615
runs-on: ubuntu-latest
1716
steps:
1817
- uses: actions/labeler@v5

.github/workflows/release.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@ name: Release
55
on:
66
push:
77
tags:
8-
- '*.*.*'
8+
- 'v?[0-9]+.[0-9]+.[0-9]*'
99

1010
env:
1111
ENEMIZER_VERSION: 7.1
1212
# NOTE: since appimage/appimagetool and appimage/type2-runtime does not have tags anymore,
1313
# we check the sha256 and require manual intervention if it was updated.
14-
APPIMAGETOOL_VERSION: continuous
15-
APPIMAGETOOL_X86_64_HASH: '363dafac070b65cc36ca024b74db1f043c6f5cd7be8fca760e190dce0d18d684'
16-
APPIMAGE_RUNTIME_VERSION: continuous
17-
APPIMAGE_RUNTIME_X86_64_HASH: 'e70ffa9b69b211574d0917adc482dd66f25a0083427b5945783965d55b0b0a8b'
14+
APPIMAGE_FORK: 'PopTracker'
15+
APPIMAGETOOL_VERSION: 'r-2025-11-18'
16+
APPIMAGETOOL_X86_64_HASH: '4577a452b30af2337123fbb383aea154b618e51ad5448c3b62085cbbbfbfd9a2'
17+
APPIMAGE_RUNTIME_VERSION: 'r-2025-11-07'
18+
APPIMAGE_RUNTIME_X86_64_HASH: '27ddd3f78e483fc5f7856e413d7c17092917f8c35bfe3318a0d378aa9435ad17'
1819

1920
permissions: # permissions required for attestation
2021
id-token: 'write'
@@ -127,9 +128,9 @@ jobs:
127128
- name: Install build-time dependencies
128129
run: |
129130
echo "PYTHON=python3.12" >> $GITHUB_ENV
130-
wget -nv https://github.com/AppImage/appimagetool/releases/download/$APPIMAGETOOL_VERSION/appimagetool-x86_64.AppImage
131+
wget -nv https://github.com/$APPIMAGE_FORK/appimagetool/releases/download/$APPIMAGETOOL_VERSION/appimagetool-x86_64.AppImage
131132
echo "$APPIMAGETOOL_X86_64_HASH appimagetool-x86_64.AppImage" | sha256sum -c
132-
wget -nv https://github.com/AppImage/type2-runtime/releases/download/$APPIMAGE_RUNTIME_VERSION/runtime-x86_64
133+
wget -nv https://github.com/$APPIMAGE_FORK/type2-runtime/releases/download/$APPIMAGE_RUNTIME_VERSION/runtime-x86_64
133134
echo "$APPIMAGE_RUNTIME_X86_64_HASH runtime-x86_64" | sha256sum -c
134135
chmod a+rx appimagetool-x86_64.AppImage
135136
./appimagetool-x86_64.AppImage --appimage-extract

.github/workflows/unittests.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ jobs:
3939
matrix:
4040
os: [ubuntu-latest]
4141
python:
42-
- {version: '3.10'}
43-
- {version: '3.11'}
42+
- {version: '3.11.2'} # Change to '3.11' around 2026-06-10
4443
- {version: '3.12'}
44+
- {version: '3.13'}
4545
include:
46-
- python: {version: '3.10'} # old compat
46+
- python: {version: '3.11'} # old compat
4747
os: windows-latest
48-
- python: {version: '3.12'} # current
48+
- python: {version: '3.13'} # current
4949
os: windows-latest
50-
- python: {version: '3.12'} # current
50+
- python: {version: '3.13'} # current
5151
os: macos-latest
5252

5353
steps:
@@ -59,7 +59,7 @@ jobs:
5959
- name: Install dependencies
6060
run: |
6161
python -m pip install --upgrade pip
62-
pip install pytest pytest-subtests pytest-xdist
62+
pip install -r ci-requirements.txt
6363
python ModuleUpdate.py --yes --force --append "WebHostLib/requirements.txt"
6464
python Launcher.py --update_settings # make sure host.yaml exists for tests
6565
- name: Unittests
@@ -75,7 +75,7 @@ jobs:
7575
os:
7676
- ubuntu-latest
7777
python:
78-
- {version: '3.12'} # current
78+
- {version: '3.13'} # current
7979

8080
steps:
8181
- uses: actions/checkout@v4

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ Output Logs/
6363
/installdelete.iss
6464
/data/user.kv
6565
/datapackage
66+
/datapackage_export.json
6667
/custom_worlds
6768

6869
# Byte-compiled / optimized / DLL files

.run/Build APWorld.run.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Build APWorld" type="PythonConfigurationType" factoryName="Python">
3+
<module name="Archipelago" />
4+
<option name="ENV_FILES" value="" />
5+
<option name="INTERPRETER_OPTIONS" value="" />
6+
<option name="PARENT_ENVS" value="true" />
7+
<envs>
8+
<env name="PYTHONUNBUFFERED" value="1" />
9+
</envs>
10+
<option name="SDK_HOME" value="" />
11+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/" />
12+
<option name="IS_MODULE_SDK" value="true" />
13+
<option name="ADD_CONTENT_ROOTS" value="true" />
14+
<option name="ADD_SOURCE_ROOTS" value="true" />
15+
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/Launcher.py" />
16+
<option name="PARAMETERS" value="&quot;Build APWorlds&quot;" />
17+
<option name="SHOW_COMMAND_LINE" value="false" />
18+
<option name="EMULATE_TERMINAL" value="false" />
19+
<option name="MODULE_MODE" value="false" />
20+
<option name="REDIRECT_INPUT" value="false" />
21+
<option name="INPUT_FILE" value="" />
22+
<method v="2" />
23+
</configuration>
24+
</component>

0 commit comments

Comments
 (0)