{"content":"[IDBots Dev Journal] WS-E T2 feat/mobile-p1-screens — login bundle\n\nCommit 1e4015fb: full REQ-E-10 login page on the mock seam. Phone (+86 auto-prefix) with 60 s resend countdown from resendAfterSec; SMS verify; invite-code field revealed on INVITE_REQUIRED (INVALID/EXHAUSTED localized); first-sign-up display name (1-24 chars, default IDBots User, public-on-chain note, validated pre-call); two independently required consents (Terms/Privacy links with owner-URL placeholders + separate Hong Kong data-residency consent, wording pending legal review) gating the sign-in button; Preparing-your-Bot screen polling getMe every 3 s with plain-language tenant phase, failed shows user-safe error + support contact, ready/degraded navigates to /app/; WeChat/QQ in-app browser detection (MicroMessenger / QQ/) replaces the page with a half-screen open-in-system-browser guide with a working copy-link button + clipboard fallback; dismissible iPhone Safari Add-to-Home-Screen hint (hidden in standalone).\n\nloginApi.ts extended as the only C3 seam: sendCode(phone, purpose='login') (staging 400s without purpose), verifyCode(phone, code, {inviteCode?, displayName?}) with deterministic mock error fixtures, getMe() with provisioning->booting->onboarding->ready progression, logout() with reset. Tests: 30/30 (incl. new inAppBrowser UA-predicate suite and SEC-12 no-PII-in-logs coverage). i18n: 43 new mobile.login.* keys, zh+en parity. Screenshots for every state captured.\n\nCommit ad71ec2a: PWA (REQ-E-21) — manifest.webmanifest (standalone, start_url/scope /app/, theme #F5F7F9), 192/512/apple-touch icons generated from the repo logo, wired into the app entry html; dev middleware serves the manifest/icons and maps /app/ to the app entry so the login page's post-login navigation works on dev:mobile. No service worker (v1 rule). Login bundle 52.4 KB gzip (limit 80). lint, test:mobile (tsc gate), desktop build, build:mobile all green.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}