Summary
Pick up the existing GoodReserve widget PR, run it locally, fix implementation gaps,
align the implementation with the approved design references, update tests/evidence,
and prepare it for human review.
Source references:
Contributor task
Claim the bounty with an ETA.
Check out PR Add @goodwidget/goodreserve-widget with reserve swap runtime contract, quote/tx state machine, and Storybook/demo coverage #39 and run Storybook plus the targeted widget tests locally.
Compare the implementation against issue [Plan]: Build GoodReserve Widget — Reserve swap UI backed by GoodReserve SDK #15 , PR Add @goodwidget/goodreserve-widget with reserve swap runtime contract, quote/tx state machine, and Storybook/demo coverage #39 , the Stitch prototype, the Figma design, and the GoodWidget repo docs.
Fix concrete gaps in reserve swap behavior, SDK wiring, UI structure, spacing, visual hierarchy, tests, or evidence.
Keep reserve-specific logic inside packages/goodreserve-widget unless reuse is clearly needed.
Leave a handoff comment with fixes, verification, evidence, and remaining risks.
GoodReserve checks
packages/goodreserve-widget remains the main implementation surface for the reserve widget.
The widget still uses the provider-first GoodWidget runtime path and does not add a new wallet abstraction.
Disconnected and unsupported-chain states are clear and actionable.
Supported-chain behavior is correct for Celo (42220) and XDC (50).
Buy and sell directions both work and update token labels, balances, and quote presentation correctly.
Amount editing, quote debounce/loading, quote success, and quote failure states are coherent and do not regress.
Insufficient balance, reserve warning, and reserve-specific error states are surfaced with user-readable messaging.
Slippage selection, confirm dialog, pending, success, and error transaction states all behave correctly.
widgetRuntimeContract.ts and integration.ts still accurately describe the widget states, events, and dependencies.
Main swap view, confirmation flow, CTA states, warning/error presentation, and success feedback align with the Stitch and Figma references from issue [Plan]: Build GoodReserve Widget — Reserve swap UI backed by GoodReserve SDK #15 .
UI stays aligned with the GoodWalletV2 swap reference and the GoodWidget design-system constraints.
Visual polish issues are addressed, including layout, spacing, hierarchy, and component treatment where PR Add @goodwidget/goodreserve-widget with reserve swap runtime contract, quote/tx state machine, and Storybook/demo coverage #39 does not yet match the provided references (stitch and figma).
Mobile and desktop layouts are usable.
Storybook and test checks
Stories cover no-provider, unsupported-chain, buy/sell, amount editing, quote loading, quote-ready buy, quote-ready sell, quote error, insufficient balance, slippage selection, confirm dialog, swap pending, swap success, and swap error.
Reserve-specific fixtures remain deterministic and CI-safe without requiring live RPC behavior.
Playwright coverage verifies the main reserve stories and key CTA/state transitions for the widget.
Updated screenshots reflect the latest UI after alignment to the Stitch/Figma references.
Any updated screenshots or UI evidence are reflected in the PR description or contributor handoff comment.
Required commands
pnpm install
pnpm build
pnpm lint
pnpm test:storybook
pnpm test:demo tests/widgets/goodreserve-widget
If a command cannot be run, document why and treat the underlying blocker explicitly.
Acceptance criteria
Summary
Pick up the existing GoodReserve widget PR, run it locally, fix implementation gaps,
align the implementation with the approved design references, update tests/evidence,
and prepare it for human review.
Source references:
@goodwidget/goodreserve-widgetwith reserve swap runtime contract, quote/tx state machine, and Storybook/demo coverage #39https://stitch.withgoogle.com/preview/1645756043403511215?node-id=1d5c2d1b8fcc445f9a060ce226a5d495https://www.figma.com/design/xsk5EiF6CvStA9mtdbA9OR/GoodWidget-Library?node-id=2311-2&t=3MMOUiTScwCmxTQp-1Contributor task
@goodwidget/goodreserve-widgetwith reserve swap runtime contract, quote/tx state machine, and Storybook/demo coverage #39 and run Storybook plus the targeted widget tests locally.@goodwidget/goodreserve-widgetwith reserve swap runtime contract, quote/tx state machine, and Storybook/demo coverage #39, the Stitch prototype, the Figma design, and the GoodWidget repo docs.packages/goodreserve-widgetunless reuse is clearly needed.GoodReserve checks
packages/goodreserve-widgetremains the main implementation surface for the reserve widget.42220) and XDC (50).widgetRuntimeContract.tsandintegration.tsstill accurately describe the widget states, events, and dependencies.@goodwidget/goodreserve-widgetwith reserve swap runtime contract, quote/tx state machine, and Storybook/demo coverage #39 does not yet match the provided references (stitch and figma).Storybook and test checks
Required commands
If a command cannot be run, document why and treat the underlying blocker explicitly.
Acceptance criteria
The PR satisfies issue [Plan]: Build GoodReserve Widget — Reserve swap UI backed by GoodReserve SDK #15 without expanding scope beyond the GoodReserve widget.
The widget package remains implemented under
packages/goodreserve-widget.The visible widget UI is aligned with the Stitch and Figma references linked from issue [Plan]: Build GoodReserve Widget — Reserve swap UI backed by GoodReserve SDK #15.
There is an interactive demo on stitch:
https://stitch.withgoogle.com/preview/1645756043403511215?node-id=1d5c2d1b8fcc445f9a060ce226a5d495
And for exact colors, structure, spacing check the figma
https://www.figma.com/design/xsk5EiF6CvStA9mtdbA9OR/GoodWidget-Library?node-id=2311-2&t=3MMOUiTScwCmxTQp-1
Required reserve widget states are visible in Storybook.
Targeted Playwright coverage for
tests/widgets/goodreserve-widgetis current.The PR description links issue [Plan]: Build GoodReserve Widget — Reserve swap UI backed by GoodReserve SDK #15 and includes current test evidence.
Leave a handoff comment with fixes, verification, evidence, and remaining risks. Use the hand-off template