Skip to content

Normalize: Pathfinder: Wrath of the Righteous#23250

Draft
halgari wants to merge 4 commits into
masterfrom
normalize/game-pathfinderwrathoftherighteous
Draft

Normalize: Pathfinder: Wrath of the Righteous#23250
halgari wants to merge 4 commits into
masterfrom
normalize/game-pathfinderwrathoftherighteous

Conversation

@halgari
Copy link
Copy Markdown
Contributor

@halgari halgari commented May 19, 2026

Summary

Normalize game-pathfinderwrathoftherighteous extension per project checklist.
Self-contained extension with content-type-aware installers and no runtime
dependencies on other extensions.

Changes

  • Converted to proper TypeScript imports/exports
  • Replaced queryPath with queryArgs shorthand (Steam 1184370, GOG 1207187357)
  • Removed redundant mergeMods, environment.SteamAPPId, details.steamAppId
  • Kept custom getGameVersion (reads Version.info from StreamingAssets)
  • Converted gameart.jpg to gameart.webp
  • Added tsconfig.json with strictNullChecks and noUncheckedIndexedAccess
  • Removed runtime dependency on modtype-umm (requireExtension + ummAddGame)

Installer chain

Each content type is routed to its correct install location:

Priority Installer Detection Mod Type Deploy Path
20 UMM tool UnityModManager.exe wotr-umm-tool game root
30 UMM mod Info.json wotr-umm-mod <game>/Mods/
40 Portrait Small/Medium/Fulllength.{png,jpg,...} wotr-portrait AppData/.../Portraits/
50 Owlcat mod Blueprints/Content/Scripts dirs wotr-owlcat-mod AppData/.../Modifications/
80 Content catch-all (default) game root

Diagnostics

5 healthchecks registered via context.registerHealthCheck:

  • wotr-mod-has-files -- installer produced at least one file
  • wotr-umm-mod-has-info-json -- UMM mods retain Info.json after install
  • wotr-portrait-has-images -- portrait mods contain portrait images
  • wotr-portrait-structure -- portrait images are inside subdirectories
  • wotr-owlcat-mod-structure -- Owlcat mods retain Blueprints/Content/Scripts dirs

Framework change

  • Extended loadExtension.ts mock context Proxy to handle require* methods as no-ops

Test integration

  • Opted in to @vortex/game-extension-test framework
  • Tested against all 710 active mods on Nexus Mods
  • 2119 fixtures passed, 73 skipped (CDN manifest unavailable)

Verification

  • All Nexus Mods fixtures pass
  • Typecheck clean
  • All discovery paths preserved (Steam + GOG)
  • Existing xrebirth tests unaffected

LAZ-298

halgari added 4 commits May 19, 2026 13:45
Apply normalization checklist: convert to proper TypeScript imports/exports,
replace queryPath with queryArgs, remove redundant mergeMods/environment/details
fields, convert gameart.jpg to WebP. Keep custom getGameVersion (reads
Version.info from StreamingAssets). Integrate with game extension testing
framework. 1:1 behavioral replacement with no feature changes.

Also extend the test framework to support games that rely solely on Vortex's
built-in basic installer (no custom registerInstaller calls) by adding a
fallback installer at priority 1000, and handle requireExtension in the mock
context.

LAZ-298
Replace the runtime dependency on modtype-umm with self-contained
installer code: a UMM tool installer (priority 20, detects
UnityModManager.exe), a UMM mod installer (priority 30, detects
Info.json), and a catch-all content installer (priority 80) via
declareInstallers. Register healthchecks in production via
context.registerHealthCheck.

Revert the framework fallback installer from the first commit; keep
the require* proxy fix in loadExtension.ts.
Add content-type-aware installers that route files to their correct
locations:
- Portraits (Small/Medium/Fulllength images) -> AppData Portraits dir
- Owlcat template mods (Blueprints/Content/Scripts) -> AppData
  Modifications dir
- UMM mods (Info.json) -> game Mods dir
- UMM tool (UnityModManager.exe) -> game root

Register mod types with proper getPath callbacks so Vortex deploys each
content type to its correct location. Add diagnostics that verify:
- Portrait mods contain portrait images after install
- Portrait images are inside subdirectories (not at root)
- Owlcat mods retain their Blueprints/Content/Scripts structure
…hanges

- Replace \t with space in game display name
- Register wotr-umm-tool mod type so UMM tools deploy to game root
- Revert loadExtension.ts proxy and validation-order changes
@github-actions
Copy link
Copy Markdown

This PR has conflicts. You need to rebase the PR before it can be merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant