{"record":{"id":"2f9165b262af3ae1","repo":"Hmbown/CodeWhale","slug":"plugin-name-name-is-already-used-by-the-bun","errorCode":null,"errorMessage":"plugin name '{name}' is already used by the {} bundle at {}; choose a different name or remove that bundle first","messagePattern":"plugin name '(.+?)' is already used by the (.+?) bundle at (.+?); choose a different name or remove that bundle first","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/plugins/install/mod.rs","lineNumber":293,"sourceCode":"    .await\n}\n\nasync fn install_inner(\n    source: PluginInstallSource,\n    user_plugins_dir: &Path,\n    max_size: u64,\n    network: &NetworkPolicy,\n    update: bool,\n    name_conflict: &dyn Fn(&str) -> Option<String>,\n    expected_content_hash: Option<&str>,\n) -> Result<PluginInstallOutcome> {\n    match &source {\n        PluginInstallSource::LocalPath(path) => {\n            let staged = stage_local_copy(path, user_plugins_dir, max_size)?;\n            verify_expected_content_hash(&staged, expected_content_hash)?;\n            if let Some(conflict) = name_conflict(&staged.name) {\n                let _ = fs::remove_dir_all(&staged.staged_path);\n                bail!(conflict);\n            }\n            let canonical = path\n                .canonicalize()\n                .with_context(|| format!(\"failed to resolve {}\", path.display()))?;\n            finalize_install(\n                staged,\n                &plugin_spec_string(&source, Some(&canonical)),\n                None,\n                \"\",\n                user_plugins_dir,\n                update,\n            )\n        }\n        PluginInstallSource::Remote(remote) => {\n            let (bytes, url) = match fetch_tarball(remote, network, max_size).await? {\n                FetchOutcome::Bytes { bytes, url } => (bytes, url),\n                FetchOutcome::NeedsApproval(host) => {\n                    return Ok(PluginInstallOutcome::NeedsApproval(host));","sourceCodeStart":275,"sourceCodeEnd":311,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/tui/src/plugins/install/mod.rs#L275-L311","documentation":"install_inner's name-conflict check: a freshly staged plugin bundle wants a name already taken by an existing bundle (scope shown in the placeholder, with its location). The installer refuses to overwrite; the message names the choices — rename or remove the incumbent.","triggerScenarios":"Thrown at crates/tui/src/plugins/install/mod.rs:293 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the conflicting bundle first","Or install under a different plugin name"],"exampleFix":null,"handlingStrategy":"type-guard","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-14T00:17:10.932Z"}