zellij-org/zellij · error

PaneId missing pane_type

Error message

PaneId missing pane_type

What it means

Error "PaneId missing pane_type" thrown in zellij-org/zellij.

Source

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

            crate::data::PaneId::Plugin(id) => Self {
                pane_type: Some(PaneType::Plugin(id)),
            },
        }
    }
}

// Reverse PaneId conversion
impl TryFrom<crate::client_server_contract::client_server_contract::PaneId>
    for crate::data::PaneId
{
    type Error = anyhow::Error;
    fn try_from(
        pane_id: crate::client_server_contract::client_server_contract::PaneId,
    ) -> Result<Self> {
        use crate::client_server_contract::client_server_contract::pane_id::PaneType;
        match pane_id
            .pane_type
            .ok_or_else(|| anyhow!("PaneId missing pane_type"))?
        {
            PaneType::Terminal(id) => Ok(crate::data::PaneId::Terminal(id)),
            PaneType::Plugin(id) => Ok(crate::data::PaneId::Plugin(id)),
        }
    }
}

// FloatingCoordinate conversion - SplitSize to FloatingCoordinate
impl From<crate::input::layout::SplitSize>
    for crate::client_server_contract::client_server_contract::FloatingCoordinate
{
    fn from(size: crate::input::layout::SplitSize) -> Self {
        match size {
            crate::input::layout::SplitSize::Percent(p) => Self {
                coordinate_type: Some(crate::client_server_contract::client_server_contract::floating_coordinate::CoordinateType::Percent(p as f32)),
            },
            crate::input::layout::SplitSize::Fixed(f) => Self {
                coordinate_type: Some(crate::client_server_contract::client_server_contract::floating_coordinate::CoordinateType::Fixed(f as u32)),

View on GitHub (pinned to e839bfffa5)

Solutions

  1. Include the required 'pane_type' 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/0251a313163cf0a5. Report an issue: GitHub.