fix: 11 bugs found via CDP-driven visual dogfooding - #12
Open
ohernandezdev wants to merge 1 commit into
Open
Conversation
- Close-tab confirm dialog: Enter now resolves to whichever button is actually focused (Cancel by default) instead of always confirming the destructive action, which silently killed live sessions on a stray Enter. - F5/Ctrl+R now route through the same confirm dialog instead of the beforeunload handler silently killing every open PTY. - Closing a tab now activates its visual neighbor instead of always the last-created tab. - git_status/detect_clis moved onto spawn_blocking, matching write_pty's existing pattern — both ran synchronous process I/O directly on Tauri's shared async runtime, and git_status polls every 5s per tab. - Declining the session-restore banner now retries the Claude Code auto-launch check, which previously only ran once at boot. - File preview panel: guard against out-of-order async reads (previewSeq) so clicking file A then quickly file B could no longer have A's late read_text_file response overwrite B's preview and get saved to B's path on Edit -> Save. - Command palette: clearSugs() now bumps sugSeq, so a late list_dir response from before the palette closed can't repopulate suggestions after it reopens empty. - Tray "Quit" now flushes the debounced session journal (emits quit-requested, frontend writes synchronously, then calls the new confirm_quit command) instead of killing PTYs and exiting immediately, which could drop the last layout change made within the 500ms debounce. - Hook server startup failures (port bind, config dir, file write) now surface a "Notifications disabled" banner instead of only an eprintln! invisible in the packaged .exe. - Onboarding tour step 3 (file preview) now waits for the panel's ~0.2s slide-in transition before measuring the spotlight position. - HUD tooltip now resyncs on the native `storage` event, so a language change reaches it immediately instead of waiting for the next agent state transition. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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
Two rounds of dogfooding on the real app (build + WebView2 CDP debug port + Playwright driving a live Claude Code tab, plus static code review) turned up 11 real bugs. All fixed here.
Confirmed live (reproduced with the real build before and after the fix):
Found by static review, fixed, verified by typecheck/
cargo check:git_status/detect_clisran blocking process I/O directly on Tauri's shared async runtime (nospawn_blocking), unlikewrite_pty's already-documented pattern for the same hazard.clearSugs()didn't invalidatesugSeq, so latelist_dirresponses could repopulate suggestions after the palette reopened empty.eprintln!'d — invisible in the packaged.exe— leaving notifications silently disabled.Test plan
npx tsc --noEmitcleancargo check --releaseclean🤖 Generated with Claude Code