Fixed in local code and verified. Root cause: - The petsitter dashboard banner was reading stale translation copy for the Stripe setup alert, so the route rendered the old title, subtitle, CTA, and supporting text shown in the issue evidence. Implementation: - Updated the dashboard Stripe alert copy in the petsitter translation sources used by the route. - Kept the component and route logic unchanged; this was a content-source fix, not a UI-logic workaround. Regression coverage: - tests/unit/petsitter-dashboard-stripe-copy.test.ts - tests/unit/lib/petsitter-dashboard-capacity.test.ts Commands run: - npx vitest run tests/unit/petsitter-dashboard-stripe-copy.test.ts tests/unit/lib/petsitter-dashboard-capacity.test.ts -> pass Reproduction result: - Confirmed from the original staging issue payload and DOM excerpt: the card previously rendered "Payment Setup Required", "Complete your payment setup to start accepting bookings", and "Complete Setup". - Local post-fix verification was run on the same dashboard flow with a seeded sitter session. Visual verification: - Route verified in Chrome DevTools MCP: http://localhost:3000/at/petsitter/dashboard - Confirmed the banner now shows "Let us know where to send your earnings!", the updated subtitle, and the "Complete setup" CTA. - Console check: no critical errors; one unrelated existing Next.js image sizing warning for /holidog.webp. - Network check: core dashboard/auth/bootstrap requests were 200; one aborted /api/events/poll long-poll request was non-blocking and unrelated to the banner state. Artifacts: - Attached screenshot: full local /at/petsitter/dashboard after the fix, with the updated payment banner visible near the top of the page. Residual risk: - Low. The change is isolated to translation copy, and the new regression test locks the exact banner strings used by the dashboard.
qa-fix-174-full.png