zellij-org/zellij · error · anyhow::Error

NewFloatingPluginPane missing plugin

Error message

NewFloatingPluginPane missing plugin

What it means

Error "NewFloatingPluginPane missing plugin" thrown in zellij-org/zellij.

Solutions

  1. Include the required 'plugin' field in the protobuf message before sending it.
  2. Verify the sender populates all mandatory fields; add a presence check before conversion.

When it happens

Trigger: Occurs when a protobuf message received over IPC omits the required field; deserialization fails instead of using a default.

Common situations: Occurs when a client or plugin sends an incompletely populated message, often from a version mismatch or hand-crafted payload.


AI-assisted analysis of zellij-org/zellij@e839bfffa5 (2026-08-19). Data as JSON: /api/errors/3e60a8b1899c5682. Report an issue: GitHub.

Appendix: source

Thrown at zellij-utils/src/ipc/protobuf_conversion.rs:2753

            ActionType::QueryTabNames(_) => Ok(crate::input::actions::Action::QueryTabNames),
            ActionType::NewTiledPluginPane(new_tiled_plugin_action) => {
                Ok(crate::input::actions::Action::NewTiledPluginPane {
                    plugin: new_tiled_plugin_action
                        .plugin
                        .ok_or_else(|| anyhow!("NewTiledPluginPane missing plugin"))?
                        .try_into()?,
                    pane_name: new_tiled_plugin_action.pane_name,
                    skip_cache: new_tiled_plugin_action.skip_cache,
                    cwd: new_tiled_plugin_action.cwd.map(PathBuf::from),
                    no_focus: new_tiled_plugin_action.no_focus,
                    tab_id: new_tiled_plugin_action.tab_id.map(|t| t as usize),
                })
            },
            ActionType::NewFloatingPluginPane(new_floating_plugin_action) => {
                Ok(crate::input::actions::Action::NewFloatingPluginPane {
                    plugin: new_floating_plugin_action
                        .plugin
                        .ok_or_else(|| anyhow!("NewFloatingPluginPane missing plugin"))?
                        .try_into()?,
                    pane_name: new_floating_plugin_action.pane_name,
                    skip_cache: new_floating_plugin_action.skip_cache,
                    cwd: new_floating_plugin_action.cwd.map(PathBuf::from),
                    coordinates: new_floating_plugin_action
                        .coordinates
                        .map(|c| c.try_into())
                        .transpose()?,
                    no_focus: new_floating_plugin_action.no_focus,
                    tab_id: new_floating_plugin_action.tab_id.map(|t| t as usize),
                })
            },
            ActionType::NewInPlacePluginPane(new_in_place_plugin_action) => {
                Ok(crate::input::actions::Action::NewInPlacePluginPane {
                    plugin: new_in_place_plugin_action
                        .plugin
                        .ok_or_else(|| anyhow!("NewInPlacePluginPane missing plugin"))?
                        .try_into()?,

View on GitHub (pinned to e839bfffa5)