Arena: elevate WarBow steal / guard / revenge in hero (PageHeroArcadeBanner) #101
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#101
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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
Improve
/timecurve/arenaso steal, guard, and revenge are obvious at first glance, easy to run, and backed by clear visual hierarchy—without losing YieldOmega’s arcade / competitive tone. Target the hero banner (PageHeroArcadeBanner) region that currently carries the long lede + status badges (BUY + DEFEND + STEAL), per:#root→main.app-main→section.page.page--timecurve→div.page-hero→div.arcade-banner.arcade-banner--with-sidekick.arcade-banner--with-scenePageHeroArcadeBanner(file:frontend/src/pages/timeCurveArena/TimeCurveArenaView.tsx)Problem
WarBow actions today live primarily in
WarbowSectionfurther down the page (TimeCurveSections.tsx). New or casual users can miss that PvP is the point of “Arena,” and steal / revenge require manual address entry and scrolling.Proposed direction
Hero content swap (primary ask)
Replace or heavily supplement the current hero copy + pill strip with a compact WarBow action cluster:
0x…), with BP / guard / daily-cap hints where we already have data.hasRevengeOpen, with who (pending stealer) surfaced from existing contract reads—optionally history if indexer supports it later.Visual hierarchy
WarbowSection/ protocol page as today.Data / indexer
/v1/timecurve/warbow/leaderboard,fetchTimecurveWarbowLeaderboard) + live contract reads (viewer BP,warbowGuardUntil,stealsReceivedOnDay) to filter and sort candidates client-side, orwarbowPendingRevengeStealer/ expiry; still present as a clear card or row when open.Scope boundaries
WarbowSectiondetail (feed, rules, flag flow) unless we explicitly fold it elsewhere in a follow-up.Acceptance criteria (suggested)
hasRevengeOpen, showing counterparty and deadline inline.data-testid).References
frontend/src/pages/timeCurveArena/TimeCurveArenaView.tsx—PageHeroArcadeBanner,WarbowSectionplacementfrontend/src/pages/timecurve/TimeCurveSections.tsx— current steal/revenge implementationfrontend/src/pages/timeCurveArena/useTimeCurveArenaModel.tsx—runWarBowSteal,runWarBowRevenge,hasRevengeOpen, preflightfrontend/src/lib/indexerApi.ts—fetchTimecurveWarbowLeaderboard,fetchTimecurveWarbowBattleFeeddocs/product/primitives.md(WarBow steal / revenge / guard)Labels
UX / frontend / TimeCurve / WarBow (add as appropriate in GitLab)
Implemented and pushed the issue #101 Arena WarBow hero update to
main(5ee703e).What changed:
WarbowHeroActionsinside the/timecurve/arenaPageHeroArcadeBannerso wallet context, Steal, Guard, and Revenge are visible in the hero region.stealVictimInput, and livebattlePoints/stealsReceivedOnDayreads plusdescribeStealPreflightremain the eligibility gate.WarbowSectionin place for rules, manual target entry, flag claim, feed, and deeper context.buyFeeRoutingEnabledwrite barriers for the new hero controls.docs/frontend/timecurve-views.md,docs/testing/invariants-and-business-logic.md, andskills/play-timecurve-warbow/SKILL.mdfor third-party/player agents.Verified:
pnpm test(40 files / 234 tests)pnpm run typecheckpnpm run lint(passes with one pre-existing Fast Refresh warning inIndexerConnectivityContext.tsx)pnpm run buildpnpm exec playwright test e2e/timecurve.spec.ts --workers=5/timecurve/arenawith local Anvil/indexer env: hero cluster renders candidate rows, bypass checkbox, Attempt steal, Guard, and Revenge without clipping.Checklist for verification:
/timecurve/arena, confirm the PageHeroArcadeBanner shows wallet context plus Steal / Guard / Revenge cards.@brouie please verify the fix when you have a chance. Leaving the issue open for your confirmation.
mentioned in commit
ca2aaffdd6Source-level pre-walkthrough complete on
5ee703e(folded into243e2a0) — all wiring/gates/docs verified. Browser walkthrough deferred to a stack-up session.Source-level checks (8/8 PASS)
WarbowHeroActions.tsxexists and is wired intoPageHeroArcadeBanner—TimeCurveArenaView.tsx:44import, rendered at line 1060 inside the live-state hero (line 1041). The env-misconfig fallback hero (line 345) is unchanged and instructional.<ChainMismatchWriteBarrier testId="timecurve-arena-hero-warbow-chain-write-gate">wraps the entireWarbowHeroActions(line 1059). Unique testId for E2E selectors.buyFeeRoutingEnabledwrite barrier preserved —WarbowHeroActions.tsx:80const writesPaused = buyFeeRoutingEnabled === false;+ line 82 composite gatecanPressWarbow = isConnected && saleActive && !writesPaused && !isWriting. All 3 actions (Steal/Guard/Revenge) gated oncanPressWarbowat lines 198/223/246.describeStealPreflightstill gates eligibility — preflight passed as prop (line 1077); Steal button line 198 disabled whenstealPreflight.tone === "error". Status message at lines 180-181 surfaces preflight title + detail.stealVictimInputreused (no parallel state) —setStealVictimInputwired at line 1070; target candidate buttons feed the existing setter, so livebattlePoints/stealsReceivedOnDayreads remain the source of truth.WarbowSectionstill in place — defined atTimeCurveSections.tsx:257, imported atTimeCurveArenaView.tsx:50, rendered at line 1281. Hero is additive, not a replacement.docs/frontend/timecurve-views.md: anchor +## Arena WarBow hero actions (issue #101)heading at lines 153/155.docs/testing/invariants-and-business-logic.md: top-table row at line 75, detailed prose at line 141, sub-table at line 148 explicitly listing the write barriers.skills/play-timecurve-warbow/SKILL.md: lines 27 + 69 cross-link the hero discovery rule.WarbowHeroActions.test.tsx: 3 tests, all PASS innpx vitest run WarbowHeroActions(29ms). Coverage hits spec acceptance criteria 1 (hero cluster has all 3 actions) and 2 (selectable candidates + empty state).Browser walkthrough — deferred
The 6 items in your verification checklist all start with "On
/timecurve/arena, confirm..." — those need a live stack + browser. Will run them in a stack-up session and post a follow-up note. Logic is in place; this is confirmatory, not exploratory.Leaving open. cc @PlasticDigits
mentioned in issue #108
OK please run in live stack plus browser @Brouie
live browser walkthrough done.
item 1: PageHeroArcadeBanner on /timecurve/arena renders WALLET CONTEXT card (
0xf39Fd6...2266, Your BP 0) + PRIMARY PVP STEAL + DEFENSE GUARD + COUNTERPUNCH REVENGE all clustered in hero region above the deeper WarBow section.item 3: with no indexed ladder, hero shows "No indexed 2x BP steal target yet. The detailed WarBow section still accepts a manual address." Attempt steal button stays unselectable without a target.
item 4: clicked Activate guard, MM prompted for the 10 CL8Y burn, post-tx hero panel updated to show "Guard active until" header with both LOCAL and UTC timestamps + button label flipped to "Extend guard". active-until copy renders cleanly.
item 5: empty-state revenge panel shows "No revenge slot is open for this wallet. A successful steal against you opens one pending stealer." — negative-case proof that the CTA + deadline UI is correctly suppressed when no slot exists.
item 6: lower WarBow section still rendering with manual steal-victim address input, claim flag button, top rivals board, rivalry feed, and rules/eligibility. full deeper context preserved alongside the new hero.
item 2 deferred: indexed candidate-button selection feeding stealVictimInput needs an indexed ladder which requires bot swarm to populate. happy to spawn a swarm and retest if needed; otherwise items 1/3/4/5/6 + the source-level walkthrough already on file cover the meat.
mentioned in issue #96
mentioned in commit
fc6ba68fccmentioned in issue #211
mentioned in issue #216
mentioned in issue #218
mentioned in issue #236
marked as related to #236
mentioned in commit
261e7b474dmentioned in merge request !394
mentioned in issue #361