{"record":{"id":"db840016c00b0569","repo":"zellij-org/zellij","slug":"guest-modal-selection-requires-a-client-id","errorCode":null,"errorMessage":"guest modal selection requires a client id","messagePattern":"guest modal selection requires a client id","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"zellij-server/src/panes/terminal_pane.rs","lineNumber":347,"sourceCode":"        // here we match against those cases - if need be, we adjust the input and if not\n        // we send back the original input\n\n        self.reset_selection(client_id);\n        if !self.grid.bracketed_paste_mode {\n            // Zellij itself operates in bracketed paste mode, so the terminal sends these\n            // instructions (bracketed paste start and bracketed paste end respectively)\n            // when pasting input. We only need to make sure not to send them to terminal\n            // panes who do not work in this mode\n            match raw_input_bytes.as_slice() {\n                BRACKETED_PASTE_BEGIN | BRACKETED_PASTE_END => {\n                    return Some(AdjustedInput::WriteBytesToTerminal(vec![]))\n                },\n                _ => {},\n            }\n        }\n\n        if let Some(selection) = client_id.and_then(|c| self.guest_modal.get(&c).copied()) {\n            let client_id = client_id.expect(\"guest modal selection requires a client id\");\n            let is_up = key_with_modifier\n                .as_ref()\n                .map(|k| {\n                    k.is_key_without_modifier(BareKey::Up)\n                        || k.is_key_without_modifier(BareKey::Char('k'))\n                })\n                .unwrap_or(false)\n                || raw_input_bytes.as_slice() == UP_ARROW;\n            let is_down = key_with_modifier\n                .as_ref()\n                .map(|k| {\n                    k.is_key_without_modifier(BareKey::Down)\n                        || k.is_key_without_modifier(BareKey::Char('j'))\n                })\n                .unwrap_or(false)\n                || raw_input_bytes.as_slice() == DOWN_ARROW;\n            let is_enter = key_with_modifier\n                .as_ref()","sourceCodeStart":329,"sourceCodeEnd":365,"githubUrl":"https://github.com/zellij-org/zellij/blob/bf8d23a4f774abf27a108da2a1a2689e7d8d0d23/zellij-server/src/panes/terminal_pane.rs#L329-L365","documentation":"Error \"guest modal selection requires a client id\" thrown in zellij-org/zellij.","triggerScenarios":"Occurs at zellij-server/src/panes/terminal_pane.rs:347 when the operation fails: \"guest modal selection requires a client id\". Currently there is no defensive handling preventing or contextualizing this failure before it surfaces.","commonSituations":"Internal state error in web/guest client handling.","solutions":["Ensure modal selection is only invoked with an attached client.","This is internal; report if reached through normal usage."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bf8d23a4f774abf27a108da2a1a2689e7d8d0d23","analyzedAt":"2026-08-19T07:42:58.758Z","contentChangedAt":"2026-08-19T07:42:58.758Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}