Skip to content

CI: set permissions, update and pin actions, CodeQL for actions - #6073

Merged
black-sliver merged 4 commits into
ArchipelagoMW:mainfrom
black-sliver:ci/update-and-pin
Mar 30, 2026
Merged

CI: set permissions, update and pin actions, CodeQL for actions#6073
black-sliver merged 4 commits into
ArchipelagoMW:mainfrom
black-sliver:ci/update-and-pin

Conversation

@black-sliver

Copy link
Copy Markdown
Member

What is this fixing or adding?

  • Changes workflow-level permissions to the minimum required1.
    If there is only a single job or all jobs need the same permissions, those are still specified on workflow level.
  • replaces actions/attest-build-provenance with actions/attest - this is now unified according to docs and worked in PopTracker
  • Updates all actions that seem low risk.
  • upload-artifact uses the new archive: false, that allows uploading a file directly (without "double-zipping" it)
  • Pins all github-owned and immutable actions to a fixed version.
  • Pins all other actions to a fixed hash. This way a compromised action with replaced tags does not impact security.

Note: we should enable dependabot in the future to keep pinned actions up to date,
however we will already get security warnings if any of the pinned workflows have a GHSA.
Also we should consider updating softprops/action-gh-release for the upcoming node change,
but I have not found time to review the code changes yet.

Why

This is supposed to combat the latest wave of supply chain attacks.

How was this tested?

Purely in CI. The stuff that doesn't get run in the PR, I think is almost impossible to test anyway because it'll always just be c&p from a known-good yaml.

Footnotes

  1. permissions: {} drops all permissions that would be inherited by default.
    While the docs are very confusing, this is mentioned explicitly for the last code block here:
    https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#permissions:
    The permissions in codeql are based on this: https://github.com/github/codeql-action/issues/464

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.
also set compression level and error behavior for scan-build upload.
@github-actions github-actions Bot added the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Mar 28, 2026
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

@beauxq beauxq 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 don't have a lot of familiarity with this, but LGTM.

@BadMagic100 BadMagic100 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.

Looks good. I'm a bit curious about removing the default permissions as they only grant read only access to something that anyone could get without a token (since it's a public repo) but certainly don't object to it

@black-sliver

black-sliver commented Mar 30, 2026

Copy link
Copy Markdown
Member Author

I'm a bit curious about removing the default permissions

Unless I misunderstood the warning here, the reason to specify the permissions in each workflow file is that it would otherwise inherit Repo or Org level default permissions, which may allow more. I decided for permissions: {} over content: read because I feel like it makes it clear that not even read permissions are required for this action.

(I don't think you can change a fork of a public repo to be private, so I think it should not matter. Also I did not run into rate limits for checkout et al when I did the same change in a different repo., but worst case it's a simple change.)

