[PR #96] [MERGED] fix(scan): Slay the Spire 2 gets its own route, not StS1's ModTheSpire #120

Closed
opened 2026-10-15 20:53:34 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/rehan-remade/universal-modder/pull/96
Author: @AltDoug
Created: 10/5/2026
Status: ✅ Merged
Merged: 10/6/2026
Merged by: @rehan-remade

Base: main ← Head: fix/sts2-known-route


📝 Commits (1)

  • d88f688 fix(scan): Slay the Spire 2 gets its own route, not StS1's ModTheSpire

📊 Changes

2 files changed (+11 additions, -0 deletions)

View changed files

📝 tests/test_um.py (+10 -0)
📝 um/scan.py (+1 -0)

📄 Description

um scan "Slay the Spire 2" puts "ModTheSpire + BaseMod (Java, SpirePatch)" first. That's Slay the Spire 1 tooling: the "slay the spire" key matches "Slay the Spire 2" as a substring. StS2 is Godot 4.5 + .NET, and its mods are a C# .dll + .pck + .json manifest that the game's own loader picks up from mods/, usually built on BaseLib (Alchyr.Sts2.BaseLib on NuGet).

Fix: a "slay the spire 2" entry in KNOWN. #45's longest-key rule makes it win over the StS1 entry. It points at godot.md, so the generic Godot route is folded into it, same as other known games that share their engine's playbook.

Tests: new test_slay_the_spire_2_is_not_sts1 (fails before, passes after); full suite 59 passed on Windows 11, Python 3.12. By hand on a real install (Steam build, Godot 4.5.1): route 1 is now the StS2 loader.

Found and fixed with AI assistance (Claude Code); the repro and the fix were run by hand on Windows 11.

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/rehan-remade/universal-modder/pull/96 **Author:** [@AltDoug](https://github.com/AltDoug) **Created:** 10/5/2026 **Status:** ✅ Merged **Merged:** 10/6/2026 **Merged by:** [@rehan-remade](https://github.com/rehan-remade) **Base:** `main` ← **Head:** `fix/sts2-known-route` --- ### 📝 Commits (1) - [`d88f688`](https://github.com/rehan-remade/universal-modder/commit/d88f68837dc5f82baaaf60381c503b17aa0b7ce5) fix(scan): Slay the Spire 2 gets its own route, not StS1's ModTheSpire ### 📊 Changes **2 files changed** (+11 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `tests/test_um.py` (+10 -0) 📝 `um/scan.py` (+1 -0) </details> ### 📄 Description `um scan "Slay the Spire 2"` puts "ModTheSpire + BaseMod (Java, SpirePatch)" first. That's Slay the Spire 1 tooling: the `"slay the spire"` key matches "Slay the Spire 2" as a substring. StS2 is Godot 4.5 + .NET, and its mods are a C# .dll + .pck + .json manifest that the game's own loader picks up from `mods/`, usually built on BaseLib (`Alchyr.Sts2.BaseLib` on NuGet). Fix: a `"slay the spire 2"` entry in `KNOWN`. #45's longest-key rule makes it win over the StS1 entry. It points at `godot.md`, so the generic Godot route is folded into it, same as other known games that share their engine's playbook. Tests: new `test_slay_the_spire_2_is_not_sts1` (fails before, passes after); full suite 59 passed on Windows 11, Python 3.12. By hand on a real install (Steam build, Godot 4.5.1): route 1 is now the StS2 loader. Found and fixed with AI assistance (Claude Code); the repro and the fix were run by hand on Windows 11. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 20:53:34 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rehan-remade/universal-modder#120
No description provided.