Skip to content

Commit cd0708a

Browse files
author
nedtwigg
committed
Claude Code review R1: fix Rust sidecar timeout for shell detection, update vscode.md spec
1 parent 55b7374 commit cd0708a

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

docs/specs/vscode.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,13 @@ All types defined in `message-types.ts`. Webview-side handling in `vscode-adapte
144144

145145
| Message | Purpose |
146146
|---------|---------|
147-
| `pty:spawn` | Create new PTY (id, optional cols/rows/cwd) |
147+
| `pty:spawn` | Create new PTY (id, optional cols/rows/cwd/shell/args) |
148148
| `pty:input` | Write data to PTY |
149149
| `pty:resize` | Resize PTY dimensions |
150150
| `pty:kill` | Kill PTY and release ownership |
151151
| `pty:getCwd` | Query PTY working directory (request-response via requestId) |
152152
| `pty:getScrollback` | Query PTY scrollback buffer (request-response via requestId) |
153+
| `pty:getShells` | Query available shells (request-response via requestId) |
153154
| `mouseterm:init` | Trigger reconnection: get PTY list + replay data |
154155
| `mouseterm:saveState` | Frontend persisting session state |
155156
| `mouseterm:flushSessionSaveDone` | Ack for deactivate-triggered flush (matched by requestId) |
@@ -175,6 +176,7 @@ All types defined in `message-types.ts`. Webview-side handling in `vscode-adapte
175176
| `pty:replay` | Buffered output since spawn (response to `mouseterm:init`) |
176177
| `pty:cwd` | CWD query response (matched by requestId) |
177178
| `pty:scrollback` | Scrollback query response (matched by requestId) |
179+
| `pty:shells` | Available shells list response (matched by requestId) |
178180
| `mouseterm:flushSessionSave` | Request webview to save state now (deactivate trigger, matched by requestId) |
179181
| `alarm:state` | Alarm state change (status, todo, attentionDismissedRing) |
180182

standalone/src-tauri/src/lib.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,15 @@ fn request_from_sidecar(
101101
state: &SidecarState,
102102
event: &str,
103103
data: JsonValue,
104+
) -> Result<JsonValue, String> {
105+
request_from_sidecar_timeout(state, event, data, Duration::from_secs(1))
106+
}
107+
108+
fn request_from_sidecar_timeout(
109+
state: &SidecarState,
110+
event: &str,
111+
data: JsonValue,
112+
timeout: Duration,
104113
) -> Result<JsonValue, String> {
105114
let request_id = format!(
106115
"req-{}",
@@ -125,7 +134,7 @@ fn request_from_sidecar(
125134
});
126135
send_to_sidecar(state, msg.to_string());
127136

128-
match rx.recv_timeout(Duration::from_secs(1)) {
137+
match rx.recv_timeout(timeout) {
129138
Ok(response) => Ok(response),
130139
Err(_) => {
131140
if let Ok(mut pending) = state.pending_requests.lock() {
@@ -225,7 +234,7 @@ struct ShellInfo {
225234

226235
#[tauri::command]
227236
fn get_available_shells(state: tauri::State<'_, SidecarState>) -> Result<Vec<ShellInfo>, String> {
228-
let response = request_from_sidecar(&state, "pty:getShells", serde_json::json!({}))?;
237+
let response = request_from_sidecar_timeout(&state, "pty:getShells", serde_json::json!({}), Duration::from_secs(10))?;
229238
let shells: Vec<ShellInfo> = response
230239
.get("shells")
231240
.and_then(|v| serde_json::from_value(v.clone()).ok())

0 commit comments

Comments
 (0)