fix: terminal quoting and the guided troubleshooting dead end - #246
Merged
Conversation
Third round of the local release smoke run, both pre-existing: - The bottle's Terminal button failed for any bottle name with a space. The shellenv command escaped the name with backslashes inside double quotes; bash keeps those backslashes, so WhiskyCmd saw `QA\ Smoke` and answered that no such bottle exists. The command is built with ShellQuoting now, the same helper the winetricks script uses. - Guided troubleshooting stopped on every info node. Findings cards such as "Missing dependencies found" only carry a `continue` transition and neither the engine nor the wizard followed it, so five of the eight flows could never reach their fix step. The engine gains continueStep and the wizard a Continue button on those nodes; Skip falls back to `continue` as well.
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
Every flow ends its unresolved branch on an info node that references the export-escalation fragment, tagged with the export phase like the resolved node. The wizard draws export-phase nodes as "Problem resolved", so a flow that had given up told the user their problem was fixed. A node referencing the fragment now routes through escalate(), which sets the escalation phase and lands on the fragment's entry node. Skip and Continue share one transition helper, with tests for both and for the hand-off.
Owner
Author
|
Reproduced each one on a Release build before the fix and re-checked after a rebuild.
Not in this PR, noted for later: the fix card previews the verb as "unknown" because SwiftFormat 0.58.7 and SwiftLint strict clean, en-GB check passes, engine suite 21/21. Merging. |
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.
Third round of the local release smoke run (Release build, throwaway bottles), following #245. All three findings are pre-existing and both sit on paths the 3.7.0 changelog touches (the winetricks quoting fix in #242, the troubleshooting fixes in #213).
What was broken
Terminal button fails for bottle names with a space.
openTerminalbuilteval "$("<cmd>" shellenv "<name>")"with.esc, which backslash-escapes spaces. Inside double quotes bash keeps the backslash, so WhiskyCmd receivedQA\ Smoke\ 7\ Copyand printed "A bottle with that name doesn't exist." Reproduced through Terminal.app;WhiskyCmd shellenv "QA Smoke 7 Copy"works when called directly. The command is now assembled withShellQuoting.commandLine.Guided troubleshooting dead-ends on info nodes. In
install-dependencies.jsonthe entry check fails intoshow_missing_deps, whose only transition iscontinue. Nothing in the engine or the wizard follows acontinuetransition and Skip only looks atskipped/default, so the wizard sat on "Missing dependencies found" with Back as the only working control. The same shape exists in five of the eight flows.TroubleshootingFlowEngine.continueStep()follows it, the toolbar shows a Continue button (default action) when the node has one, and Skip falls back tocontinue.The wizard says "Problem resolved" after giving up. Every flow ends its unresolved branch on an info node tagged
phase: export(the same phase asresolved) withfragmentRef: export-escalation, and the wizard renders every export-phase node as the resolved summary. Walked the dependency flow to its end: findings, findings, game-config check, then a green "Problem resolved" for a bottle nothing had been fixed in. A node referencing the escalation fragment now routes throughescalate(), which lands on the escalation screen with its export and retry options. Skip and Continue share one transition helper; three engine tests cover Continue, the Skip fallback, and the hand-off.Verification
troubleshooting.wizard.continue).