Repository navigation
fix(rewards): stop the stuck "No higher tier has been confirmed" notice - #2665
Merged
Merged
Conversation
The Explore Tiers screen showed "Savings refreshed. No higher tier has been confirmed yet…" at the top whenever a 90-second promotion window ran out without a higher tier. That window was armed by actions that cannot raise a tier any more — yield-boost claims, FUSE savings deposits, realtime balance events, cancelling or resuming a membership — and by a lock that keeps a trial tier the user already holds, including on Ultra where there is nothing higher. Every one of those ended on the notice, and it stayed until the session ended. Only a lock or an annual fee raises a tier now, so only those arm the window (`tierPurchased`). Savings refreshes still refetch the rewards payload and balances, but no longer wait for a promotion. The window now ends quietly: a purchase is confirmed on chain before it opens, so running out means the tier is slow to show, not that it failed. The notice, and the `timedOut` / `savingsConfirmed` state behind it, are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CcwfLYRST5mRidUcxWBQjX
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. 🤖 Generated with Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
At the top of Explore Tiers, users see "Savings refreshed. No higher tier has been confirmed yet. Check your FUSE Savings balance and tier requirement before adding more." It shows up for people who are already on the tier they're looking at, including Ultra, which has nothing above it. It stays there until the app restarts.
It comes from a 90-second "wait for a promotion" window in
useRewardsUpgradeStore. If the window ran out without a higher tier,timedOutwas set and the screen showed the notice. These actions all opened the window, and none of them can raise a tier any more:useClaimYieldBoost)useDepositFromSolidFuse)How many users this hit (Oct 1–8)
yieldBoostClaims, allpaid)Tier Lock Completed, last 30d)A yield-boost claim almost always ended on the notice, so about 84 users have likely seen it since the boost launched on Oct 1. Our data can't tell which of the 19 lockers already held their tier through the old soFUSE rule, so we don't know how many of them saw it. I found no existing monday.com item for this bug.
Fix
Only a lock or an annual fee raises a tier now, so:
savingsChanged→tierPurchased. OnlyuseLockFuseForTieranduseSubscribeToTierstart the window. Cancel and resume now just refresh data.refreshRewardsAfterSavingsstill refetches rewards and balances, but no longer starts the window. TheconfirmedSavingsflag is gone.timedOut/savingsConfirmedstate are removed.pendingselectors on the benefits and Buy FUSE screens are now just!!pendingUntil.The celebration after a real upgrade, and the 90-second polling that catches it, work the same as before.
Testing
jeston the reward-store, rewards-hook, deposit, realtime, swap and Buy FUSE suites, plus a newrefreshRewardsAfterSavingstest: 8 suites, 82 tests pass.eslintandprettier --checkpass on the changed files.tsc --noEmitreports no errors in the changed files. The 8 errors it does report are in files this PR doesn't touch and are already onmaster.🤖 Generated with Claude Code
https://claude.ai/code/session_01CcwfLYRST5mRidUcxWBQjX
Generated by Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.