zellij-org/zellij · error

Invalid UnblockCondition: {}

Error message

Invalid UnblockCondition: {}

What it means

Error "Invalid UnblockCondition: {}" thrown in zellij-org/zellij.

Source

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

            Ok(crate::input::actions::SearchOption::CaseSensitivity)
        },
        ProtoSearchOption::Wrap => Ok(crate::input::actions::SearchOption::Wrap),
        ProtoSearchOption::WholeWord => Ok(crate::input::actions::SearchOption::WholeWord),
        ProtoSearchOption::Unspecified => Err(anyhow!("Unspecified search option")),
    }
}

fn proto_i32_to_unblock_condition(condition: i32) -> Result<crate::data::UnblockCondition> {
    use crate::client_server_contract::client_server_contract::UnblockCondition as ProtoUnblockCondition;
    let proto_condition = match condition {
        x if x == ProtoUnblockCondition::OnExitSuccess as i32 => {
            ProtoUnblockCondition::OnExitSuccess
        },
        x if x == ProtoUnblockCondition::OnExitFailure as i32 => {
            ProtoUnblockCondition::OnExitFailure
        },
        x if x == ProtoUnblockCondition::OnAnyExit as i32 => ProtoUnblockCondition::OnAnyExit,
        _ => return Err(anyhow!("Invalid UnblockCondition: {}", condition)),
    };
    match proto_condition {
        ProtoUnblockCondition::OnExitSuccess => Ok(crate::data::UnblockCondition::OnExitSuccess),
        ProtoUnblockCondition::OnExitFailure => Ok(crate::data::UnblockCondition::OnExitFailure),
        ProtoUnblockCondition::OnAnyExit => Ok(crate::data::UnblockCondition::OnAnyExit),
        ProtoUnblockCondition::Unspecified => Err(anyhow!("Unspecified unblock condition")),
    }
}

// Position conversion
impl From<crate::position::Position>
    for crate::client_server_contract::client_server_contract::Position
{
    fn from(pos: crate::position::Position) -> Self {
        Self {
            line: pos.line.0 as i32,
            column: pos.column.0 as u64,
        }

View on GitHub (pinned to e839bfffa5)

Solutions

  1. Validate the value against the allowed enum range before constructing the message.
  2. Ensure client and server use matching protobuf definitions; regenerate bindings if versions differ.

When it happens

Trigger: Occurs when a protobuf enum value received over IPC has no matching variant; conversion rejects the unknown value.

Common situations: Typical of version skew between client and server, or a malformed/corrupted IPC message.


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