Skip to content

feat(ui): add success feedback banner after sync/restart completes#433

Open
rgbkrk wants to merge 6 commits intomainfrom
quill/sync-feedback
Open

feat(ui): add success feedback banner after sync/restart completes#433
rgbkrk wants to merge 6 commits intomainfrom
quill/sync-feedback

Conversation

@rgbkrk
Copy link
Member

@rgbkrk rgbkrk commented Mar 2, 2026

Summary

When users click "Restart" to apply dependency changes, there was no visual confirmation that it worked - the amber banner just disappeared silently.

  • Adds a green success banner: "Environment synced — dependencies are ready to use"
  • Shows for 3 seconds then auto-dismisses
  • Works for UV inline deps, Conda inline deps, and Deno config changes

Screenshots

Before: Amber banner shows changes needed, then... nothing after restart
After: Amber banner → Green success banner for 3s → Clean state

Test Plan

  1. Create a notebook with conda inline deps
  2. Add a new package while kernel is running
  3. Click "Restart" button
  4. Expected: Green success banner appears for 3 seconds
  5. Verify same behavior works for UV and Deno

Note on Rattler Progress

The rattler progress bars already exist and work correctly during fresh conda env creation. When an env is cached (common after first use), it shows cache_hit immediately and there's no progress to display - just instant kernel start. The success banner helps provide feedback in this case.

rgbkrk added 4 commits March 1, 2026 20:27
When the user clicks "Restart" to apply dependency changes, there was
no visual confirmation that it worked - the amber banner just
disappeared silently.

Now shows a green "Environment synced — dependencies are ready to use"
banner for 3 seconds after a successful sync/restart for:
- UV inline deps
- Conda inline deps
- Deno config changes

This gives the user confidence that their action succeeded.
Previously, when send_request was waiting for a response (like during
LaunchKernel), broadcasts received during that time were queued in
pending_broadcasts and only delivered after the response arrived. This
meant progress events during environment creation were all delivered at
once after completion, breaking the "progressive" experience.

The fix passes the broadcast_tx channel to wait_for_response_with_broadcast,
which now delivers broadcasts immediately as they arrive via try_send.
This allows progress bars to update in real-time during long-running
requests like conda environment creation.
After an environment creation error:
1. When user modifies dependencies (sync state becomes dirty), the error
   banner automatically clears so they can see the "Restart" button
2. When user clicks sync/restart, error is reset before the new attempt

This allows recovery from transient errors like bad package names without
requiring manual dismissal of the error banner.
@rgbkrk rgbkrk enabled auto-merge (squash) March 2, 2026 05:13
rgbkrk added 2 commits March 1, 2026 21:15
Address code review feedback:
- When try_send fails due to full channel, queue the broadcast in
  pending_broadcasts instead of dropping it. This prevents loss of
  terminal events (ready, error) which are critical for UI state.
- Remove debug console.log statements from useEnvProgress.ts that
  were flooding logs during environment installation.
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