Repository navigation
Conversation
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.
Continuous filesystem activity during a build can repeatedly trigger repository refreshes and interrupt the UI with a busy indicator. Wait until filesystem events have been quiet for a configurable interval before running any pending automatic refreshes; each relevant event restarts the shared waiting period.
Add a Refresh throttling slider below History Commits in Preferences → GENERAL, ranging from 0 to 5000 ms in 100 ms steps, with a default of 1000 ms. Zero disables the additional delay.
Add a Manual refresh checkbox beside the slider. When enabled, it disables the slider and filesystem event watchers in all open repositories, suppresses pending filesystem-driven refreshes, and shows a Refresh icon immediately left of Fetch. The icon uses the same full refresh as the existing F5 shortcut and tab context menu, bypassing the throttling delay. Repositories opened in manual mode keep their watchers disabled. Switching back to automatic mode re-enables watchers and schedules a full refresh to catch up with missed changes. Both preferences are persisted.
Validation:
dotnet build src/SourceGit.csproj --no-restore— passed with no warnings or errors.dotnet format --verify-no-changes --no-restore src/SourceGit.csproj --include src/Models/Watcher.cs src/ViewModels/Preferences.cs— passed.dotnet run --project tests/WatcherChecks/WatcherChecks.csproj --no-restore— passed; covers event bursts, ignored paths, zero and maximum delays, setting changes, watcher locks, overflow recovery, disabling hooks in existing and newly opened repositories, suppression of queued events, and recovery when returning to automatic mode.Manual mode disables only filesystem-driven refreshes from external changes. Application-initiated Git operations (including fetch, pull, interactive rebase and its continue/skip/abort actions, and auto-fetch) still refresh when their operation scope finishes, bypassing throttling. Nested scopes refresh once on completion; cancelled or failed operations also refresh any partial changes. Tests cover these completion paths while verifying that filesystem hooks remain disabled.