{"record":{"id":"75f53059ae6dc9cc","repo":"wavetermdev/waveterm","slug":"user-redirected-to-docsite-to-learn-more-about-arm","errorCode":null,"errorMessage":"User redirected to docsite to learn more about ARM64 translation, exiting","messagePattern":"User redirected to docsite to learn more about ARM64 translation, exiting","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"emain/emain-platform.ts","lineNumber":63,"sourceCode":"    if (!fullConfig.settings[\"app:dismissarchitecturewarning\"] && app.runningUnderARM64Translation) {\n        console.log(\"Running under ARM64 translation, alerting user\");\n        const dialogOpts: Electron.MessageBoxOptions = {\n            type: \"warning\",\n            buttons: [\"Dismiss\", \"Learn More\"],\n            title: \"Wave has detected a performance issue\",\n            message: `Wave is running in ARM64 translation mode which may impact performance.\\n\\nRecommendation: Download the native ARM64 version from our website for optimal performance.`,\n        };\n\n        const choice = dialog.showMessageBoxSync(null, dialogOpts);\n        if (choice === 1) {\n            // Open the documentation URL\n            console.log(\"User chose to learn more\");\n            fireAndForget(() =>\n                shell.openExternal(\n                    \"https://docs.waveterm.dev/faq#why-does-wave-warn-me-about-arm64-translation-when-it-launches\"\n                )\n            );\n            throw new Error(\"User redirected to docsite to learn more about ARM64 translation, exiting\");\n        } else {\n            console.log(\"User dismissed the dialog\");\n        }\n    }\n}\n\n/**\n * Gets the path to the old Wave home directory (defaults to `~/.waveterm`).\n * @returns The path to the directory if it exists and contains valid data for the current app, otherwise null.\n */\nfunction getWaveHomeDir(): string {\n    let home = process.env[WaveHomeVarName];\n    if (!home) {\n        const homeDir = app.getPath(\"home\");\n        if (homeDir) {\n            home = path.join(homeDir, `.${waveDirName}`);\n        }\n    }","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/wavetermdev/waveterm/blob/a4447c1563b2df285ab89e76c82f91e1a1a49c1e/emain/emain-platform.ts#L45-L81","documentation":"GetClientPlatform runs `uname -sm` on the remote WSL host via the shell client to detect OS/architecture for wsh installation. If the command itself fails (non-zero exit, connection error), this error wraps both the underlying error and stderr. It is a remote command execution failure, not a parse failure.","triggerScenarios":"InstallWsh calls GetClientPlatform; genconn.RunSimpleCommand returns an error (shell died, connection dropped, `uname` missing, permission denied).","commonSituations":"WSL instance shut down mid-operation; broken wsh/ssh transport; minimal distro image without coreutils; shell startup errors polluting the session.","solutions":["Inspect the wrapped stderr in the message to find the remote-side cause","Verify the WSL instance is running (`wsl -l -v` shows Running) and retry","Confirm `uname` exists in the distro (`command -v uname`)","Re-test the underlying shell connection used by genconn"],"exampleFix":"// before\nos, arch, err := GetClientPlatform(ctx, shell) // opaque failure\n// after\nif ok, _ := genconn.RunSimpleCommand(ctx, shell, genconn.CommandSpec{Cmd: \"command -v uname\"}); ok == \"\" {\n    // ensure the distro image has coreutils before installing wsh\n}\nos, arch, err := GetClientPlatform(ctx, shell)","handlingStrategy":"retry","validationCode":"_, _, err := genconn.RunSimpleCommand(ctx, shell, genconn.CommandSpec{Cmd: \"uname -sm\"})\nif err != nil {\n    return fmt.Errorf(\"remote shell not ready for wsh install: %w\", err)\n}","typeGuard":null,"tryCatchPattern":"os, arch, err := wslconn.GetClientPlatform(ctx, shell)\nif err != nil {\n    var werr error\n    errors.As(err, &werr) // inspect wrapped stderr in message\n    return fmt.Errorf(\"platform detection failed: %w\", err)\n}","preventionTips":["Ensure the WSL instance is running before installing wsh","Retry once after a short delay — first command after boot can fail","Confirm coreutils/uname exists in minimal distro images"],"tags":["wsl","remote-command","uname","wsh-install"],"backgroundTag":"remote-command-failed","analyzedSha":"a4447c1563b2df285ab89e76c82f91e1a1a49c1e","analyzedAt":"2026-09-01T15:26:23.972Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}