fix: handle transient failures during remote workspace creation#84
Merged
wesbillman merged 2 commits intomainfrom Feb 12, 2026
Merged
fix: handle transient failures during remote workspace creation#84wesbillman merged 2 commits intomainfrom
wesbillman merged 2 commits intomainfrom
Conversation
When creating a remote branch, there is a race condition between `startWorkspace` (which calls `blox ws start`) and the frontend's status polling (which calls `blox ws info` every 3s). If the first poll fires before `blox ws start` completes, `blox ws info` fails with 'workstation not found', causing the card to incorrectly show an error state. Backend (poll_workspace_status): When `blox ws info` fails and the DB status is still Starting, return Starting instead of propagating the error. This lets the frontend keep polling until the workspace actually exists. Frontend (RemoteBranchCard): As a safety net, don't treat poll errors as fatal when local status is still 'starting' — log a debug message and continue polling instead of setting error state and stopping.
When `blox ws start` fails (e.g. timeout, transient network error), `start_workspace` was immediately setting the DB status to Error. This defeated the "stopped during Starting" protection in `poll_workspace_status`: when `blox ws info` later reported "stopped" (workspace still booting), the poll saw DB=Error instead of DB=Starting, so it mapped the status to Stopped and the frontend stopped polling — even though the workspace was actually coming up and would soon be Running. Fix: don't update the DB on `blox ws start` failure. Keep the status at Starting and let the polling loop determine the real state. The poll already handles all transitions (Running, Stopped, Error) and has protections for transient "stopped" reports during startup. Also add a 5-minute polling timeout so a workspace that truly never materializes doesn't poll forever. Co-Authored-By: Claude Opus 4.6 <[email protected]>
loganj
added a commit
that referenced
this pull request
Feb 26, 2026
feat: Cmd+F find-in-page for Tauri app Uses CSS Custom Highlight API for zero-focus-stealing search with match count, next/prev navigation, and auto-scroll to matches. Only active in desktop app — browser gets native Cmd+F. Co-Authored-By: Claude Opus 4.6 <[email protected]> feat: Cmd+N new window, Cmd+Shift+[/] tab nav, multi-window fixes - Cmd+N opens a new window from Rust - Cmd+Shift+[ and Cmd+Shift+] navigate prev/next tab - Cmd+W closes the window when only one tab remains - Menu events now dispatch to the focused window (not just main) - Window capabilities extended to all windows (win-*) - App stays running on macOS when all windows are closed - Dock icon click re-opens a window Co-Authored-By: Claude Opus 4.6 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
blox ws startfailures during creation: Instead of immediately setting Error status whenblox ws startfails (e.g. timeout, transient network issue), leave status as Starting and let polling resolve the real state.blox ws infofails while the DB status is still Starting (workspace hasn't materialized yet), return Starting instead of erroring so the frontend keeps polling.starting, and add a 5-minute safety timeout to avoid infinite polling loops.Test plan
blox ws startand verify polling recovers🤖 Generated with Claude Code