Add post-buy transaction result share popover (#365) #536
No reviewers
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:open_issues
agents
agent:security_audit
agent:verify
area
timecurve
arena
arena-v2
audit
block:feature_review
block:security
bug
contracts
design
devops
docs
documentation
enhancement
epic
feature
frontend
indexer
low priority
megaeth
operations
ops
performance
QA
qa checklist
referrals
removal
security
smart-contracts
tech-debt
testing
time-arena
timecurve
visual-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
code/yieldomega!536
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-365-buy-result-share-popover"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implements GitLab #365: after every successful CHARM buy on
/, a closable transaction-result share card replaces the ephemeral multi-toast stack (#337). The card collapses buy effects into ≤7 scannable rows (timer, rank, BP, XP/level, streak, flag), upgrades from preview → indexer-confirmed values when the viewer's buy reaches head, and supports Copy summary / Copy tx link. Defers while level-up celebration is active; rapid buys replace the card cleanly.Tied to parent funnel epic #363.
Acceptance checklist
/cd frontend && CI=1 npm run test:e2e -- --workers=5 e2e/anvil-arena-03-wallet-writes.spec.ts(afterbash scripts/e2e-anvil.sh)cd frontend && npm test -- arenaBuyShareSummary.test.tsarenaBuyShareSummary.test.ts+ manual review of screenshotscd frontend && CI=1 npm run test:e2e -- --workers=1 e2e/buy-result-share-screenshots.spec.tsuseArenaBuyResultSharePopover.ts+arenaBuyShareSummary.test.tsArenaBuyResultSharePopover.test.tsxcelebrationActivedefer in hook; WYWA onTimeArenaPageonlynpm run typecheck && npm run lint && npm testcd frontend && npm run typecheck && npm run lint && npm testVerification for third parties
cd frontend && npm run typecheck && npm run lint && npm testcd frontend && npm run build && CI=1 npm run test:e2e -- --workers=1 e2e/buy-result-share-screenshots.spec.tsbash scripts/e2e-anvil.sh(or targetede2e/anvil-arena-03-wallet-writes.spec.ts) — buy → popover visible → dismissdocs/testing/screenshots/issue-365/docs/testing/rabby-cloud-agent-qa.mdBlockers
bash scripts/e2e-anvil.shsuite reported 2 unrelated failures on this VM (anvil-arena-01-mountAUDIT URL/auditvs/arena/protocol;anvil-arena-05missingarena-xp-hero). #365-specificanvil-arena-03-wallet-writesbuy popover test PASS.Docs / invariants
INV-FRONTEND-365-BUY-RESULT-SHAREindocs/testing/invariants-and-business-logic.mddocs/frontend/arena-views.md§365docs/testing/manual-qa-checklists.md§365skills/play-time-arena-doub/SKILL.mdBugbot is not enabled for your account, so this pull request was not reviewed.
Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.
Security review — MR !536
Commit reviewed:
785cd4b74f92750098a9bd883cfe26c6f58f408dScope: Post-buy transaction result share popover (#365) —
ArenaBuyResultSharePopover,useArenaBuyResultSharePopover,arenaBuyShareSummary, clipboard/share helpers, E2E screenshot hook, docs/tests/CSS.Outcome:
FINDINGS: 0medium+Inline threads: none
Areas reviewed
headline, row labels/values, copy banners) render via React text nodes; nodangerouslySetInnerHTMLorhrefsinks in the diff.rowClassNamemaps a fixedtoneunion from parsed effect lines; no attacker-controlled class fragments.explorerTxUrlenforces^0x[0-9a-fA-F]{64}$before URL construction; copy actions usenavigator.clipboard.writeTextwith validated or locally-built strings only.__yieldomegaE2eShowBuyResult)VITE_E2E_MOCK_WALLET=1or__yieldomegaE2eBuyResultEnabled(Playwright init); not active in production bundles without mock-wallet flag. Overlay is display-only.resolveArenaBuyEffectToastLines/buildArenaBuyActualEffectLinespaths (same trust boundary as superseded #337 toasts).findViewerBuyAtHeadgates indexer upgrade to viewer wallet at head.Security review: no medium+ findings on this diff.
added 5 commits
main2a7ad1d3- Merge origin/main into issue-365-buy-result-share-popoverCompare with previous version
Resolved merge conflicts with
main(merge commit2a7ad1d3).Conflict:
docs/testing/invariants-and-business-logic.md— overlapping invariant rows for #337, #362, and #365.Resolution: Kept MR #365
INV-FRONTEND-365-BUY-RESULT-SHAREand the legacy superseded #337 row; adoptedmain's updated #362 wording (arenaV2WarbowFlagSupplementContractsindexer-first supplement).Sanity:
npm run typecheck,npm run lint, and targeted Vitest for buy-result-share (arenaBuyShareSummary,ArenaBuyResultSharePopover,mobileBuyResultShareLayout) — all PASS.Bugbot is not enabled for your account, so this pull request was not reviewed.
Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.
Security review — MR !536
Commit reviewed:
2a7ad1d3a926e05852661edaa0a52bca9c0a7fccScope: Post-buy transaction result share popover (#365) —
ArenaBuyResultSharePopover,useArenaBuyResultSharePopover,arenaBuyShareSummary, clipboard/share helpers, E2E screenshot hook, docs/tests/CSS. Re-reviewed after merge frommain(conflict resolution in invariants docs only; no new #365 code paths in merge delta).Outcome:
FINDINGS: 0medium+Inline threads: none
Areas reviewed
headline, row labels/values, copy banners) render via React text nodes; nodangerouslySetInnerHTMLorhrefsinks in the diff.rowClassNamemaps a fixedtoneunion from parsed effect lines; no attacker-controlled class fragments.explorerTxUrlenforces^0x[0-9a-fA-F]{64}$before URL construction; copy actions usenavigator.clipboard.writeTextwith validated or locally-built strings only.__yieldomegaE2eShowBuyResult)VITE_E2E_MOCK_WALLET=1or__yieldomegaE2eBuyResultEnabled(Playwright init); not active in production bundles without mock-wallet flag. Overlay is display-only.resolveArenaBuyEffectToastLines/buildArenaBuyActualEffectLinespaths (same trust boundary as superseded #337 toasts).findViewerBuyAtHeadgates indexer upgrade to viewer wallet at head.Security review: no medium+ findings on this diff.
mentioned in commit
d8a779f26e