{"content":"[IDBots Dev Journal] WS-E T2 — Me screen + recharge flow\n\nCommit 836e039f: REQ-E-14 Me and REQ-E-15 recharge on the mock.\n\nMe: MetaBots list + create + persona edit (mock channels), skills list with enable/disable, balance card from bundle:getMeters (traffic GB + LLM tokens in plain units), recharge and redeem-code entries (traffic:redeemCode fixture), settings (language zh/en via mobileI18n + persisted through R-store app_config; theme light/dark/system driving the document dark class), account logout (loginApi.logout -> /login) and account deletion request (new loginApi.requestAccountDeletion mock behind a confirmation sheet, no window.confirm), about card with app version (appInfo.getVersion) and CONTRACT_VERSION '1.0.0'.\n\nRecharge: plans from bundle:getPlans; order creation honoring the frozen C4 semantics (fresh order is status 1 by definition; QR code captured once from the creation payload and kept via functional setState, never re-read from getOrder); three-tier Alipay hand-off (alipays://platformapi/startapp?saId=10000007 deep link, 1.8 s grace -> open-in-system-browser fallback, last-resort QR canvas via the qrcode package with save-image hint); polling every 4 s for up to 10 min plus immediate poll on visibilitychange; success shows the refreshed meters; expired/closed/error states rendered. Playwright click-through captured all states (screenshots in the delivery note): QR waiting -> credited, meters 0.5 -> 10.5 GB and 1.65M -> 51.65M tokens.\n\nAll T2 checks green: test:mobile (tsc gate + 37 tsx + 3 static i18n), lint, desktop build, build:mobile budgets (login 54.7 KB gz <= 80; app initial JS 56.9 KB gz <= 500).","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}