Skip to content

Improve Blazor reconnection experience after the server is restarted#8

Open
tomerqodo wants to merge 7 commits intoaugment_only-issues-20260113-augment-codex-sentry_base_improve_blazor_reconnection_experience_after_the_server_is_restarted_pr32from
augment_only-issues-20260113-augment-codex-sentry_head_improve_blazor_reconnection_experience_after_the_server_is_restarted_pr32
Open

Improve Blazor reconnection experience after the server is restarted#8
tomerqodo wants to merge 7 commits intoaugment_only-issues-20260113-augment-codex-sentry_base_improve_blazor_reconnection_experience_after_the_server_is_restarted_pr32from
augment_only-issues-20260113-augment-codex-sentry_head_improve_blazor_reconnection_experience_after_the_server_is_restarted_pr32

Conversation

@tomerqodo
Copy link

Benchmark PR from qodo-benchmark#32

@augmentcode
Copy link

augmentcode bot commented Jan 15, 2026

🤖 Augment PR Summary

Summary: Improves the Blazor Server reconnection experience when the server is restarted or circuit state is unavailable, so clients can recover more gracefully.

Changes:

  • ComponentHub.ResumeCircuit: when persisted circuit state can’t be retrieved, it now returns null without sending a client error/aborting, letting client reconnection logic handle recovery.
  • Updates default reconnect UI to avoid showing resume/reload buttons during active reconnect attempts and to allow retrying resume after a resume failure.
  • Stops transitioning the reconnect display into a “pause” state as an intermediate step when reconnect fails and a resume attempt is made.
  • Enhances user-specified reconnect UI events to include remote info for failed/resume-failed states.
  • Updates project template reconnect modal text and behavior to show a “resume failed” state instead of always reloading on exceptions.
  • Adds new E2E coverage for scenarios where reconnection/resume occurs without server-side persisted state, plus test-server startup support to disable circuit persistence.

Technical Notes: The E2E scenario disables both reconnection cache and circuit persistence so a disconnected client is expected to be rejected and recover via retry/reload behavior.

🤖 Was this summary useful? React with 👍 or 👎

Copy link

@augmentcode augmentcode bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 2 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

} else {
this.reloadButton.style.display = 'none';
this.rejoiningAnimation.style.display = 'none';
this.status.innerHTML = 'The session has been paused by the server.';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the graceful-pause flow, show({ type: 'pause' }) still sets rejoiningAnimation to display = 'block', and update no longer hides it for the 'pause' case. This can leave the “rejoining” animation visible while showing the paused text/button, which seems like an incorrect UI state.

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎

// The circuit state cannot be retrieved. It might have been deleted or expired.
// We do not send an error to the client as this is a valid scenario
// that will be handled by the client reconnection logic.
Log.InvalidInputData(_logger);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This branch is now treated as a valid/expected scenario (no client error, no abort), but it still logs via Log.InvalidInputData. That may be misleading/noisy operationally (e.g., looks like bad client input rather than a normal “state expired/evicted” case).

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎

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.

2 participants