Skip to content

Docs: Add caveat about init files in subfolders - #6222

Merged
Berserker66 merged 1 commit into
ArchipelagoMW:mainfrom
drtchops:docs/init-file-caveat
Sep 27, 2026
Merged

Berserker66 merged 1 commit into
ArchipelagoMW:mainfrom
drtchops:docs/init-file-caveat

Conversation

@drtchops

Copy link
Copy Markdown
Collaborator

What is this fixing or adding?

Adds an extra caveat to add __init__.py files to modules

How was this tested?

I read it

If this makes graphical changes, please attach screenshots.

it's docs

@github-actions github-actions Bot added is: documentation Improvements or additions to documentation. waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. labels May 24, 2026

@duckboycool duckboycool left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sure that the people who don't run unittests to find this will definitely read the docs.

@Rooby-Roo Rooby-Roo added waiting-on: core-review Issue/PR has been peer-reviewed and is ready to be merged or needs input from a core maintainer. and removed waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. labels Jun 18, 2026
@Berserker66
Berserker66 merged commit 3197f77 into ArchipelagoMW:main Sep 27, 2026
3 checks passed
@github-actions github-actions Bot removed the waiting-on: core-review Issue/PR has been peer-reviewed and is ready to be merged or needs input from a core maintainer. label Sep 28, 2026
HeckaBad pushed a commit to Axcel-Snowpix/PokemonRevoAP that referenced this pull request Oct 6, 2026
hasherwi added a commit to hasherwi/Archipelago-kirbyam that referenced this pull request Oct 11, 2026
* Muse Dash: Add support for Wuthering Waves Pioneer Podcast and Ay-Aye Horse (ArchipelagoMW#6071)

* sc2: Fixing random fill errors in unit tests (ArchipelagoMW#6045)

* Core: Make Generate.main only init logging on __main__ (ArchipelagoMW#6069)

* setup.py: add rule_builder.cached_world to included list (ArchipelagoMW#6070)

* Clients: remove datapackage from persistent_storage ... (ArchipelagoMW#6074)

... next time it gets written to.
This makes loading peristent_storage faster in the future.

* Core, Webhost: update and pin dependency versions (ArchipelagoMW#6075)

* Launcher: Add konsole to terminal list and rework launch dialog (ArchipelagoMW#5684)

* Make component launching indicate if no terminal window, add konsole

* Attempt to spell better and remove whitespace

* Update terminal priority

* Make helper for clearing LD_LIBRARY_PATH

* Add handling to linux launch

* Hopefully fix setter

* Apply suggestions from code review

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

---------

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Docs: update macOS setup instructions for more specificity on Python version (ArchipelagoMW#6078)

* Pokemon Emerald: Fix Latios KeyError (ArchipelagoMW#6056)

* Muse Dash: Fix nondeterministic generation with include_songs (ArchipelagoMW#6040)

The include_songs option is an OptionSet, whose value is a set, but was being iterated to produce self.included_songs. Sets are unordered and may have a different iteration order each time a python process is run. This meant that the order of the elements in self.included_songs could differ even when generating with a fixed seed.

This caused nondeterministic generation with the same seed because create_song_pool() deterministically randomly picks songs from self.included_songs, which could be in a different order each time, so different songs could be picked.

* Messenger: Require Wingsuit to traverse Dark Cave (ArchipelagoMW#6059)

* Stardew valley: Four small fixes (ArchipelagoMW#6055)

* - Fixed the Dr Seuss Bundle asking for tigerseye (mineral) instead of tiger trout (fish)

* - Made blue grass starter more consistent

* - Fragments of the past does not rely on ginger island

* - Removed legacy hard coded strange bun recipe that messed with chefsanity logic

* Stardew Valley: trimmed lucky purple shorts need gold to make (ArchipelagoMW#6034)

The current logic only requires the shorts and a sewing machine, but a
gold bar is also necessary

* Stardew Valley: Fixed an issue where some specific option combinations could create more items than locations (ArchipelagoMW#6012)

* - Improved the dynamic locations count algorithm to take into account the nature of various heavy settings in both directions

* - Fixes from Code Review

* - We're only testing for sunday locations, might as well only take sunday locations in the list to test

* - One more slight optimization

* - Added consideration for bundles per room in filler locations counting

* - Registered some more IDs to handle items up to 10

* Super Mario Land 2: Fix Space Zone 2 Logic (ArchipelagoMW#6025)

* Satisfactory: bug fix in __init__.py (ArchipelagoMW#5930)

Solved indentation error to return to intended functionality

* lufia2ac: update CollectionRule import (ArchipelagoMW#5936)

* WebHost: Remove space before comma separators in tutorial authors (ArchipelagoMW#5999)

* Remove space before comma

* Factorio authors update

* Simplify template

* APQuest: Various fixes (ArchipelagoMW#6079)

* Import Buffer from typing_extensions instead of collections.abc for 3.11 compat

* always re-set sound volumes before playing

* fix game window scaling if parent is vertical

* make default volume lower

* Satisfactory: Fixed buildings missing from goal check (ArchipelagoMW#5772)

* Aquaria: Fixing bug where Urchin Costume is not a progression damaging item (ArchipelagoMW#5998)

* Options Creator: bind free text set_value to text instead of on_text_validate (ArchipelagoMW#5915)

* SMW: Prevent receiving your own traps while aliased (ArchipelagoMW#5763)

* Rule Builder: Add field resolvers (ArchipelagoMW#5919)

* CI: set permissions, update and pin actions, CodeQL for actions (ArchipelagoMW#6073)

* CI: reduce default permissions to minimum

* CI: update pin actions

Most of them. CodeQL and action-gh-release is untouched for now.
Immutable actions and actions/* are pinned to version,
other actions are pinned to hash.

* CI: make use of archive: false in upload-artifact

also set compression level and error behavior for scan-build upload.

* CI: update codeql and enable scanning actions

* The Witness: (Unbeatable seed) Ensure Desert Laser Redirection is required when the box is rotated (ArchipelagoMW#5889)

* Unbeatable seed: 11 lasers + redirect when the box is rotated

* naming

* APQuest: Tap to move (ArchipelagoMW#6082)

* Tap to move

* inputs

* cleanup

* oops

* MM3: Bump world version (ArchipelagoMW#6088)

* Pokemon Emerald: Bump version (ArchipelagoMW#6083)

* APQuest: Fix focus issues (ArchipelagoMW#6090)

* My best attempt at fixing focus issues on Android

* didn't mean to remove that

* APQuest: Add Link to Poptracker Pack to Setup Guide (ArchipelagoMW#6089)

* Update setup_en.md

* Update setup_de.md

* WebHost: Fix hosting with invalid worlds installed (ArchipelagoMW#5648)

* APWorld Builder: Add option to skip opening output folder (ArchipelagoMW#5847)

* Stardew Valley: 0.6.7 Day 1 fixes (ArchipelagoMW#6098)

- The Shane and Sebastian Portrait filler items werent tagged properly.
- The Beach Farm adds one secretsanity check, so it needs to be in the allsanity preset
- The Allsanity preset is renamed to "Maxsanity" to encourage better defined terminology and Allsanity means something else
- The "All Random" preset has been removed entirely. It has been the cause of too many beginner footguns over the years. People can still achieve the effect manually, but at least they'll have to try a little bit to ruin their own experience.

* Various Worlds: purge `world: MultiWorld` (ArchipelagoMW#5973)

* Bomb Rush Cyberfunk: Fix logic requirement increasing after collecting item (ArchipelagoMW#6105)

* WebHost: 2025 to 2026 (ArchipelagoMW#6094)

* DKC3: Delete DKC3 (ArchipelagoMW#6097)

* Docs: fix misinformation in tests.md (ArchipelagoMW#6125)

* Factorio: Improve English instructions (ArchipelagoMW#5306)

* WebHost: Fix: strict suuid converter (ArchipelagoMW#6130)

* WebHost: disallow '=' and whitespace in SUUID and append the correct number of '='

This makes Room IDs unambiguous and avoids breaking if b64decode ever becomes strict.

* Tests, WebHost: add SUUID tests

* Tests, WebHost: add edge cases to SUUID tests

* HK: add manifest (ArchipelagoMW#6057)

* Core: Remove worlds.generic.PlandoItem (ArchipelagoMW#6035)

* Test: add test for unpickling NetUtils enums (ArchipelagoMW#5326)

* Test: add test for unpickling NetUtils enums

This verifies that Utils.ByValue either works or is not required,
and once we drop ByValue, this validates that future Python
versions do not break our Enums again.

* Test: NetUtils enum switch to more direct pickle.dumps

It's probably better to use the direct interface in case
restricted_dumps does some funky stuff in the future.

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Test: NetUtils enum fix import for change

---------

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* APQuest: Switch to Rule Builder (ArchipelagoMW#5906)

* CachedRuleBuilderWorld

* CachedRuleBuilderWorld

* APQuest Rule Builder finished

* Added comment

Add a rule to check if the player has a Sword to destroy bushes.

* Bump version + typo fix

* Update worlds/apquest/rules.py

Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>

* Address Tchops' review comments

---------

Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>

* Options: Add more Option unit tests, add generic Option.__eq__, make cull_zeroes available to all OptionCounters ArchipelagoMW#5905

* The Witness: Make "Early Good Item" an OptionSet allowing Symbols, Doors and Obelisk Keys (ArchipelagoMW#3804)

* New solution to that plando issue

* better

* Another warning

* better comment

* Best of both worlds I guess?

* oops

* Smarter code reuse

* better comment

* oop

* lint

* mypy

* player_name

* add unit test

* oh

* Rebrand time baby

* This fits on one line

* oop

* Update worlds/witness/__init__.py

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* mypy

* Reorganize some doors according to medic's suggestions

* This should make it much faster (Thanks Medic)

* Town Doors works because of Church being a check always, Church Entry feels really bad tho

* Only add Desert Entry if there are no control panels stopping you

* No overlap here, so why is it a set

* Idk everything's kinda good without symbol shuffle

* Just make sure, I guess

* This makes way more sense doesn't it

* Oh, this is probably important

* oop

* loc

* oops 2

* ruff

* that was already in there

* Change the door picking a bit further

* some renaming

* slight wording change

* Fix

* Move it all to a new file

* ruff

* mypy

* .

* Make sure we're only adding as many tutorial checks as necessary

* ruff

* These checks aren't necessary, as the final list gets culled to only existing items anyway. It saves CPU cycles, but this is nicer for future compatibility

* Special handling for caves shortcuts

* 120 chars

* Update worlds/witness/place_early_item.py

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* Clean up Windmill & Theater cases

* Make early_symbol_item removed instead

* Add early_good_item to presets

* replace double None checks with casts

* That doesn't exist anymore

* Mypy thing

* Update the doors again a bit

* Pycharm pls

* ruff

* forgot one

* oop

* Is it finally right?

* Update options.py

* Fix with new Panel Keys

* Hopefully fix crash when one of the types runs out when the others haven't yet

* oops

* Medic suggestion

* unused import

* Update place_early_item.py

* Update __init__.py

* Update __init__.py

* Update options.py

* Add possible types to option desc

* Make that include all Tutorial (Inside) checks

* Update __init__.py

* Update test_early_good_item.py

* Update test_early_good_item.py

* Slight cleanup

* fix no tutorial locations being picked up by tutorial location size check

---------

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* APQuest: Fix Easy Mode boss having too much health to beat (ArchipelagoMW#6146)

* Change the boss' health to 2 in easy mode, adjust boss graphics to reflect this behavior

* graphics formatting

* The Witness: More control over progressive symbols (ArchipelagoMW#3961)

* More control over progressive symbols!

* Cleanup crew

* lol

* Make it configurable how second stage items act on their own

* only let independent symbols work if they're not progressive

* revert defaults

* Better description

* comment for reviewers

* A complicated docstring for a complicated function

* More accurate

* This probably works more generically

* Actually, this would cause other issues anyway, so no need to make this generic yet

* :/

* oops

* Change the system to use collect/remove override so that plando and start inventory work correctly

* Vi stop doing that thing challenge

* Make SecondStateSymbolsActIndependently an OptionSet

* jank

* oop

* this is why we make unit tests I guess

* More unit tests

* More unit tests

* Add note about the absence of Rotated Shapers from the independent symbols optionset

* More verbose description

* More verbose description

* slight reword

* Ruff ruff :3 I am a good puppy <3

* Remove invis dots

* oops

* Remove some unused symbols

* display name

* linecounting -> discard

* Make all progressive chains always work

* Unfortunately, this optimisation is now unsafe with plando :(

* oops

* This is now a possible optimisation

* optimise optimise optimise

* optimise optimise optimise

* fix

* ruff

* oh

* fixed frfr

* mypy

* Clean up the tests a bit

* oop

* I actually like this better now, so I'm doing it as default

* Put stuff on the actual item class for faster collect/remove

* giga oops

* Make proguseful work

* None item left beef

* unnecessary change

* formatting

* add proguseful test to progressive symbols tests

* add proguseful test to progressive symbols tests

* clean up collect/remove a bit more

* giga lmfao

* Put stuff in option groups

* Add the new symbol items to hint system

* bump req client version

* fix soft conflict in unit tests

* fix more merge errors

* CI: update softprops/action-gh-release to v3.0.0 (ArchipelagoMW#6162)

The update will be required once GH drops support for Node 20.

Also enables new options the action has now.

* Factorio: move communication savegame to user dir (ArchipelagoMW#5646)

* Rule Builder: Fix rule hash collisions (ArchipelagoMW#6169)

* fix rule hash collisions

* just let the dict do the work

* Generate: Added "quantity" option for player yamls to use multiple times a single yaml (ArchipelagoMW#4948)

* Added  option for player yamls.

* Extended documentation

* Minimized value extraction.

* Added allow_quantity option to host.yaml

* Added  option for player yamls.

* Extended documentation

* Minimized value extraction.

* Added allow_quantity option to host.yaml

* Update settings.py

Co-authored-by: qwint <qwint.42@gmail.com>

* Update Generate.py

Co-authored-by: qwint <qwint.42@gmail.com>

* Added allow_quantity as application argument.

* Quantity > 1, allow_quantity = false -> error instead of silent 1

* Added check for quantity <= 0; reverted settings import change

* Update Generate.py

---------

Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* MMBN3: Add spaces in concatenated string#5689

* lufia2ac/docs: fix some errors (ArchipelagoMW#5618)

Co-authored-by: Ludwig <80899010+wordfcuk@users.noreply.github.com>

* SML2: Send logic affecting randomiser options as slot_data (ArchipelagoMW#5751)

* Send logic affecting randomiser options as slot_data

* SML2 - Universal Tracker support

* Remove debug logs

* Only check generation_is_fake once

---------

Co-authored-by: alchav <alchav@jalchavware.com>

* Docs: added an italian translation of the setup guide for Muse Dash (ArchipelagoMW#5834)

* Create setup_it.md

Created an italian translation of the setup for muse dash. I could not find direct references to translating a setup so I am assuming this is the correct way to submit a translation.
While I am a native in italian and I would consider myself fluent in english, I am not a translator so mistakes could have been made.

* Update __init__.py

* sm64ex: Recommend Flatpak for Linux users (ArchipelagoMW#5897)

* Pokemon RB: Fix mutating global item_groups in get_filler_item_name() (ArchipelagoMW#5947)

The `banned_items` variable was the `"Unique"`list within the
`item_groups` global. `get_filler_item_name()` could then mutate
`banned_items` through `banned_items.append("Poke Doll")` and
`banned_items += item_groups["Vending Machine Drinks"]`, causing
the contents of the `item_groups` global to be mutated.

This has been fixed by making `banned_items` a shallow copy of
`item_groups["Unique"]`.

* Docs: Add a warning to world api.md#events that you want StatusUpdate, not events, for actually sending the goal (ArchipelagoMW#5957)

* AHIT: Update FAQ in setup guide (ArchipelagoMW#5975)

* Docs: Mention APQuest as a reference (ArchipelagoMW#6000)

The APQuest implementation of an APWorld is incredibly useful and should
really have a mention here.

* Docs: Make RB OptionFilter docs clearer (ArchipelagoMW#6028)

* add more docs for option filters

* reword the whole things

* style guide

* LADX: doc update (ArchipelagoMW#6050)

* update gfxmod doc

* romless generation

* Update setup_en.md

Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>

---------

Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>

* Jak1: yamlless UT support (ArchipelagoMW#6066)

* KH2: Update setup_en.md (ArchipelagoMW#6129)

* Docs: Rule Builder Filtered Example Fix (ArchipelagoMW#6152)

* MultiServer: update help doc on auto_shutdown#5917

* Docs: Rewrite get_filler_item_name's docstring to avoid implying it's for filling all unfilled locations ArchipelagoMW#5956

* The Messenger: Add missing rules for Key of Strength#6124

* The Messenger: Add missing indirect conditions (ArchipelagoMW#6101)

* Docs: Add missing space to plando doc ArchipelagoMW#6060

* Terraria: fix failing to generate with Calamity enabled and full accessibility on Mechanical Bosses goal ArchipelagoMW#5787

* Undertale: Handle zero arg /auto_patch (ArchipelagoMW#5130)

* Muse Dash: Update to DASH AND SHOOT (ArchipelagoMW#6163)

* ALttP: Fix starting mail and shield equipment from start inventory (ArchipelagoMW#6154)

* WebHost: Add deletion of old content to cleanup function (ArchipelagoMW#6119)


---------

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Options: make template generation log the failing world if one fails (ArchipelagoMW#6176)

* Launcher: display window for failed world loads if any (ArchipelagoMW#6058)

* Options: Remove the "" from the start inventory examples (ArchipelagoMW#6165)


---------

Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>

* Super Mario 64: Basic testing (ArchipelagoMW#4335)


---------

Co-authored-by: Yussur Mustafa Oraji <N00byKing@hotmail.de>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* Blasphemous: Increase logic performance (ArchipelagoMW#4585)


---------

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* WebHost: Fix adding weighted text options (ArchipelagoMW#5116)

* Docs: Added new documentation for DS3's enemy randomization (random_enemy_preset) (ArchipelagoMW#5738)


---------

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Rule Builder: Implement AtLeast (ArchipelagoMW#6085)



---------

Co-authored-by: Ian Robinson <ianronrobinson@gmail.com>

* Pokemon Emerald: Switch to rule builder (ArchipelagoMW#5923)

* Core: Make manifest accessible as a world attribute (ArchipelagoMW#6122)

* WebHost: Add authors to supported games page (ArchipelagoMW#6123)

* CommonClient: Make hint cost (shown in server label) update (ArchipelagoMW#6149)

* A Link to the Past: We Have Enemizer at Home (ArchipelagoMW#6153)

* Muse Dash: Convert to Rule Builder (ArchipelagoMW#6166)



---------

Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>

* KH2: fix ice cream double counting for logic (ArchipelagoMW#6068)

* Factorio: Remove the need to have two separate installs (ArchipelagoMW#4221)

* Settings: validate FilePath hash on use (ArchipelagoMW#5854)

* Stardew Valley: Bypass CollectionState overhead by just calling prog_items (ArchipelagoMW#6065)

* SM64: Change power star item classification to be deprioritized (ArchipelagoMW#6191)

* The Messenger: Fix portal shuffle logic not using unlocked portals (ArchipelagoMW#6194)

* Core: reset log level when using pyximport (ArchipelagoMW#6212)

* Core: Bump version from 0.6.7 to 0.6.8 (ArchipelagoMW#6114)

* Factorio: Locale changes (ArchipelagoMW#5908)



---------

Co-authored-by: Joris Santen <joris.j.vansanten@student.hu.nl>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>

* Bump mistune from 3.2.0 to 3.2.1 in /WebHostLib (ArchipelagoMW#6185)

Bumps [mistune](https://github.com/lepture/mistune) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/lepture/mistune/releases)
- [Changelog](https://github.com/lepture/mistune/blob/main/docs/changes.rst)
- [Commits](lepture/mistune@v3.2.0...v3.2.1)

---
updated-dependencies:
- dependency-name: mistune
  dependency-version: 3.2.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Muse Dash: Update to Touhou Mugakudan -V- (ArchipelagoMW#6234)

* Rule Builder: Resolve empty and() to True_() instead of False_()(ArchipelagoMW#6239)

* Core+RB: Make has_from_list, has_from_list_unique, has_group and has_group_unique return True if count <= 0 and list is empty (ArchipelagoMW#6240)

* Factorio: Fixed a needlessly small bug that does not affect gameplay (ArchipelagoMW#6147)

* WebHost: fix Authors on supported game page (ArchipelagoMW#6218)

* WebHost: Config option for custom port ranges v2 (ArchipelagoMW#6009)

* Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.

* - Added better fallback to default port range when a custom range fails
- Updated config to be clearer

* Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.

* - Added better fallback to default port range when a custom range fails
- Updated config to be clearer

* Updated soft-fail message

* Removed dead import from customserver.py

* Update requirements.txt

Settings requirements to main core branch

* fix what reviewers said and add some improvements

* remove unused argument

* try fixing test with try

* use yaml lists instead of string for config

* fix value type bug on ephemeral type

* reuse sockets with websockets api instead of opening and closing them

* add used ports cache and filter used ports when looking for ports

* fix port randomizer

* Apply suggestions from code review

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* fix some reviews

* use weights for random port and remove more-itertools

* fix net_connections not working on macOS

* rename variables and functions

* lazy init `get_used_ports`

* change `game_ports` to be `tuple`

* fix last_used_ports not being updated locally

* fix random choices and move game_port conversion into tuple

* Apply suggestions from code review

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* use a named tuple on parse_game_ports

* only use ranges

* do it the duck way

* this should check all usable ports before failing

* fix while loop

* add return type to weighted random

* Update WebHostLib/customserver.py

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* simplify tuple conversion check

* add tests

* reformat file and change `create_random_port_socket` test

* add more test cases for parse_game_ports

* try to prevent busy-looping on create random port socket when doing test

* simplify parse game port tests to one assertListEqual

* make the range lesser for port test

* reduce range on macOS

* Apply suggestions from code review

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Update WebHostLib/customserver.py

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* remove unused import

* Update WebHostLib/customserver.py

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* use generator expressions

* check for 0-tuple

* use some kind of shuffled queue

* update tests

* refactor new port handling into a class (#1)

* change time to monotonic

* Update docs/webhost configuration sample.yaml

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* add psutil 7.2.2 as requirement

* Update WebHostLib/requirements.txt

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

---------

Co-authored-by: Lexipherous <jasonnlelong@gmail.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* Core: typing and cleaning, mostly in `Fill.py` (ArchipelagoMW#4459)

* Core: typing and cleaning, mostly in `Fill.py`

* fix typing of things we get out of plando blocks

* clean getting multiworld from kwargs
add a list type
clean indentation

* fix issues with merge conflict resolution

* some things found after merge

* ModuleUpdate: Add core requirements.txt as a constraint file to pip calls (ArchipelagoMW#6309)

* Add core requirements.txt as a constraint file to pip calls

* remove --upgrade as requested

* Update ModuleUpdate.py

* Gauntlet Legends: Implement New Game (ArchipelagoMW#3499)

* Update GauntletLegendsClient.py

* Continuation of obelisk update

* APPP Implementation Groundwork.

* Continuation of APPP Implementation

* Create Pain.asm

* ROM verification modified since crc32 hash can no longer be calculated.

* Initial upload of barrel/chest locations.

* Finished adding and naming all chests/barrels.

* Continued locations.

* Added new yaml options

* Work on mirror shards

* Python 3.8 compatibility

* Finalized location names. Fixed lambda bug.

* v1.0

* Removed excess Docs and Changed item counts.

* Update Archipelago Unittests.run.xml

* Started working on Docs.

* Updated item arrays for client

* Fix client bugs

* Flake8 fixes + Yaml fix

* Update speed boots

* v1.1

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* v1.0.4

* Initial Ruff format

* Formatting part-2

* More formatting + Doc changes

* Updated Docs

* Move client to root

* Update Client Name

* Make Imports Relative

* Add new yaml options + rename obelisks

* v1.1 Initial Upload

* v1.1.0 + some additions

* Client Update

* Client Updates

* pre-v1.1.1

* Update GauntletLegendsClient.py

* pre-1.2

* 1.2.0

* v1.2.1

* Client fixes

* v1.3.0

* v1.4.0

* v1.4.1

* Merged Changes

* Experimental

* pre-v1.5.0

* Changes

* v1.5.0

* Update GauntletLegendsClient.py

* Death Update

* pre v1.5.1

* Obelisk rule changes

* pre-v1.5.1

* Update GauntletLegendsClient.py

* v1.5.1

* v1.5.1

* Update GauntletLegendsClient.py

* Small fix

* Update GauntletLegendsClient.py

* v1.5.2

* pre-v1.6.0

* pre-v1.6.0

* v1.6.0

* Update

* Update GauntletLegendsClient.py

* Test

* pre-v1.6.0

* Client Updtaes

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update Rom.py

* Update GauntletLegendsClient.py

* Update Rom.py

* Added Logging on stage enter

* v1.6.2

* v1.6.2

* Update Rom.py

* Update GauntletLegendsClient.py

* v1.6.3

* Small Update

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Changes ready for review

* Update Rom.py

* Remove root client

* Update inno_setup.iss

* Update client

* Initial Review Refactor

* Update Arrays.py

* Review refactor

* Update __init__.py

* Small tweaks after test generations

* Update GauntletLegendsClient.py

* Implement new check_locations() function

* Add name for Skorn to level_names Dict

* Fix for ArchipelagoMW#4671

* Update __init__.py

* Adjust item frequency + Place 50% of filler as local

* Oops I modified the itempool after create_items teehee

* Update __init__.py

* Check MD5 hash before patching ROM

* Update __init__.py

* Fix get_filler_item_name()

* Update MD5 check to built in method in FilePath

* Update Rom.py

* Update worlds/gl/Rom.py

Co-authored-by: qwint <qwint.42@gmail.com>

* WIP Generation fixes

* v1.7.1

* Update Archipelago Unittests.run.xml

* 0.7.2

* Update GauntletLegendsClient.py

* Review Edits

* Update World description

* Fuzz fixes

* Update GauntletLegendsClient.py

* Make static data immutable

* Update option comparisons since no longer a Choice

* Update worlds/gl/Rom.py

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* Update __init__.py

* Initial Update commit

* Progress

* Remove un-used import + Add manifest

* Add missing docstring for client command

* Progress

* pre-v2.0.0-BETA

* Updates

* Progress

* Working Generations

* Working IN-Game

* v2.0.0-BETA

* Create archipelago.json

* v2.0.1

* v2.0.1 FINAL

* pre v2.0.2

* Delete report.json

* Cleanup

* pre v2.0.2

* v2.0.2

* PR Ready

* Update Items.py

* Delete fuzz.py

* Update Items.py

* Update GauntletLegendsClient.py

* Fix scouting disabled locations

* Client Updates

* v2.0.3

* Increment World Version

* Docstring + slot_data updates

* Option name update + Remove redundant option

* Code Cleanup

* Trenches is level 24

* Frequencies

* More cleanup and removal of stale code. MISSING BASEPATCH

* v2.1.0

* Minor enemy changes

* Small fix

* Update Rom.py

* v2.1.1

* Small fixes

* Update basepatch.bsdiff4

* Update GauntletLegendsClient.py

* Socket error clarity

* Delete settings.local.json

* Update GauntletLegendsClient.py

* v2.1.2 fixes

* Boss portal fix

* Small client fix + Item Frequencies

* Update archipelago.json

* Fix for games playing with max difficulty lower than 4 not sending locations

* Update archipelago.json

* v2.1.5

* Fix for Chimera's lair mirror shard

* Update archipelago.json

* Mod Re-Base + Queue limits + Item Receiving fixes

* Options cleanup and newlines for some files

* Include v2.x features in docs

* Make sure players has at least 1 item

* v2.1.6

* Update archipelago.json

* Review Edits + Client Tweaks

---------

Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* WebHost: Bump mistune from 3.2.1 to 3.3.0 in /WebHostLib ArchipelagoMW#6324

* Core: Allow running unit tests scoped to specific worlds (ArchipelagoMW#6290)

This allows the unit tests to be run on specific worlds only, it works by using an environment variable AP_TEST_WORLDS which is a comma separated list of world directories.

* Core: fix Set import (ArchipelagoMW#6235)

mistake made in pr ArchipelagoMW#5048
ArchipelagoMW#5048 (comment)

* Core: Adjust YAML error message to clarify the name is not the cause of the error (ArchipelagoMW#6267)

* Docs: add guidance for choosing minimum/maximum_ap_version (ArchipelagoMW#6265)

* Core: Pre Output Steps Log (ArchipelagoMW#6047)

* Core: Add parameter to visualize_regions to display Rule Builder explanations on exits (ArchipelagoMW#6184)

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Launcher: Loading Screen (ArchipelagoMW#6115)

* Launcher: fix world import ordering conflict between ArchipelagoMW#6115 and ArchipelagoMW#6058

* Launcher: Delete unused functions (ArchipelagoMW#6332)

These were moved to LauncherComponents in ArchipelagoMW#6115,  but due to a bad merge resolution, the originals were left behind.

* RuleBuilder: Optimize Has("Item", 0) (ArchipelagoMW#6228)

* Unittests: allow running unittests for specific worlds when using unittest runner (ArchipelagoMW#6338)

* Build APWorlds: fix moved import (ArchipelagoMW#6343)

* SC2: Disabling UT as it doesn't work (ArchipelagoMW#6346)

* Tests: Force race mode off in test_generate_yaml (ArchipelagoMW#6349)

* Core: update platformdirs (ArchipelagoMW#6328)

* The Messenger: Fix shop price not correctly handled by UT (ArchipelagoMW#6340)

* Starcraft 2: item pool reduction overcounting fix (ArchipelagoMW#6318)

* Starcraft 2: Moving pool filter to use a counter instead of a dict (ArchipelagoMW#6366)

* Core: remove per_slot_randoms and DeprecateDict (ArchipelagoMW#6186)

* ALTTP: Reflowed headers in docs and explicitly added what client is used. (ArchipelagoMW#5758)

* MultiServer: Update hint_points when hint cost or check points is changed (ArchipelagoMW#6219)

* Setup: bump cx-Freeze to fix frozen linux shortcuts (ArchipelagoMW#6365)

* The Messenger: Various small logic fix (ArchipelagoMW#6337)

* Options: add typing and remove unnecessary deepcopy call in OptionCounter (ArchipelagoMW#6321)

Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>

* Factorio: Locale fixes (ArchipelagoMW#6237)

* Core: Fix Open Patch (ArchipelagoMW#6356)

* ALttP: Fix Randomzie Enemy Damage (ArchipelagoMW#6296)

* CommonClient: Ignore invalid deathlink packets (ArchipelagoMW#6376)

* Core: limit depth of received JSON to 16 (ArchipelagoMW#6378)

* Core: limit depth of received JSON to 16

This applies to both MultiServer and CommonClient.

This means DataStorage default is limited to 14 levels,
DataStorage op arg is limited to 13 levels.

* Core: fix JSON depth limit check for escape codes

* Core: cythonize JSON depth limit check

* Core: Add helper for unescape kivy strings + cleanup its usages (ArchipelagoMW#6023)

* Jak and Daxter: Update client to use PME 2.0.x. (ArchipelagoMW#6393)

* CommonClient: Match ServerLabel's team to other UIs (ArchipelagoMW#5875)

* HK: Various silly fixes (ArchipelagoMW#6276)

* BizHawkClient: Fix compatibility for Lua 5.5+ (ArchipelagoMW#6200)

* CommonClient: reset session state when connecting to a different room or slot (ArchipelagoMW#6231)

* MultiServer: reject None targets on Bounce and validate types before sending Bounced (ArchipelagoMW#6397)

* MultiServer: Allow "and" chaining of Bounce packet conditions & add teams support (ArchipelagoMW#3845)

* Allow 'and' concatenation of bounce packet conditions

* Docs + small change

* Docs stuff

* update Bounced as well

* lol

* shadowing issue

* Slight rework to allow teams

* teams note

* Make the PR ready

* docs further up too

* Let's not do this actually

* Use operator & don't redefine functions

* team default

* remove unnecessarily added whitespace

* The Witness: Universal Tracker support + Clean up which options actually need to be in slot_data (ArchipelagoMW#5503)

* Re-gen with UT + slim slot_data slightly

* make use of relevance in ut code

* That's not how enums work

* fixup

* more ut compat

* more ut fixup

* more ut fixup

* utils entity hex fixup

* Me when I lie

* Update options.py

* APQuest: Reimplement Dijkstra by hand (so that it is LLM-free again) (ArchipelagoMW#6315)

* reimplement Dijkstra by hand

* make it so that the player faces the breakable object even if they can't break it

* ruff

* The Messenger: Remove connection from Climb Shop to Rocket Maze Checkpoint - ArchipelagoMW#6258

* Civ6: Update BOOST_TECH_CASTLES (ArchipelagoMW#6270)

Replaced 8 slot government techs with 6 slot

* Stardew Valley: Rebalanced a dozen or so meme bundles (ArchipelagoMW#6214)

* Tests: remove exception for LADX in test_itempool_not_modified (ArchipelagoMW#6390)

* Stardew Valley: Fixed filler buffs only rolling one of each instead of as many as needed (ArchipelagoMW#6293)

* KH2: Prevent the client from crashing if the player duplicated items (ArchipelagoMW#6210)

* Subnautica: Handle empty filler item weights with specific error (ArchipelagoMW#6361)

* Core: Update PlandoConnection.Direction to use StrEnum (ArchipelagoMW#5801)

* Satisfactory: Fix broken links on the Setup guide (ArchipelagoMW#6110)

* KH2: Make Lucky Emblems behave like bounties and keyblade stats (ArchipelagoMW#6190)

Swap the amount required and avaiable if required is more than avaiable instead of making avaiable equal required

* Launcher: Show error message when world fails to load during install (ArchipelagoMW#6292)

* Core: Fix loading of worlds installed in launcher (ArchipelagoMW#6319)

* Stardew Valley: Reorganise option groups and visibility a little bit (ArchipelagoMW#6224)

* Stardew Valley: Apworld Version To 7.4.25 (ArchipelagoMW#6407)

* stardew valley: use /explain from universal tracker instead of stardew valley client (ArchipelagoMW#6241)

* Wargroove: Add item groups (ArchipelagoMW#6254)

* Stardew Valley: Fixed Artifact spot logic (ArchipelagoMW#6213)

* Test: flask duplicate route is now a ValueError (ArchipelagoMW#6380)

* Wargroove: actually import Items (ArchipelagoMW#6422)

* Terraria: transfer maintainership to Desperandos (ArchipelagoMW#6170)

* BHC: don't override --connect when manifest has empty server (ArchipelagoMW#6435)

* Tests: Remove unneeded world exclusions (ArchipelagoMW#6396)

* MMBN3: Handle timeouts on dual stack networks by catching OSError (ArchipelagoMW#6301)

* MultiServer: Correct Bounce Target logic, add unit tests (ArchipelagoMW#6417)

* Correct Bounce Target logic, write unit tests

tmp

* that is not correct

* What was I smoking

* explicitly document None

* What was I smoking

* fix weakref syntax

* ruff

* fix magicmoc

* Address Berserker's comments

* comment

* consistently use self.assertEqual

* make slot 2 on team 3 not use deathlink to test different tags for the same slot on different teams

* Improve error message

* The Wind Waker: fix sending already checked and non-existing locations (ArchipelagoMW#6410)

* Kingdom Hearts 2: fix sending already checked locations (ArchipelagoMW#6411)

* SM64: Disable default tests for flaky move rando options (ArchipelagoMW#6457)

* docs: apquest: make it clear that launcher components are optional (ArchipelagoMW#6288)

* Make it clear that launcher components are optional

* Update comment for clarity on launcher components

* Launcher: fix for more terminal on linux (ArchipelagoMW#6436)

* Add check for cosmic terminal and use different arguments if so

* Changed check for terminal to be strictly against executable name instead of path

based on this comment ArchipelagoMW#6436 (comment)

* Add `ptyxis` to list of moddern terminals

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Changed `-e` terminal launch method to use `sh`

This standardizes the environment in which archipelago components launch and fixes launching with `zutty`

* Properly import pathlib

* Added comment detailing what `modern_terminals` is

* Refactored launching in terminal to new function in utils

* Optimised imports in Launcher.py

* Revert "Refactored launching in terminal to new function in utils"

This reverts commit 4336798.

* Fixed unintentional cleanup in Utils.py

* Simplify check for terminals

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Fully import pathlib

* Fix spelling mistake

* added gnome-terminal to list of modern_terminals

* added cosmic-term and ptyxis as fallback terminals

* Changed terminal search to add more terminal names easier

also included `alacritty` and `kitty`

* Check xterm terminal last

Also stores the list of terminals in tuples

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Add type hint to terminal variable

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

---------

Co-authored-by: Osiris32-and-a-half <psypv2@exmail.nottingham.ac.uk>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Core: Add .apworlds to loading screen (ArchipelagoMW#6460)

* Rule Builder : Made AtLeast a dataclass (ArchipelagoMW#6421)

* Core: Restrictive fill in batches to reduce state sweeping costs (ArchipelagoMW#3872)

This patch breaks up fill_restrictive to fill in batches of items at a time. Each batch creates its own batch_base_state, and additionally a sweep state created from the batch's base state (_partial_exploration_state). The advantage to this is that each maximum_exploration_state can be created from the batch's _partial_exploration_state, which has already reached many regions and locations, rather than having to sweep from base_state each time.

* MultiServer, customserver: move data package handling, optimize RAM usage (ArchipelagoMW#5981)

* MultiServer, customserver: move data package handling

Create a new class that handles conversion worlds+embedded -> context data.
Create a derived class that uses static_server_data+pony instead.
There is also a not very efficient feature to deduplicate strings (may need perf testing).

By moving code around, we can simplify a lot of the world loading.
Where code lines were touched, some typing and some reformatting was added.
The back compat for GetDataPackage without games was finally dropped.
This was done as a cleanup because the refactoring touched those lines anyway.

Also reworked the per-context dicts and the RoomInfo to hopefully be more efficient
by ignoring unused games. (Generating the list of used games was required for the new
code anyway.)

Side effect of the MultiServer cache: we now load worlds lazily (but still all at once)
and don't modify the games package in place. If needed we create copies.
This almost gets us to the point where MultiServer doesn't need worlds - it still needs
them for the forbidden items.
There is a bonus optimization that deduplicates strings in name_groups that may have bad
performance and may need some perf testing if we run into issues.

* MultiServer: fix string deduplication in data package cache

* MultiServer, customserver: minor formatting fixes

* MultiServer: fix data package cache for missing checksum case

* MultiServer: improve string deduplication in games package cache

* customserver: handle missing checksum in datapackage cache

* customserver: typing cleanup in games package cache

* Test, MultiServer, customser: add tests for games package cache

* Test, MultiServer: reorder imports

Hopefully this fixes the random test failures with pytest-xdist

* customserver: make WebHost import lazy in games package cache

and fix test

* customserver: games package cache: fix py3.11 compat

* MultiServer, customserver: cache: typing improvements

* customserver: cache: reformat

* Test: move customserver tests to not interfere with webhost

* MultiServer, customserver: cache: rename module

* Multiserver: better error message for missing Datapackage

* customserver: cache: invert if for readability

* customserver: optimize non_hintable_names

* Use an empty frozenset singleton
* Only include non-empty sets in static_server_data
* Only prefill dict with played games

This should save ~2-4KB per room and slightly speedup lookup.

---------

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

* Launcher: Fix initial position of "Search" text upon loading (ArchipelagoMW#6456)

* Launcher: Fix loading when an unknown arg is provided (ArchipelagoMW#6451)

* TUNIC: Universal Tracker deferred entrances support (ArchipelagoMW#5454)

* Core, Tests: Update usages of multiworld.get_all_state (ArchipelagoMW#5793)

* Core: Make manifest error a messagebox and show which world (ArchipelagoMW#6133)

* Jak1: use Utils.user_path for consistant user data (ArchipelagoMW#6150)

* KH2: Keyblade Min Max Clarification (ArchipelagoMW#6188)

Actually swap option values for keyblade min an max to show correctly in spoiler log.
And clarify in the warning the two values get swapped. (same as bounties but not lucky emblems)

* TUNIC: Add fuse locations to Universal Tracker map integration (ArchipelagoMW#6198)

* TUNIC: Add launcher options (ArchipelagoMW#6199)

* Options: add function to validate custom text in TextChoice during from_text (ArchipelagoMW#6205)

* Pokemon Emerald: Fix dexsanity encounters using non-enabled encounter types for logical access (ArchipelagoMW#6161)

* Docs: Add caveat about init files in subfolders (ArchipelagoMW#6222)

* TUNIC: Add troubleshooting section to setup guide (ArchipelagoMW#6227)

* Fill: make non prog start inventory panic actually use the new filler items (ArchipelagoMW#6246)

* Raft: Update setup guide to note the downpatch requirement (ArchipelagoMW#6250)

* Docs: Update docs and typing for items_handling to not allow None (ArchipelagoMW#6257)

* Jak and Daxter: Add UT UI (ArchipelagoMW#6275)

* Civ6: Setup Guide update (ArchipelagoMW#6284)

* TLOZ: Implement dialog speed options (ArchipelagoMW#6286)

* Muse Dash: Update song list to the 8th Anniversary songs + Undertale/Deltarune songs (ArchipelagoMW#6291)

* Lingo: Add connection to Outside The Undeterred from Roof (ArchipelagoMW#6297)

* Aquaria: Adding archipelago.json and AI disclosure (ArchipelagoMW#6389)

* TUNIC: Shuffle Enemy Drops and Souls (ArchipelagoMW#6249)

* Core: Add common rom extensions to global.apignore (ArchipelagoMW#6207)

* KH2: 3 Client Bugfixes (ArchipelagoMW#6373)

* Docs: Fix typo in "adding games" doc (ArchipelagoMW#6466)

* Launcher: Fix failed world display (ArchipelagoMW#6468)

* Timespinner: Lantern Naming and Logic Overhaul (ArchipelagoMW#6121)

* Stardew Valley: pass whole months to has_lived_months (ArchipelagoMW#6470)

* TUNIC: Fix elevation for Atoll Upper Entrance (ArchipelagoMW#6465)

* SA2B: v2.4.6 Logic Fixes (ArchipelagoMW#6453)

* Place upstream sync note in v0.4.1 Internal Changes

* Isolate Kirby test logging from repository memory checks

* Quarantine exact upstream Overcooked slot-data fill failure

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Justus Lind <DeamonHunter@users.noreply.github.com>
Co-authored-by: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: Sebastian <127998064+SebaCape@users.noreply.github.com>
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>
Co-authored-by: Flit <8645405+FlitPix@users.noreply.github.com>
Co-authored-by: agilbert1412 <alexgilbert@yahoo.com>
Co-authored-by: Noa Aarts <noa@voorwaarts.nl>
Co-authored-by: Alchav <59858495+Alchav@users.noreply.github.com>
Co-authored-by: XxDERProjectxX <114278502+XxDERProjectxX@users.noreply.github.com>
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: Jarno <jarnowesthof@gmail.com>
Co-authored-by: Louis M <prog@tioui.com>
Co-authored-by: EdricY <EdricY@users.noreply.github.com>
Co-authored-by: James White <james_white_d@hotmail.com>
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: palex00 <32203971+palex00@users.noreply.github.com>
Co-authored-by: Trevor L <80716066+TRPG0@users.noreply.github.com>
Co-authored-by: williamronn <wille.ronn@gmail.com>
Co-authored-by: PoryGone <98504756+PoryGone@users.noreply.github.com>
Co-authored-by: sudo-nano <63484662+sudo-nano@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>
Co-authored-by: Mrks <68022469+mrkssr@users.noreply.github.com>
Co-authored-by: Ludwig <80899010+wordfcuk@users.noreply.github.com>
Co-authored-by: Oshroth <Oshroth@users.noreply.github.com>
Co-authored-by: alchav <alchav@jalchavware.com>
Co-authored-by: UCSA <moro.matteorosario@gmail.com>
Co-authored-by: Yussur Mustafa Oraji <N00byKing@hotmail.de>
Co-authored-by: Ixrec <ericrhitchcock@gmail.com>
Co-authored-by: CookieCat <81494827+CookieCat45@users.noreply.github.com>
Co-authored-by: Sophira <github@theblob.org>
Co-authored-by: threeandthreee <a.l.nordstrom@gmail.com>
Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>
Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Co-authored-by: River Buizel <4911928+rocket0634@users.noreply.github.com>
Co-authored-by: Sophia Caspe <avi.caspe@gmail.com>
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Co-authored-by: Seldom <38388947+Seldom-SE@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>
Co-authored-by: josephwhite <22449090+josephwhite@users.noreply.github.com>
Co-authored-by: Christina <123173340+Paperkoopa@users.noreply.github.com>
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: Ishigh1 <bonjour940@yahoo.fr>
Co-authored-by: Ian Robinson <ianronrobinson@gmail.com>
Co-authored-by: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com>
Co-authored-by: Katelyn Gigante <clockwork.singularity@gmail.com>
Co-authored-by: Will Morrow <duh102@gmail.com>
Co-authored-by: CosmicWolf <54233835+Enderdraak@users.noreply.github.com>
Co-authored-by: Joris Santen <joris.j.vansanten@student.hu.nl>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: Lexipherous <jasonnlelong@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: jamesbrq <jamesbrq@gmail.com>
Co-authored-by: Patrick Wehbe <50799614+patrickwehbe@users.noreply.github.com>
Co-authored-by: g0goTAS <79611210+g0goTAS@users.noreply.github.com>
Co-authored-by: Berserker <fabian.dill@web.de>
Co-authored-by: CodeGorilla <just.a.smith@att.net>
Co-authored-by: Severencir <62644089+Severencir@users.noreply.github.com>
Co-authored-by: Jacob Lewis <JacobMLewis@Live.com>
Co-authored-by: Colin <colinb969@gmail.com>
Co-authored-by: SomeJakeGuy <39894486+SomeJakeGuy@users.noreply.github.com>
Co-authored-by: Gearwcu <huizger@gmail.com>
Co-authored-by: shananas <47014056+shananas@users.noreply.github.com>
Co-authored-by: Rob B <computerguy440+gh@gmail.com>
Co-authored-by: rosen200 <roseweldon303@gmail.com>
Co-authored-by: BadMagic100 <dempsey.sean@outlook.com>
Co-authored-by: Osiris <64905829+Osiris32-and-a-half@users.noreply.github.com>
Co-authored-by: Osiris32-and-a-half <psypv2@exmail.nottingham.ac.uk>
Co-authored-by: mkoertshuis <53483154+mkoertshuis@users.noreply.github.com>
Co-authored-by: Silent <110704408+silent-destroyer@users.noreply.github.com>
Co-authored-by: DJ-lennart <alexander.lt.carlsson@hotmail.com>
Co-authored-by: B1t <christopher.j.wallis@gmail.com>
Co-authored-by: Star Rauchenberger <fefferburbia@gmail.com>
Co-authored-by: Greg <beitlergreg@gmail.com>
Co-authored-by: Michael McBride <urzamtg@gmail.com>
Co-authored-by: luke0172 <73260475+luke0172@users.noreply.github.com>
BatmenzDW added a commit to deefdragon/Archipelago that referenced this pull request Oct 14, 2026
commit fc00334ea9b2d9a513bc0e34e7d414c8525c3e05
Author: Joshua Carter <64180735+BatmenzDW@users.noreply.github.com>
Date:   Wed Oct 14 13:36:30 2026 -0400

    Create devcontainer.json

commit 05a151e65e5dc7887f75c7e5985723f529e94b4e
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Oct 14 09:59:36 2026 +0200

    WebHost: Bump werkzeug from 3.1.6 to 3.1.9 (#6511)

    Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.1.6 to 3.1.9.
    - [Release notes](https://github.com/pallets/werkzeug/releases)
    - [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
    - [Commits](https://github.com/pallets/werkzeug/compare/3.1.6...3.1.9)

    ---
    updated-dependencies:
    - dependency-name: werkzeug
      dependency-version: 3.1.9
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 9b64e832874a50d5d14d5bc599d356d2c5194d7a
Author: lepideble <147614625+lepideble@users.noreply.github.com>
Date:   Mon Oct 5 13:36:27 2026 +0200

    Factorio: Fix read path on linux (#6483)

    On linux __PATH__system-read-data__ always point /usr/share/factorio
    when using the version downloaded from the website. This replace it with
    __PATH__executable__/../../data/ which works for both standalone
    installs and the steam version.

commit f7ac2d9d1944a7cf0f408c7c6aa434bb67b3d5be
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Mon Oct 5 13:16:13 2026 +0200

    Core: Bump version from 0.6.8 to 0.6.9 (#6491)

commit 54803be064fc7e80c4628777ed0b46a9390f255f
Author: PoryGone <98504756+PoryGone@users.noreply.github.com>
Date:   Sat Oct 3 18:18:47 2026 -0400

    SA2B: v2.4.6 Logic Fixes (#6453)

commit a4591b65d73a4c9a166f2f0331663cc7c2de30ba
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Sat Oct 3 18:17:51 2026 -0400

    TUNIC: Fix elevation for Atoll Upper Entrance (#6465)

commit 0a601afbf575a4660077304a18ecb521ff1886c4
Author: luke0172 <73260475+luke0172@users.noreply.github.com>
Date:   Tue Sep 29 23:12:51 2026 +0200

    Stardew Valley: pass whole months to has_lived_months (#6470)

commit 2532839281061a07c1f840bb0814a033606ba74c
Author: Michael McBride <urzamtg@gmail.com>
Date:   Tue Sep 29 16:58:30 2026 -0400

    Timespinner: Lantern Naming and Logic Overhaul (#6121)

commit fc45b5277632b4f7cff00d7acb9c4bd8a2f6c17a
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Tue Sep 29 14:46:10 2026 -0600

    Launcher: Fix failed world display (#6468)

commit ac415f2b622fe6dde36c37980b09744afc594090
Author: Greg <beitlergreg@gmail.com>
Date:   Tue Sep 29 16:44:48 2026 -0400

    Docs: Fix typo in "adding games" doc (#6466)

commit 99de5269ad97e682204aba510660640254213c4a
Author: shananas <47014056+shananas@users.noreply.github.com>
Date:   Tue Sep 29 16:43:22 2026 -0400

    KH2: 3 Client Bugfixes (#6373)

commit e42f1a194e297cc4e9303525faf00d24c6f3e082
Author: Katelyn Gigante <clockwork.singularity@gmail.com>
Date:   Wed Sep 30 00:04:13 2026 +1000

    Core: Add common rom extensions to global.apignore (#6207)

commit 8777a0c0e312b4bbb0b736c1533c981b88f52794
Author: Silent <110704408+silent-destroyer@users.noreply.github.com>
Date:   Sun Sep 27 19:17:51 2026 -0500

    TUNIC: Shuffle Enemy Drops and Souls (#6249)

commit db658e5ab8fdbc94079df393d4765e2e58e274a2
Author: Louis M <prog@tioui.com>
Date:   Sun Sep 27 19:42:52 2026 -0400

    Aquaria: Adding archipelago.json and AI disclosure (#6389)

commit c65912c80c905cf96027e24368195731672f3276
Author: Star Rauchenberger <fefferburbia@gmail.com>
Date:   Sun Sep 27 19:41:35 2026 -0400

    Lingo: Add connection to Outside The Undeterred from Roof (#6297)

commit 3a81efcbbeb9647f1083c156bb079579ee6c1d3b
Author: Justus Lind <DeamonHunter@users.noreply.github.com>
Date:   Mon Sep 28 09:40:50 2026 +1000

    Muse Dash: Update song list to the 8th Anniversary songs + Undertale/Deltarune songs (#6291)

commit 60586aa362d16698a12019d33b6293039a2e5d4d
Author: B1t <christopher.j.wallis@gmail.com>
Date:   Sun Sep 27 17:40:12 2026 -0600

    TLOZ: Implement dialog speed options (#6286)

commit 177541094709b2df4396bdfde697b6e8905f0a9a
Author: DJ-lennart <alexander.lt.carlsson@hotmail.com>
Date:   Mon Sep 28 01:38:45 2026 +0200

    Civ6: Setup Guide update (#6284)

commit f9708db673f1955046c874f18871f1f7781a021f
Author: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Date:   Sun Sep 27 19:37:59 2026 -0400

    Jak and Daxter: Add UT UI (#6275)

commit 8c73af9af10260f04eb6915affbc6262af7223b9
Author: qwint <qwint.42@gmail.com>
Date:   Sun Sep 27 18:37:08 2026 -0500

    Docs: Update docs and typing for items_handling to not allow None (#6257)

commit cc6bc250ad5db0d735747f42a29f6e3a7662a035
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Sun Sep 27 19:36:05 2026 -0400

    Raft: Update setup guide to note the downpatch requirement (#6250)

commit 1041167c31ec80c9bb0a84c90e09e70be962fe75
Author: qwint <qwint.42@gmail.com>
Date:   Sun Sep 27 18:35:03 2026 -0500

    Fill: make non prog start inventory panic actually use the new filler items (#6246)

commit 70978a633f5ec190c69a182644899b5b4d81dab0
Author: Silent <110704408+silent-destroyer@users.noreply.github.com>
Date:   Sun Sep 27 18:33:20 2026 -0500

    TUNIC: Add troubleshooting section to setup guide (#6227)

commit 3197f77e5d54958e8e0db14bb810c0fdc4b6888a
Author: Ian Robinson <drtchops@users.noreply.github.com>
Date:   Sun Sep 27 19:32:42 2026 -0400

    Docs: Add caveat about init files in subfolders (#6222)

commit c6697337bb74deb44a0e602f247e33f580ff53ca
Author: Bryce Wilson <gyroscope15@gmail.com>
Date:   Sun Sep 27 17:29:56 2026 -0600

    Pokemon Emerald: Fix dexsanity encounters using non-enabled encounter types for logical access (#6161)

commit 6f3cd85690b6864b7d9f0f40efc6b13da268d54c
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Sun Sep 27 18:28:55 2026 -0500

    Options: add function to validate custom text in TextChoice during from_text (#6205)

commit 25a08b47ccb5dbfb89769dcb6ea8ed521377a15e
Author: Silent <110704408+silent-destroyer@users.noreply.github.com>
Date:   Sun Sep 27 18:27:34 2026 -0500

    TUNIC: Add launcher options (#6199)

commit bce01b932599295a015708cdaf2d867fb3e00016
Author: Silent <110704408+silent-destroyer@users.noreply.github.com>
Date:   Sun Sep 27 18:26:42 2026 -0500

    TUNIC: Add fuse locations to Universal Tracker map integration (#6198)

commit c1980f322a3428556c87ca52e7b695cd6c121ec1
Author: shananas <47014056+shananas@users.noreply.github.com>
Date:   Sun Sep 27 19:25:28 2026 -0400

    KH2: Keyblade Min Max Clarification (#6188)

    Actually swap option values for keyblade min an max to show correctly in spoiler log.
    And clarify in the warning the two values get swapped. (same as bounties but not lucky emblems)

commit aa8e057fc54280eac6b244d4c740400df816bc55
Author: mkoertshuis <53483154+mkoertshuis@users.noreply.github.com>
Date:   Mon Sep 28 01:24:28 2026 +0200

    Jak1: use Utils.user_path for consistant user data (#6150)

commit ac7bc5b6a2547401eaae50747cde5402c6e863ae
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sun Sep 27 17:22:53 2026 -0600

    Core: Make manifest error a messagebox and show which world (#6133)

commit 46c411088247a9ae0657736b9123ecf69244c39c
Author: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Date:   Sun Sep 27 19:19:33 2026 -0400

    Core, Tests: Update usages of multiworld.get_all_state (#5793)

commit 35770fb9a6fc4a56a72963bf910f8f5fad49f91d
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Sun Sep 27 19:17:22 2026 -0400

    TUNIC: Universal Tracker deferred entrances support (#5454)

commit 9642c15f78835b7eb14f315c77597f22853507b5
Author: qwint <qwint.42@gmail.com>
Date:   Sun Sep 27 18:16:21 2026 -0500

    Launcher: Fix loading when an unknown arg is provided (#6451)

commit 5b47bf9bb42972635781c94387f3542c324685a9
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Fri Sep 25 21:23:31 2026 -0600

    Launcher: Fix initial position of "Search" text upon loading (#6456)

commit 5442df64fd9710fbcb72a4e2d57054e96b27b55b
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Thu Sep 24 23:33:30 2026 +0200

    MultiServer, customserver: move data package handling, optimize RAM usage (#5981)

    * MultiServer, customserver: move data package handling

    Create a new class that handles conversion worlds+embedded -> context data.
    Create a derived class that uses static_server_data+pony instead.
    There is also a not very efficient feature to deduplicate strings (may need perf testing).

    By moving code around, we can simplify a lot of the world loading.
    Where code lines were touched, some typing and some reformatting was added.
    The back compat for GetDataPackage without games was finally dropped.
    This was done as a cleanup because the refactoring touched those lines anyway.

    Also reworked the per-context dicts and the RoomInfo to hopefully be more efficient
    by ignoring unused games. (Generating the list of used games was required for the new
    code anyway.)

    Side effect of the MultiServer cache: we now load worlds lazily (but still all at once)
    and don't modify the games package in place. If needed we create copies.
    This almost gets us to the point where MultiServer doesn't need worlds - it still needs
    them for the forbidden items.
    There is a bonus optimization that deduplicates strings in name_groups that may have bad
    performance and may need some perf testing if we run into issues.

    * MultiServer: fix string deduplication in data package cache

    * MultiServer, customserver: minor formatting fixes

    * MultiServer: fix data package cache for missing checksum case

    * MultiServer: improve string deduplication in games package cache

    * customserver: handle missing checksum in datapackage cache

    * customserver: typing cleanup in games package cache

    * Test, MultiServer, customser: add tests for games package cache

    * Test, MultiServer: reorder imports

    Hopefully this fixes the random test failures with pytest-xdist

    * customserver: make WebHost import lazy in games package cache

    and fix test

    * customserver: games package cache: fix py3.11 compat

    * MultiServer, customserver: cache: typing improvements

    * customserver: cache: reformat

    * Test: move customserver tests to not interfere with webhost

    * MultiServer, customserver: cache: rename module

    * Multiserver: better error message for missing Datapackage

    * customserver: cache: invert if for readability

    * customserver: optimize non_hintable_names

    * Use an empty frozenset singleton
    * Only include non-empty sets in static_server_data
    * Only prefill dict with played games

    This should save ~2-4KB per room and slightly speedup lookup.

    ---------

    Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

commit db1d85603c1ae26825a12c029020f71132ee0bc2
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Tue Sep 22 17:33:51 2026 +0100

    Core: Restrictive fill in batches to reduce state sweeping costs (#3872)

    This patch breaks up fill_restrictive to fill in batches of items at a time. Each batch creates its own batch_base_state, and additionally a sweep state created from the batch's base state (_partial_exploration_state). The advantage to this is that each maximum_exploration_state can be created from the batch's _partial_exploration_state, which has already reached many regions and locations, rather than having to sweep from base_state each time.

commit 2fb9bdadd4726b404fc0d790887390b66b07df16
Author: Ishigh1 <bonjour940@yahoo.fr>
Date:   Tue Sep 22 15:33:55 2026 +0200

    Rule Builder : Made AtLeast a dataclass (#6421)

commit afeb1fbe9f8bce8cc0a05ee21be56307e2e31b2c
Author: Katelyn Gigante <clockwork.singularity@gmail.com>
Date:   Tue Sep 22 13:30:50 2026 +1000

    Core: Add .apworlds to loading screen (#6460)

commit c7459844c0e467abc86f198021e6b693033595fa
Author: Osiris <64905829+Osiris32-and-a-half@users.noreply.github.com>
Date:   Mon Sep 21 22:28:53 2026 +0100

    Launcher: fix for more terminal on linux (#6436)

    * Add check for cosmic terminal and use different arguments if so

    * Changed check for terminal to be strictly against executable name instead of path

    based on this comment https://github.com/ArchipelagoMW/Archipelago/pull/6436#discussion_r3994140550

    * Add `ptyxis` to list of moddern terminals

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

    * Changed `-e` terminal launch method to use `sh`

    This standardizes the environment in which archipelago components launch and fixes launching with `zutty`

    * Properly import pathlib

    * Added comment detailing what `modern_terminals` is

    * Refactored launching in terminal to new function in utils

    * Optimised imports in Launcher.py

    * Revert "Refactored launching in terminal to new function in utils"

    This reverts commit 43367987da0609a71c27c7ae44e89012b5b27116.

    * Fixed unintentional cleanup in Utils.py

    * Simplify check for terminals

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

    * Fully import pathlib

    * Fix spelling mistake

    * added gnome-terminal to list of modern_terminals

    * added cosmic-term and ptyxis as fallback terminals

    * Changed terminal search to add more terminal names easier

    also included `alacritty` and `kitty`

    * Check xterm terminal last

    Also stores the list of terminals in tuples

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

    * Add type hint to terminal variable

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

    ---------

    Co-authored-by: Osiris32-and-a-half <psypv2@exmail.nottingham.ac.uk>
    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

commit 90ea894457cb5af7f9b8f519926bcacea83b2488
Author: BadMagic100 <dempsey.sean@outlook.com>
Date:   Sun Sep 20 15:36:09 2026 -0700

    docs: apquest: make it clear that launcher components are optional (#6288)

    * Make it clear that launcher components are optional

    * Update comment for clarity on launcher components

commit fe8489be8a8885142a7a26cd73e94398ec64b145
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sun Sep 20 14:59:19 2026 -0600

    SM64: Disable default tests for flaky move rando options (#6457)

commit 5b33339e621088fcdb2a58ed6b76e4148a5e6246
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Sun Sep 20 22:50:00 2026 +0200

    Kingdom Hearts 2: fix sending already checked locations (#6411)

commit f16917f39590d64c6249ccc2f91f0e4f55742969
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Sun Sep 20 22:49:16 2026 +0200

    The Wind Waker: fix sending already checked and non-existing locations (#6410)

commit 527f1195c984bfc1f6e889c3aeae29543d5312d8
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sun Sep 20 18:47:27 2026 +0200

    MultiServer: Correct Bounce Target logic, add unit tests (#6417)

    * Correct Bounce Target logic, write unit tests

    tmp

    * that is not correct

    * What was I smoking

    * explicitly document None

    * What was I smoking

    * fix weakref syntax

    * ruff

    * fix magicmoc

    * Address Berserker's comments

    * comment

    * consistently use self.assertEqual

    * make slot 2 on team 3 not use deathlink to test different tags for the same slot on different teams

    * Improve error message

commit e0b6083384cd37019f4c41da0970dff1d99f1325
Author: James White <james_white_d@hotmail.com>
Date:   Sat Sep 12 09:20:40 2026 +0100

    MMBN3: Handle timeouts on dual stack networks by catching OSError (#6301)

commit 4cced3d35a71a2af9cae39289898d7d284e6e961
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Fri Sep 11 11:19:05 2026 -0600

    Tests: Remove unneeded world exclusions (#6396)

commit 47a6d6de6406fce6100cf7af3ab0a465c70aa1dd
Author: qwint <qwint.42@gmail.com>
Date:   Fri Sep 11 11:36:59 2026 -0500

    BHC: don't override --connect when manifest has empty server (#6435)

commit 5a5bcf452752724a218e39d6d719570c87b15910
Author: Seldom <38388947+Seldom-SE@users.noreply.github.com>
Date:   Fri Sep 11 01:53:31 2026 -0700

    Terraria: transfer maintainership to Desperandos (#6170)

commit 1e1efa3f5c8fd0a63df0d0f95ec6c824e413318a
Author: qwint <qwint.42@gmail.com>
Date:   Sun Aug 30 18:39:05 2026 -0500

    Wargroove: actually import Items (#6422)

commit 1d8a6a556f32de4fb85feca2eafbea1ba605295e
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Wed Aug 26 02:15:24 2026 +0200

    Test: flask duplicate route is now a ValueError (#6380)

commit 63b8e81632ae52beb0f3baaaf7400f2287a31b8b
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Tue Aug 25 14:00:21 2026 -0400

    Stardew Valley: Fixed Artifact spot logic (#6213)

commit cf42061cd48c85816cf2852dcb5d69bffd009516
Author: rosen200 <roseweldon303@gmail.com>
Date:   Tue Aug 25 11:59:22 2026 -0600

    Wargroove: Add item groups (#6254)

commit 94a3981c9ebdf3859642b5bf681ec5d0e9920292
Author: Noa Aarts <noa@voorwaarts.nl>
Date:   Mon Aug 24 02:55:57 2026 +0200

    stardew valley: use /explain from universal tracker instead of stardew valley client (#6241)

commit 4910875df6d78e6dd8e1f9e047ec9e701c95a0e0
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Sun Aug 23 05:28:43 2026 -0400

    Stardew Valley: Apworld Version To 7.4.25 (#6407)

commit 260b5cbfbc3d355a2a8df57fe4c269181be3aa68
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Sat Aug 22 00:56:54 2026 -0400

    Stardew Valley: Reorganise option groups and visibility a little bit (#6224)

commit 1db7d33ed4c0707491751f3363549b5dedeb8640
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Fri Aug 21 21:20:02 2026 -0600

    Core: Fix loading of worlds installed in launcher (#6319)

commit e4fd85d58f0866cb26bfd5991ec124d0a25bdea1
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Fri Aug 21 19:08:30 2026 -0600

    Launcher: Show error message when world fails to load during install (#6292)

commit 4a3ac718f4e94adf52c05eaa22dc5d28e3563c3b
Author: shananas <47014056+shananas@users.noreply.github.com>
Date:   Fri Aug 21 21:01:48 2026 -0400

    KH2: Make Lucky Emblems behave like bounties and keyblade stats (#6190)

    Swap the amount required and avaiable if required is more than avaiable instead of making avaiable equal required

commit 8d981a8027021c7a93fa61b46865893b2a24d2f9
Author: Rob B <computerguy440+gh@gmail.com>
Date:   Fri Aug 21 21:00:01 2026 -0400

    Satisfactory: Fix broken links on the Setup guide (#6110)

commit f0c21fdadc7c33b88b98febbb8e0bd666c3931f3
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Fri Aug 21 18:22:37 2026 -0600

    Core: Update PlandoConnection.Direction to use StrEnum (#5801)

commit ca33ebca0db01923e49c8b965ee570b3e9e53209
Author: RoobyRoo <thegreenrobby@gmail.com>
Date:   Fri Aug 21 18:10:48 2026 -0600

    Subnautica: Handle empty filler item weights with specific error (#6361)

commit 52a7637242de5b4bdd85be6ad866545cd34941c8
Author: shananas <47014056+shananas@users.noreply.github.com>
Date:   Fri Aug 21 17:51:37 2026 -0400

    KH2: Prevent the client from crashing if the player duplicated items (#6210)

commit eabced5d60c48b9e8ee4a2bd5f18e79bad4fa778
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Fri Aug 21 17:50:14 2026 -0400

    Stardew Valley: Fixed filler buffs only rolling one of each instead of as many as needed (#6293)

commit 0c9a232fcf7d498b53697d9a0b5417fa800bf176
Author: threeandthreee <a.l.nordstrom@gmail.com>
Date:   Fri Aug 21 17:49:18 2026 -0400

    Tests: remove exception for LADX in test_itempool_not_modified (#6390)

commit 3ab4ab54d31cd2bc62b0f642e5b786d0862df4bd
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Fri Aug 21 17:48:22 2026 -0400

    Stardew Valley: Rebalanced a dozen or so meme bundles (#6214)

commit 90b051a80ed436d1566fbd3a81530b5456df43f3
Author: Gearwcu <huizger@gmail.com>
Date:   Wed Aug 19 12:46:56 2026 +0200

    Civ6: Update BOOST_TECH_CASTLES (#6270)

    Replaced 8 slot government techs with 6 slot

commit 9c17dc5d624faee63ca57597de019dc5ae192c9f
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Mon Aug 17 18:06:01 2026 -0400

    The Messenger: Remove connection from Climb Shop to Rocket Maze Checkpoint - #6258

commit f2b22781df5e5949183f3bba2f9c89c7e26c9a0c
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Tue Aug 18 00:00:10 2026 +0200

    APQuest: Reimplement Dijkstra by hand (so that it is LLM-free again) (#6315)

    * reimplement Dijkstra by hand

    * make it so that the player faces the breakable object even if they can't break it

    * ruff

commit 17f753281fd62fc12f494269986cde7db480896e
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Mon Aug 17 21:45:17 2026 +0200

    The Witness: Universal Tracker support + Clean up which options actually need to be in slot_data (#5503)

    * Re-gen with UT + slim slot_data slightly

    * make use of relevance in ut code

    * That's not how enums work

    * fixup

    * more ut compat

    * more ut fixup

    * more ut fixup

    * utils entity hex fixup

    * Me when I lie

    * Update options.py

commit 9ae40fd6e4f5eae8c8c9f693504335d1496af3da
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Mon Aug 17 21:31:41 2026 +0200

    MultiServer: Allow "and" chaining of Bounce packet conditions & add teams support (#3845)

    * Allow 'and' concatenation of bounce packet conditions

    * Docs + small change

    * Docs stuff

    * update Bounced as well

    * lol

    * shadowing issue

    * Slight rework to allow teams

    * teams note

    * Make the PR ready

    * docs further up too

    * Let's not do this actually

    * Use operator & don't redefine functions

    * team default

    * remove unnecessarily added whitespace

commit bf52661182556ed9cf2084ea6a213f9a87611e36
Author: SomeJakeGuy <39894486+SomeJakeGuy@users.noreply.github.com>
Date:   Sun Aug 16 18:04:31 2026 -0400

    MultiServer: reject None targets on Bounce and validate types before sending Bounced (#6397)

commit 21e728c38d352cc2ada321bb7afe47cd3b3c3325
Author: James White <james_white_d@hotmail.com>
Date:   Sun Aug 16 09:24:28 2026 +0100

    CommonClient: reset session state when connecting to a different room or slot (#6231)

commit c6d941181473fce6b2325cb12794786297067fa9
Author: Bryce Wilson <gyroscope15@gmail.com>
Date:   Sun Aug 16 02:22:31 2026 -0600

    BizHawkClient: Fix compatibility for Lua 5.5+ (#6200)

commit a0ca21b8d9cc16fc30bff9d5c9711f3d4e09de07
Author: qwint <qwint.42@gmail.com>
Date:   Sun Aug 16 02:42:13 2026 -0500

    HK: Various silly fixes (#6276)

commit 5b155bcc48d41c05ec382e5dda3b59d70d3e35ec
Author: qwint <qwint.42@gmail.com>
Date:   Sun Aug 16 02:38:37 2026 -0500

    CommonClient: Match ServerLabel's team to other UIs (#5875)

commit e3a60683e5e9c55858a03287572c750bfe77ecff
Author: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Date:   Sat Aug 15 15:45:54 2026 -0400

    Jak and Daxter: Update client to use PME 2.0.x. (#6393)

commit ce8186010d2baf4255e65730fa63ef5cc679c3a4
Author: qwint <qwint.42@gmail.com>
Date:   Fri Aug 14 16:39:55 2026 -0500

    Core: Add helper for unescape kivy strings + cleanup its usages (#6023)

commit fe5b49e1899b32bcb9f65e91cb7f74d6aa6d0ff8
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Mon Aug 10 11:03:01 2026 +0200

    Core: limit depth of received JSON to 16 (#6378)

    * Core: limit depth of received JSON to 16

    This applies to both MultiServer and CommonClient.

    This means DataStorage default is limited to 14 levels,
    DataStorage op arg is limited to 13 levels.

    * Core: fix JSON depth limit check for escape codes

    * Core: cythonize JSON depth limit check

commit 3359cacedd6eb263f6b6e82cef8f689151217a7a
Author: Colin <colinb969@gmail.com>
Date:   Fri Aug 7 23:39:41 2026 +0100

    CommonClient: Ignore invalid deathlink packets (#6376)

commit 0f76d35a8c57b2114538a43698e9331cd32a81b2
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date:   Thu Aug 6 01:14:01 2026 -0400

    ALttP: Fix Randomzie Enemy Damage (#6296)

commit d62772abc6e271d95437741e7a1ac02ef161144b
Author: Ishigh1 <bonjour940@yahoo.fr>
Date:   Wed Aug 5 07:59:08 2026 +0200

    Core: Fix Open Patch (#6356)

commit 408954c60b0f86ef873b2d13776a8617b032339d
Author: CosmicWolf <54233835+Enderdraak@users.noreply.github.com>
Date:   Wed Aug 5 02:56:52 2026 +0200

    Factorio: Locale fixes (#6237)

commit f328ce7e7d83197f3c9273e909e381ec6475b3ec
Author: qwint <qwint.42@gmail.com>
Date:   Tue Aug 4 17:26:55 2026 -0500

    Options: add typing and remove unnecessary deepcopy call in OptionCounter (#6321)

    Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>

commit 8b3557cd6c1ddb0b5e538ac489a2e672e11950f7
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Tue Aug 4 18:24:35 2026 -0400

    The Messenger: Various small logic fix (#6337)

commit e759562506dd5e92e3dd2f9b0210b0ef1df92e1c
Author: qwint <qwint.42@gmail.com>
Date:   Tue Aug 4 17:18:52 2026 -0500

    Setup: bump cx-Freeze to fix frozen linux shortcuts (#6365)

commit 838d55327e68c62cf4f24d4e2da24202d37cd7c5
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Tue Aug 4 16:12:23 2026 -0600

    MultiServer: Update hint_points when hint cost or check points is changed (#6219)

commit 26e45742529e1975e4044b27b794ec60371550b6
Author: Jacob Lewis <JacobMLewis@Live.com>
Date:   Tue Aug 4 01:10:43 2026 -0500

    ALTTP: Reflowed headers in docs and explicitly added what client is used. (#5758)

commit 53bc3754c0fa50849cba1dc829c9b18a980a3391
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Mon Aug 3 17:16:25 2026 +0200

    Core: remove per_slot_randoms and DeprecateDict (#6186)

commit 18c3b19cfa513717f3fc4e1583e5e2bc75e3c670
Author: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Date:   Thu Jul 30 14:39:51 2026 -0700

    Starcraft 2: Moving pool filter to use a counter instead of a dict (#6366)

commit b34b84aa8f4fb96b466596d49f920834c95ca941
Author: Severencir <62644089+Severencir@users.noreply.github.com>
Date:   Thu Jul 30 08:25:11 2026 -0500

    Starcraft 2: item pool reduction overcounting fix (#6318)

commit 26792ef113a3b86ebee177235135be84494b80dc
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Thu Jul 30 09:19:06 2026 -0400

    The Messenger: Fix shop price not correctly handled by UT (#6340)

commit a7abc86eb1398577c2008aa4885819ea56516fc0
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Thu Jul 30 15:18:21 2026 +0200

    Core: update platformdirs (#6328)

commit abb6f2647e7da44e3529dc9316c683a1d79edde0
Author: CodeGorilla <just.a.smith@att.net>
Date:   Thu Jul 30 08:17:49 2026 -0500

    Tests: Force race mode off in test_generate_yaml (#6349)

commit 72dbfcc1d367df4dd03681052e845b4e9f5a93af
Author: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Date:   Mon Jul 20 02:49:12 2026 -0700

    SC2: Disabling UT as it doesn't work (#6346)

commit 318a4ffa5ec24b3a2241f9259e475afc3b43d69a
Author: qwint <qwint.42@gmail.com>
Date:   Sun Jul 19 15:48:14 2026 -0500

    Build APWorlds: fix moved import (#6343)

commit 2cde25ffd0d4cb1404504f64d156a93448cdecb8
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Sat Jul 18 14:53:35 2026 -0500

    Unittests: allow running unittests for specific worlds when using unittest runner (#6338)

commit 6875f9da9009b10985e3e4f883fccd06419361b0
Author: Ishigh1 <bonjour940@yahoo.fr>
Date:   Sat Jul 18 12:32:54 2026 +0200

    RuleBuilder: Optimize Has("Item", 0) (#6228)

commit bbd5fc382219de4a4816feac71473f160f8448fa
Author: Katelyn Gigante <clockwork.singularity@gmail.com>
Date:   Sat Jul 18 19:28:22 2026 +1000

    Launcher: Delete unused functions (#6332)

    These were moved to LauncherComponents in #6115,  but due to a bad merge resolution, the originals were left behind.

commit ae7c5609cda85f23e99b9017e4f72dd8b2d6cc5c
Author: Berserker <fabian.dill@web.de>
Date:   Sat Jul 18 04:53:04 2026 +0200

    Launcher: fix world import ordering conflict between #6115 and #6058

commit c8cf2c41122261da5fef4760efd3e0307a93a68c
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Sat Jul 18 02:38:34 2026 +0200

    Launcher: Loading Screen (#6115)

commit feab54daec712ffb333b8c73f38eb69e1ed9c508
Author: Katelyn Gigante <clockwork.singularity@gmail.com>
Date:   Sat Jul 18 04:08:20 2026 +1000

    Core: Add parameter to visualize_regions to display Rule Builder explanations on exits (#6184)

    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

commit 13f1929286abba9ac50c8a00eeaf5f010537793e
Author: g0goTAS <79611210+g0goTAS@users.noreply.github.com>
Date:   Fri Jul 17 14:07:07 2026 -0400

    Core: Pre Output Steps Log (#6047)

commit c6a7c0c193c4b5eea5a9160957447e766c403f4e
Author: Patrick Wehbe <50799614+patrickwehbe@users.noreply.github.com>
Date:   Fri Jul 17 21:06:10 2026 +0300

    Docs: add guidance for choosing minimum/maximum_ap_version (#6265)

commit 4efce428a4abadd0180ab5182cecd8c987ebe74b
Author: James White <james_white_d@hotmail.com>
Date:   Fri Jul 17 19:03:52 2026 +0100

    Core: Adjust YAML error message to clarify the name is not the cause of the error (#6267)

commit 6907d89968782b3cb4283b37f518b1dfdc0daefd
Author: Doug Hoskisson <beauxq@users.noreply.github.com>
Date:   Fri Jul 17 11:03:20 2026 -0700

    Core: fix Set import (#6235)

    mistake made in pr #5048
    https://github.com/ArchipelagoMW/Archipelago/pull/5048#discussion_r3328989050

commit 9c80dc6257e3ffa8ff2902178852b220c25f3177
Author: James White <james_white_d@hotmail.com>
Date:   Fri Jul 17 19:01:28 2026 +0100

    Core: Allow running unit tests scoped to specific worlds (#6290)

    This allows the unit tests to be run on specific worlds only, it works by using an environment variable AP_TEST_WORLDS which is a comma separated list of world directories.

commit c31168506450ea247ccf52f1a63f9668d8a7aa08
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Jul 16 00:04:19 2026 +0200

    WebHost: Bump mistune from 3.2.1 to 3.3.0 in /WebHostLib #6324

commit f110a7efbc10f2ae9c741d54bb31dd9831a44eae
Author: jamesbrq <jamesbrq@gmail.com>
Date:   Sat Jul 11 13:26:27 2026 -0400

    Gauntlet Legends: Implement New Game (#3499)

    * Update GauntletLegendsClient.py

    * Continuation of obelisk update

    * APPP Implementation Groundwork.

    * Continuation of APPP Implementation

    * Create Pain.asm

    * ROM verification modified since crc32 hash can no longer be calculated.

    * Initial upload of barrel/chest locations.

    * Finished adding and naming all chests/barrels.

    * Continued locations.

    * Added new yaml options

    * Work on mirror shards

    * Python 3.8 compatibility

    * Finalized location names. Fixed lambda bug.

    * v1.0

    * Removed excess Docs and Changed item counts.

    * Update Archipelago Unittests.run.xml

    * Started working on Docs.

    * Updated item arrays for client

    * Fix client bugs

    * Flake8 fixes + Yaml fix

    * Update speed boots

    * v1.1

    * Update GauntletLegendsClient.py

    * Update GauntletLegendsClient.py

    * Update GauntletLegendsClient.py

    * Update GauntletLegendsClient.py

    * v1.0.4

    * Initial Ruff format

    * Formatting part-2

    * More formatting + Doc changes

    * Updated Docs

    * Move client to root

    * Update Client Name

    * Make Imports Relative

    * Add new yaml options + rename obelisks

    * v1.1 Initial Upload

    * v1.1.0 + some additions

    * Client Update

    * Client Updates

    * pre-v1.1.1

    * Update GauntletLegendsClient.py

    * pre-1.2

    * 1.2.0

    * v1.2.1

    * Client fixes

    * v1.3.0

    * v1.4.0

    * v1.4.1

    * Merged Changes

    * Experimental

    * pre-v1.5.0

    * Changes

    * v1.5.0

    * Update GauntletLegendsClient.py

    * Death Update

    * pre v1.5.1

    * Obelisk rule changes

    * pre-v1.5.1

    * Update GauntletLegendsClient.py

    * v1.5.1

    * v1.5.1

    * Update GauntletLegendsClient.py

    * Small fix

    * Update GauntletLegendsClient.py

    * v1.5.2

    * pre-v1.6.0

    * pre-v1.6.0

    * v1.6.0

    * Update

    * Update GauntletLegendsClient.py

    * Test

    * pre-v1.6.0

    * Client Updtaes

    * Update GauntletLegendsClient.py

    * Update GauntletLegendsClient.py

    * Update GauntletLegendsClient.py

    * Update Rom.py

    * Update GauntletLegendsClient.py

    * Update Rom.py

    * Added Logging on stage enter

    * v1.6.2

    * v1.6.2

    * Update Rom.py

    * Update GauntletLegendsClient.py

    * v1.6.3

    * Small Update

    * Update GauntletLegendsClient.py

    * Update GauntletLegendsClient.py

    * Update GauntletLegendsClient.py

    * Changes ready for review

    * Update Rom.py

    * Remove root client

    * Update inno_setup.iss

    * Update client

    * Initial Review Refactor

    * Update Arrays.py

    * Review refactor

    * Update __init__.py

    * Small tweaks after test generations

    * Update GauntletLegendsClient.py

    * Implement new check_locations() function

    * Add name for Skorn to level_names Dict

    * Fix for #4671

    * Update __init__.py

    * Adjust item frequency + Place 50% of filler as local

    * Oops I modified the itempool after create_items teehee

    * Update __init__.py

    * Check MD5 hash before patching ROM

    * Update __init__.py

    * Fix get_filler_item_name()

    * Update MD5 check to built in method in FilePath

    * Update Rom.py

    * Update worlds/gl/Rom.py

    Co-authored-by: qwint <qwint.42@gmail.com>

    * WIP Generation fixes

    * v1.7.1

    * Update Archipelago Unittests.run.xml

    * 0.7.2

    * Update GauntletLegendsClient.py

    * Review Edits

    * Update World description

    * Fuzz fixes

    * Update GauntletLegendsClient.py

    * Make static data immutable

    * Update option comparisons since no longer a Choice

    * Update worlds/gl/Rom.py

    Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

    * Update __init__.py

    * Initial Update commit

    * Progress

    * Remove un-used import + Add manifest

    * Add missing docstring for client command

    * Progress

    * pre-v2.0.0-BETA

    * Updates

    * Progress

    * Working Generations

    * Working IN-Game

    * v2.0.0-BETA

    * Create archipelago.json

    * v2.0.1

    * v2.0.1 FINAL

    * pre v2.0.2

    * Delete report.json

    * Cleanup

    * pre v2.0.2

    * v2.0.2

    * PR Ready

    * Update Items.py

    * Delete fuzz.py

    * Update Items.py

    * Update GauntletLegendsClient.py

    * Fix scouting disabled locations

    * Client Updates

    * v2.0.3

    * Increment World Version

    * Docstring + slot_data updates

    * Option name update + Remove redundant option

    * Code Cleanup

    * Trenches is level 24

    * Frequencies

    * More cleanup and removal of stale code. MISSING BASEPATCH

    * v2.1.0

    * Minor enemy changes

    * Small fix

    * Update Rom.py

    * v2.1.1

    * Small fixes

    * Update basepatch.bsdiff4

    * Update GauntletLegendsClient.py

    * Socket error clarity

    * Delete settings.local.json

    * Update GauntletLegendsClient.py

    * v2.1.2 fixes

    * Boss portal fix

    * Small client fix + Item Frequencies

    * Update archipelago.json

    * Fix for games playing with max difficulty lower than 4 not sending locations

    * Update archipelago.json

    * v2.1.5

    * Fix for Chimera's lair mirror shard

    * Update archipelago.json

    * Mod Re-Base + Queue limits + Item Receiving fixes

    * Options cleanup and newlines for some files

    * Include v2.x features in docs

    * Make sure players has at least 1 item

    * v2.1.6

    * Update archipelago.json

    * Review Edits + Client Tweaks

    ---------

    Co-authored-by: qwint <qwint.42@gmail.com>
    Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
    Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
    Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

commit f9c5868f7b2e94666dd30b426b55bb0653c1a75d
Author: qwint <qwint.42@gmail.com>
Date:   Sat Jul 11 11:27:58 2026 -0500

    ModuleUpdate: Add core requirements.txt as a constraint file to pip calls (#6309)

    * Add core requirements.txt as a constraint file to pip calls

    * remove --upgrade as requested

    * Update ModuleUpdate.py

commit fde71f66f32e59e775b2958b038d0a86033c9ec3
Author: Doug Hoskisson <beauxq@users.noreply.github.com>
Date:   Sat Jul 11 04:26:19 2026 -0700

    Core: typing and cleaning, mostly in `Fill.py` (#4459)

    * Core: typing and cleaning, mostly in `Fill.py`

    * fix typing of things we get out of plando blocks

    * clean getting multiworld from kwargs
    add a list type
    clean indentation

    * fix issues with merge conflict resolution

    * some things found after merge

commit e6e0bc30420d13085f6f86b29ffa7e1594a8c46a
Author: Uriel <imurx@proton.me>
Date:   Sat Jun 20 11:36:18 2026 -0400

    WebHost: Config option for custom port ranges v2 (#6009)

    * Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.

    * - Added better fallback to default port range when a custom range fails
    - Updated config to be clearer

    * Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.

    * - Added better fallback to default port range when a custom range fails
    - Updated config to be clearer

    * Updated soft-fail message

    * Removed dead import from customserver.py

    * Update requirements.txt

    Settings requirements to main core branch

    * fix what reviewers said and add some improvements

    * remove unused argument

    * try fixing test with try

    * use yaml lists instead of string for config

    * fix value type bug on ephemeral type

    * reuse sockets with websockets api instead of opening and closing them

    * add used ports cache and filter used ports when looking for ports

    * fix port randomizer

    * Apply suggestions from code review

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

    * fix some reviews

    * use weights for random port and remove more-itertools

    * fix net_connections not working on macOS

    * rename variables and functions

    * lazy init `get_used_ports`

    * change `game_ports` to be `tuple`

    * fix last_used_ports not being updated locally

    * fix random choices and move game_port conversion into tuple

    * Apply suggestions from code review

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

    * use a named tuple on parse_game_ports

    * only use ranges

    * do it the duck way

    * this should check all usable ports before failing

    * fix while loop

    * add return type to weighted random

    * Update WebHostLib/customserver.py

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

    * simplify tuple conversion check

    * add tests

    * reformat file and change `create_random_port_socket` test

    * add more test cases for parse_game_ports

    * try to prevent busy-looping on create random port socket when doing test

    * simplify parse game port tests to one assertListEqual

    * make the range lesser for port test

    * reduce range on macOS

    * Apply suggestions from code review

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

    * Update WebHostLib/customserver.py

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

    * Apply suggestions from code review

    Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

    * remove unused import

    * Update WebHostLib/customserver.py

    Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

    * use generator expressions

    * check for 0-tuple

    * use some kind of shuffled queue

    * update tests

    * refactor new port handling into a class (#1)

    * change time to monotonic

    * Update docs/webhost configuration sample.yaml

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

    * add psutil 7.2.2 as requirement

    * Update WebHostLib/requirements.txt

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

    ---------

    Co-authored-by: Lexipherous <jasonnlelong@gmail.com>
    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
    Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

commit 5ccef9802ada04b27b92e84be24c9ebbe4d0906d
Author: Emily <35015090+EmilyV99@users.noreply.github.com>
Date:   Sun Jun 7 12:21:30 2026 -0400

    WebHost: fix Authors on supported game page (#6218)

commit 09aba95c039f2d304c15466b7cff6f0ee8f12aa8
Author: CosmicWolf <54233835+Enderdraak@users.noreply.github.com>
Date:   Wed Jun 3 17:53:37 2026 +0200

    Factorio: Fixed a needlessly small bug that does not affect gameplay (#6147)

commit 2a8ebe23991d5337b09a17d0e197f32d32245e31
Author: Ishigh1 <bonjour940@yahoo.fr>
Date:   Wed Jun 3 08:20:04 2026 +0200

    Core+RB: Make has_from_list, has_from_list_unique, has_group and has_group_unique return True if count <= 0 and list is empty (#6240)

commit ad0af18f5173c9085cd4850d354bb82c689c3097
Author: Ishigh1 <bonjour940@yahoo.fr>
Date:   Tue Jun 2 09:10:43 2026 +0200

    Rule Builder: Resolve empty and() to True_() instead of False_()(#6239)

commit 65277a50ce725a4847e3db1d47c73e96e59a7fca
Author: Justus Lind <DeamonHunter@users.noreply.github.com>
Date:   Tue Jun 2 06:38:23 2026 +1000

    Muse Dash: Update to Touhou Mugakudan -V- (#6234)

commit d241829585df0bbce179e7e7a97bf78fbe0ed392
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sun May 31 23:55:57 2026 +0200

    Bump mistune from 3.2.0 to 3.2.1 in /WebHostLib (#6185)

    Bumps [mistune](https://github.com/lepture/mistune) from 3.2.0 to 3.2.1.
    - [Release notes](https://github.com/lepture/mistune/releases)
    - [Changelog](https://github.com/lepture/mistune/blob/main/docs/changes.rst)
    - [Commits](https://github.com/lepture/mistune/compare/v3.2.0...v3.2.1)

    ---
    updated-dependencies:
    - dependency-name: mistune
      dependency-version: 3.2.1
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit b24b3d10b646dced8d0f04daa130905e5a9788df
Author: CosmicWolf <54233835+Enderdraak@users.noreply.github.com>
Date:   Sun May 31 01:49:39 2026 +0200

    Factorio: Locale changes (#5908)

    ---------

    Co-authored-by: Joris Santen <joris.j.vansanten@student.hu.nl>
    Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>

commit 787ddc400caf9bd3e327083fba3cef7e97b513be
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Wed May 27 03:26:30 2026 +0200

    Core: Bump version from 0.6.7 to 0.6.8 (#6114)

commit 545171f3f4e42317d61391423839a138b88d1bec
Author: qwint <qwint.42@gmail.com>
Date:   Wed May 20 02:12:54 2026 -0500

    Core: reset log level when using pyximport (#6212)

commit d0abfeb88b34f6eaad6ed677b10bea9b6e17a973
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Mon May 18 07:53:48 2026 -0400

    The Messenger: Fix portal shuffle logic not using unlocked portals (#6194)

commit b575983599046a5e1ef98cbd7ce2f38b10eb6f02
Author: Will Morrow <duh102@gmail.com>
Date:   Sun May 17 14:44:40 2026 -0700

    SM64: Change power star item classification to be deprioritized (#6191)

commit d8d148ac135c5848820f22bdc9bc13aa62831cbc
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Sun May 17 17:41:34 2026 -0400

    Stardew Valley: Bypass CollectionState overhead by just calling prog_items (#6065)

commit 24f75ba0729912e485a0b4bea05d109812bb8303
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Sun May 17 16:40:08 2026 -0500

    Settings: validate FilePath hash on use (#5854)

commit 38e77e1b46b20552d5fdf2a0ef88558e7ec2f813
Author: Katelyn Gigante <clockwork.singularity@gmail.com>
Date:   Sun May 17 02:29:30 2026 +1000

    Factorio: Remove the need to have two separate installs (#4221)

commit 799e0b7b0fa3c965995a6288c651d2f4d800e4ff
Author: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com>
Date:   Sun May 10 20:16:20 2026 -0400

    KH2: fix ice cream double counting for logic (#6068)

commit 4ef1fb7630a924154e43d582108e24c2462f609d
Author: Justus Lind <DeamonHunter@users.noreply.github.com>
Date:   Sun May 10 05:25:34 2026 +1000

    Muse Dash: Convert to Rule Builder (#6166)

    ---------

    Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>

commit 0cd81ff5001547647a8daefe334c9d695f9b62c8
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date:   Sat May 9 11:07:46 2026 -0400

    A Link to the Past: We Have Enemizer at Home (#6153)

commit 55a1b12cb78926e9308114c347996c7a5c763252
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sat May 9 09:01:22 2026 -0600

    CommonClient: Make hint cost (shown in server label) update (#6149)

commit 3fcd337f65fb6950b2017e58174c67051079b6d0
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sat May 9 09:00:00 2026 -0600

    WebHost: Add authors to supported games page (#6123)

commit 7a5acfeceb99c66a6e2f6933ef80f2ca42f0448b
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sat May 9 08:59:05 2026 -0600

    Core: Make manifest accessible as a world attribute (#6122)

commit 06dc1b897cc6e58fc8b5d438dee51a67aedc59fe
Author: Bryce Wilson <gyroscope15@gmail.com>
Date:   Sat May 9 07:58:01 2026 -0700

    Pokemon Emerald: Switch to rule builder (#5923)

commit 4a28888a6610d24f7c7bfe6909826e418f8f6221
Author: Ishigh1 <bonjour940@yahoo.fr>
Date:   Sat May 9 16:56:10 2026 +0200

    Rule Builder: Implement AtLeast (#6085)

    ---------

    Co-authored-by: Ian Robinson <ianronrobinson@gmail.com>

commit d0407a74d65ed1cdc9519f4de996406316225f0a
Author: Christina <123173340+Paperkoopa@users.noreply.github.com>
Date:   Sat May 9 16:54:20 2026 +0200

    Docs: Added new documentation for DS3's enemy randomization (random_enemy_preset) (#5738)

    ---------

    Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

commit e0810022f830195fe2921fd10b14132a45569fa2
Author: josephwhite <22449090+josephwhite@users.noreply.github.com>
Date:   Sat May 9 10:51:56 2026 -0400

    WebHost: Fix adding weighted text options (#5116)

commit 29a6f40c2b1c126d886f079982e0397209b10480
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Sat May 9 15:50:34 2026 +0100

    Blasphemous: Increase logic performance (#4585)

    ---------

    Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

commit 2bd572c23d1e7e2a98701769fab67f9118d2ed08
Author: josephwhite <22449090+josephwhite@users.noreply.github.com>
Date:   Sat May 9 10:46:53 2026 -0400

    Super Mario 64: Basic testing (#4335)

    ---------

    Co-authored-by: Yussur Mustafa Oraji <N00byKing@hotmail.de>
    Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

commit b59e52a103b33e67c13e8e0ddc5236edce805458
Author: Scipio Wright <scipiowright@gmail.com>
Date:   Tue May 5 10:14:19 2026 -0400

    Options: Remove the "" from the start inventory examples (#6165)

    ---------

    Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>

commit 6d9d340c719c0eeaadf5f56a8878acd5540acba7
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Tue May 5 00:30:47 2026 -0500

    Launcher: display window for failed world loads if any (#6058)

commit 4486510fbc9406b7135377c2a39bf622d87092d8
Author: qwint <qwint.42@gmail.com>
Date:   Sat May 2 10:53:37 2026 -0500

    Options: make template generation log the failing world if one fails (#6176)

commit a68109f5a7fe9971b5b002491de0be301889c05c
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Fri May 1 22:38:46 2026 +0200

    WebHost: Add deletion of old content to cleanup function (#6119)

    ---------

    Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

commit 234b0581c9a3791230e8c08c2d34591748bc207c
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date:   Fri May 1 05:30:35 2026 -0400

    ALttP: Fix starting mail and shield equipment from start inventory (#6154)

commit 798eeaad91cbfbd40b6cae6934f3d9f24376114a
Author: Justus Lind <DeamonHunter@users.noreply.github.com>
Date:   Fri May 1 19:29:59 2026 +1000

    Muse Dash: Update to DASH AND SHOOT (#6163)

commit 18750620997b7963f221f55dadd91d99da795417
Author: qwint <qwint.42@gmail.com>
Date:   Wed Apr 29 15:29:41 2026 -0500

    Undertale: Handle zero arg /auto_patch (#5130)

commit 9da3c2999022c734cf09516471cd294efd41d168
Author: Seldom <38388947+Seldom-SE@users.noreply.github.com>
Date:   Wed Apr 29 12:25:38 2026 -0700

    Terraria: fix failing to generate with Calamity enabled and full accessibility on Mechanical Bosses goal #5787

commit 90b72c0fa5b0389fff9261f60b323a9d53e1a0aa
Author: palex00 <32203971+palex00@users.noreply.github.com>
Date:   Wed Apr 29 21:25:14 2026 +0200

    Docs: Add missing space to plando doc #6060

commit fd8f3fcd8ba83f7fe881203de182161f92e9d435
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Wed Apr 29 20:24:41 2026 +0100

    The Messenger: Add missing indirect conditions (#6101)

commit d36ba62243978185a97e67a1e04d3c51801ee36d
Author: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Date:   Wed Apr 29 15:24:10 2026 -0400

    The Messenger: Add missing rules for Key of Strength#6124

commit 8ac335f92db9d7710dc69742ed961990776761e8
Author: Ixrec <ericrhitchcock@gmail.com>
Date:   Wed Apr 29 20:22:35 2026 +0100

    Docs: Rewrite get_filler_item_name's docstring to avoid implying it's for filling all unfilled locations #5956

commit 74a0cd60223c33af068b76397a85d2eb5cce32d1
Author: qwint <qwint.42@gmail.com>
Date:   Wed Apr 29 14:21:42 2026 -0500

    MultiServer: update help doc on auto_shutdown#5917

commit 31f5a6c4ea8a60a970b8455812b8c1d3b531a751
Author: Sophia Caspe <avi.caspe@gmail.com>
Date:   Wed Apr 29 12:19:32 2026 -0700

    Docs: Rule Builder Filtered Example Fix (#6152)

commit be9c7b1728ea1a52dfcf8bce6f6e286d7d6303c1
Author: River Buizel <4911928+rocket0634@users.noreply.github.com>
Date:   Wed Apr 29 12:18:59 2026 -0700

    KH2: Update setup_en.md (#6129)

commit a0236b2d74044a1bfbbfd41807f2f125ea0d36e9
Author: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Date:   Wed Apr 29 15:18:21 2026 -0400

    Jak1: yamlless UT support (#6066)

commit af39d7926a2d1943103f095568d5a2147aedc358
Author: threeandthreee <a.l.nordstrom@gmail.com>
Date:   Wed Apr 29 15:15:57 2026 -0400

    LADX: doc update (#6050)

    * update gfxmod doc

    * romless generation

    * Update setup_en.md

    Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>

    ---------

    Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>

commit a48bf0195f5c0687086746ea89d097f220eea741
Author: Ian Robinson <drtchops@users.noreply.github.com>
Date:   Wed Apr 29 15:14:34 2026 -0400

    Docs: Make RB OptionFilter docs clearer (#6028)

    * add more docs for option filters

    * reword the whole things

    * style guide

commit 73856f63c84e51656b2c49083499d582e3dce542
Author: Sophira <github@theblob.org>
Date:   Wed Apr 29 19:12:04 2026 +0000

    Docs: Mention APQuest as a reference (#6000)

    The APQuest implementation of an APWorld is incredibly useful and should
    really have a mention here.

commit d5cc2011384f3e03959e371c357faff9fd92d8f3
Author: CookieCat <81494827+CookieCat45@users.noreply.github.com>
Date:   Wed Apr 29 15:11:36 2026 -0400

    AHIT: Update FAQ in setup guide (#5975)

commit 4346191c55ccf877aa2756d7601b5224798d54a7
Author: Ixrec <ericrhitchcock@gmail.com>
Date:   Wed Apr 29 20:10:26 2026 +0100

    Docs: Add a warning to world api.md#events that you want StatusUpdate, not events, for actually sending the goal (#5957)

commit 0601494e39caeb0fc82f6a49fe299acf61d6fac9
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Wed Apr 29 20:08:16 2026 +0100

    Pokemon RB: Fix mutating global item_groups in get_filler_item_name() (#5947)

    The `banned_items` variable was the `"Unique"`list within the
    `item_groups` global. `get_filler_item_name()` could then mutate
    `banned_items` through `banned_items.append("Poke Doll")` and
    `banned_items += item_groups["Vending Machine Drinks"]`, causing
    the contents of the `item_groups` global to be mutated.

    This has been fixed by making `banned_items` a shallow copy of
    `item_groups["Unique"]`.

commit 78937054de3e5d7cfb473cb116048e7c8aab7648
Author: Yussur Mustafa Oraji <N00byKing@hotmail.de>
Date:   Wed Apr 29 21:07:52 2026 +0200

    sm64ex: Recommend Flatpak for Linux users (#5897)

commit 59674926edc98ca758db7ff12a6ef4c6496bdd77
Author: UCSA <moro.matteorosario@gmail.com>
Date:   Wed Apr 29 21:07:32 2026 +0200

    Docs: added an italian translation of the setup guide for Muse Dash (#5834)

    * Create setup_it.md

    Created an italian translation of the setup for muse dash. I could not find direct references to translating a setup so I am assuming this is the correct way to submit a translation.
    While I am a native in italian and I would consider myself fluent in english, I am not a translator so mistakes could have been made.

    * Update __init__.py

commit b716096a4b16d8d2aab9717859de0ecebbc087ac
Author: Oshroth <Oshroth@users.noreply.github.com>
Date:   Thu Apr 30 05:01:23 2026 +1000

    SML2: Send logic affecting randomiser options as slot_data (#5751)

    * Send logic affecting randomiser options as slot_data

    * SML2 - Universal Tracker support

    * Remove debug logs

    * Only check generation_is_fake once

    ---------

    Co-authored-by: alchav <alchav@jalchavware.com>

commit c851eff521ab4a8033357ae0817d34e84ae7248e
Author: el-u <109771707+el-u@users.noreply.github.com>
Date:   Wed Apr 29 20:56:11 2026 +0200

    lufia2ac/docs: fix some errors (#5618)

    Co-authored-by: Ludwig <80899010+wordfcuk@users.noreply.github.com>

commit 01033940d6a915643293de1c0c5c3f35d2c93c47
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Wed Apr 29 12:55:32 2026 -0600

    MMBN3: Add spaces in concatenated string#5689

commit 15561e1e2d0192a2326f9d3e0c0c9165255170a1
Author: Mrks <68022469+mrkssr@users.noreply.github.com>
Date:   Wed Apr 29 20:49:19 2026 +0200

    Generate: Added "quantity" option for player yamls to use multiple times a single yaml (#4948)

    * Added  option for player yamls.

    * Extended documentation

    * Minimized value extraction.

    * Added allow_quantity option to host.yaml

    * Added  option for player yamls.

    * Extended documentation

    * Minimized value extraction.

    * Added allow_quantity option to host.yaml

    * Update settings.py

    Co-authored-by: qwint <qwint.42@gmail.com>

    * Update Generate.py

    Co-authored-by: qwint <qwint.42@gmail.com>

    * Added allow_quantity as application argument.

    * Quantity > 1, allow_quantity = false -> error instead of silent 1

    * Added check for quantity <= 0; reverted settings import change

    * Update Generate.py

    ---------

    Co-authored-by: qwint <qwint.42@gmail.com>
    Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

commit 9c78edc764d93821136310edaf0b1bb8be564470
Author: Ian Robinson <drtchops@users.noreply.github.com>
Date:   Wed Apr 29 02:21:09 2026 -0400

    Rule Builder: Fix rule hash collisions (#6169)

    * fix rule hash collisions

    * just let the dict do the work

commit d2395de9fa269e1dfa9c6b29d912bf802eda9660
Author: lepideble <147614625+lepideble@users.noreply.github.com>
Date:   Mon Apr 27 14:06:19 2026 +0200

    Factorio: move communication savegame to user dir (#5646)

commit d41cec64948231d7a8b1115d7cfcd7835a1832c7
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Sat Apr 25 22:44:48 2026 +0000

    CI: update softprops/action-gh-release to v3.0.0 (#6162)

    The update will be required once GH drops support for Node 20.

    Also enables new options the action has now.

commit dc911399fbec508333387439373fdd015663add0
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sat Apr 18 17:07:23 2026 +0100

    The Witness: More control over progressive symbols (#3961)

    * More control over progressive symbols!

    * Cleanup crew

    * lol

    * Make it configurable how second stage items act on their own

    * only let independent symbols work if they're not progressive

    * revert defaults

    * Better description

    * comment for reviewers

    * A complicated docstring for a complicated function

    * More accurate

    * This probably works more generically

    * Actually, this would cause other issues anyway, so no need to make this generic yet

    * :/

    * oops

    * Change the system to use collect/remove override so that plando and start inventory work correctly

    * Vi stop doing that thing challenge

    * Make SecondStateSymbolsActIndependently an OptionSet

    * jank

    * oop

    * this is why we make unit tests I guess

    * More unit tests

    * More unit tests

    * Add note about the absence of Rotated Shapers from the independent symbols optionset

    * More verbose description

    * More verbose description

    * slight reword

    * Ruff ruff :3 I am a good puppy <3

    * Remove invis dots

    * oops

    * Remove some unused symbols

    * display name

    * linecounting -> discard

    * Make all progressive chains always work

    * Unfortunately, this optimisation is now unsafe with plando :(

    * oops

    * This is now a possible optimisation

    * optimise optimise optimise

    * optimise optimise optimise

    * fix

    * ruff

    * oh

    * fixed frfr

    * mypy

    * Clean up the tests a bit

    * oop

    * I actually like this better now, so I'm doing it as default

    * Put stuff on the actual item class for faster collect/remove

    * giga oops

    * Make proguseful work

    * None item left beef

    * unnecessary change

    * formatting

    * add proguseful test to progressive symbols tests

    * add proguseful test to progressive symbols tests

    * clean up collect/remove a bit more

    * giga lmfao

    * Put stuff in option groups

    * Add the new symbol items to hint system

    * bump req client version

    * fix soft conflict in unit tests

    * fix more merge errors

commit 0b38065123aeaa485a58f7fa6fa07ab32d7b7e35
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sat Apr 18 16:08:21 2026 +0100

    APQuest: Fix Easy Mode boss having too much health to beat (#6146)

    * Change the boss' health to 2 in easy mode, adjust boss graphics to reflect this behavior

    * graphics formatting

commit a6c134710262902562e25fd47b470f9848c9725b
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sat Apr 18 12:52:38 2026 +0100

    The Witness: Make "Early Good Item" an OptionSet allowing Symbols, Doors and Obelisk Keys (#3804)

    * New solution to that plando issue

    * better

    * Another warning

    * better comment

    * Best of both worlds I guess?

    * oops

    * Smarter code reuse

    * better comment

    * oop

    * lint

    * mypy

    * player_name

    * add unit test

    * oh

    * Rebrand time baby

    * This fits on one line

    * oop

    * Update worlds/witness/__init__.py

    Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

    * mypy

    * Reorganize some doors according to medic's suggestions

    * This should make it much faster (Thanks Medic)

    * Town Doors works because of Church being a check always, Church Entry feels really bad tho

    * Only add Desert Entry if there are no control panels stopping you

    * No overlap here, so why is it a set

    * Idk everything's kinda good without symbol shuffle

    * Just make sure, I guess

    * This makes way more sense doesn't it

    * Oh, this is probably important

    * oop

    * loc

    * oops 2

    * ruff

    * that was already in there

    * Change the door picking a bit further

    * some renaming

    * slight wording change

    * Fix

    * Move it all to a new file

    * ruff

    * mypy

    * .

    * Make sure we're only adding as many tutorial checks as necessary

    * ruff

    * These checks aren't necessary, as the final list gets culled to only existing items anyway. It saves CPU cycles, but this is nicer for future compatibility

    * Special handling for caves shortcuts

    * 120 chars

    * Update worlds/witness/place_early_item.py

    Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

    * Clean up Windmill & Theater cases

    * Make early_symbol_item removed instead

    * Add early_good_item to presets

    * replace double None checks with casts

    * That doesn't exist anymore

    * Mypy thing

    * Update the doors again a bit

    * Pycharm pls

    * ruff

    * forgot one

    * oop

    * Is it finally right?

    * Update options.py

    * Fix with new Panel Keys

    * Hopefully fix crash when one of the types runs out when the others haven't yet

    * oops

    * Medic suggestion

    * unused import

    * Update place_early_item.py

    * Update __init__.py

    * Update __init__.py

    * Update options.py

    * Add possible types to option desc

    * Make that include all Tutorial (Inside) checks

    * Update __init__.py

    * Update test_early_good_item.py

    * Update test_early_good_item.py

    * Slight cleanup

    * fix no tutorial locations being picked up by tutorial location size check

    ---------

    Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

commit 0a742b6c984fc7ce03bb52b7a4a4b86b60831403
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sat Apr 18 12:49:19 2026 +0100

    Options: Add more Option unit tests, add generic Option.__eq__, make cull_zeroes available to all OptionCounters #5905

commit 66712bbd87a15f387ec4776515267a32c36bdb12
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sat Apr 18 12:48:32 2026 +0100

    APQuest: Switch to Rule Builder (#5906)

    * CachedRuleBuilderWorld

    * CachedRuleBuilderWorld

    * APQuest Rule Builder finished

    * Added comment

    Add a rule to check if the player has a Sword to destroy bushes.

    * Bump version + typo fix

    * Update worlds/apquest/rules.py

    Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>

    * Address Tchops' review comments

    ---------

    Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>

commit 5f9e38b78389278cfb3aa9cf2095455863b31937
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Sat Apr 18 00:15:37 2026 +0000

    Test: add test for unpickling NetUtils enums (#5326)

    * Test: add test for unpickling NetUtils enums

    This verifies that Utils.ByValue either works or is not required,
    and once we drop ByValue, this validates that future Python
    versions do not break our Enums again.

    * Test: NetUtils enum switch to more direct pickle.dumps

    It's probably better to use the direct interface in case
    restricted_dumps does some funky stuff in the future.

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

    * Test: NetUtils enum fix import for change

    ---------

    Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

commit bdde2140b328f5d2e3683b60b714700f477b062c
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Fri Apr 17 17:24:25 2026 -0600

    Core: Remove worlds.generic.PlandoItem (#6035)

commit 42d24b4869ce5f5e1be34b6cb2202bd55aaa985f
Author: qwint <qwint.42@gmail.com>
Date:   Fri Apr 17 18:23:19 2026 -0500

    HK: add manifest (#6057)

commit 14aa6571de03743fe54e868589e5bf74eeaca566
Author: black-sliver <59490463+black-sliver@users.norepl…
Omnises pushed a commit to FFX-AP/Archipelago that referenced this pull request Oct 18, 2026
* APQuest: Fix focus issues (ArchipelagoMW#6090)

* My best attempt at fixing focus issues on Android

* didn't mean to remove that

* APQuest: Add Link to Poptracker Pack to Setup Guide (ArchipelagoMW#6089)

* Update setup_en.md

* Update setup_de.md

* WebHost: Fix hosting with invalid worlds installed (ArchipelagoMW#5648)

* APWorld Builder: Add option to skip opening output folder (ArchipelagoMW#5847)

* Stardew Valley: 0.6.7 Day 1 fixes (ArchipelagoMW#6098)

- The Shane and Sebastian Portrait filler items werent tagged properly.
- The Beach Farm adds one secretsanity check, so it needs to be in the allsanity preset
- The Allsanity preset is renamed to "Maxsanity" to encourage better defined terminology and Allsanity means something else
- The "All Random" preset has been removed entirely. It has been the cause of too many beginner footguns over the years. People can still achieve the effect manually, but at least they'll have to try a little bit to ruin their own experience.

* Various Worlds: purge `world: MultiWorld` (ArchipelagoMW#5973)

* Bomb Rush Cyberfunk: Fix logic requirement increasing after collecting item (ArchipelagoMW#6105)

* WebHost: 2025 to 2026 (ArchipelagoMW#6094)

* DKC3: Delete DKC3 (ArchipelagoMW#6097)

* Docs: fix misinformation in tests.md (ArchipelagoMW#6125)

* Factorio: Improve English instructions (ArchipelagoMW#5306)

* WebHost: Fix: strict suuid converter (ArchipelagoMW#6130)

* WebHost: disallow '=' and whitespace in SUUID and append the correct number of '='

This makes Room IDs unambiguous and avoids breaking if b64decode ever becomes strict.

* Tests, WebHost: add SUUID tests

* Tests, WebHost: add edge cases to SUUID tests

* HK: add manifest (ArchipelagoMW#6057)

* Core: Remove worlds.generic.PlandoItem (ArchipelagoMW#6035)

* Test: add test for unpickling NetUtils enums (ArchipelagoMW#5326)

* Test: add test for unpickling NetUtils enums

This verifies that Utils.ByValue either works or is not required,
and once we drop ByValue, this validates that future Python
versions do not break our Enums again.

* Test: NetUtils enum switch to more direct pickle.dumps

It's probably better to use the direct interface in case
restricted_dumps does some funky stuff in the future.

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Test: NetUtils enum fix import for change

---------

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* APQuest: Switch to Rule Builder (ArchipelagoMW#5906)

* CachedRuleBuilderWorld

* CachedRuleBuilderWorld

* APQuest Rule Builder finished

* Added comment

Add a rule to check if the player has a Sword to destroy bushes.

* Bump version + typo fix

* Update worlds/apquest/rules.py

Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>

* Address Tchops' review comments

---------

Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>

* Options: Add more Option unit tests, add generic Option.__eq__, make cull_zeroes available to all OptionCounters ArchipelagoMW#5905

* The Witness: Make "Early Good Item" an OptionSet allowing Symbols, Doors and Obelisk Keys (ArchipelagoMW#3804)

* New solution to that plando issue

* better

* Another warning

* better comment

* Best of both worlds I guess?

* oops

* Smarter code reuse

* better comment

* oop

* lint

* mypy

* player_name

* add unit test

* oh

* Rebrand time baby

* This fits on one line

* oop

* Update worlds/witness/__init__.py

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* mypy

* Reorganize some doors according to medic's suggestions

* This should make it much faster (Thanks Medic)

* Town Doors works because of Church being a check always, Church Entry feels really bad tho

* Only add Desert Entry if there are no control panels stopping you

* No overlap here, so why is it a set

* Idk everything's kinda good without symbol shuffle

* Just make sure, I guess

* This makes way more sense doesn't it

* Oh, this is probably important

* oop

* loc

* oops 2

* ruff

* that was already in there

* Change the door picking a bit further

* some renaming

* slight wording change

* Fix

* Move it all to a new file

* ruff

* mypy

* .

* Make sure we're only adding as many tutorial checks as necessary

* ruff

* These checks aren't necessary, as the final list gets culled to only existing items anyway. It saves CPU cycles, but this is nicer for future compatibility

* Special handling for caves shortcuts

* 120 chars

* Update worlds/witness/place_early_item.py

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* Clean up Windmill & Theater cases

* Make early_symbol_item removed instead

* Add early_good_item to presets

* replace double None checks with casts

* That doesn't exist anymore

* Mypy thing

* Update the doors again a bit

* Pycharm pls

* ruff

* forgot one

* oop

* Is it finally right?

* Update options.py

* Fix with new Panel Keys

* Hopefully fix crash when one of the types runs out when the others haven't yet

* oops

* Medic suggestion

* unused import

* Update place_early_item.py

* Update __init__.py

* Update __init__.py

* Update options.py

* Add possible types to option desc

* Make that include all Tutorial (Inside) checks

* Update __init__.py

* Update test_early_good_item.py

* Update test_early_good_item.py

* Slight cleanup

* fix no tutorial locations being picked up by tutorial location size check

---------

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* APQuest: Fix Easy Mode boss having too much health to beat (ArchipelagoMW#6146)

* Change the boss' health to 2 in easy mode, adjust boss graphics to reflect this behavior

* graphics formatting

* The Witness: More control over progressive symbols (ArchipelagoMW#3961)

* More control over progressive symbols!

* Cleanup crew

* lol

* Make it configurable how second stage items act on their own

* only let independent symbols work if they're not progressive

* revert defaults

* Better description

* comment for reviewers

* A complicated docstring for a complicated function

* More accurate

* This probably works more generically

* Actually, this would cause other issues anyway, so no need to make this generic yet

* :/

* oops

* Change the system to use collect/remove override so that plando and start inventory work correctly

* Vi stop doing that thing challenge

* Make SecondStateSymbolsActIndependently an OptionSet

* jank

* oop

* this is why we make unit tests I guess

* More unit tests

* More unit tests

* Add note about the absence of Rotated Shapers from the independent symbols optionset

* More verbose description

* More verbose description

* slight reword

* Ruff ruff :3 I am a good puppy <3

* Remove invis dots

* oops

* Remove some unused symbols

* display name

* linecounting -> discard

* Make all progressive chains always work

* Unfortunately, this optimisation is now unsafe with plando :(

* oops

* This is now a possible optimisation

* optimise optimise optimise

* optimise optimise optimise

* fix

* ruff

* oh

* fixed frfr

* mypy

* Clean up the tests a bit

* oop

* I actually like this better now, so I'm doing it as default

* Put stuff on the actual item class for faster collect/remove

* giga oops

* Make proguseful work

* None item left beef

* unnecessary change

* formatting

* add proguseful test to progressive symbols tests

* add proguseful test to progressive symbols tests

* clean up collect/remove a bit more

* giga lmfao

* Put stuff in option groups

* Add the new symbol items to hint system

* bump req client version

* fix soft conflict in unit tests

* fix more merge errors

* CI: update softprops/action-gh-release to v3.0.0 (ArchipelagoMW#6162)

The update will be required once GH drops support for Node 20.

Also enables new options the action has now.

* Factorio: move communication savegame to user dir (ArchipelagoMW#5646)

* Rule Builder: Fix rule hash collisions (ArchipelagoMW#6169)

* fix rule hash collisions

* just let the dict do the work

* Generate: Added "quantity" option for player yamls to use multiple times a single yaml (ArchipelagoMW#4948)

* Added  option for player yamls.

* Extended documentation

* Minimized value extraction.

* Added allow_quantity option to host.yaml

* Added  option for player yamls.

* Extended documentation

* Minimized value extraction.

* Added allow_quantity option to host.yaml

* Update settings.py

Co-authored-by: qwint <qwint.42@gmail.com>

* Update Generate.py

Co-authored-by: qwint <qwint.42@gmail.com>

* Added allow_quantity as application argument.

* Quantity > 1, allow_quantity = false -> error instead of silent 1

* Added check for quantity <= 0; reverted settings import change

* Update Generate.py

---------

Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* MMBN3: Add spaces in concatenated string#5689

* lufia2ac/docs: fix some errors (ArchipelagoMW#5618)

Co-authored-by: Ludwig <80899010+wordfcuk@users.noreply.github.com>

* SML2: Send logic affecting randomiser options as slot_data (ArchipelagoMW#5751)

* Send logic affecting randomiser options as slot_data

* SML2 - Universal Tracker support

* Remove debug logs

* Only check generation_is_fake once

---------

Co-authored-by: alchav <alchav@jalchavware.com>

* Docs: added an italian translation of the setup guide for Muse Dash (ArchipelagoMW#5834)

* Create setup_it.md

Created an italian translation of the setup for muse dash. I could not find direct references to translating a setup so I am assuming this is the correct way to submit a translation.
While I am a native in italian and I would consider myself fluent in english, I am not a translator so mistakes could have been made.

* Update __init__.py

* sm64ex: Recommend Flatpak for Linux users (ArchipelagoMW#5897)

* Pokemon RB: Fix mutating global item_groups in get_filler_item_name() (ArchipelagoMW#5947)

The `banned_items` variable was the `"Unique"`list within the
`item_groups` global. `get_filler_item_name()` could then mutate
`banned_items` through `banned_items.append("Poke Doll")` and
`banned_items += item_groups["Vending Machine Drinks"]`, causing
the contents of the `item_groups` global to be mutated.

This has been fixed by making `banned_items` a shallow copy of
`item_groups["Unique"]`.

* Docs: Add a warning to world api.md#events that you want StatusUpdate, not events, for actually sending the goal (ArchipelagoMW#5957)

* AHIT: Update FAQ in setup guide (ArchipelagoMW#5975)

* Docs: Mention APQuest as a reference (ArchipelagoMW#6000)

The APQuest implementation of an APWorld is incredibly useful and should
really have a mention here.

* Docs: Make RB OptionFilter docs clearer (ArchipelagoMW#6028)

* add more docs for option filters

* reword the whole things

* style guide

* LADX: doc update (ArchipelagoMW#6050)

* update gfxmod doc

* romless generation

* Update setup_en.md

Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>

---------

Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>

* Jak1: yamlless UT support (ArchipelagoMW#6066)

* KH2: Update setup_en.md (ArchipelagoMW#6129)

* Docs: Rule Builder Filtered Example Fix (ArchipelagoMW#6152)

* MultiServer: update help doc on auto_shutdown#5917

* Docs: Rewrite get_filler_item_name's docstring to avoid implying it's for filling all unfilled locations ArchipelagoMW#5956

* The Messenger: Add missing rules for Key of Strength#6124

* The Messenger: Add missing indirect conditions (ArchipelagoMW#6101)

* Docs: Add missing space to plando doc ArchipelagoMW#6060

* Terraria: fix failing to generate with Calamity enabled and full accessibility on Mechanical Bosses goal ArchipelagoMW#5787

* Undertale: Handle zero arg /auto_patch (ArchipelagoMW#5130)

* Muse Dash: Update to DASH AND SHOOT (ArchipelagoMW#6163)

* ALttP: Fix starting mail and shield equipment from start inventory (ArchipelagoMW#6154)

* WebHost: Add deletion of old content to cleanup function (ArchipelagoMW#6119)


---------

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Options: make template generation log the failing world if one fails (ArchipelagoMW#6176)

* Launcher: display window for failed world loads if any (ArchipelagoMW#6058)

* Options: Remove the "" from the start inventory examples (ArchipelagoMW#6165)


---------

Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>

* Super Mario 64: Basic testing (ArchipelagoMW#4335)


---------

Co-authored-by: Yussur Mustafa Oraji <N00byKing@hotmail.de>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* Blasphemous: Increase logic performance (ArchipelagoMW#4585)


---------

Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* WebHost: Fix adding weighted text options (ArchipelagoMW#5116)

* Docs: Added new documentation for DS3's enemy randomization (random_enemy_preset) (ArchipelagoMW#5738)


---------

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Rule Builder: Implement AtLeast (ArchipelagoMW#6085)



---------

Co-authored-by: Ian Robinson <ianronrobinson@gmail.com>

* Pokemon Emerald: Switch to rule builder (ArchipelagoMW#5923)

* Core: Make manifest accessible as a world attribute (ArchipelagoMW#6122)

* WebHost: Add authors to supported games page (ArchipelagoMW#6123)

* CommonClient: Make hint cost (shown in server label) update (ArchipelagoMW#6149)

* A Link to the Past: We Have Enemizer at Home (ArchipelagoMW#6153)

* Muse Dash: Convert to Rule Builder (ArchipelagoMW#6166)



---------

Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>

* KH2: fix ice cream double counting for logic (ArchipelagoMW#6068)

* Factorio: Remove the need to have two separate installs (ArchipelagoMW#4221)

* Settings: validate FilePath hash on use (ArchipelagoMW#5854)

* Stardew Valley: Bypass CollectionState overhead by just calling prog_items (ArchipelagoMW#6065)

* SM64: Change power star item classification to be deprioritized (ArchipelagoMW#6191)

* The Messenger: Fix portal shuffle logic not using unlocked portals (ArchipelagoMW#6194)

* Core: reset log level when using pyximport (ArchipelagoMW#6212)

* Core: Bump version from 0.6.7 to 0.6.8 (ArchipelagoMW#6114)

* Factorio: Locale changes (ArchipelagoMW#5908)



---------

Co-authored-by: Joris Santen <joris.j.vansanten@student.hu.nl>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>

* Bump mistune from 3.2.0 to 3.2.1 in /WebHostLib (ArchipelagoMW#6185)

Bumps [mistune](https://github.com/lepture/mistune) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/lepture/mistune/releases)
- [Changelog](https://github.com/lepture/mistune/blob/main/docs/changes.rst)
- [Commits](lepture/mistune@v3.2.0...v3.2.1)

---
updated-dependencies:
- dependency-name: mistune
  dependency-version: 3.2.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Muse Dash: Update to Touhou Mugakudan -V- (ArchipelagoMW#6234)

* Rule Builder: Resolve empty and() to True_() instead of False_()(ArchipelagoMW#6239)

* Core+RB: Make has_from_list, has_from_list_unique, has_group and has_group_unique return True if count <= 0 and list is empty (ArchipelagoMW#6240)

* Factorio: Fixed a needlessly small bug that does not affect gameplay (ArchipelagoMW#6147)

* WebHost: fix Authors on supported game page (ArchipelagoMW#6218)

* WebHost: Config option for custom port ranges v2 (ArchipelagoMW#6009)

* Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.

* - Added better fallback to default port range when a custom range fails
- Updated config to be clearer

* Added ability to define custom port ranges the WebHost will use for game servers, instead of pure random.

* - Added better fallback to default port range when a custom range fails
- Updated config to be clearer

* Updated soft-fail message

* Removed dead import from customserver.py

* Update requirements.txt

Settings requirements to main core branch

* fix what reviewers said and add some improvements

* remove unused argument

* try fixing test with try

* use yaml lists instead of string for config

* fix value type bug on ephemeral type

* reuse sockets with websockets api instead of opening and closing them

* add used ports cache and filter used ports when looking for ports

* fix port randomizer

* Apply suggestions from code review

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* fix some reviews

* use weights for random port and remove more-itertools

* fix net_connections not working on macOS

* rename variables and functions

* lazy init `get_used_ports`

* change `game_ports` to be `tuple`

* fix last_used_ports not being updated locally

* fix random choices and move game_port conversion into tuple

* Apply suggestions from code review

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* use a named tuple on parse_game_ports

* only use ranges

* do it the duck way

* this should check all usable ports before failing

* fix while loop

* add return type to weighted random

* Update WebHostLib/customserver.py

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* simplify tuple conversion check

* add tests

* reformat file and change `create_random_port_socket` test

* add more test cases for parse_game_ports

* try to prevent busy-looping on create random port socket when doing test

* simplify parse game port tests to one assertListEqual

* make the range lesser for port test

* reduce range on macOS

* Apply suggestions from code review

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Update WebHostLib/customserver.py

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* remove unused import

* Update WebHostLib/customserver.py

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* use generator expressions

* check for 0-tuple

* use some kind of shuffled queue

* update tests

* refactor new port handling into a class (#1)

* change time to monotonic

* Update docs/webhost configuration sample.yaml

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* add psutil 7.2.2 as requirement

* Update WebHostLib/requirements.txt

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

---------

Co-authored-by: Lexipherous <jasonnlelong@gmail.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* Core: typing and cleaning, mostly in `Fill.py` (ArchipelagoMW#4459)

* Core: typing and cleaning, mostly in `Fill.py`

* fix typing of things we get out of plando blocks

* clean getting multiworld from kwargs
add a list type
clean indentation

* fix issues with merge conflict resolution

* some things found after merge

* ModuleUpdate: Add core requirements.txt as a constraint file to pip calls (ArchipelagoMW#6309)

* Add core requirements.txt as a constraint file to pip calls

* remove --upgrade as requested

* Update ModuleUpdate.py

* Gauntlet Legends: Implement New Game (ArchipelagoMW#3499)

* Update GauntletLegendsClient.py

* Continuation of obelisk update

* APPP Implementation Groundwork.

* Continuation of APPP Implementation

* Create Pain.asm

* ROM verification modified since crc32 hash can no longer be calculated.

* Initial upload of barrel/chest locations.

* Finished adding and naming all chests/barrels.

* Continued locations.

* Added new yaml options

* Work on mirror shards

* Python 3.8 compatibility

* Finalized location names. Fixed lambda bug.

* v1.0

* Removed excess Docs and Changed item counts.

* Update Archipelago Unittests.run.xml

* Started working on Docs.

* Updated item arrays for client

* Fix client bugs

* Flake8 fixes + Yaml fix

* Update speed boots

* v1.1

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* v1.0.4

* Initial Ruff format

* Formatting part-2

* More formatting + Doc changes

* Updated Docs

* Move client to root

* Update Client Name

* Make Imports Relative

* Add new yaml options + rename obelisks

* v1.1 Initial Upload

* v1.1.0 + some additions

* Client Update

* Client Updates

* pre-v1.1.1

* Update GauntletLegendsClient.py

* pre-1.2

* 1.2.0

* v1.2.1

* Client fixes

* v1.3.0

* v1.4.0

* v1.4.1

* Merged Changes

* Experimental

* pre-v1.5.0

* Changes

* v1.5.0

* Update GauntletLegendsClient.py

* Death Update

* pre v1.5.1

* Obelisk rule changes

* pre-v1.5.1

* Update GauntletLegendsClient.py

* v1.5.1

* v1.5.1

* Update GauntletLegendsClient.py

* Small fix

* Update GauntletLegendsClient.py

* v1.5.2

* pre-v1.6.0

* pre-v1.6.0

* v1.6.0

* Update

* Update GauntletLegendsClient.py

* Test

* pre-v1.6.0

* Client Updtaes

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update Rom.py

* Update GauntletLegendsClient.py

* Update Rom.py

* Added Logging on stage enter

* v1.6.2

* v1.6.2

* Update Rom.py

* Update GauntletLegendsClient.py

* v1.6.3

* Small Update

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Update GauntletLegendsClient.py

* Changes ready for review

* Update Rom.py

* Remove root client

* Update inno_setup.iss

* Update client

* Initial Review Refactor

* Update Arrays.py

* Review refactor

* Update __init__.py

* Small tweaks after test generations

* Update GauntletLegendsClient.py

* Implement new check_locations() function

* Add name for Skorn to level_names Dict

* Fix for ArchipelagoMW#4671

* Update __init__.py

* Adjust item frequency + Place 50% of filler as local

* Oops I modified the itempool after create_items teehee

* Update __init__.py

* Check MD5 hash before patching ROM

* Update __init__.py

* Fix get_filler_item_name()

* Update MD5 check to built in method in FilePath

* Update Rom.py

* Update worlds/gl/Rom.py

Co-authored-by: qwint <qwint.42@gmail.com>

* WIP Generation fixes

* v1.7.1

* Update Archipelago Unittests.run.xml

* 0.7.2

* Update GauntletLegendsClient.py

* Review Edits

* Update World description

* Fuzz fixes

* Update GauntletLegendsClient.py

* Make static data immutable

* Update option comparisons since no longer a Choice

* Update worlds/gl/Rom.py

Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>

* Update __init__.py

* Initial Update commit

* Progress

* Remove un-used import + Add manifest

* Add missing docstring for client command

* Progress

* pre-v2.0.0-BETA

* Updates

* Progress

* Working Generations

* Working IN-Game

* v2.0.0-BETA

* Create archipelago.json

* v2.0.1

* v2.0.1 FINAL

* pre v2.0.2

* Delete report.json

* Cleanup

* pre v2.0.2

* v2.0.2

* PR Ready

* Update Items.py

* Delete fuzz.py

* Update Items.py

* Update GauntletLegendsClient.py

* Fix scouting disabled locations

* Client Updates

* v2.0.3

* Increment World Version

* Docstring + slot_data updates

* Option name update + Remove redundant option

* Code Cleanup

* Trenches is level 24

* Frequencies

* More cleanup and removal of stale code. MISSING BASEPATCH

* v2.1.0

* Minor enemy changes

* Small fix

* Update Rom.py

* v2.1.1

* Small fixes

* Update basepatch.bsdiff4

* Update GauntletLegendsClient.py

* Socket error clarity

* Delete settings.local.json

* Update GauntletLegendsClient.py

* v2.1.2 fixes

* Boss portal fix

* Small client fix + Item Frequencies

* Update archipelago.json

* Fix for games playing with max difficulty lower than 4 not sending locations

* Update archipelago.json

* v2.1.5

* Fix for Chimera's lair mirror shard

* Update archipelago.json

* Mod Re-Base + Queue limits + Item Receiving fixes

* Options cleanup and newlines for some files

* Include v2.x features in docs

* Make sure players has at least 1 item

* v2.1.6

* Update archipelago.json

* Review Edits + Client Tweaks

---------

Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>

* WebHost: Bump mistune from 3.2.1 to 3.3.0 in /WebHostLib ArchipelagoMW#6324

* Core: Allow running unit tests scoped to specific worlds (ArchipelagoMW#6290)

This allows the unit tests to be run on specific worlds only, it works by using an environment variable AP_TEST_WORLDS which is a comma separated list of world directories.

* Core: fix Set import (ArchipelagoMW#6235)

mistake made in pr ArchipelagoMW#5048
ArchipelagoMW#5048 (comment)

* Core: Adjust YAML error message to clarify the name is not the cause of the error (ArchipelagoMW#6267)

* Docs: add guidance for choosing minimum/maximum_ap_version (ArchipelagoMW#6265)

* Core: Pre Output Steps Log (ArchipelagoMW#6047)

* Core: Add parameter to visualize_regions to display Rule Builder explanations on exits (ArchipelagoMW#6184)

Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>

* Launcher: Loading Screen (ArchipelagoMW#6115)

* Launcher: fix world import ordering conflict between ArchipelagoMW#6115 and ArchipelagoMW#6058

* Launcher: Delete unused functions (ArchipelagoMW#6332)

These were moved to LauncherComponents in ArchipelagoMW#6115,  but due to a bad merge resolution, the originals were left behind.

* RuleBuilder: Optimize Has("Item", 0) (ArchipelagoMW#6228)

* Unittests: allow running unittests for specific worlds when using unittest runner (ArchipelagoMW#6338)

* Build APWorlds: fix moved import (ArchipelagoMW#6343)

* SC2: Disabling UT as it doesn't work (ArchipelagoMW#6346)

* Tests: Force race mode off in test_generate_yaml (ArchipelagoMW#6349)

* Core: update platformdirs (ArchipelagoMW#6328)

* The Messenger: Fix shop price not correctly handled by UT (ArchipelagoMW#6340)

* Starcraft 2: item pool reduction overcounting fix (ArchipelagoMW#6318)

* Starcraft 2: Moving pool filter to use a counter instead of a dict (ArchipelagoMW#6366)

* Core: remove per_slot_randoms and DeprecateDict (ArchipelagoMW#6186)

* ALTTP: Reflowed headers in docs and explicitly added what client is used. (ArchipelagoMW#5758)

* MultiServer: Update hint_points when hint cost or check points is changed (ArchipelagoMW#6219)

* Setup: bump cx-Freeze to fix frozen linux shortcuts (ArchipelagoMW#6365)

* The Messenger: Various small logic fix (ArchipelagoMW#6337)

* Options: add typing and remove unnecessary deepcopy call in OptionCounter (ArchipelagoMW#6321)

Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>

* Factorio: Locale fixes (ArchipelagoMW#6237)

* Core: Fix Open Patch (ArchipelagoMW#6356)

* ALttP: Fix Randomzie Enemy Damage (ArchipelagoMW#6296)

* CommonClient: Ignore invalid deathlink packets (ArchipelagoMW#6376)

* Core: limit depth of received JSON to 16 (ArchipelagoMW#6378)

* Core: limit depth of received JSON to 16

This applies to both MultiServer and CommonClient.

This means DataStorage default is limited to 14 levels,
DataStorage op arg is limited to 13 levels.

* Core: fix JSON depth limit check for escape codes

* Core: cythonize JSON depth limit check

* Core: Add helper for unescape kivy strings + cleanup its usages (ArchipelagoMW#6023)

* Jak and Daxter: Update client to use PME 2.0.x. (ArchipelagoMW#6393)

* CommonClient: Match ServerLabel's team to other UIs (ArchipelagoMW#5875)

* HK: Various silly fixes (ArchipelagoMW#6276)

* BizHawkClient: Fix compatibility for Lua 5.5+ (ArchipelagoMW#6200)

* CommonClient: reset session state when connecting to a different room or slot (ArchipelagoMW#6231)

* MultiServer: reject None targets on Bounce and validate types before sending Bounced (ArchipelagoMW#6397)

* MultiServer: Allow "and" chaining of Bounce packet conditions & add teams support (ArchipelagoMW#3845)

* Allow 'and' concatenation of bounce packet conditions

* Docs + small change

* Docs stuff

* update Bounced as well

* lol

* shadowing issue

* Slight rework to allow teams

* teams note

* Make the PR ready

* docs further up too

* Let's not do this actually

* Use operator & don't redefine functions

* team default

* remove unnecessarily added whitespace

* The Witness: Universal Tracker support + Clean up which options actually need to be in slot_data (ArchipelagoMW#5503)

* Re-gen with UT + slim slot_data slightly

* make use of relevance in ut code

* That's not how enums work

* fixup

* more ut compat

* more ut fixup

* more ut fixup

* utils entity hex fixup

* Me when I lie

* Update options.py

* APQuest: Reimplement Dijkstra by hand (so that it is LLM-free again) (ArchipelagoMW#6315)

* reimplement Dijkstra by hand

* make it so that the player faces the breakable object even if they can't break it

* ruff

* The Messenger: Remove connection from Climb Shop to Rocket Maze Checkpoint - ArchipelagoMW#6258

* Civ6: Update BOOST_TECH_CASTLES (ArchipelagoMW#6270)

Replaced 8 slot government techs with 6 slot

* Stardew Valley: Rebalanced a dozen or so meme bundles (ArchipelagoMW#6214)

* Tests: remove exception for LADX in test_itempool_not_modified (ArchipelagoMW#6390)

* Stardew Valley: Fixed filler buffs only rolling one of each instead of as many as needed (ArchipelagoMW#6293)

* KH2: Prevent the client from crashing if the player duplicated items (ArchipelagoMW#6210)

* Subnautica: Handle empty filler item weights with specific error (ArchipelagoMW#6361)

* Core: Update PlandoConnection.Direction to use StrEnum (ArchipelagoMW#5801)

* Satisfactory: Fix broken links on the Setup guide (ArchipelagoMW#6110)

* KH2: Make Lucky Emblems behave like bounties and keyblade stats (ArchipelagoMW#6190)

Swap the amount required and avaiable if required is more than avaiable instead of making avaiable equal required

* Launcher: Show error message when world fails to load during install (ArchipelagoMW#6292)

* Core: Fix loading of worlds installed in launcher (ArchipelagoMW#6319)

* Stardew Valley: Reorganise option groups and visibility a little bit (ArchipelagoMW#6224)

* Stardew Valley: Apworld Version To 7.4.25 (ArchipelagoMW#6407)

* stardew valley: use /explain from universal tracker instead of stardew valley client (ArchipelagoMW#6241)

* Wargroove: Add item groups (ArchipelagoMW#6254)

* Stardew Valley: Fixed Artifact spot logic (ArchipelagoMW#6213)

* Test: flask duplicate route is now a ValueError (ArchipelagoMW#6380)

* Wargroove: actually import Items (ArchipelagoMW#6422)

* Terraria: transfer maintainership to Desperandos (ArchipelagoMW#6170)

* BHC: don't override --connect when manifest has empty server (ArchipelagoMW#6435)

* Tests: Remove unneeded world exclusions (ArchipelagoMW#6396)

* MMBN3: Handle timeouts on dual stack networks by catching OSError (ArchipelagoMW#6301)

* MultiServer: Correct Bounce Target logic, add unit tests (ArchipelagoMW#6417)

* Correct Bounce Target logic, write unit tests

tmp

* that is not correct

* What was I smoking

* explicitly document None

* What was I smoking

* fix weakref syntax

* ruff

* fix magicmoc

* Address Berserker's comments

* comment

* consistently use self.assertEqual

* make slot 2 on team 3 not use deathlink to test different tags for the same slot on different teams

* Improve error message

* The Wind Waker: fix sending already checked and non-existing locations (ArchipelagoMW#6410)

* Kingdom Hearts 2: fix sending already checked locations (ArchipelagoMW#6411)

* SM64: Disable default tests for flaky move rando options (ArchipelagoMW#6457)

* docs: apquest: make it clear that launcher components are optional (ArchipelagoMW#6288)

* Make it clear that launcher components are optional

* Update comment for clarity on launcher components

* Launcher: fix for more terminal on linux (ArchipelagoMW#6436)

* Add check for cosmic terminal and use different arguments if so

* Changed check for terminal to be strictly against executable name instead of path

based on this comment ArchipelagoMW#6436 (comment)

* Add `ptyxis` to list of moddern terminals

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Changed `-e` terminal launch method to use `sh`

This standardizes the environment in which archipelago components launch and fixes launching with `zutty`

* Properly import pathlib

* Added comment detailing what `modern_terminals` is

* Refactored launching in terminal to new function in utils

* Optimised imports in Launcher.py

* Revert "Refactored launching in terminal to new function in utils"

This reverts commit 4336798.

* Fixed unintentional cleanup in Utils.py

* Simplify check for terminals

Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>

* Fully import pathlib

* Fix spelling mistake

* added gnome-terminal to list of modern_terminals

* added cosmic-term and ptyxis as fallback terminals

* Changed terminal search to add more terminal names easier

also included `alacritty` and `kitty`

* Check xterm terminal last

Also stores the list of terminals in tuples

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Add type hint to terminal variable

Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

---------

Co-authored-by: Osiris32-and-a-half <psypv2@exmail.nottingham.ac.uk>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Core: Add .apworlds to loading screen (ArchipelagoMW#6460)

* Rule Builder : Made AtLeast a dataclass (ArchipelagoMW#6421)

* Core: Restrictive fill in batches to reduce state sweeping costs (ArchipelagoMW#3872)

This patch breaks up fill_restrictive to fill in batches of items at a time. Each batch creates its own batch_base_state, and additionally a sweep state created from the batch's base state (_partial_exploration_state). The advantage to this is that each maximum_exploration_state can be created from the batch's _partial_exploration_state, which has already reached many regions and locations, rather than having to sweep from base_state each time.

* MultiServer, customserver: move data package handling, optimize RAM usage (ArchipelagoMW#5981)

* MultiServer, customserver: move data package handling

Create a new class that handles conversion worlds+embedded -> context data.
Create a derived class that uses static_server_data+pony instead.
There is also a not very efficient feature to deduplicate strings (may need perf testing).

By moving code around, we can simplify a lot of the world loading.
Where code lines were touched, some typing and some reformatting was added.
The back compat for GetDataPackage without games was finally dropped.
This was done as a cleanup because the refactoring touched those lines anyway.

Also reworked the per-context dicts and the RoomInfo to hopefully be more efficient
by ignoring unused games. (Generating the list of used games was required for the new
code anyway.)

Side effect of the MultiServer cache: we now load worlds lazily (but still all at once)
and don't modify the games package in place. If needed we create copies.
This almost gets us to the point where MultiServer doesn't need worlds - it still needs
them for the forbidden items.
There is a bonus optimization that deduplicates strings in name_groups that may have bad
performance and may need some perf testing if we run into issues.

* MultiServer: fix string deduplication in data package cache

* MultiServer, customserver: minor formatting fixes

* MultiServer: fix data package cache for missing checksum case

* MultiServer: improve string deduplication in games package cache

* customserver: handle missing checksum in datapackage cache

* customserver: typing cleanup in games package cache

* Test, MultiServer, customser: add tests for games package cache

* Test, MultiServer: reorder imports

Hopefully this fixes the random test failures with pytest-xdist

* customserver: make WebHost import lazy in games package cache

and fix test

* customserver: games package cache: fix py3.11 compat

* MultiServer, customserver: cache: typing improvements

* customserver: cache: reformat

* Test: move customserver tests to not interfere with webhost

* MultiServer, customserver: cache: rename module

* Multiserver: better error message for missing Datapackage

* customserver: cache: invert if for readability

* customserver: optimize non_hintable_names

* Use an empty frozenset singleton
* Only include non-empty sets in static_server_data
* Only prefill dict with played games

This should save ~2-4KB per room and slightly speedup lookup.

---------

Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>

* Launcher: Fix initial position of "Search" text upon loading (ArchipelagoMW#6456)

* Launcher: Fix loading when an unknown arg is provided (ArchipelagoMW#6451)

* TUNIC: Universal Tracker deferred entrances support (ArchipelagoMW#5454)

* Core, Tests: Update usages of multiworld.get_all_state (ArchipelagoMW#5793)

* Core: Make manifest error a messagebox and show which world (ArchipelagoMW#6133)

* Jak1: use Utils.user_path for consistant user data (ArchipelagoMW#6150)

* KH2: Keyblade Min Max Clarification (ArchipelagoMW#6188)

Actually swap option values for keyblade min an max to show correctly in spoiler log.
And clarify in the warning the two values get swapped. (same as bounties but not lucky emblems)

* TUNIC: Add fuse locations to Universal Tracker map integration (ArchipelagoMW#6198)

* TUNIC: Add launcher options (ArchipelagoMW#6199)

* Options: add function to validate custom text in TextChoice during from_text (ArchipelagoMW#6205)

* Pokemon Emerald: Fix dexsanity encounters using non-enabled encounter types for logical access (ArchipelagoMW#6161)

* Docs: Add caveat about init files in subfolders (ArchipelagoMW#6222)

* TUNIC: Add troubleshooting section to setup guide (ArchipelagoMW#6227)

* Fill: make non prog start inventory panic actually use the new filler items (ArchipelagoMW#6246)

* Raft: Update setup guide to note the downpatch requirement (ArchipelagoMW#6250)

* Docs: Update docs and typing for items_handling to not allow None (ArchipelagoMW#6257)

* Jak and Daxter: Add UT UI (ArchipelagoMW#6275)

* Civ6: Setup Guide update (ArchipelagoMW#6284)

* TLOZ: Implement dialog speed options (ArchipelagoMW#6286)

* Muse Dash: Update song list to the 8th Anniversary songs + Undertale/Deltarune songs (ArchipelagoMW#6291)

* Lingo: Add connection to Outside The Undeterred from Roof (ArchipelagoMW#6297)

* Aquaria: Adding archipelago.json and AI disclosure (ArchipelagoMW#6389)

* TUNIC: Shuffle Enemy Drops and Souls (ArchipelagoMW#6249)

* Core: Add common rom extensions to global.apignore (ArchipelagoMW#6207)

* KH2: 3 Client Bugfixes (ArchipelagoMW#6373)

* Docs: Fix typo in "adding games" doc (ArchipelagoMW#6466)

* Launcher: Fix failed world display (ArchipelagoMW#6468)

* Timespinner: Lantern Naming and Logic Overhaul (ArchipelagoMW#6121)

* Stardew Valley: pass whole months to has_lived_months (ArchipelagoMW#6470)

* TUNIC: Fix elevation for Atoll Upper Entrance (ArchipelagoMW#6465)

* SA2B: v2.4.6 Logic Fixes (ArchipelagoMW#6453)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: palex00 <32203971+palex00@users.noreply.github.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: agilbert1412 <alexgilbert@yahoo.com>
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: Trevor L <80716066+TRPG0@users.noreply.github.com>
Co-authored-by: williamronn <wille.ronn@gmail.com>
Co-authored-by: PoryGone <98504756+PoryGone@users.noreply.github.com>
Co-authored-by: sudo-nano <63484662+sudo-nano@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>
Co-authored-by: Mrks <68022469+mrkssr@users.noreply.github.com>
Co-authored-by: el-u <109771707+el-u@users.noreply.github.com>
Co-authored-by: Ludwig <80899010+wordfcuk@users.noreply.github.com>
Co-authored-by: Oshroth <Oshroth@users.noreply.github.com>
Co-authored-by: alchav <alchav@jalchavware.com>
Co-authored-by: UCSA <moro.matteorosario@gmail.com>
Co-authored-by: Yussur Mustafa Oraji <N00byKing@hotmail.de>
Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>
Co-authored-by: Ixrec <ericrhitchcock@gmail.com>
Co-authored-by: CookieCat <81494827+CookieCat45@users.noreply.github.com>
Co-authored-by: Sophira <github@theblob.org>
Co-authored-by: threeandthreee <a.l.nordstrom@gmail.com>
Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>
Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Co-authored-by: River Buizel <4911928+rocket0634@users.noreply.github.com>
Co-authored-by: Sophia Caspe <avi.caspe@gmail.com>
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Co-authored-by: Seldom <38388947+Seldom-SE@users.noreply.github.com>
Co-authored-by: Justus Lind <DeamonHunter@users.noreply.github.com>
Co-authored-by: Alchav <59858495+Alchav@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>
Co-authored-by: josephwhite <22449090+josephwhite@users.noreply.github.com>
Co-authored-by: Christina <123173340+Paperkoopa@users.noreply.github.com>
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: Ishigh1 <bonjour940@yahoo.fr>
Co-authored-by: Ian Robinson <ianronrobinson@gmail.com>
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
Co-authored-by: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com>
Co-authored-by: Katelyn Gigante <clockwork.singularity@gmail.com>
Co-authored-by: Will Morrow <duh102@gmail.com>
Co-authored-by: CosmicWolf <54233835+Enderdraak@users.noreply.github.com>
Co-authored-by: Joris Santen <joris.j.vansanten@student.hu.nl>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Uriel <imurx@proton.me>
Co-authored-by: Lexipherous <jasonnlelong@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: jamesbrq <jamesbrq@gmail.com>
Co-authored-by: James White <james_white_d@hotmail.com>
Co-authored-by: Patrick Wehbe <50799614+patrickwehbe@users.noreply.github.com>
Co-authored-by: g0goTAS <79611210+g0goTAS@users.noreply.github.com>
Co-authored-by: Berserker <fabian.dill@web.de>
Co-authored-by: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Co-authored-by: CodeGorilla <just.a.smith@att.net>
Co-authored-by: Severencir <62644089+Severencir@users.noreply.github.com>
Co-authored-by: Jacob Lewis <JacobMLewis@Live.com>
Co-authored-by: Colin <colinb969@gmail.com>
Co-authored-by: SomeJakeGuy <39894486+SomeJakeGuy@users.noreply.github.com>
Co-authored-by: Gearwcu <huizger@gmail.com>
Co-authored-by: shananas <47014056+shananas@users.noreply.github.com>
Co-authored-by: Rob B <computerguy440+gh@gmail.com>
Co-authored-by: Noa Aarts <noa@voorwaarts.nl>
Co-authored-by: rosen200 <roseweldon303@gmail.com>
Co-authored-by: BadMagic100 <dempsey.sean@outlook.com>
Co-authored-by: Osiris <64905829+Osiris32-and-a-half@users.noreply.github.com>
Co-authored-by: Osiris32-and-a-half <psypv2@exmail.nottingham.ac.uk>
Co-authored-by: mkoertshuis <53483154+mkoertshuis@users.noreply.github.com>
Co-authored-by: Silent <110704408+silent-destroyer@users.noreply.github.com>
Co-authored-by: DJ-lennart <alexander.lt.carlsson@hotmail.com>
Co-authored-by: B1t <christopher.j.wallis@gmail.com>
Co-authored-by: Star Rauchenberger <fefferburbia@gmail.com>
Co-authored-by: Louis M <prog@tioui.com>
Co-authored-by: Greg <beitlergreg@gmail.com>
Co-authored-by: Michael McBride <urzamtg@gmail.com>
Co-authored-by: luke0172 <73260475+luke0172@users.noreply.github.com>
dracador pushed a commit to cjmang/Archipelago that referenced this pull request Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

is: documentation Improvements or additions to documentation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants