Skip to content

Fix git_info flash, deleted-build error, and browser TUI corruption#23

Merged
bluestreak01 merged 1 commit intomasterfrom
vi_bugfix
Apr 17, 2026
Merged

Fix git_info flash, deleted-build error, and browser TUI corruption#23
bluestreak01 merged 1 commit intomasterfrom
vi_bugfix

Conversation

@bluestreak01
Copy link
Copy Markdown
Member

Summary

Three small bugfixes surfaced while using the app today:

  • Panel git info no longer flashes to None when the filesystem watcher fires. reload_panels was calling GitCache::invalidate, which removed the repo's cache entry — so the very next refresh_git returned None and the panel blanked out for a frame until the background query finished. Replaced invalidate with refresh_async, which spawns the background query but leaves the existing entry in place. poll_pending swaps in the fresh data when it lands.
  • Azure DevOps timeline now reports deleted builds clearly. When a build has been purged by retention policy (or deleted manually), the timeline endpoint returns HTTP 404 with a BuildNotFoundException JSON body. The previous code only branched on 401/403 auth errors, so 404 fell through to serde_json::from_str::<Timeline> and surfaced Failed to parse Azure timeline: missing field \records`. Now we extract the server's message` field (e.g. "The requested build N has been deleted.") and return it directly.
  • Browser launch no longer corrupts the TUI. open_url was using Command::spawn() without redirecting stdio, so Firefox's "Opening in existing browser session." stderr message (and any Gtk/Wayland warnings) bled onto the TUI when pressing o in the CI panel or during OAuth login. Now we redirect stdin/stdout/stderr of the spawned xdg-open/open process to /dev/null.

Test plan

  • Enter a directory inside a git repo — git info appears immediately and stays (no blink)
  • Open a CI check whose Azure DevOps build has been deleted — see "The requested build … has been deleted." instead of the parse error
  • Press o on a CI check while a browser instance is already running — TUI stays clean, no "Opening in existing browser session." text on screen

🤖 Generated with Claude Code

- Panel git info no longer flashes to None on filesystem-watcher
  reload: replaced GitCache::invalidate (which removed the cache
  entry) with refresh_async, which spawns the background query
  while keeping the existing entry visible until poll_pending
  swaps in fresh data.
- Azure DevOps timeline 404 (build deleted by retention policy or
  user) now surfaces the server's "build N has been deleted"
  message instead of "Failed to parse Azure timeline: missing
  field records".
- open_url now redirects child stdin/stdout/stderr to /dev/null,
  so Firefox/Chromium chatter ("Opening in existing browser
  session.", Gtk/Wayland warnings) no longer corrupts the TUI
  when pressing 'o' in the CI panel or during OAuth login.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bluestreak01 bluestreak01 merged commit 5e23887 into master Apr 17, 2026
5 checks passed
@bluestreak01 bluestreak01 deleted the vi_bugfix branch April 17, 2026 13:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant