The Windows pickers shell out to PowerShell, which writes the chosen
path in the console's OEM codepage (CP437 on en-US): a file named
"Pokémon ...zip" came back as Pok\x82mon. The import then failed and
the error notice carrying those bytes hard-crashed the mods panel's
UTF-8-validating text draw.
- All three Windows picker scripts (ROM, mod, save) now force
[Console]::OutputEncoding to UTF-8, so returned paths and any notice
built from them are valid.
- The mod picker also copies the pick to a plain-ASCII temp name and
returns that, so a non-ASCII filename actually imports instead of
failing the io.open (Windows io.open needs ANSI bytes).
Suite discovery, the extension-point catalog scan, mod test-dir pickup,
and the meta-coverage corpus all shelled out to ls/find/test -d, which do
not exist in cmd.exe. Every listing came back empty on Windows, so tiers
ran 0 suites and still reported ALL TESTS PASSED.
Add portable probes to tests/fs_io.lua (same Unix commands on
Linux/macOS; dir /b and a shell-free rename-self existence check on
Windows) and rewire the four call sites to them. 15/15 engine suites and
2/2 modkit suites now genuinely run and pass on Windows.
Fixes#266
Co-authored-by: johnjohto <johnjohto@users.noreply.github.com>