Skip to content

fix(rewards): make the route switch label legible, and name soFUSE - #2539

Merged
MusabShakeel576 merged 3 commits into
qafrom
claude/festive-fermat-1xn11s
Sep 20, 2026
Merged

MusabShakeel576 merged 3 commits into
qafrom
claude/festive-fermat-1xn11s

Conversation

@MusabShakeel576

Copy link
Copy Markdown
Contributor

No description provided.

Two things a user reading the upgrade screen could not get right.

The selected segment's label was white on the white pill, for the third
time. The colour was in the `style` prop, which cannot win: `ui/text`
prepends `text-foreground` to every label, tailwind-merge only drops it
when the label brings a colour class of its own, and on web a Tailwind
colour beats the `style` prop outright because react-native-web inserts
its stylesheet as `head.firstChild`, below the Tailwind sheet. The class
list that shipped was literally `text-foreground web:select-text`. The
colour is now declared in both layers, saying the same thing, and the
class lives in its own module with a test that asserts the base colour
is merged away — the thing that was actually broken.

The lock takes soFUSE, the Savings position, not native FUSE. Every
screen said "FUSE", which sends people looking in their wallet for a
token the lock never touches. The rows now name soFUSE in the label and
keep the FUSE the shares are worth in the value — the tier threshold is
denominated in FUSE, so both belong on the row — and the prose says
plainly that it is soFUSE from Savings and not native FUSE.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGzkz4QFpEZVg6GpNH311x
"You're on Prime now!" appeared over the review screen, on a purchase
nobody had made yet.

Two things put it there. The celebration is mounted on the protected
layout — deliberately, because a tier can arrive from a points
milestone, a savings deposit or a trial, and all of them should get the
same card — so it draws over whatever screen is up, review screen
included. And it measured a promotion against the *last* tier seen,
while the backend re-derives the tier from a lock, a subscription row
and a soFUSE balance it caches for a minute: a read taken
mid-reconciliation can come back a tier low and the next one put it
back, which against the last tier is indistinguishable from an upgrade.

So it now measures against the highest tier seen this session, where a
recovery reads as what it is, and it does not draw at all on the two
screens that buy a tier. Suppressed, not cancelled: the success survives
in the store, so the card shows the moment the completed purchase
replaces the route with Rewards — which is where it was always meant to
appear.

The fields an account switch clears are exported as one object, because
a new field missed in a test's setup leaks between tests, and a leaked
high-water mark is a promotion that silently stops being observed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGzkz4QFpEZVg6GpNH311x
…ub card

The v3 washes had drifted onto three different diagonals. They run one
way now, stated once in `tierGradients` and spread into each gradient:
from the top-right corner, where the tint is, to the bottom-left, where
it goes black. The upgrade card's backdrop was lit from the opposite
corner and now is not; its far end is near-black rather than the grey it
faded to.

"Join Prime Club" is the deliberate exception and runs the other
diagonal, bottom-right to top-left, which puts the heading on the dark
corner and the tint under the benefit chips. Its green was also too
faint to be green: at 0.16 over #1C1C1C the brand colour lands on
rgb(47,62,44), a couple of points off the card it sits on, which reads
as grey. It is now unmistakably the tier's colour, with a black stop
behind the heading.

The benefits screen's two scroll fades are left vertical — they dim
content off the top and bottom edges, and a fade only works along the
edge it belongs to.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XGzkz4QFpEZVg6GpNH311x
@vercel

vercel Bot commented Sep 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Actions Updated
solid-app Ignored Ignored Sep 20, 2026 3:13pm UTC
solid-app-staging Ignored Ignored Sep 20, 2026 3:13pm UTC

Request Review

@MusabShakeel576
MusabShakeel576 merged commit 547c1d6 into qa Sep 20, 2026
5 of 6 checks passed
@MusabShakeel576
MusabShakeel576 deleted the claude/festive-fermat-1xn11s branch September 20, 2026 15:13
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