Skip to content

⚡ Performance & 🛡️ Reliability: Async Process Management & Domain Sync Fix#34

Open
mx57 wants to merge 1 commit into
masterfrom
bolt-perf-reliability-fixes-5432020798255957903
Open

⚡ Performance & 🛡️ Reliability: Async Process Management & Domain Sync Fix#34
mx57 wants to merge 1 commit into
masterfrom
bolt-perf-reliability-fixes-5432020798255957903

Conversation

@mx57

@mx57 mx57 commented Jul 8, 2026

Copy link
Copy Markdown
Owner

This PR introduces several critical improvements to performance, reliability, and UX:

  1. Asynchronous Engine Management: Refactored the core engine control logic (Start/Stop/Switch) to be fully asynchronous. By using await p.WaitForExitAsync() and moving process termination out of the UI thread, we eliminated the noticeable "freezes" (1.5s+ hangs) that occurred when stopping multiple engines (e.g., Zapret + Warp).

  2. Full Domain List Synchronization: Fixed a bug where only the target domains were synced to the engine directory. The system now properly synchronizes both the target list (list-general-user.txt) and the exclusion list (list-exclude-user.txt), including legacy markers.

  3. I/O Optimization (Debouncing): Implemented a 500ms debounce for settings serialization. This prevents redundant disk writes when the user quickly toggles multiple checkboxes or types in domain lists.

  4. AI Selection Performance: Optimized the BanditSelector.Pick method by replacing an $O(N \log N)$ sort with a $O(N)$ linear MaxBy scan for selecting the best strategy.

  5. Stability: Updated the update mechanism to await engine shutdown before attempting to overwrite binaries, preventing "file in use" errors during updates.

All changes were verified with the existing test suite (50/50 passed) and a full build targeting Windows. Insight recorded in .jules/bolt.md.


PR created automatically by Jules for task 5432020798255957903 started by @mx57

- Refactor Start/Stop to async Task to prevent UI freezes
- Use WaitForExitAsync for non-blocking process termination
- Fix domain exclusion synchronization logic
- Implement debounced settings saving to reduce disk I/O
- Optimize BanditSelector selection using MaxBy (O(N))
@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

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