🤖 feat: optimistic cache with pulse effect for PR status badge #2045
+278
−143
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.
Summary
Adds optimistic caching with localStorage persistence to the PR status badge and branch display. When refreshing, badges now show cached status with a pulse animation instead of replacing content with a spinner. Extracts a reusable LRU cache helper and refactors existing caches to use it.
Background
Previously:
The cache mechanism was already in place in
PRStatusStore(it preservesprLinkandstatuswhen settingloading: true), but the UI wasn't utilizing it. Branch selector had no caching at all.Implementation
Phase 1: Generic LRU Cache Helper
src/browser/utils/lruCache.tsfileContentCache.tsandsharedUrlCache.tsupdate()for partial updatesPhase 2: Refactored Existing Caches
fileContentCache.tsandsharedUrlCache.tsnow usecreateLRUCachecachedAtmoved from data types to LRU wrapper (managed internally)Phase 3: PR Status Persistence
prStatusLRUcache toPRStatusStore.tsgetWorkspacePR()checks localStorage if not in memory cachePhase 4: Branch Selector Optimistic UI
animate-pulseeffect during branch switchSummary Table
Generated with
mux• Model:anthropic:claude-opus-4-5• Thinking:high• Cost:$1.17