Skip to content

feat(superfluid-campaign-widget): Season 7 update - #302

Open
goodbounties-nanoclaw-agent[bot] wants to merge 4 commits into
mainfrom
patch/superfluid-season-7
Open

goodbounties-nanoclaw-agent[bot] wants to merge 4 commits into
mainfrom
patch/superfluid-season-7

Conversation

@goodbounties-nanoclaw-agent

@goodbounties-nanoclaw-agent goodbounties-nanoclaw-agent Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Closes #301

Season 7 patch for the Superfluid Campaign Widget, covering the standalone app (apps/superfluid-campaign-web) and the GoodWallet-embedded widget. Requested by Meri Fernandez in #gd-patch.

Changes

  • Copy: "SEASON 7", new header description, "Ends Feb 28th" (campaign end Feb 28, 2027); season-ended notice and SeasonNotice removed.
  • Campaigns: GoodDollar Actions 701 and Ecosystem Actions 710 (replacing 606/614). SUP totals still come from the live programs API, nothing hardcoded.
  • Disabled cards: Invite users, Vote on Flow State and Fund GoodBuilders Season 5 are greyed out, have no links, and show "Coming up soon". Their points labels stay. Vote/Fund copy now refers to GoodBuilders Season 5.
  • New AntSeed cards (updated after review feedback):
    • "Buy AI Credits": "Get 10% more AI credits with G$.", button label BUY, 1 PT per 1K G$.
    • "Subscribe to AI Credits": "Stream G$ for 20% more AI credits.", 2 PTS per 1K G$.
    • Both lead the Ecosystem actions list, ahead of the other cards.
    • The minimum-deposit caption was removed from the card (and minimumInfo from the action definition); the minimums now live in the FAQ answer "How can I earn points by buying AI Credits?".
    • Card height is no taller than the other action cards at every width (320px to desktop) and equal to them in the desktop row layout.
    • Copy rewards the G$ deposited or streamed, never AI Credits usage. Cart icon for Buy, stream icon for Subscribe.
  • Leaderboard: address links removed; new copy button copies the full address and shows "Address copied". New shared Tooltip in @goodwidget/ui (hover, focus, tap, Escape) on all action icons.
  • Links: per-integrator tracked links for card and button. Standalone links are set in apps/superfluid-campaign-web/src/App.tsx. GoodWallet links come through actionLinks, and the new claimRewardsUrl prop sets the header Claim SUP link. Storybook stories standalone-links-content and good-wallet-links-content show both sets.
  • FAQ: invite answer replaced; "Coming up soon", "How can I earn points by buying AI Credits?" (now includes the minimum deposit details) and "What can I do with AI Credits?" added; the four closed-action and S4 questions removed. The last new answer links to the Buy tracking link.
  • Tests: tests/widgets/superfluid-campaign-widget/states.spec.ts rewritten for the above (copy, BUY label, no minimum caption, FAQ minimums, card order, card-height parity), with refreshed and new screenshots (scw-40 to scw-44).

Not in this PR / open items

  • AntSeed event names are mapped, producer side still to be confirmed: Buy AI Credits reads aiCreditsSent, Subscribe to AI Credits reads aiCreditsStreamed (names supplied by the product owner; the Sent = one-time / Streamed = stream pairing follows the existing opensourceSent / opensourceStreamed convention and is an assumption until confirmed). Covered by a Playwright test. Not verifiable against live data until the first AntSeed events appear in campaign 710.
  • Producer side (GoodDollar/SuperfluidLeaderboard): G_DONATION_EVENT_NAMES needs the AntSeed events routed to the Ecosystem campaign.
  • Programs 701/710 aren't published yet (campaign goes live on the 12th), so the live totals will only populate then.
  • Saved invite links for later, deliberately not in code: standalone https://ubi.gd/4BPMGod, widget https://ubi.gd/4j8IOXN. Vote and Fund links will come later.
  • GoodWallet follow-up PR (src/widgets/registry.ts): pass actionLinks and claimRewardsUrl, and bump packageVersion after the widget release. The package version is intentionally not bumped here.

Verification

  • Playwright for the Superfluid widget (states.spec.ts and version.spec.ts): 83 of 83 passing locally.
  • Visual QA of the standalone and GoodWallet content screenshots, copy toast and tooltip.

