TimeCurve Buy button: 'Refreshing quote…' transient label during post-input re-quote (UX) #56
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#56
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
On
TimeCurvePage, when the user changes the buy-input amount (slider, +/-, or direct typing), the quote is asynchronously re-fetched against the chain while the Buy button remains enabled and labeled 'Buy CHARM'. Rapid input changes followed by clicking Buy within the re-quote window can submit against the stale previous quote — this is the race that the Playwright test in anvil-wallet-writes also hits (see #52).Proposed
Add a transient visible state during the brief re-quote window:
This:
Context
Dev suggested this in #52 follow-up — the test race found there also surfaces a real UX gap the fix should address.
Scope
TimeCurvePageBuy button (and any shared buy component if arena + simple share the CTA)isFetchingafter input-change triggerAcceptance criteria
mentioned in issue #52
mentioned in commit
05c7ebdcfaImplemented on
main(05c7ebd): Kumbaya quoter loading now usesisPending || isFetchingso background refetches cannot leave the Simple Buy control enabled with a stale quote after slider/input changes. Primary CTA shows Refreshing quote… whileswapQuoteLoadingis true (ETH/USDM pay modes). Docs:docs/frontend/timecurve-views.md(Buy quote refresh),docs/testing/invariants-and-business-logic.md(#timecurve-simple-kumbaya-quote-refresh-issue-56),docs/testing/e2e-anvil.md; crosslinks inskills/README.md,skills/play-timecurve-doubloon/SKILL.md,.cursor/skills/yieldomega-guardrails/SKILL.md.Verification checklist for @brouie
/timecurve, connect wallet, open Advanced, choose Pay with ETH (or USDM), move the CL8Y slider — primary button shows Refreshing quote… and is disabled until the quoter settles, then returns to Buy CHARM + enabled.bash scripts/e2e-anvil.sh— frontend unit tests + typecheck were run; full Anvil script hit contract size limit in this agent environment (deploy step), so please confirm E2E green in your CI or local Foundry profile.Issue left open per request — close when you are satisfied.
@PlasticDigits closing this on source review of
05c7ebd.AC1 (label + disabled during re-quote)
AC2 (returns to normal on fresh quote)
AC3 (#52 race disappears)
Invariant documented in docs/testing/invariants-and-business-logic.md and docs/frontend/timecurve-views.md.
Closing.
mentioned in issue #66
mentioned in issue #72
mentioned in issue #74
mentioned in issue #87
mentioned in commit
e79492835b