mirror of
https://github.com/openai/codex.git
synced 2026-11-10 21:00:47 +00:00
Add sidebar tabs and nonblocking side-chat creation (#59767)
## Why Starting a side chat waits for fork and setup requests. Keep the workspace responsive during those requests and let users return to an existing side chat through the sidebar chooser. ## What changed - Add a clickable `Side chat` tab and `+` chooser, plus the configurable `focus_sidebar_tabs` action bound to `leader t` by default. - Create workspace side chats in the background, showing loading and failure states with `Enter` to retry and `Esc` to go back. Preserve opening prompts and avoid taking focus when the user has moved away. - Retain inherited permission profiles and defer startup notifications until the side chat is registered on its owning backend. - Quiet the parent composer while the chooser has focus and prevent completion popups or repeated activation keys from consuming chooser input. ## Testing Extend tests and snapshots for loading and failure states, returning to an existing chat, draft preservation, inherited permissions, focus transitions, and deferred MCP startup notifications. GitOrigin-RevId: 244bcd3f170819e2260f21dc1041cf8899fe048c
This commit is contained in:
@@ -109,6 +109,7 @@ impl KeymapActionId {
|
||||
self.action,
|
||||
"focus_main_composer"
|
||||
| "focus_sidebar_content"
|
||||
| "focus_sidebar_tabs"
|
||||
| "hide_pane"
|
||||
| "focus_pane_left"
|
||||
| "focus_pane_right"
|
||||
@@ -316,6 +317,7 @@ define_runtime_action_bindings! {
|
||||
focus_activity,
|
||||
focus_main_composer,
|
||||
focus_sidebar_content,
|
||||
focus_sidebar_tabs,
|
||||
hide_pane,
|
||||
focus_pane_left,
|
||||
focus_pane_right,
|
||||
|
||||
@@ -205,7 +205,7 @@ impl KeymapContextSet {
|
||||
| "maximize_pane_width"
|
||||
| "resize_panes" => OPEN_PANE,
|
||||
"focus_main_composer" => MAIN_COMPOSER_FOCUS,
|
||||
"focus_sidebar_content" => SIDE_PANE | SIDEBAR_CHOOSER,
|
||||
"focus_sidebar_content" | "focus_sidebar_tabs" => SIDE_PANE | SIDEBAR_CHOOSER,
|
||||
_ => SIDE_PANE,
|
||||
};
|
||||
return self.0 & required != 0;
|
||||
|
||||
@@ -47,6 +47,7 @@ pub(in crate::keymap) fn register(
|
||||
(Global, "resize_panes", Char('r'), "r"),
|
||||
(Global, "minimize_pane_width", Char(','), ","),
|
||||
(Global, "maximize_pane_width", Char('.'), "."),
|
||||
(Global, "focus_sidebar_tabs", Char('t'), "t"),
|
||||
] {
|
||||
if remaining == 0 {
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user