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

NewBlockingPane missing placement

Error message

NewBlockingPane missing placement

What it means

Error "NewBlockingPane missing placement" thrown in zellij-org/zellij.

Source

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

                })
            },
            ActionType::NewStackedPane(new_stacked_action) => {
                Ok(crate::input::actions::Action::NewStackedPane {
                    command: new_stacked_action
                        .command
                        .map(|c| c.try_into())
                        .transpose()?,
                    pane_name: new_stacked_action.pane_name,
                    near_current_pane: new_stacked_action.near_current_pane,
                    no_focus: new_stacked_action.no_focus,
                    tab_id: new_stacked_action.tab_id.map(|t| t as usize),
                })
            },
            ActionType::NewBlockingPane(new_blocking_action) => {
                Ok(crate::input::actions::Action::NewBlockingPane {
                    placement: new_blocking_action
                        .placement
                        .ok_or_else(|| anyhow!("NewBlockingPane missing placement"))?
                        .try_into()?,
                    pane_name: new_blocking_action.pane_name,
                    command: new_blocking_action
                        .command
                        .map(|c| c.try_into())
                        .transpose()?,
                    unblock_condition: new_blocking_action
                        .unblock_condition
                        .map(|c| proto_i32_to_unblock_condition(c))
                        .transpose()?,
                    near_current_pane: new_blocking_action.near_current_pane,
                    no_focus: new_blocking_action.no_focus,
                    tab_id: new_blocking_action.tab_id.map(|t| t as usize),
                })
            },
            ActionType::TogglePaneEmbedOrFloating(_) => {
                Ok(crate::input::actions::Action::TogglePaneEmbedOrFloating)
            },

View on GitHub (pinned to e839bfffa5)

Solutions

  1. Include the required 'placement' 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/5bf81e3d968b3305. Report an issue: GitHub.