{"record":{"id":"1afd3a448c915317","repo":"zellij-org/zellij","slug":"no-plugin-found-at","errorCode":null,"errorMessage":"No plugin found at '{}'","messagePattern":"No plugin found at '(.+?)'","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"xtask/src/build.rs","lineNumber":328,"sourceCode":"\nfn move_plugin_to_assets(sh: &Shell, plugin_name: &str) -> anyhow::Result<()> {\n    let err_context = || format!(\"failed to move plugin '{plugin_name}' to assets folder\");\n\n    // Get asset path\n    let asset_name = crate::asset_dir()\n        .join(\"plugins\")\n        .join(plugin_name)\n        .with_extension(\"wasm\");\n\n    // Get plugin path\n    let plugin = crate::target_dir()\n        .join(\"wasm32-wasip1\")\n        .join(\"release\")\n        .join(plugin_name)\n        .with_extension(\"wasm\");\n\n    if !plugin.is_file() {\n        return Err(anyhow::anyhow!(\"No plugin found at '{}'\", plugin.display()))\n            .with_context(err_context);\n    }\n\n    // This is a plugin we want to move\n    let from = plugin.as_path();\n    let to = asset_name.as_path();\n    sh.copy_file(from, to).with_context(err_context)\n}\n","sourceCodeStart":310,"sourceCodeEnd":337,"githubUrl":"https://github.com/zellij-org/zellij/blob/98a0837077492d53dd252ab30bc3e43e41e504f4/xtask/src/build.rs#L310-L337","documentation":"move_plugin_to_assets copies each plugin's freshly built wasm from crate::target_dir()/wasm32-wasip1/release/<plugin>.wasm into the assets plugins folder. If that file is not present (checked with is_file()), the copy aborts before starting.","triggerScenarios":"Running a build step that includes plugin copying when the wasm32-wasip1 release compile of the plugin was skipped, failed, or landed in a different directory: `cargo clean` between build and copy, CARGO_TARGET_DIR pointing elsewhere, or a renamed plugin crate whose .wasm filename no longer matches.","commonSituations":"First build on a machine missing the wasm target (`rustup target add wasm32-wasip1`); a plugin build error earlier in the run that was overlooked; stale/renamed plugin lists in xtask config.","solutions":["Run the full `cargo xtask build` so plugins are compiled for wasm32-wasip1 release before the copy step","Verify the expected file exists: `ls target/wasm32-wasip1/release/*.wasm`, and check whether CARGO_TARGET_DIR redirects the build elsewhere","Install the wasm target: `rustup target add wasm32-wasip1`","If a plugin crate was renamed, update the plugin-name list passed to move_plugin_to_assets to match the new .wasm artifact name"],"exampleFix":"# before: copy fails, no wasm present\ncargo clean && cargo xtask build --plugins-only   # missing target\n\n# after\nrustup target add wasm32-wasip1\ncargo xtask build","handlingStrategy":"validation","validationCode":"# before any step that copies plugins, verify the wasm artifacts exist\nfor f in zellij-client/assets/plugins/*.wasm; do :; done  # expected names\nls target/wasm32-wasip1/release/*.wasm >/dev/null 2>&1 || {\n  echo 'plugin wasm artifacts missing; run: rustup target add wasm32-wasip1 && cargo xtask build'; exit 1;\n}","typeGuard":"use std::path::Path;\n\nfn plugin_artifact_ready(target_dir: &Path, plugin: &str) -> bool {\n    target_dir.join(\"wasm32-wasip1\").join(\"release\")\n        .join(plugin).with_extension(\"wasm\")\n        .is_file()\n}","tryCatchPattern":"match build::move_plugin_to_assets(&sh, plugin_name) {\n    Err(e) if e.to_string().contains(\"No plugin found at\") => {\n        // rebuild plugins for wasm32-wasip1, then retry the copy once\n        run!(\"cargo xtask build --plugins-only\")?;\n        build::move_plugin_to_assets(&sh, plugin_name)?;\n    }\n    other => other?,\n}","preventionTips":["Never `cargo clean` between the plugin build and packaging steps","Keep CARGO_TARGET_DIR consistent across all xtask invocations in a pipeline","Install the wasm32-wasip1 target before first builds: rustup target add wasm32-wasip1","When renaming a plugin crate, update the plugin list driving move_plugin_to_assets in the same change"],"tags":["build","plugins","wasm","artifacts","cross-compilation"],"backgroundTag":null,"analyzedSha":"98a0837077492d53dd252ab30bc3e43e41e504f4","analyzedAt":"2026-08-16T13:02:01.396Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}