Repository navigation
Refuse a ZBD with no chapter folders, and say why a menu flight failed (#177) - #178
Merged
Merged
Conversation
#177) #177: on Linux, FLY MISSION and Free Flight both returned to the main menu with no message. The reporter's log shows every build failing in GameZ.Load on extracted/C3/gamez.zip, a DirectoryNotFoundException. The extraction summary in the same log lists only the seven root archives of ZBD (interp, planes, rimage, soundsh, soundsl, zrdr, messages) and no chapter archive, so extracted/C3 was never written. The picked folder (".../GAME", "CD content") held a disc's contents: ZBD with its shared archives and GOSDATA/ASSETS, but no C1..C5 subfolders. Case is not the cause: ZbdExtraction walks ZBD recursively and case-insensitively, and the reader's path takes ZbdTree's case. Two CSVM faults made that a silent bounce: - InstallLocator.Check accepted any ZBD holding one .zbd. It now answers NoChapters when no subfolder of ZBD holds an archive, with a message naming a disc's contents or a partial install. The menus extract from such a folder and every flight fails, so it is refused before writing. - A failed menu build stood the Original top level bare. Launcher now raises Original's warning box. When no chapter folder under extracted/ holds its GameZ (SessionPaths.HasAnyChapterWorld) the box names the fix, re-extracting from a full install; otherwise it points at the logs icon. The two extraction fixtures that held only a root archive gain a C1 chapter archive. New units: AZbdWithOnlyItsRootArchivesIsNoInstall, AChapterWorldIsFoundZippedOrUnpackedAndNeverAtTheRoot. Verification: on Linux (no Godot, no pwsh), dotnet build of CSVM.Tests is clean with 0 warnings; dotnet test passes 6107, fails 0, skips 314 (those need an install). dotnet format --verify-no-changes over the changed files reports end-of-line markers only, an artefact of the LF checkout. Not run: .\RunTests.ps1, the in-engine suites (ExtractionScreenSuites' fixture changed) and the commit-content gate scripts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NwFhBqAixt71XkAgFcQPx
The checks job's comment-cap gate blocked CSVM/src/Extraction/InstallLocator.cs:34 at 26 words against a cap of 25. The summary now says the same in two sentences. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016NwFhBqAixt71XkAgFcQPx
Owner
Author
|
The three Generated by Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses #177. On Linux, both FLY MISSION and Free Flight went back to the main menu with no message.
Cause
The reporter's log shows every build failing in
GameZ.Loadwith aDirectoryNotFoundExceptiononextracted/C3/gamez.zip. The extraction summary in the same log lists only the 7 shared archives at the root ofZBD(interp,planes,rimage,soundsh,soundsl,zrdr,messages) and no chapter archive, soextracted/C3was never written. The folder they picked (.../GAME, "CD content") looks like a disc's contents:ZBDwith its shared archives andGOSDATA/ASSETS, but noC1..C5subfolders.Filename case is not the cause.
ZbdExtractionwalksZBDrecursively and ignores case, and the reader's path usesZbdTree's case.Changes
InstallLocator.Checkused to accept anyZBDthat held one.zbd. It now returns a newNoChaptersresult when no subfolder ofZBDholds an archive, with a message saying the folder looks like a disc's contents or a partial install. Such a folder extracts the menus and every flight then fails, so it is refused before anything is written.Launcher: when a build launched from the Original menu fails, the menu now shows its warning box instead of a bare top level. If no chapter folder underextracted/holds its GameZ (newSessionPaths.HasAnyChapterWorld), the box tells the player to extract again from a full install. For any other failure it points to the "Open logs folder" icon.ExtractionFlowTests,ExtractionScreenSuites) now also hold aC1chapter archive.AZbdWithOnlyItsRootArchivesIsNoInstall,AChapterWorldIsFoundZippedOrUnpackedAndNeverAtTheRoot.InstallLocatorentry indocs/architecture/Extraction.md.Verification
dotnet buildofCSVM.Testsis clean with 0 warnings.dotnet test: 6107 passed, 0 failed, 314 skipped (the skipped tests need a real install).dotnet format --verify-no-changeson the changed files reports only end-of-line markers, which come from the LF checkout..\RunTests.ps1, the in-engine suites (ExtractionScreenSuites' test install changed) and the commit gate scripts. Run.\RunTests.ps1before merging.🤖 Generated with Claude Code
https://claude.ai/code/session_016NwFhBqAixt71XkAgFcQPx
Generated by Claude Code