{"record":{"id":"540278896e8ae433","repo":"Hmbown/CodeWhale","slug":"browser-opening-is-unsupported-on-this-platform","errorCode":null,"errorMessage":"browser opening is unsupported on this platform","messagePattern":"browser opening is unsupported on this platform","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/tui/src/utils.rs","lineNumber":552,"sourceCode":"    }\n\n    #[cfg(target_os = \"windows\")]\n    {\n        let mut cmd = Command::new(\"cmd\");\n        cmd.args([\"/C\", \"start\", \"\", url]);\n        Ok(cmd)\n    }\n\n    #[cfg(not(any(\n        target_os = \"macos\",\n        all(target_os = \"linux\", not(target_env = \"ohos\")),\n        target_os = \"windows\",\n        target_os = \"netbsd\",\n        target_os = \"freebsd\",\n        target_os = \"openbsd\",\n        target_os = \"dragonfly\"\n    )))]\n    Err(anyhow::anyhow!(\n        \"browser opening is unsupported on this platform\"\n    ))\n}\n\n/// Spawn a tokio task with panic supervision.\n///\n/// Wraps the future in `AssertUnwindSafe` + `catch_unwind`. On panic:\n/// 1. Logs the panic with the task name and caller location via `tracing::error!`.\n/// 2. Writes a crash dump to `~/.codewhale/crashes/<timestamp>-<name>.log`.\n///\n/// The returned `JoinHandle` resolves to `()` — the panic is caught and\n/// handled internally so the parent process stays alive.\npub fn spawn_supervised<F>(\n    name: &'static str,\n    location: &'static std::panic::Location<'static>,\n    future: F,\n) -> tokio::task::JoinHandle<()>\nwhere","sourceCodeStart":534,"sourceCodeEnd":570,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/tui/src/utils.rs#L534-L570","documentation":"Compile-time platform guard in browser_open_command: the current build target is not one of the supported platforms (macOS, Linux/BSD family, Windows), so no known browser-opening command exists. This is a static fallback, not a runtime failure of a command.","triggerScenarios":"Thrown at crates/tui/src/utils.rs:552 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Print the URL to the terminal so the user can open it manually.","Extend browser_open_command with an opener command for the target platform.","Contribute platform detection (e.g. via xdg-open conventions) to cover the unsupported environment."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0c42157ee52f9d55af2b506d71b46249910f77d3","analyzedAt":"2026-08-20T21:50:45.477Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}