@black-sliver
black-sliver merged commit 2ee20a3 into ArchipelagoMW:main Mar 30, 2026
20 checks passed
@github-actions github-actions Bot removed the waiting-on: peer-review Issue/PR has not been reviewed by enough people yet. label Mar 30, 2026
@black-sliver
black-sliver deleted the ci/update-and-pin branch March 30, 2026 19:47
Omnises pushed a commit to FFX-AP/Archipelago that referenced this pull request Apr 1, 2026
* Core: Better scaling explicit indirect conditions (ArchipelagoMW#4582)

* Core: Better scaling explicit indirect conditions

When the number of connections to retry was large and `queue` was large
`new_entrance not in queue` would get slow.

For the average supported world, the difference this change makes is
negligible.

For a game like Blasphemous, with a lot of explicit indirect conditions,
generation of 10 template Blasphemous yamls with
`--skip_output --seed 1` and progression balancing disabled went from
19.0s to 17.9s (5.9% reduction in generation duration).

* Create a new variable for the new set created from the intersection

* WebHost: memory leak fixes (ArchipelagoMW#5966)

* ALTTP: remove `world: MultiWorld` and typing (ArchipelagoMW#5974)

* WebHost: Add CORS headers to API Endpoints (ArchipelagoMW#5777)

* Return new state man (Vi's note: I have chosen not to change this title) (ArchipelagoMW#5978)

* The Messenger: minor maintenance (ArchipelagoMW#5965)

* CI: upgrade InnoSetup to 6.7.0 (ArchipelagoMW#5979)

* MultiServer: don't keep multidata alive for race_mode (ArchipelagoMW#5980)

* Fix(undertale): prevent massive bounce msg spam for position updates (ArchipelagoMW#5990)

* fix(undertale): prevent massive bounce msg spam for position updates

* make sure player is removed on leaving / timing out

* do not check for tags: online, as bounce evaluation is or'd

* Core: use typing_extensions `deprecated` (ArchipelagoMW#5989)

* Undertale: Use check_locations helper to avoid redundant sends (ArchipelagoMW#5993)

* Core: allow async def functions as commands (ArchipelagoMW#5859)

* Core: introduce finalize_multiworld and pre_output stages (ArchipelagoMW#5700)

Co-authored-by: Ishigh1 <bonjour940@yahoo.fr>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* MultiServer: graceful shutdown for ctrl+c and sigterm (ArchipelagoMW#5996)

* OptionCreator: 0.6.6 reported issues (ArchipelagoMW#5949)

* MultiServer: fix Windows compatibility (ArchipelagoMW#6010)

* Docs: Better document state.locations_checked (ArchipelagoMW#6018)

* MM2: Fix /request command help (ArchipelagoMW#5805)

* MLSS: Fix client auto-connect bug + Client cleanup (ArchipelagoMW#5895)

* FF1: Added manifest (ArchipelagoMW#5911)

* OoT: change setup-guides to have 2.10 be the minimum version recommended (ArchipelagoMW#5799)

* Pokemon Emerald: Fix rare fuzzer errors (ArchipelagoMW#5914)

* Shivers: Adds Manifest File (ArchipelagoMW#5918)

* OOT: UTC deprecation warning fix (ArchipelagoMW#5983)

* Saving Princess: add manifest (ArchipelagoMW#6008)

* Lingo: Add archipelago.json (ArchipelagoMW#6017)

* Mega Man 3: Implement new game (ArchipelagoMW#5237)

* Stardew Valley: morel doesn't spawn in fall secret woods (ArchipelagoMW#6003)

* Docs: Don't serve non-static files in example_nginx.conf (ArchipelagoMW#5971)

* Docs: Don't serve non-static files in example_nginx.conf

`try_files` will serve the file as long as it exists, which means I could `GET /autolauncher.py` and be served the file.

* Use root instead of alias, add route for favicon

* Update deploy/example_nginx.conf

* Lingo: Fix logic for Near Eight Painting (ArchipelagoMW#6014)

* The Messenger: Universal Tracker support (ArchipelagoMW#5344)

* Test: Defaults for Options test (ArchipelagoMW#5428)

* Muse Dash: Adds 3 new music packs plus fixes being able to roll songs without a legal way to obtain them (ArchipelagoMW#5698)

* Fix missing } in example_nginx.conf (ArchipelagoMW#6027)

* Pokemon Emerald: Dexsanity Encounter Type Option (ArchipelagoMW#6016)



---------

Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>

* Dark Souls 3: Update location descriptions for Red Tearstone Ring and Hood of Prayer (ArchipelagoMW#5602)

RTSR's description was incorrect and Hood of Prayer was missing its description

* TUNIC: Refactor entrance hint generation (ArchipelagoMW#5620)

* Refactor hint generation

* Remove debug print

* Early out per qwint's comment

* WebHost: Update UTC datetime usage (timezone-naive) (ArchipelagoMW#4906)

* Saving Princess: Security fixes for issues detected by Bandit (ArchipelagoMW#6013)

* Saving Princess: absolute paths on suprocess.run

* Saving Princess: more error handling for downloads

* Saving Princess: rework launch_command setting

Apparently subprocess.Popen requires a list for args instead of a string everywhere but in Windows, so the change was preventing the game from running on Linux. Additionally, the game is now launched using absolute paths.

* Saving Princess: prevent bandit warnings

* Saving Princess: remove unnecessary compare_digest

* Saving Princess: fix Linux paths by using which

* Saving Princess: rename launch command setting

Previously, launch_command held a string. Now it holds a list of strings. Additionally, the defaults have changed.
To prevent the wrong type from being used, the setting has been renamed, effectively abandoning the original launch_command setting.

* Saving Princess: fix Linux default command return type

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: Add references to running from source (ArchipelagoMW#6022)

* Docs: Update plando_en.md with item group example (ArchipelagoMW#6024)

* Update plando_en.md with item group example

Added example YAML block for item placement using an item group, including recommendation of use of `true` value with item groups to avoid unintended behaviors, with an example of the same.  Adjustments more than welcome!

* Made clarifying revision to description of Generator handling of item groups

Clarified the behavior of the Generator regarding item creation when item groups are used in plando.

* Tests: fix race in test hosting shutdown (ArchipelagoMW#5987)

* WebHost: add stats show cli command (ArchipelagoMW#5995)

Usage: flask -A "WebHost:get_app()" stats show

Currently only shows sum and top10 biggest games packages.

* LttP: add manifest (ArchipelagoMW#6005)

* RoR2: Seekers of the Storm (SOTS) DLC Support (ArchipelagoMW#5569)

* Core: Make Generic ER only consider the current world in isolation (ArchipelagoMW#4680)

* DS3: Use remaining_fill instead of custom fill (ArchipelagoMW#4397)


---------

Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>

* Docs: Reword 'could be generated from json' to avoid encouraging slow world loads (ArchipelagoMW#5960)

* KH2: Fix nondeterministic generation when CasualBounties is enabled (ArchipelagoMW#5967)

When CasualBounties was enabled, the location names in
`exclusion_table["HitlistCasual"]` would be iterated into
`self.random_super_boss_list` in `generate_early`, but
`exclusion_table["HitlistCasual"]` was a `set`, so its iteration order
would vary on each generation, even with same seed.

Random location names would be picked from `self.random_super_boss_list`
to place Bounty items at, so different locations could be picked on each
generation with the same seed.

`exclusion_table["Hitlist"]` is similar and was already a `list`,
avoiding the issue of nondeterministic iteration order, so
`exclusion_table["HitlistCasual"]` has been changed to a `list` to
match.

* Core: Update .gitignore to include an exe setup.py downloads (ArchipelagoMW#6031)

* CommonClient: Add explicit message for connection timeout (ArchipelagoMW#5842)

* Change timeout and add timeout-specific message

* Revert open_timeout

* Webhost: port reuse fix & configurable max room timeout (ArchipelagoMW#6033)

* WebHost: make autolauncher max room timeout configurable

* WebHost: launch rooms with assigned port first

* Factorio: only show fluid boxes on assembling machine 1 when the selected recipe needs fluids (ArchipelagoMW#5412)

* Core: other resources guide (ArchipelagoMW#6043)

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

* Rule Builder: Fix count resolution when Oring HasAnyCount (ArchipelagoMW#6048)

* 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)

---------

Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: DrAwesome4333 <22409322+DrAwesome4333@users.noreply.github.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Chris W <trezc0@gmx.de>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Ishigh1 <bonjour940@yahoo.fr>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Suyooo <chrspangler@gmx.de>
Co-authored-by: jamesbrq <jamesbrq@gmail.com>
Co-authored-by: Rosalie <61372066+Rosalie-A@users.noreply.github.com>
Co-authored-by: StripesOO7 <54711792+StripesOO7@users.noreply.github.com>
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
Co-authored-by: GodlFire <46984098+GodlFire@users.noreply.github.com>
Co-authored-by: josephwhite <22449090+josephwhite@users.noreply.github.com>
Co-authored-by: LeonarthCG <33758848+LeonarthCG@users.noreply.github.com>
Co-authored-by: Star Rauchenberger <fefferburbia@gmail.com>
Co-authored-by: Noa Aarts <itepastra@gmail.com>
Co-authored-by: Remy Jette <remy@remyjette.com>
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Co-authored-by: Justus Lind <DeamonHunter@users.noreply.github.com>
Co-authored-by: Goo-Dang <pado879@gmail.com>
Co-authored-by: Matthew Wells <91291346+richarm4@users.noreply.github.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Gryphonlady <gryphonlady1@gmail.com>
Co-authored-by: Rjosephson <ryandj67@hotmail.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Ixrec <ericrhitchcock@gmail.com>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>
Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>
Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>
Co-authored-by: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Co-authored-by: Sebastian <127998064+SebaCape@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>
Omnises pushed a commit to FFX-AP/Archipelago that referenced this pull request Apr 1, 2026
* KH2: Fix nondeterministic generation when CasualBounties is enabled (ArchipelagoMW#5967)

When CasualBounties was enabled, the location names in
`exclusion_table["HitlistCasual"]` would be iterated into
`self.random_super_boss_list` in `generate_early`, but
`exclusion_table["HitlistCasual"]` was a `set`, so its iteration order
would vary on each generation, even with same seed.

Random location names would be picked from `self.random_super_boss_list`
to place Bounty items at, so different locations could be picked on each
generation with the same seed.

`exclusion_table["Hitlist"]` is similar and was already a `list`,
avoiding the issue of nondeterministic iteration order, so
`exclusion_table["HitlistCasual"]` has been changed to a `list` to
match.

* Core: Update .gitignore to include an exe setup.py downloads (ArchipelagoMW#6031)

* CommonClient: Add explicit message for connection timeout (ArchipelagoMW#5842)

* Change timeout and add timeout-specific message

* Revert open_timeout

* Webhost: port reuse fix & configurable max room timeout (ArchipelagoMW#6033)

* WebHost: make autolauncher max room timeout configurable

* WebHost: launch rooms with assigned port first

* Factorio: only show fluid boxes on assembling machine 1 when the selected recipe needs fluids (ArchipelagoMW#5412)

* Core: other resources guide (ArchipelagoMW#6043)

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

* Rule Builder: Fix count resolution when Oring HasAnyCount (ArchipelagoMW#6048)

* 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)

---------

Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>
Co-authored-by: Ian Robinson <drtchops@users.noreply.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: Sebastian <127998064+SebaCape@users.noreply.github.com>
Co-authored-by: Bryce Wilson <gyroscope15@gmail.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>
carrotinator pushed a commit to carrotinator/Archipelago that referenced this pull request Apr 11, 2026
…ipelagoMW#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
hasherwi added a commit to hasherwi/Archipelago-kirbyam that referenced this pull request Jun 5, 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)

* Update minimum_ap_version to 0.6.7

* Update CHANGELOG with Archipelago version bump

Bump Archipelago minimum version to 0.6.7 in unreleased section.

---------

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>
wcoldren pushed a commit to wcoldren/Archipelago that referenced this pull request Jun 18, 2026
…ipelagoMW#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
carrotinator pushed a commit to DayKat/spirit-tracks that referenced this pull request Jun 23, 2026
…ipelagoMW#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
NitroTears pushed a commit to NitroTears/EBF5Archipelago that referenced this pull request Aug 1, 2026
…e archipelago version (#5)

* Yoshi's Island - Fix some small logic issues that were reported, add json file (#5742)

* Fix Piece of Luigi not goaling until reset

* Update .gitignore

* fix logic thing that one guy said

* fix platform being missing from chomp rock zone rules

* add json file

* added the wrong one

* remove extraneous lnk

* Update archipelago.json

---------

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

* KH2: Fix placing single items onto multiple locations in pre_fill (#5619)

`goofy_pre_fill` and `donald_pre_fill` would pick a random `Item` from a
`list[Item]` and then use `list.remove()` to remove the picked `Item`,
but the lists (at least `donald_weapon_abilities`) could contain
multiple items with the same name, so `list.remove()` could remove a
different `Item` to the picked `Item`, allowing an `Item` in the list to
be picked and placed more than once.

This happens because `Item.__eq__` only compares the item's `.name` and
`.player`, and `list.remove()` compares by equality, meaning it can
remove a different, but equal, instance from the list.

This results in `old_location.item` not being cleared, so
`old_location.item` and `new_location.item` would refer to the same
item.

* Core: Process all player files before reporting errors (#4039)

* Process all player files before reporting errors

Full tracebacks will still be in the console and in the logs, but this creates a relatively compact summary at the bottom.

* Include full typename in output

* Update module access and address style comments

* Annotate variables

* multi-errors: Revert to while loop

* Core: Handle each roll in its own try-catch

* multi-errors: Updated style and comments

* Undo accidental index change

* multi-errors: fix last remaining ref to erargs

* Docs: explicitly document why 2^53-1 is the max size, not ^31 or ^63 (#5717)

* explicitly document why 2^53-1 is the max size, not ^31 or ^63

* explicitly recommend 32-bit ids

* make description correct by explicitly mentioning and linking to a description of 'safe'

* Paint: Add manifest (#5778)

* Paint: Implement New Game

* Add docstring

* Remove unnecessary self.multiworld references

* Implement start_inventory_from_pool

* Convert logic to use LogicMixin

* Add location_exists_with_options function to deduplicate code

* Simplify starting tool creation

* Add Paint to supported games list

* Increment version to 0.4.1

* Update docs to include color selection features

* Fix world attribute definitions

* Fix linting errors

* De-duplicate lists of traps

* Move LogicMixin to __init__.py

* 0.5.0 features - adjustable canvas size increment, updated similarity metric

* Fix OptionError formatting

* Create OptionError when generating single-player game with error-prone settings

* Increment version to 0.5.1

* Update CODEOWNERS

* Update documentation for 0.5.2 client changes

* Simplify region creation

* Add comments describing logic

* Remove unnecessary f-strings

* Remove unused import

* Refactor rules to location class

* Remove unnecessary self.multiworld references

* Update logic to correctly match client-side item caps

* Paint: Add manifest

---------

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

* APQuest: Fix import shadowing issue (#5769)

* Fix import shadowing issue

* another comment

* Core: allow abstract world classes (#5468)

* Docs: Make image path in contributing absolute (#5790)

* Core: Make .apworlds importable using importlib (without force-importing them first) (#5734)

* Make apworlds importable in general

* move it to a probably more appropriate place?

* oops

* PyCharm: Fix name of apworld builder run config (#5824)

* rename the apworld builder run config

* Update Build APWorlds.run.xml

---------

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

* Multiserver: remove dead code (#5831)

* Core: replace the eval in OptionsCreator.py (#5828)

* Satisfactory: Fix typo in GoalSelection possible values description comment (#5826)

* WebHost: Fix world sorting in /tutorial/ (#5785)

* customserver: don't set last_activity that will be overwritten later (#5844)

* Factorio: fix inverted condition in victory requirements (#5647)

* The Messenger: Fix lambda capture issue in add_closed_portal_reqs (#5816)

* Super Mario Land 2: Fix Goal Logic (#5781)

* TUNIC: Fix region for the grass by the West Garden portal (#5784)

* Core: Change image link to relative (#5802)

* Shapez: Change image links to relative (#5803)

* Noita: Fix filling Shop Item locations without updating item.location (#5840)

In single-player multiworlds with small item pools, Noita was manually
placing some items into Shop Item locations, but was only setting
location.item, and not also setting item.location so that the item and
location refer to one another.

This has been fixed by using the MultiWorld.push_item() helper method to
place the items instead of manually placing the items.

* Core: Add `.apignore` format to not include files in APWorld Builder (#5779)

* Timespinner: Align Lantern Logic (#5562)

* FFMQ: Update link to upstream rando (#5838)

* SC2: fix supreme logic hole (#5768)

* sc2: Fixing a discrepancy between slot data and logic
where story tech would not be granted for supreme if zerg was not a selected race.

* sc2: Fixed an issue where Kinetic Blast was not listed as a vanilla Kerrigan ability

* sc2: Fixing some functions that could force Kerrigan items into the pool when playing Kerriganless

* sc2: excluding zerg excludes hots for vanilla-like mission order
* Preprocessing options
* Moving general empty selection handling to option preprocessing
* Adding a unit test for empty race/campaign selection

* sc2: Properly handling non-raceswapped campaigns when excluding campaigns based on race exclusions

* sc2: Adding an explicit error message if a user excludes all missions in a way with no obvious resolution

* Core: fix bug with missing help text (#5632)

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

* APQuest: Explain game_name and supports_uri more in components.py (#5759)

* APQuest: Explain game_name and supports_uri more in components.py

Hopefully this can lead to more games implementing support for the "click on slot name -> everything launches automatically" functionality.

* Update components.py

* Update components.py

* LADX: no pickle (#5849)

* Core: Bump version from 0.6.6 to 0.6.7 (#5851)

* Docs: add dev FAQ for 'should I start with the APWorld or the client?' (#5716)

* Docs: add dev FAQ for 'should I start with the APWorld or the client?'

* fix indentation of bullet point wrapped lines

* use %20 for spaces in links

* link to adding games.md and add #ap-modding-help to adding games.md

* make APQuest a link

* also linkify 'run a local server'

* reword the 'judging client is easier' point to reflect a broader range of first-timers

* move the 'not 100%' point into the introductory sentences, and tweak related wording

* correct link

* Docs: define and explain the trade-off of "local" vs "remote" items (#5718)

* first draft

* second draft

* fix indentation of bullet point wrapped lines

* move quote

* explicitly discuss all three item handling flags, since the start inventory one is easily forgotten

* rewrite to avoid a 'debate between two camps' framing

* tweak the wording to allow for the possibility that some games can 'just' do both local and remote items without exposing this detail to the player

* relative links

* Docs: explicitly document why get_filler_item_name may return non-IC.filler items, despite its name (#5747)

* Docs: explicitly document why get_filler_item_name may return non-IC.filler items, despite its name

* reword

* apply Scipio's rewordings

* Update worlds/AutoWorld.py

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

* any

---------

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

* Docs: Show that Data is optional for bounces #5794

* Core: Add Pymem to requirements.txt (#5855)

As to not break custom worlds when Jak & Daxter moves from PyMem to PyMemoryEditor

* Super Mario 64: Add painting passability as items (#5294)

* LADX: fix improved additional warps (#5858)

* ModuleUpdate: Add explicit error when above max supported version (#5868)

* Update messages and check

* Make "official" error message show up for 3.14

* Core: Give clearer error message for invalid .apworld zip (#5871)

* Update messages and check

* Make "official" error message show up for 3.14

* Add zip error handling

* Small cleanups

* KH2: Deathlink and ingame item popups (#5206)

---------

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

* Doc: WebHost: update readme and style guide (#4853)

* Doc: WebHost living standard

* Docs: update style guide for HTML, CSS and JS

* Unblame phar

* Too many words

* The better choice

* More rules

* Removed too much

* Docs: add recommendations for script defer and async

* Docs: Explain building a single world with Build APWorlds component (#5879)

* Doc: Reword required python version for AP (#5822)

Many many people have read this and then installed 3.14, so it clearly needs rewording.

* FFMQ: Fix Collect/Remove Asymmetry (#5253)

* TLOZ: Move completion condition to be before set_rules is complete (#5391)

* AHIT: Add option to shuffle Battle of the Birds director tokens and time bonus pickups (#5400)

* [WebHost Docs] Updated and clarified new tracker endpoitns and misc fixes. (#5475)

* Adding json/python to codeblocks to make it pretty, fixed spelling mistakes, swapped uuids for suuids in the examples, and expanded on /tracker and /static_tracker, and /slot_data_tracker giving the details of the API calls endpoints

* Add in API Cacheing timers and related text blurb

* updated for merged edit to /static_tracker

* Removed timer from /datapackage/checksum

* Docs (DS3): Fix the documentation for the Simple Early Bosses option  (#5856)

* Docs (DS3): Fix the documentation for the Simple Early Bosses option

This option changed in the client a while ago, but we forgot to update
the server.

* Update Options.py

* Docs: KH1 more troubleshooting and clearer nomenclature (#5872)

* updated kh1 docs

* second pass

* tweak

* Update worlds/kh1/docs/kh1_en.md

Co-authored-by: Flit <8645405+FlitPix@users.noreply.github.com>

* Update worlds/kh1/docs/kh1_en.md

Co-authored-by: Flit <8645405+FlitPix@users.noreply.github.com>

* Update worlds/kh1/docs/kh1_en.md

Co-authored-by: Flit <8645405+FlitPix@users.noreply.github.com>

* semicolon

---------

Co-authored-by: Flit <8645405+FlitPix@users.noreply.github.com>

* Fix, OptionsCreator: export options on Linux (#5774)

* Core/Utils: Use correct env for save_filename from AppImage

* OptionsCreator: run export on a separate thread

Running a blocking call from kivy misbehaves on Linux.
This also changes '*.yaml' to '.yaml' for Utils.save_filename,
which is the correct way to call it.

* Core/Utils: destroy Tk root after save/open_filename

This allows using those functions from multiple threads.
Note that pure Tk apps should not use those functions from Utils.

* OptionsCreator: show snack when save_filename fails

* OptionsCreator: disable window while exporting

* OptionsCreator: fixing typing of added stuff

* Core: Fix some typing errors (#4995)

* Fix some type errors in Generate and Options

* Add type parameter to new hint and fix whitespace errors

* Update identifier style

* Jak and Daxter: Replace Pymem, Add Linux Support (#5850)

* Replace pymem with PyMemoryEditor (nonworking)

* Add back pymem for faster windows address searching.

* Replace other uses of pymem, parameterize executable names.

* Updated to add linux and potential MacOS support to launching gk and … (#84)

* Updated to add linux and potential MacOS support to launching gk and goalc. Still needs tested on MacOS.

* Switched to using x-terminal-emulator instead of trying to find gnome-terminal or konsole

Made argument building for suprocessing goalc easier to read

Fixed OS X support to use osascript instead of attempting to run Terminal directly

* Changed Terminal usage to use Archipelago's Launh utility, which handles terminal launching for me for both linux and OS X

* Added try/except to re-connect the memory process. The process file/id changes over time on linux, and this works to re-connect without needing to restart

* Removed Unsetting  env var in favor of reporting to the source authors

* Putting PyMemoryEditor local. (#85)

* Putting PyMemoryEditor local

---------

Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>

* Fixing minor problems (#87)

* Refactor away circular launcher import.

* Push latest PyMemoryEditor scan utility (#91)

Co-authored-by: Louis M <Louis M>

* Remove Pymem, rely solely on PyMemoryEditor. Add konsole support.

* Jak 1: Remove vendored copy of PME, update imports, requirements, and manifest.

* Jak 1: Prevent server connect until game is properly setup.

* Jak 1: reduce REPL/Compiler confusion, small updates to setup guide.

* Write hack for Konsole on AppImage to avoid OpenSSL error.

* Refactor LD_LIBRARY_PATH hack.

* Update worlds/jakanddaxter/agents/memory_reader.py

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

* Update worlds/jakanddaxter/agents/memory_reader.py

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

---------

Co-authored-by: Morgan <morgan07kelley@gmail.com>
Co-authored-by: Louis M <prog@tioui.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* Docs: add spanish language for MLSS (#5172)

* Docs: add spanish language for SM64

* Docs: add spanish language for MLSS

* Update worlds/mlss/docs/setup_es.md

Co-authored-by: PantoUwUr <99690102+PantoUwUr@users.noreply.github.com>

* Update worlds/mlss/docs/es_Mario & Luigi Superstar Saga.md

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

---------

Co-authored-by: PantoUwUr <99690102+PantoUwUr@users.noreply.github.com>
Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>

* Docs, SM64: Remove outdated FAQ item (#5887)

It is no longer possible to connect to a multiworld game on a version of the client with this bug, as all versions with this bug report AP v0.3.5 or less

* TWW: Support launcher command line arguments (#5806)

* Support launcher command line arguments

* Use `launch` instead of `launch_subprocess`

* Remove old runner code

* Satisfactory: Update Universal Tracker Method for FinalElevatorPhase Option (#5812)

* MLSS: Add Manifest + Minor Bugfixes (#5728)

* Remove outdated header change for ROM verification

* Update Connections to be compatible with python ver. 3.8

* Update inno_setup.iss

* Update inno_setup.iss

* Merge branch 'main' of https://github.com/jamesbrq/ArchipelagoMainMLSS

* Add Manifest + Minor Bugfixes

* Even further safeguards for Oho Oasis Temples

* Update basepatch.bsdiff

* KH2: Add a new "CasualBounties" Setting (#4877)

* KH2: casual bounties option

* Casual Bounty: Adjust level bounty logic to correspond with max level check setting

* Bugfix: We have one less possible bounty with corresponding level bounty logic

* Casual Bounty: Move option to better spot

* Bugfix: Prevent possible .remove() crash

* Revert "Bugfix: We have one less possible bounty with corresponding level bounty logic"

This reverts commit 3c929e00db910a176d9d882b6cc08494417177d2.

* Bugfix: Typo in conditional

* Casual Bounties: Remove Scar, add MCP

I knew I was missing one second visit fight and Scar shouldn't be there he's a first visit

* Casual Bounties: Add some clarity to the CasualBounty setting

* Docs: Update docs to reflect new CasualBounty setting

* KH2: Add bounty locations as location groups

Feedback on this needed, trying to do this to make it work with the code above the additions made it so the game generated 1 less item than locations, despite linking properly
It does function as intended though

* KH2: Update docs

* KH2: Add SuperBosses, Cups, AtlanticaToggle and SummonLevelLocationToggle to slot data (#5708)

* Add SuperBosses, Cups and AtlanticaToggle

* Add SummonLevelLocationToggle

* Core: Add SDL_MOUSE_FOCUS_CLICKTHROUGH=1 environment variable to kvui (#5804)

This variable should fix the 'double click' required when trying to interact with buttons on an unfocused window

* SC2: Bump protobuf from 6.31.1 to 6.33.5 in /worlds/_sc2common (#5890)

Bumps [protobuf](https://github.com/protocolbuffers/protobuf) from 6.31.1 to 6.33.5.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)

---
updated-dependencies:
- dependency-name: protobuf
  dependency-version: 6.33.5
  dependency-type: direct:production
...

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

* Core, Tests: allow Archipelago items in all worlds (#5893)

* Core: Add rule builder (#5048)

* initial commit of rules engine

* implement most of the stuff

* add docs and fill out rest of the functionality

* add in explain functions

* dedupe items and add more docs

* pr feedback and optimization updates

* Self is not in typing on 3.10

* fix test

* Update docs/rule builder.md

Co-authored-by: BadMagic100 <dempsey.sean@outlook.com>

* pr feedback

* love it when CI gives me different results than local

* add composition with bitwise and and or

* strongly typed option filtering

* skip resolving location parent region

* update docs

* update typing and add decorator

* add string explains

* move simplify code to world

* add wrapper rule

* I may need to abandon the generic typing

* missing space for faris

* fix hashing for resolved rules

* thank u typing extensions ilu

* remove bad cacheable check

* add decorator to assign hash and rule name

* more type crimes...

* region access rules are now cached

* break compatibility so new features work

* update docs

* replace decorators with __init_subclass__

* ok now the frozen dataclass is automatic

* one more type fix for the road

* small fixes and caching tests

* play nicer with tests

* ok actually fix the tests

* add item_mapping for faris

* add more state helpers as rules

* fix has from list rules

* fix can reach location caching and add set completion condition

* fix can reach entrance caching

* implement HasGroup and HasGroupUnique

* add more tests and fix some bugs

* Add name arg to create_entrance

Co-authored-by: roseasromeo <11944660+roseasromeo@users.noreply.github.com>

* fix json dumping option filters

* restructure and test serialization

* add prop to disable caching

* switch to __call__ and revert access_rule changes

* update docs and make edge cases match

* ruff has lured me into a false sense of security

* also unused

* fix disabling caching

* move filter function to filter class

* add more docs

* tests for explain functions

* Update docs/rule builder.md

Co-authored-by: roseasromeo <11944660+roseasromeo@users.noreply.github.com>

* chore: Strip out uses of TYPE_CHECKING as much as possible

* chore: add empty webworld for test

* chore: optimize rule evaluations

* remove getattr from hot code paths

* testing new cache flags

* only clear cache for rules cached as false in collect

* update test for new behaviour

* do not have rules inherit from each other

* update docs on caching

* fix name of attribute

* make explain messages more colorful

* fix issue with combining rules with different options

* add convenience functions for filtering

* use an operator with higher precedence

* name conflicts less with optionfilter

* move simplify and instance caching code

* update docs

* kill resolve_rule

* kill true_rule and false_rule

* move helpers to base classes

* update docs

* I really should finish all of my

* fix test

* rename mixin

* fix typos

* refactor rule builder into folder for better imports

* update docs

* do not dupe collectionrule

* docs review feedback

* missed a file

* remove rule_caching_enabled from base World

* update docs on caching

* shuffle around some docs

* use option instead of option.value

* add in operator and more testing

* rm World = object

* test fixes

* move cache to logic mixin

* keep test rule builder world out of global registry

* todone

* call register_dependencies automatically

* move register deps call to call_single

* add filtered_resolution

* allow bool opts on filters

* fix serialization tests

* allow reverse operations

---------

Co-authored-by: BadMagic100 <dempsey.sean@outlook.com>
Co-authored-by: roseasromeo <11944660+roseasromeo@users.noreply.github.com>

* Core: Throw OptionError for option type Toggle in certain scenarios (#5874)

* Throw OptionError for option type Toggle in certain scenarios

* Adding missing space to Options.py

Co-authored-by: Katelyn Gigante <clockwork.singularity@gmail.com>

---------

Co-authored-by: Katelyn Gigante <clockwork.singularity@gmail.com>

* Utils: Improvements to visualize_regions for debugging GER usage (#4685)

* Improvements to visualize_regions for debugging GER usage

- allow the user to pass in a dict[int, int] to visualize_regions that maps Entrance.randomization_group to a color in RGB form. This allows for better visualization of which dangling entrances should match, or which matching groups are not being correctly respected.
- do full region visualization for unreached regions, so that entrances that could connect to new regions can be visualized.
- visualize unconnected entrances on regions, in addition to connected and unconnected exits, so that available ER targets can be visualized as well

* Add detail_disconnected_regions parameter to visualize_regions

* Rename detail_disconnected_regions to detail_other_regions for consistency

* Add auto_assign_colors param to visualize_regions

* Make auto assignment of entrance colors deterministic

* Assume show_other_regions is true if detail_other_regions is true

* Remove unused random import

* whitespace adjustments

* Move overflow check to prevent potential infinite loop

It wasn't exactly likely, as the user would have had to manually define all 4096 colors and then need an additional color on top of that, but accounting for that kind of nonsense is easy enough in this case.

* positive condition

---------

Co-authored-by: CodeGorilla <3672561+Ars-Ignis@users.noreply.github.com>

* APQuest: Improve the auto-generated .gitignore for data/sounds (#5670)

I didn't quite think this through: In this specific case, you want the gitignore to also ignore itself, since it itself is an auto-generated file.

* Webhost: Fix defaults for NamedRange and TextChoice (#5139)

* TUNIC: Depriority for some items (#5589)

* Stardew Valley: 7.x.x - The Jojapocalypse Update (#5432)

Major Content update for Stardew Valley

### Features
- New BundleRandomization Value: Meme Bundles - Over 100 custom bundles, designed to be jokes, references, trolls, etc
- New Setting: Bundles Per Room modifier
- New Setting: Backpack Size
- New Setting: Secretsanity - Checks for triggering easter eggs and secrets
- New Setting: Moviesanity - Checks for watching movies and sharing snacks with Villagers
- New Setting: Eatsanity - Checks for eating items
- New Setting: Hatsanity - Checks for wearing Hats
- New Setting: Start Without - Allows you to select any combination of various "starting" items, that you will actually not start with. Notably, tools, backpack slots, Day5 unlocks, etc.
- New Setting: Allowed Filler Items - Allows you to customize the filler items you'll get
- New Setting: Endgame Locations - Checks for various expensive endgame tasks and purchases
- New Shipsanity value: Crops and Fish
- New Settings: Jojapocalypse and settings to customize it
- Bundle Plando: Replaced with BundleWhitelist and BundleBlacklist, for more customization freedom
- Added a couple of Host.yaml settings to help hosts allow or ban specific difficult settings that could cause problems if the people don't know what they are signing up for.

Plus a truckload of improvements on the mod side, not seen in this PR.

### Removed features
- Integration for Stardew Valley Expanded. It is simply disabled, the code is all still there, but I'm extremely tired of providing tech support for it, plus Stardew Valley 1.7 was announced and that will break it again, so I'm done. When a maintainer steps up, it can be re-enabled.

* CommonClient: actually close the UI on /exit (#5860)

* Aquaria: Adding a lots of options and one check (#4414)

First, there is one check that has been added. The location is "Sitting on the throne before the cathedral with the crest on it" and the item is the "Opening of the Cathedral door". In Vanilla, sitting on the crested throne open the door to the cathedral.

Now for the options added:
- infinite_hot_soup: Make the game impossible to run out of hot soup once you got it as an item.
- open_body_tongue: The body level (the ending level) is blocked by a big tongue. This option remove the tongue without having to go to the Sunken City (where it is normally removed)
- maximum_ingredient_amount: In the Vanilla game, the ingredients and dishes count is limited to 8. This option make this count configurable.
- skip_final_boss_3rd_form: The final boss has 5 forms. The 3rd one is long and not really challenging. So, this option is used to skip this form.
- save_healing: Normally, the save points heal the player. There is also beds in the game that can heal the player. This option removed the healing from the save point and forced the player to heal using beds (or healing monsters or healing items)
- no_progression_(whatever): Make this "whatever" (generally regions) exempt of progression items. Note that this is not using the exclusion-feature of AP, as these locations may still contain 'Useful' items. It is only guaranteed that no 'Progression' and 'Progression_Skip_Balancing'-items will appear in these regions. This option does not remove locations. I did not exclude or completely remove the regions because I don't have enough location to put every useful item in the game.

There is also 2 new goals:
- Four gods: The goal is obtained when the player beat the four gods (this is something like half the game). Useful to have quicker runs
- Gods and Creator: Like the Four Gods run, but when the four gods are obtained, that open a transportation turtle to the final boss (the Creator) and the player have to beat the final boss to obtain the goal.

Note that for the 2 new goals, all locations from the last 4 areas (Abyss, Frozen Veil, Sunken City and The Body) are completely removed (not just excluded).

* Launcher: generate templates for option presets (#5062)

* Doc: running from source and building on Linux (#5881)

* CI: make the comment in 'Build' more verbose

* Doc: add Linux running from source and build instructions

* Doc: fix name in running from source on Linux

* Update docs/running from source.md

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

---------

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

* core: If a user specifies --no-gui, don't show GUI messageboxes (#5514)

* move `gui_enabled` to Utils

* docstring

* If a user specified no-gui, don't use GUI messageboxes

---------

Co-authored-by: alwaysintreble <mmmcheese158@gmail.com>

* Launcher: run init_logging before importing from worlds (#5402)

* WebHost: Better document config loading fallback (#5948)

* change functionality to follow comment

* revert code change and explicitly document intent

* Celeste (Open World): v1.0.7 Logic Fixes (#5827)

### Logic Fixes:
- Old Site A
  - Logic now allows for going backwards from the `Awake` checkpoint
- Golden Ridge A
  - `Golden Strawberry` now requires `Moving Platforms` as it should
- Mirror Temple A
  - `Room b-01c Strawberry` and `Room b-10 Strawberry` no longer erroneously require `Red Boosters`
  - `Golden Strawberry` now requires `Dash Refills` as it should
- Reflection A
  - Logic now allows for going backwards from the `Reflection` checkpoint
- Reflection B
  - Logic now allows for going backwards from the `Reflection` checkpoint
- Farewell
  - `Power Source Key 2` now logically requires `Dash Switches` and `Double Dash Refills` as it should

* Rule Builder: Make region.connect and add_event support rule builder (#5933)

* make region.connect and add_event support rule builder

* fix test

* oops fix

* update tests and typing

* rm unused

* Options: support "random" and variations for OptionSet with defined valid_keys (#4418)

* seemingly works? needs testing

* attempt docs update

* move to verify resolution (keep?)

* account for no valid keys and "random" being passed

* Update advanced_settings_en.md

* Update Options.py

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

* Update Options.py

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

* unify random handling between range and set

* Update Options.py

* Update Options.py

* Update Options.py

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

* super is weird

* fix item/location

* remove groups from options

* unittest

* pep8

* Update Options.py

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

* Update Options.py

---------

Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>

* Core: Add missing args to rule builder inits (#5912)

* add filtered_resolution to inits

* update from_dict calls too

* Saving Princess: Fix each slot sharing the same `music_table` (#5952)

`music_table` was initialized on the `SavingPrincessWorld` *class*, so
was being shared by each Saving Princess slot in the multiworld.

This has been fixed by initializing the `music_table` attribute on each
`SavingPrincessWorld` *instance* in `generate_early()` instead.

* HK: Fix cached filler item names persisting between generations (#5950)

HK's `get_filler_item_name` was writing lists into a ClassVar[dict] on
the `HKWorld` class. This dict would not be cleaned out between
generations on the same process, leaving behind cached data from
previous generations.

I confirmed the issue when running single-slot generations on a local
webhost, where `self.cached_filler_items` could be already populated
during `HKWorld.__init__()`.

This has been fixed by putting an individual cache list on each HKWorld
instance, instead of a shared cached on the class.

* Factorio: Update Download Image in guides (#5953)

* Docs: Replace the 'true filler' weasel words in adding games.md's mention of get_filler_item_name() (#5958)

* replace the 'true filler' weasel words with a clear term defined by the linked method's docstring

* Update docs/adding games.md

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

---------

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

* Core: Better scaling explicit indirect conditions (#4582)

* Core: Better scaling explicit indirect conditions

When the number of connections to retry was large and `queue` was large
`new_entrance not in queue` would get slow.

For the average supported world, the difference this change makes is
negligible.

For a game like Blasphemous, with a lot of explicit indirect conditions,
generation of 10 template Blasphemous yamls with
`--skip_output --seed 1` and progression balancing disabled went from
19.0s to 17.9s (5.9% reduction in generation duration).

* Create a new variable for the new set created from the intersection

* WebHost: memory leak fixes (#5966)

* ALTTP: remove `world: MultiWorld` and typing (#5974)

* WebHost: Add CORS headers to API Endpoints (#5777)

* Return new state man (Vi's note: I have chosen not to change this title) (#5978)

* The Messenger: minor maintenance (#5965)

* CI: upgrade InnoSetup to 6.7.0 (#5979)

* MultiServer: don't keep multidata alive for race_mode (#5980)

* Fix(undertale): prevent massive bounce msg spam for position updates (#5990)

* fix(undertale): prevent massive bounce msg spam for position updates

* make sure player is removed on leaving / timing out

* do not check for tags: online, as bounce evaluation is or'd

* Core: use typing_extensions `deprecated` (#5989)

* Undertale: Use check_locations helper to avoid redundant sends (#5993)

* Core: allow async def functions as commands (#5859)

* Core: introduce finalize_multiworld and pre_output stages (#5700)

Co-authored-by: Ishigh1 <bonjour940@yahoo.fr>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>

* MultiServer: graceful shutdown for ctrl+c and sigterm (#5996)

* OptionCreator: 0.6.6 reported issues (#5949)

* MultiServer: fix Windows compatibility (#6010)

* Docs: Better document state.locations_checked (#6018)

* MM2: Fix /request command help (#5805)

* MLSS: Fix client auto-connect bug + Client cleanup (#5895)

* FF1: Added manifest (#5911)

* OoT: change setup-guides to have 2.10 be the minimum version recommended (#5799)

* Pokemon Emerald: Fix rare fuzzer errors (#5914)

* Shivers: Adds Manifest File (#5918)

* OOT: UTC deprecation warning fix (#5983)

* Saving Princess: add manifest (#6008)

* Lingo: Add archipelago.json (#6017)

* Mega Man 3: Implement new game (#5237)

* Stardew Valley: morel doesn't spawn in fall secret woods (#6003)

* Docs: Don't serve non-static files in example_nginx.conf (#5971)

* Docs: Don't serve non-static files in example_nginx.conf

`try_files` will serve the file as long as it exists, which means I could `GET /autolauncher.py` and be served the file.

* Use root instead of alias, add route for favicon

* Update deploy/example_nginx.conf

* Lingo: Fix logic for Near Eight Painting (#6014)

* The Messenger: Universal Tracker support (#5344)

* Test: Defaults for Options test (#5428)

* Muse Dash: Adds 3 new music packs plus fixes being able to roll songs without a legal way to obtain them (#5698)

* Fix missing } in example_nginx.conf (#6027)

* Pokemon Emerald: Dexsanity Encounter Type Option (#6016)



---------

Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>

* Dark Souls 3: Update location descriptions for Red Tearstone Ring and Hood of Prayer (#5602)

RTSR's description was incorrect and Hood of Prayer was missing its description

* TUNIC: Refactor entrance hint generation (#5620)

* Refactor hint generation

* Remove debug print

* Early out per qwint's comment

* WebHost: Update UTC datetime usage (timezone-naive) (#4906)

* Saving Princess: Security fixes for issues detected by Bandit (#6013)

* Saving Princess: absolute paths on suprocess.run

* Saving Princess: more error handling for downloads

* Saving Princess: rework launch_command setting

Apparently subprocess.Popen requires a list for args instead of a string everywhere but in Windows, so the change was preventing the game from running on Linux. Additionally, the game is now launched using absolute paths.

* Saving Princess: prevent bandit warnings

* Saving Princess: remove unnecessary compare_digest

* Saving Princess: fix Linux paths by using which

* Saving Princess: rename launch command setting

Previously, launch_command held a string. Now it holds a list of strings. Additionally, the defaults have changed.
To prevent the wrong type from being used, the setting has been renamed, effectively abandoning the original launch_command setting.

* Saving Princess: fix Linux default command return type

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: Add references to running from source (#6022)

* Docs: Update plando_en.md with item group example (#6024)

* Update plando_en.md with item group example

Added example YAML block for item placement using an item group, including recommendation of use of `true` value with item groups to avoid unintended behaviors, with an example of the same.  Adjustments more than welcome!

* Made clarifying revision to description of Generator handling of item groups

Clarified the behavior of the Generator regarding item creation when item groups are used in plando.

* Tests: fix race in test hosting shutdown (#5987)

* WebHost: add stats show cli command (#5995)

Usage: flask -A "WebHost:get_app()" stats show

Currently only shows sum and top10 biggest games packages.

* LttP: add manifest (#6005)

* RoR2: Seekers of the Storm (SOTS) DLC Support (#5569)

* Core: Make Generic ER only consider the current world in isolation (#4680)

* DS3: Use remaining_fill instead of custom fill (#4397)


---------

Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>

* Docs: Reword 'could be generated from json' to avoid encouraging slow world loads (#5960)

* KH2: Fix nondeterministic generation when CasualBounties is enabled (#5967)

When CasualBounties was enabled, the location names in
`exclusion_table["HitlistCasual"]` would be iterated into
`self.random_super_boss_list` in `generate_early`, but
`exclusion_table["HitlistCasual"]` was a `set`, so its iteration order
would vary on each generation, even with same seed.

Random location names would be picked from `self.random_super_boss_list`
to place Bounty items at, so different locations could be picked on each
generation with the same seed.

`exclusion_table["Hitlist"]` is similar and was already a `list`,
avoiding the issue of nondeterministic iteration order, so
`exclusion_table["HitlistCasual"]` has been changed to a `list` to
match.

* Core: Update .gitignore to include an exe setup.py downloads (#6031)

* CommonClient: Add explicit message for connection timeout (#5842)

* Change timeout and add timeout-specific message

* Revert open_timeout

* Webhost: port reuse fix & configurable max room timeout (#6033)

* WebHost: make autolauncher max room timeout configurable

* WebHost: launch rooms with assigned port first

* Factorio: only show fluid boxes on assembling machine 1 when the selected recipe needs fluids (#5412)

* Core: other resources guide (#6043)

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

* Rule Builder: Fix count resolution when Oring HasAnyCount (#6048)

* Muse Dash: Add support for Wuthering Waves Pioneer Podcast and Ay-Aye Horse (#6071)

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

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

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

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

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

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

* Launcher: Add konsole to terminal list and rework launch dialog (#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 (#6078)

* Pokemon Emerald: Fix Latios KeyError (#6056)

* Muse Dash: Fix nondeterministic generation with include_songs (#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 (#6059)

* Stardew valley: Four small fixes (#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 (#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 (#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 (#6025)

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

Solved indentation error to return to intended functionality

* lufia2ac: update CollectionRule import (#5936)

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

* Remove space before comma

* Factorio authors update

* Simplify template

* APQuest: Various fixes (#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 (#5772)

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

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

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

* Rule Builder: Add field resolvers (#5919)

* CI: set permissions, update and pin actions, CodeQL for actions (#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 (#5889)

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

* naming

* APQuest: Tap to move (#6082)

* Tap to move

* inputs

* cleanup

* oops

* MM3: Bump world version (#6088)

* Pokemon Emerald: Bump version (#6083)

* APQuest: Fix focus issues (#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 (#6089)

* Update setup_en.md

* Update setup_de.md

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

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

* Stardew Valley: 0.6.7 Day 1 fixes (#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` (#5973)

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

* WebHost: 2025 to 2026 (#6094)

* DKC3: Delete DKC3 (#6097)

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

* Factorio: Improve English instructions (#5306)

* WebHost: Fix: strict suuid converter (#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 (#6057)

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

* 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>

* 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>

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

* 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>

* 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

* 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

* 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.

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

* Rule Builder: Fix rule hash collisions (#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 (#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 (#5618)

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

* 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>

* 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

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

* 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"]`.

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

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

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

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

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

* add more docs for option filters

* reword the whole things

* style guide

* 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>

* Jak1: yamlless UT support (#6066)

* KH2: Update setup_en.md (#6129)

* Docs: Rule Builder Filtered Example Fix (#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 #5956

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

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

* Docs: Add missing space to plando doc #6060

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

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

* add ebf5 button, world launches without crashing

this is pretty messy and a text client doesn't actually launch, but hey at least the world isn't crashing on start up now. though honestly if the reason i wasn't getting a text client to open wasn't because the world was instantly crashing, i might undo the world changes. i don't really want to touch the world right now, i just wanna get a text client opening.

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

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

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


---------

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

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

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

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


---------

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

* 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>

* Blasphemous: Increase logic performance (#4585)


---------

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

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

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


---------

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

* Rule Builder: Implement AtLeast (#6085)



---------

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

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

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

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

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

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

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



---------

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

* EBF5 client can now be launched

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

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

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

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

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

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

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

* EBF5: remove for loops inside class def, very small client changes

i made these changes a while ago but im commiting them now because i have to get TCP communication implemented next before i can really continue and i want that stuff to be in their own commits

* remove whitespace ruff complained about

* ebf5: add incomplete async socket, minor cleanup

the async socket is gonna need more changes to actually function as part of the ebf5 client

* ebf5: integrate AsyncSocket into the client and add polished connect/disconnect ebf5 commands

* ebf5: delete test cmd and comment unimplemented cmd

* ebf5: improve wording slightly

* ebf5: fix `Task` leak/memory leak

* ebf5: microscopic text changes

* ebf5: bandaid fix for using the client on windows

there's probably a better way to do this but this bandaid fix works fine and I'm running out of time.

also the logging thing is unrelated

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: PinkSwitch <52474902+PinkSwitch@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>
Co-authored-by: Benjamin S Wolf <jokeserver@gmail.com>
Co-authored-by: Ixrec <ericrhitchcock@gmail.com>
Co-authored-by: MarioManTAW <mariomantaw@gmail.com>
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Ian Robinson <drtchops@users.noreply.github.com>
Co-authored-by: Duck <31627079+duckboycool@users.noreply.github.com>
Co-authored-by: Benny D <78334662+benny-dreamly@users.noreply.github.com>
Co-authored-by: James White <james_white_d@hotmail.com>
Co-authored-by: Rob B <computerguy440+gh@gmail.com>
Co-authored-by: Remy Jette <remy@remyjette.com>
Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com>
Co-authored-by: lepideble <147614625+lepideble@users.noreply.github.com>
Co-authored-by: Scrungip <95324612+Scrungip@users.noreply.github.com>
Co-authored-by: Scipio Wright <scipiowright@gmail.com>
Co-authored-by: Colin <32756996+TriumphantBass@users.noreply.github.com>
Co-authored-by: wildham <64616385+wildham0@users.noreply.github.com>
Co-authored-by: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: qwint <qwint.42@gmail.com>
Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
Co-authored-by: Will Morrow <duh102@duh102.org>
Co-authored-by: threeandthreee <a.l.nordstrom@gmail.com>
Co-authored-by: JaredWeakStrike <96694163+JaredWeakStrike@users.noreply.github.com>
Co-authored-by: Delilah <lindsaydiane@gmail.com>
Co-authored-by: PlatanoBailando <13842799+cjmang@users.noreply.github.com>
Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Co-authored-by: Rosalie <61372066+Rosalie-A@users.noreply.github.com>
Co-authored-by: CookieCat <81494827+CookieCat45@users.noreply.github.com>
Co-authored-by: Jacob Lewis <JacobMLewis@Live.com>
Co-authored-by: Natalie Weizenbaum <nex342@gmail.com>
Co-authored-by: Omnises Nihilis <OmnisGamers@gmail.com>
Co-authored-by: Flit <8645405+FlitPix@users.noreply.github.com>
Co-authored-by: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com>
Co-authored-by: Morgan <morgan07kelley@gmail.com>
Co-authored-by: Louis M <prog@tioui.com>
Co-authored-by: GreenMarco <71452195+GreenMarco@users.noreply.github.com>
Co-authored-by: PantoUwUr <99690102+PantoUwUr@users.noreply.github.com>
Co-authored-by: RoobyRoo <thegreenrobby@gmail.com>
Co-authored-by: soopercool101 <soopercoolstages@gmail.com>
Co-authored-by: Jonathan Tan <tanjo3@users.noreply.github.com>
Co-authored-by: mechanicset <22198918+mechanicset@users.noreply.github.com>
Co-authored-by: jamesbrq <jamesbrq@gmail.com>
Co-authored-by: PIEisFANTASTIC <49802408+PIEisFANTASTIC@users.noreply.github.com>
Co-authored-by: ScorelessPine <scorelesspine@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: BadMagic100 <dempsey.sean@outlook.com>
Co-authored-by: roseasromeo <11944660+roseasromeo@users.noreply.github.com>
Co-authored-by: earthor1 <earthor1@gmail.com>
Co-authored-by: Katelyn Gigante <clockwork.singularity@gmail.com>
Co-authored-by: CodeGorilla <just.a.smith@att.net>
Co-authored-by: CodeGorilla <3672561+Ars-Ignis@users.noreply.github.com>
Co-authored-by: josephwhite <22449090+josephwhite@users.noreply.github.com>
Co-authored-by: agilbert1412 <alexgilbert@yahoo.com>
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: alwaysintreble <mmmcheese158@gmail.com>
Co-authored-by: PoryGone <98504756+PoryGone@users.noreply.github.com>
Co-authored-by: BroOtti <35010852+BroOtti@users.noreply.github.com>
Co-authored-by: DrAwesome4333 <22409322+DrAwesome4333@users.noreply.github.com>
Co-authored-by: Chris W <trezc0@gmx.de>
Co-authored-by: Ishigh1 <bonjour940@yahoo.fr>
Co-authored-by: Suyooo <chrspangler@gmx.de>
Co-authored-by: StripesOO7 <54711792+StripesOO7@users.noreply.github.com>
Co-authored-by: Bryce Wilson <gyroscope15@gmail.com>
Co-authored-by: GodlFire <46984098+GodlFire@users.noreply.github.com>
Co-authored-by: LeonarthCG <33758848+LeonarthCG@users.noreply.github.com>
Co-authored-by: Star Rauchenberger <fefferburbia@gmail.com>
Co-authored-by: Noa Aarts <itepastra@gmail.com>
Co-authored-by: Jérémie Bolduc <16137441+Jouramie@users.noreply.github.com>
Co-authored-by: Justus Lind <DeamonHunter@users.noreply.github.com>
Co-authored-by: Goo-Dang <pado879@gmail.com>
Co-authored-by: Matthew Wells <91291346+richarm4@users.noreply.github.com>
Co-authored-by: Gryphonlady <gryphonlady1@gmail.com>
Co-authored-by: Rjosephson <ryandj67@hotmail.com>
Co-authored-by: Emily <35015090+EmilyV99@users.noreply.github.com>
Co-authored-by: Sebastian <127998064+SebaCape@users.noreply.github.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: Jarno <jarnowesthof@gmail.com>
Co-authored-by: EdricY <EdricY@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: sudo-nano <63484662+sudo-nano@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: Sophira <github@theblob.org>
Co-authored-by: River Buizel <4911928+rocket0634@users.noreply.github.com>
Co-authored-by: Sophia Caspe <avi.caspe@gmail.com>
Co-authored-by: Seldom <38388947+Seldom-SE@users.noreply.github.com>
Co-authored-by: Christina <123173340+Paperkoopa@users.noreply.github.com>
Co-authored-by: Ian Robinson <ianronrobinson@gmail.com>
Co-authored-by: Will Morrow <duh102@gmail.com>
Crazycolbster added a commit to Crazycolbster/Archipelago that referenced this pull request Aug 24, 2026
commit 551df23326ddc3a841faf02f294d5a8f947a6a1a
Merge: 52328050d 4910875df
Author: Crazycolbster <colbyhatton@gmail.com>
Date:   Sun Aug 23 18:59:41 2026 -0600

    Merge branch 'main' of https://github.com/ArchipelagoMW/Archipelago into ArchipelagoMW-main

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.noreply.github.com>
Date:   Mon Apr 13 20:17:27 2026 +0000

    WebHost: Fix: strict suuid converter (#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

commit 37d32a10b1a1ae82876d87e2e4ca0fbbd8197abf
Author: sudo-nano <63484662+sudo-nano@users.noreply.github.com>
Date:   Mon Apr 13 02:19:23 2026 -0700

    Factorio: Improve English instructions (#5306)

commit 0ef2ed5b811afcc42de0525260439291ce962359
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Thu Apr 9 14:27:39 2026 -0500

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

commit b7c4fcb4c64b798864f455428fb4fcd1aa780cae
Author: PoryGone <98504756+PoryGone@users.noreply.github.com>
Date:   Wed Apr 8 15:35:43 2026 -0400

    DKC3: Delete DKC3 (#6097)

commit bcd3f9a74cfa4f2d712ccc48ac231f3cf67adc35
Author: williamronn <wille.ronn@gmail.com>
Date:   Tue Apr 7 22:16:39 2026 +0200

    WebHost: 2025 to 2026 (#6094)

commit 62622351613d6e0feea5336fe75d565257fb6d54
Author: Trevor L <80716066+TRPG0@users.noreply.github.com>
Date:   Tue Apr 7 14:15:47 2026 -0600

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

commit 030cb4b578f57eba8d756f14193e47a2bc3780de
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Tue Apr 7 15:13:31 2026 -0500

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

commit 36bab6f52a4faf9674261c0aae4c6c4dc46e2fd0
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Tue Apr 7 15:38:04 2026 -0400

    Stardew Valley: 0.6.7 Day 1 fixes (#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.

commit e0cfef34076ff8b281e54975fda3587126f9fcd6
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sun Apr 5 11:50:17 2026 -0600

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

commit bb2a775c050307558c14a70426ae93b7fadfbbb9
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Fri Apr 3 23:52:27 2026 -0600

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

commit 427b147818fe200251a3d067bf490dfb8f7508f8
Author: palex00 <32203971+palex00@users.noreply.github.com>
Date:   Wed Apr 1 22:43:14 2026 +0200

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

    * Update setup_en.md

    * Update setup_de.md

commit 3f3c343fb3422ca53146a73e8ab4f863c957c44a
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Wed Apr 1 21:42:08 2026 +0100

    APQuest: Fix focus issues (#6090)

    * My best attempt at fixing focus issues on Android

    * didn't mean to remove that

commit debe4cf035c7c15efe6fb95f72343af0d420c68c
Author: Bryce Wilson <gyroscope15@gmail.com>
Date:   Wed Apr 1 10:18:42 2026 -0700

    Pokemon Emerald: Bump version (#6083)

commit 68f25f4642b4f71e935a4de930f484cd4ccf2dfd
Author: Silvris <58583688+Silvris@users.noreply.github.com>
Date:   Wed Apr 1 12:18:11 2026 -0500

    MM3: Bump world version (#6088)

commit 3c4af8f43249f34633b4ba69af69f4ef851f9117
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Tue Mar 31 19:55:52 2026 +0100

    APQuest: Tap to move (#6082)

    * Tap to move

    * inputs

    * cleanup

    * oops

commit 5360b6bb3727505ce5987b1e1dff316f4d792574
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Mon Mar 30 23:31:05 2026 +0100

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

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

    * naming

commit 2ee20a3ac445a33e51bc160c073734de1fc4358f
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Mon Mar 30 19:46:43 2026 +0000

    CI: set permissions, update and pin actions, CodeQL for actions (#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

commit c640d2fa249c3a01e6f56a336b60eb4a4c62e38f
Author: Ian Robinson <drtchops@users.noreply.github.com>
Date:   Mon Mar 30 12:19:10 2026 -0400

    Rule Builder: Add field resolvers (#5919)

commit 58a6407040125cd90346dd2a523bc3d0f01f344f
Author: James White <james_white_d@hotmail.com>
Date:   Mon Mar 30 16:27:10 2026 +0100

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

commit ba7ca0bd2378175a6ebbe66d2e75c5c95c970660
Author: EdricY <EdricY@users.noreply.github.com>
Date:   Mon Mar 30 08:25:25 2026 -0700

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

commit bdbf72f148be16aae62eb8d55c9e9fd87ea8ccb7
Author: Louis M <prog@tioui.com>
Date:   Sun Mar 29 19:40:05 2026 -0400

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

commit 2b46df90b44d62c11988ee792f37bd7b7351f262
Author: Jarno <jarnowesthof@gmail.com>
Date:   Mon Mar 30 00:46:01 2026 +0200

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

commit 88dc1359600ca48c009e36b2f8109ac06be7f030
Author: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
Date:   Sun Mar 29 23:32:06 2026 +0100

    APQuest: Various fixes (#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

commit 95f696c04f986909c57deade47406dfa731369e9
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sun Mar 29 16:19:54 2026 -0600

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

    * Remove space before comma

    * Factorio authors update

    * Simplify template

commit 96277fe9be7b072412454bfb8820a3b2cec366df
Author: el-u <109771707+el-u@users.noreply.github.com>
Date:   Sun Mar 29 23:37:53 2026 +0200

    lufia2ac: update CollectionRule import (#5936)

commit a7a7879df4e61bdb5c061ce72b3c7d60451cef9a
Author: XxDERProjectxX <114278502+XxDERProjectxX@users.noreply.github.com>
Date:   Sun Mar 29 16:34:21 2026 -0500

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

    Solved indentation error to return to intended functionality

commit 773f3c4f089a60682c4791eff7f1f95d1bb5e055
Author: Alchav <59858495+Alchav@users.noreply.github.com>
Date:   Sun Mar 29 17:25:46 2026 -0400

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

commit 139856a5731752bfdac22a5445422fb50d194b8d
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Sun Mar 29 17:21:29 2026 -0400

    Stardew Valley: Fixed an issue where some specific option combinations could create more items than locations (#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

commit a1ed8042674a5d0714391615cbdbe129fa8a881c
Author: Noa Aarts <noa@voorwaarts.nl>
Date:   Sun Mar 29 23:20:24 2026 +0200

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

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

commit 2d58e7953c0ba1092281f44b49dd5c55a385b9ee
Author: agilbert1412 <alexgilbert@yahoo.com>
Date:   Sun Mar 29 17:20:00 2026 -0400

    Stardew valley: Four small fixes (#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

commit 393ed51203c19b228bbccaa82826be97781e8c89
Author: Flit <8645405+FlitPix@users.noreply.github.com>
Date:   Sun Mar 29 17:16:34 2026 -0400

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

commit 03c9d0717bb1d8a9da416416fc5225beeda04c3c
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Sun Mar 29 22:12:25 2026 +0100

    Muse Dash: Fix nondeterministic generation with include_songs (#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.

commit 5ca50cd8d34d9f42b2f8ad76c5bf64203a643cb4
Author: Bryce Wilson <gyroscope15@gmail.com>
Date:   Sun Mar 29 14:10:16 2026 -0700

    Pokemon Emerald: Fix Latios KeyError (#6056)

commit 36cf86f2e8b2c91bc942a97dd5fdc1772707d1c8
Author: Sebastian <127998064+SebaCape@users.noreply.github.com>
Date:   Sun Mar 29 15:18:03 2026 -0400

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

commit 1705620c4f37e86b8414aa3bf70d4fdd1ed29ded
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Sun Mar 29 12:07:55 2026 -0600

    Launcher: Add konsole to terminal list and rework launch dialog (#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>

commit ffe4c6dd1504166bc96d99237d4177e80c6dc161
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Sun Mar 29 17:44:29 2026 +0000

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

commit cf47cc67c0683228a60b81b07ad7c8a96875bdfc
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Sun Mar 29 17:43:26 2026 +0000

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

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

commit 645f25a94e411509b5a5bdfad1810706dd66e8bd
Author: Ian Robinson <drtchops@users.noreply.github.com>
Date:   Sun Mar 29 12:29:37 2026 -0400

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

commit 74f41e3733b9683d49a70c947926ff2f2a26b633
Author: qwint <qwint.42@gmail.com>
Date:   Fri Mar 27 18:58:36 2026 -0500

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

commit 4276c6d6b01542181b79ea4678b5e857fae3e86d
Author: Phaneros <31861583+MatthewMarinets@users.noreply.github.com>
Date:   Fri Mar 27 14:45:38 2026 -0700

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

commit 116ab2286ad95fe4a43fbc06247d4f0ba42e6e34
Author: Justus Lind <DeamonHunter@users.noreply.github.com>
Date:   Sat Mar 28 03:36:36 2026 +1000

    Muse Dash: Add support for Wuthering Waves Pioneer Podcast and Ay-Aye Horse (#6071)

commit fb45a2f87e392a7ea69daa33905b8aee3e83e19d
Author: Ian Robinson <drtchops@users.noreply.github.com>
Date:   Wed Mar 18 13:54:17 2026 -0400

    Rule Builder: Fix count resolution when Oring HasAnyCount (#6048)

commit 2e5356ad05aa0af7585ecd047b1992a4e3103218
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Wed Mar 18 03:30:22 2026 +0100

    Core: other resources guide (#6043)

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

commit 8457ff3e4bd3de154f9d191a2551eb1d916c9c41
Author: lepideble <147614625+lepideble@users.noreply.github.com>
Date:   Mon Mar 16 15:17:54 2026 +0100

    Factorio: only show fluid boxes on assembling machine 1 when the selected recipe needs fluids (#5412)

commit 70fc3e05fbacd1bb58d381d6820a9bdb8099d9db
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Thu Mar 12 02:48:45 2026 +0100

    Webhost: port reuse fix & configurable max room timeout (#6033)

    * WebHost: make autolauncher max room timeout configurable

    * WebHost: launch rooms with assigned port first

commit d01c9577ab697855ff421fdc6a750fefdc30e4b0
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Wed Mar 11 16:46:59 2026 -0600

    CommonClient: Add explicit message for connection timeout (#5842)

    * Change timeout and add timeout-specific message

    * Revert open_timeout

commit 260bae359de479348974ad587d696c5bfa8482b5
Author: qwint <qwint.42@gmail.com>
Date:   Wed Mar 11 15:37:00 2026 -0500

    Core: Update .gitignore to include an exe setup.py downloads (#6031)

commit 3016379b85efdb336a25f82c146933476380f62d
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Tue Mar 10 22:06:44 2026 +0000

    KH2: Fix nondeterministic generation when CasualBounties is enabled (#5967)

    When CasualBounties was enabled, the location names in
    `exclusion_table["HitlistCasual"]` would be iterated into
    `self.random_super_boss_list` in `generate_early`, but
    `exclusion_table["HitlistCasual"]` was a `set`, so its iteration order
    would vary on each generation, even with same seed.

    Random location names would be picked from `self.random_super_boss_list`
    to place Bounty items at, so different locations could be picked on each
    generation with the same seed.

    `exclusion_table["Hitlist"]` is similar and was already a `list`,
    avoiding the issue of nondeterministic iteration order, so
    `exclusion_table["HitlistCasual"]` has been changed to a `list` to
    match.

commit 03b638d027edc7a5844d05bd99242ba4c3b140e0
Author: Ixrec <ericrhitchcock@gmail.com>
Date:   Tue Mar 10 19:49:47 2026 +0000

    Docs: Reword 'could be generated from json' to avoid encouraging slow world loads (#5960)

commit 3c802d03a1423320ac454c4f05e23dd4e2a304fe
Author: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
Date:   Tue Mar 10 15:11:23 2026 -0400

    DS3: Use remaining_fill instead of custom fill (#4397)

    ---------

    Co-authored-by: Mysteryem <Mysteryem@users.noreply.github.com>

commit a8e926a1a9dad779599c855da3ed74d528638ba2
Author: Mysteryem <Mysteryem@users.noreply.github.com>
Date:   Tue Mar 10 19:08:20 2026 +0000

    Core: Make Generic ER only consider the current world in isolation (#4680)

commit 56c2272bfd7921bd1f42577583295ffd053589e3
Author: Rjosephson <ryandj67@hotmail.com>
Date:   Tue Mar 10 13:05:59 2026 -0600

    RoR2: Seekers of the Storm (SOTS) DLC Support (#5569)

commit 47e581bc306e1ffd80ef0293cceb58a2372f6836
Author: Fabian Dill <Berserker66@users.noreply.github.com>
Date:   Tue Mar 10 20:04:27 2026 +0100

    LttP: add manifest (#6005)

commit 3235863f2e759d7eeeaabdfba4edd96de42cd12b
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Tue Mar 10 18:57:04 2026 +0000

    WebHost: add stats show cli command (#5995)

    Usage: flask -A "WebHost:get_app()" stats show

    Currently only shows sum and top10 biggest games packages.

commit f00d29e07203518bae5d87f463284830b36f8ff4
Author: black-sliver <59490463+black-sliver@users.noreply.github.com>
Date:   Tue Mar 10 18:56:23 2026 +0000

    Tests: fix race in test hosting shutdown (#5987)

commit d000c0f265c1f184df2cf44e193d98387dc34d05
Author: Gryphonlady <gryphonlady1@gmail.com>
Date:   Tue Mar 10 13:23:25 2026 -0500

    Docs: Update plando_en.md with item group example (#6024)

    * Update plando_en.md with item group example

    Added example YAML block for item placement using an item group, including recommendation of use of `true` value with item groups to avoid unintended behaviors, with an example of the same.  Adjustments more than welcome!

    * Made clarifying revision to description of Generator handling of item groups

    Clarified the behavior of the Generator regarding item creation when item groups are used in plando.

commit 94136ac223b88a3b82d13c6205cb0603496f9f77
Author: Duck <31627079+duckboycool@users.noreply.github.com>
Date:   Tue Mar 10 12:18:03 2026 -0600

    Docs: Add references to running from source (#6022)

commit 72ff9b1a7dace3063f95023a14f251362a9b9d29
Author: LeonarthC…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants