zellij-org/zellij · error

Invalid SearchDirection: {}

Error message

Invalid SearchDirection: {}

What it means

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

Source

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

        x if x == ProtoDirection::Up as i32 => ProtoDirection::Up,
        x if x == ProtoDirection::Down as i32 => ProtoDirection::Down,
        _ => return Err(anyhow!("Invalid Direction: {}", direction)),
    };
    match proto_direction {
        ProtoDirection::Left => Ok(crate::data::Direction::Left),
        ProtoDirection::Right => Ok(crate::data::Direction::Right),
        ProtoDirection::Up => Ok(crate::data::Direction::Up),
        ProtoDirection::Down => Ok(crate::data::Direction::Down),
        ProtoDirection::Unspecified => Err(anyhow!("Unspecified direction")),
    }
}

fn proto_i32_to_search_direction(direction: i32) -> Result<crate::input::actions::SearchDirection> {
    use crate::client_server_contract::client_server_contract::SearchDirection as ProtoSearchDirection;
    let proto_direction = match direction {
        x if x == ProtoSearchDirection::Up as i32 => ProtoSearchDirection::Up,
        x if x == ProtoSearchDirection::Down as i32 => ProtoSearchDirection::Down,
        _ => return Err(anyhow!("Invalid SearchDirection: {}", direction)),
    };
    match proto_direction {
        ProtoSearchDirection::Up => Ok(crate::input::actions::SearchDirection::Up),
        ProtoSearchDirection::Down => Ok(crate::input::actions::SearchDirection::Down),
        ProtoSearchDirection::Unspecified => Err(anyhow!("Unspecified search direction")),
    }
}

fn proto_i32_to_search_option(option: i32) -> Result<crate::input::actions::SearchOption> {
    use crate::client_server_contract::client_server_contract::SearchOption as ProtoSearchOption;
    let proto_option = match option {
        x if x == ProtoSearchOption::CaseSensitivity as i32 => ProtoSearchOption::CaseSensitivity,
        x if x == ProtoSearchOption::WholeWord as i32 => ProtoSearchOption::WholeWord,
        x if x == ProtoSearchOption::Wrap as i32 => ProtoSearchOption::Wrap,
        _ => return Err(anyhow!("Invalid SearchOption: {}", option)),
    };
    match proto_option {
        ProtoSearchOption::CaseSensitivity => {

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/094cfc5c9ee5f204. Report an issue: GitHub.