Skip to content

feat: Revamped update banner#1659

Merged
charlesvien merged 7 commits intomainfrom
04-14-persistent_update_banner_sidebar
Apr 16, 2026
Merged

feat: Revamped update banner#1659
charlesvien merged 7 commits intomainfrom
04-14-persistent_update_banner_sidebar

Conversation

@charlesvien
Copy link
Copy Markdown
Member

@charlesvien charlesvien commented Apr 15, 2026

Problem

Update notifications were easy to miss as ephemeral toasts and the "ready to install" state had no persistent UI.

The little gift icon animates / shakes periodically so they know something good is inside. This is the most important part.

Closes #1640

CleanShot 2026-04-15 at 15.56.07@2x.png

Changes

  1. Replace toast-based UpdatePrompt with persistent UpdateBanner in sidebar
  2. Add updateStore (Zustand) to manage update lifecycle state via tRPC subscriptions
  3. Animate banner transitions between downloading, ready and installing states
  4. Add border separator above ProjectSwitcher for visual consistency

How did you test this?

Manually

@charlesvien charlesvien changed the title Persistent update banner sidebar feat: Persistent update banner sidebar Apr 15, 2026
@charlesvien charlesvien changed the title feat: Persistent update banner sidebar feat: Persistent update banner Apr 15, 2026
@charlesvien charlesvien changed the title feat: Persistent update banner feat: Revamped update banner Apr 15, 2026
@charlesvien charlesvien force-pushed the 04-14-polish_session_ui branch from d71a702 to dbcd7b5 Compare April 15, 2026 01:29
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from a8799f1 to 7d2b842 Compare April 15, 2026 01:30
@charlesvien charlesvien changed the base branch from 04-14-polish_session_ui to graphite-base/1659 April 15, 2026 01:34
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from 7d2b842 to ffb29a9 Compare April 15, 2026 01:35
@charlesvien charlesvien changed the base branch from graphite-base/1659 to 04-14-product_tours April 15, 2026 01:35
@charlesvien charlesvien force-pushed the 04-14-product_tours branch from bb1b731 to c7a4d0f Compare April 15, 2026 01:48
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from ffb29a9 to 8e8e0f0 Compare April 15, 2026 01:48
@charlesvien charlesvien force-pushed the 04-14-product_tours branch from c7a4d0f to b17032b Compare April 15, 2026 01:51
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch 3 times, most recently from 79d0f91 to 7653454 Compare April 15, 2026 04:24
@charlesvien charlesvien force-pushed the 04-14-product_tours branch from ceffa97 to 4023c9b Compare April 15, 2026 04:24
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch 2 times, most recently from 03e4f19 to 26b7177 Compare April 15, 2026 20:45
@charlesvien charlesvien force-pushed the 04-14-product_tours branch from 0218386 to 18e9b42 Compare April 15, 2026 20:45
@charlesvien charlesvien changed the base branch from 04-14-product_tours to graphite-base/1659 April 15, 2026 20:47
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from 26b7177 to 52774b3 Compare April 15, 2026 20:47
@charlesvien charlesvien changed the base branch from graphite-base/1659 to 04-14-implement_a_background_to_the_installer_dmg April 15, 2026 20:47
@charlesvien charlesvien marked this pull request as ready for review April 15, 2026 21:03
@charlesvien charlesvien force-pushed the 04-14-implement_a_background_to_the_installer_dmg branch from c2bff2a to 313eff8 Compare April 15, 2026 21:25
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch 2 times, most recently from a6014a0 to 0a530a9 Compare April 15, 2026 22:10
@charlesvien charlesvien force-pushed the 04-14-implement_a_background_to_the_installer_dmg branch from 313eff8 to beb1f6a Compare April 15, 2026 22:10
@charlesvien charlesvien force-pushed the 04-14-implement_a_background_to_the_installer_dmg branch from beb1f6a to f0fa5c8 Compare April 16, 2026 12:50
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from 74f7bf5 to d186baa Compare April 16, 2026 12:50
@charlesvien charlesvien force-pushed the 04-14-implement_a_background_to_the_installer_dmg branch from f0fa5c8 to 890c913 Compare April 16, 2026 13:01
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from d186baa to 7bd483d Compare April 16, 2026 13:02
@charlesvien charlesvien force-pushed the 04-14-implement_a_background_to_the_installer_dmg branch 2 times, most recently from 6abe138 to 5deb535 Compare April 16, 2026 13:09
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from 7bd483d to 9273b18 Compare April 16, 2026 13:10
@charlesvien charlesvien changed the base branch from 04-14-implement_a_background_to_the_installer_dmg to graphite-base/1659 April 16, 2026 13:21
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from 9273b18 to b7f4a1d Compare April 16, 2026 13:22
@graphite-app graphite-app bot changed the base branch from graphite-base/1659 to main April 16, 2026 13:22
@charlesvien charlesvien force-pushed the 04-14-persistent_update_banner_sidebar branch from b7f4a1d to 5ca6655 Compare April 16, 2026 13:22
@charlesvien charlesvien merged commit 2fbe93e into main Apr 16, 2026
15 of 16 checks passed
Copy link
Copy Markdown
Member Author

Merge activity

@charlesvien charlesvien deleted the 04-14-persistent_update_banner_sidebar branch April 16, 2026 13:29
vdekrijger pushed a commit that referenced this pull request Apr 16, 2026
## Problem

Update notifications were easy to miss as ephemeral toasts and the "ready to install" state had no persistent UI.

_The little gift icon animates / shakes periodically so they know something good is inside._ _This_ _is_ _the_ _most_ _important_ _part._

<!-- Who is this for and what problem does it solve? -->

Closes #1640

![CleanShot 2026-04-15 at 15.56.07@2x.png](https://app.graphite.com/user-attachments/assets/f3c4cb1a-5f5f-4615-8b77-1d9a63b40fba.png)

## Changes

1. Replace toast-based UpdatePrompt with persistent UpdateBanner in sidebar
2. Add updateStore (Zustand) to manage update lifecycle state via tRPC subscriptions
3. Animate banner transitions between downloading, ready and installing states
4. Add border separator above ProjectSwitcher for visual consistency

<!-- What did you change and why? -->

<!-- If there are frontend changes, include screenshots. -->

## How did you test this?

Manually

<!-- Describe what you tested -- manual steps, automated tests, or both. -->

<!-- If you're an agent, only list tests you actually ran. -->
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.

Make it more obvious that a user has to update

2 participants