fix(files): say under a game file why it can't be used, and what to do #105

Merged
HumanBean merged 1 commit from HumanBean/LongshotLauncher:fix/game-file-why into main 2026-11-15 17:38:42 +00:00
Owner

A player's game file showed only a red Can't be read chip ("Illisible") on step 1, with no reason and nothing to do next. The reason was in a tooltip, in English, and when the check failed because of the PC (its compiler, Windows SDK or Linux programs), the file still got the blame.

What changed

  • The reason is under the file, in the player's language, with what to do:

    • not a .nup package: pick the dump's .nup file, or copy it again;
    • incomplete: copy or download it again, then check it again;
    • damaged: copy or download it again, or try another dump;
    • game code Longshot can't read: try another dump;
    • the drive couldn't read it: make_game.py's message as is (it already names the drive and the repair);
    • another version: the version Longshot needs (update 2.0.0, v131072), the same words as the build's own "different version" stop.

    make_game.py's own words stay in the tooltip and the bug report.

  • A check that couldn't run is no longer said to be the file's. make_game.py's check tests the compiler first, so a missing Windows SDK or Linux program came out as "Can't be read" on every file. GameCheck now tells the file's failures (nup.py, the game modules, the drive) from the rest: a new CheckFailed status, shown as Not checked. When it's this PC's tools, the row says so; when the builder stopped on an error it didn't expect, the row says only that the check stopped.

  • Check again under the file runs its check again, after copying the file again or fixing the PC.

  • Copy for a bug report (from #93) on a file that can't be read or checked: make_game.py's message, the file's name and size, the check's status and the tools' version. Each check's answer is also in the launcher log now.

  • The 8 new texts are in all 12 full catalogs; scripts/translations.py is back to main's 5 missing.

  • tools/screenshots: new scenes files-not-usable and files-not-checked.

The reason now sits under the row, not inside it, because a file that can't be picked is a disabled radio button, and its buttons would be disabled with it.

Testing

  • python -I tests/test_launcher_core.py: 1193 checks passed. The new checks cover each make_game.py failure and whether it is the file's or not, the player's sentence for each, the unexpected and unsaid failures not blamed on the file, tools that don't start counted as this PC's, and another version's text.
  • python -I tests/test_release.py: OK.
  • dotnet build App -c Release -warnaserror: no warnings.

Not tested: a real damaged or incomplete .nup through the launcher, or a Windows PC. The rows were checked in the screenshots, which are in the first comment.

🤖 Generated with Claude Code

A player's game file showed only a red **Can't be read** chip ("Illisible") on step 1, with no reason and nothing to do next. The reason was in a tooltip, in English, and when the check failed because of the PC (its compiler, Windows SDK or Linux programs), the file still got the blame. ## What changed - **The reason is under the file**, in the player's language, with what to do: - not a .nup package: pick the dump's .nup file, or copy it again; - incomplete: copy or download it again, then check it again; - damaged: copy or download it again, or try another dump; - game code Longshot can't read: try another dump; - the drive couldn't read it: make_game.py's message as is (it already names the drive and the repair); - another version: the version Longshot needs (update 2.0.0, v131072), the same words as the build's own "different version" stop. make_game.py's own words stay in the tooltip and the bug report. - **A check that couldn't run is no longer said to be the file's.** make_game.py's check tests the compiler first, so a missing Windows SDK or Linux program came out as "Can't be read" on every file. `GameCheck` now tells the file's failures (nup.py, the game modules, the drive) from the rest: a new `CheckFailed` status, shown as **Not checked**. When it's this PC's tools, the row says so; when the builder stopped on an error it didn't expect, the row says only that the check stopped. - **Check again** under the file runs its check again, after copying the file again or fixing the PC. - **Copy for a bug report** (from #93) on a file that can't be read or checked: make_game.py's message, the file's name and size, the check's status and the tools' version. Each check's answer is also in the launcher log now. - The 8 new texts are in all 12 full catalogs; `scripts/translations.py` is back to main's 5 missing. - `tools/screenshots`: new scenes `files-not-usable` and `files-not-checked`. The reason now sits under the row, not inside it, because a file that can't be picked is a disabled radio button, and its buttons would be disabled with it. ## Testing - `python -I tests/test_launcher_core.py`: 1193 checks passed. The new checks cover each make_game.py failure and whether it is the file's or not, the player's sentence for each, the unexpected and unsaid failures not blamed on the file, tools that don't start counted as this PC's, and another version's text. - `python -I tests/test_release.py`: OK. - `dotnet build App -c Release -warnaserror`: no warnings. Not tested: a real damaged or incomplete .nup through the launcher, or a Windows PC. The rows were checked in the screenshots, which are in the first comment. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(files): say under a game file why it can't be used, and what to do
All checks were successful
CI / Compile and test (pull_request) Has been skipped
CI / Conventional Commit title (pull_request) Successful in 13s
1c49b8c6e1
A player's .nup showed only "Can't be read" ("Illisible") on step 1: the reason was in the chip's tooltip, in
English, and the check's own failures (this PC's compiler, Windows SDK or Linux programs) were said as the file's.

GameCheck tells the file's failures (nup.py, the game modules, the drive) from a check that could not run
(CheckFailed, "Not checked"), and says each in the player's words under the file, with Check again and Copy for a
bug report. A file of another version says the version Longshot needs, as the build's stop does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Author
Owner

Screenshots, drawn with tools/screenshots (each scene's name in brackets). Linux paths, since the screenshots are drawn on Linux and a Windows path doesn't split there into its folder and name.

A file that can't be read, and one of another version (files-not-usable)
attach:files-not-usable.png

A check that couldn't run because of this PC: "Not checked", not "Can't be read" (files-not-checked)
attach:files-not-checked.png

files-not-usable.png

files-not-checked.png

Screenshots, drawn with `tools/screenshots` (each scene's name in brackets). Linux paths, since the screenshots are drawn on Linux and a Windows path doesn't split there into its folder and name. **A file that can't be read, and one of another version** (`files-not-usable`) attach:files-not-usable.png **A check that couldn't run because of this PC: "Not checked", not "Can't be read"** (`files-not-checked`) attach:files-not-checked.png ![files-not-usable.png](https://git.magicbean.dev/attachments/21520f64-a6f8-408b-9a51-160fec5d0b6b) ![files-not-checked.png](https://git.magicbean.dev/attachments/587234f5-a838-4604-9700-0f246b8eed82)
HumanBean deleted branch fix/game-file-why 2026-11-15 17:38:44 +00:00
Sign in to join this conversation.
No reviewers
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
MagicBeanDev/LongshotLauncher!105
No description provided.