CI notes

  • Fixed, caused by this PR: the action cards retain their desktop row above 480px test (my card-height parity check) failed on CI by 1px (160 vs 161) because the runner's font metrics differ slightly from local machines. The check now allows a 4px font-metric tolerance (commit 50054f0).
  • Not caused by this PR (pre-existing flaky test): CitizenClaimWidget shows not_whitelisted for fresh wallet (mocked Celo RPC) in tests/widgets/citizen-claim-widget/states.spec.ts. This PR changes no Citizen Claim files. The test fails its first attempt and only passes on retry on main too: Playwright Demo Tests runs 42594793660 and 42611225564 (push to main) both report it as "1 flaky". I also reproduced it locally on unmodified main (passed 1 of 3 runs, with the page taking around 15s against the test's 15s wait). It needs its own fix, for example a longer wait or mocking the remaining network calls.

Screenshots (under tests/widgets/superfluid-campaign-widget/test-results/): scw-43-standalone-links-content.png, scw-44-goodwallet-links-content.png, scw-42-ai-credits-cards.png, scw-40-leaderboard-address-copied.png, scw-41-leaderboard-tooltip-hover.png.

🤖 Generated with Claude Code

Season 7 copy, campaigns 701/710, disabled Invite/Vote/Fund cards, new
AntSeed Buy/Subscribe AI Credits cards, leaderboard address copy button,
shared icon tooltip, per-integrator tracked links, rewritten FAQ, and
refreshed Playwright coverage and screenshots.

Co-Authored-By: Claude Code <noreply@anthropic.com>


On-Behalf-Of: gdpatchagent[onecli] (yaskkeryodtdijpv)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The tooltip can crash on React Native, become misaligned or render off-screen, and fail hover accessibility requirements, while the new copy action bypasses native clipboard support and does not check success.

5 open issues
What changed in this PR

Updates the Superfluid Campaign Widget and standalone app for Season 7, with refreshed campaign content, AntSeed actions, integrator-specific links, and leaderboard interactions.

Changes:

  • Switches to campaigns 701/710, updates FAQs, and disables upcoming actions.
  • Adds AI Credits cards, address copying, shared tooltips, and configurable tracking links.
  • Expands Storybook previews and Playwright coverage for Season 7 behavior.
File Description
tests/​widgets/​superfluid-campaign-widget/​states.spec.ts Updates Season 7 interaction, link, and screenshot coverage.
packages/​ui/​src/​index.ts Exports Tooltip and ShoppingCart.
packages/​ui/​src/​components/​Tooltip.tsx Adds shared hover, focus, and tap tooltips.
packages/​ui/​src/​components/​ActivityIcons.ts Exports the shopping-cart glyph.
packages/​superfluid-campaign-widget/​src/​widgetRuntimeContract.ts Extends action, FAQ, and link configuration types.
packages/​superfluid-campaign-widget/​src/​SuperfluidCampaignWidget.tsx Applies FAQ link overrides and forwards Claim SUP URLs.
packages/​superfluid-campaign-widget/​src/​mocked/​fixtures.ts Refreshes campaign IDs, totals, and activity fixtures.
packages/​superfluid-campaign-widget/​src/​hooks/​useProgramSupTotals.ts Updates the unpublished-program example in a comment.
packages/​superfluid-campaign-widget/​src/​element.ts Exposes Claim SUP URL configuration to embeds.
packages/​superfluid-campaign-widget/​src/​components/​SeasonNotice.tsx Removes the season-ended notice component.
packages/​superfluid-campaign-widget/​src/​components/​LeaderboardRow.tsx Replaces address links with copy buttons.
packages/​superfluid-campaign-widget/​src/​components/​CampaignHeader.tsx Removes the notice and supports custom Claim SUP links.
packages/​superfluid-campaign-widget/​src/​components/​ActivityIcons.tsx Wraps action glyphs in shared tooltips.
packages/​superfluid-campaign-widget/​src/​components/​activityIconComponents.ts Maps the new AI Credits action glyphs.
packages/​superfluid-campaign-widget/​src/​components/​ActionCard.tsx Displays optional minimum-deposit captions.
packages/​superfluid-campaign-widget/​src/​campaignDefinition.ts Defines Season 7 campaigns, actions, and FAQs.
examples/​storybook/​src/​stories/​superfluid-campaign-widget/​SuperfluidCampaignWidgetQA.stories.tsx Adds standalone and GoodWallet link previews.
examples/​storybook/​src/​stories/​helpers/​superfluidCampaignWidgetStories.tsx Supplies integrator-specific links to stories.
apps/​superfluid-campaign-web/​src/​App.tsx Configures standalone tracking links in both provider paths.

Review effort: Balanced

// Always copies the full address, even when the row displays a truncated address or ENS name.
const handleCopyAddress = async () => {
try {
await navigator.clipboard.writeText(entry.address)

// Centers the bubble horizontally over the trigger and places it above it.
const showTooltip = useCallback(() => {
const triggerRect = triggerRef.current?.getBoundingClientRect()
Comment on lines +51 to +54
setPosition({
left: triggerRect.left + triggerRect.width / 2,
top: triggerRect.top - TOOLTIP_OFFSET_PX,
})
Comment on lines +72 to +77
window.addEventListener('scroll', handleDismiss, true)
window.addEventListener('keydown', handleDismiss)
return () => {
window.removeEventListener('scroll', handleDismiss, true)
window.removeEventListener('keydown', handleDismiss)
}
<Stack
id={tooltipId}
role="tooltip"
pointerEvents="none"
…mums, top of Ecosystem list

- Buy/Subscribe descriptions now state the 10% / 20% bonus credits
- Buy button label is BUY
- Minimum deposit details moved from the cards into the FAQ
- Buy and Subscribe lead the Ecosystem actions and match the other cards' heights
- Tests cover copy, label, FAQ, order and card-height parity; screenshots refreshed

Co-Authored-By: Claude Code <noreply@anthropic.com>


On-Behalf-Of: gdpatchagent[onecli] (yaskkeryodtdijpv)
The desktop-row height check failed on CI by 1px (160 vs 161) because the
runner renders the monospace font with slightly different line metrics than
local machines. Allow a 4px font-metric tolerance on both bounds.

Co-Authored-By: Claude Code <noreply@anthropic.com>


On-Behalf-Of: gdpatchagent[onecli] (yaskkeryodtdijpv)
Buy AI Credits -> aiCreditsSent, Subscribe to AI Credits -> aiCreditsStreamed,
replacing the activity-name fallback. Adds a Playwright test covering both.

Co-Authored-By: Claude Code <noreply@anthropic.com>


On-Behalf-Of: gdpatchagent[onecli] (yaskkeryodtdijpv)

This branch was successfully deployed

4 active deployments
preview-superfluid-campaign — fc150220 Deployed Nov 11, 2026 by goodbounties-nanoclaw-agent[bot] via preview #294
preview-storybook — fc150220 Deployed Nov 11, 2026 by goodbounties-nanoclaw-agent[bot] via preview #602
internal — fc150220 Deployed Nov 11, 2026 by goodbounties-nanoclaw-agent[bot] via authorize-preview #294
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.

[Patch] Superfluid Campaign Widget: Season 7 update

1 participant