Update backend/package-lock.json to ensure dependency consistency.
This file should be committed to the repository as per npm best practices
for reproducible builds across all environments.
- Restored QRCodeSVG component rendering in ShareCard for QR code display
- Fixed copy QR code and download QR code functionality
- Changed paste button label in SendTabPanel from 'Paste RoomID' to generic 'Paste'
- Keep 'Paste RoomID' label in RetrieveTabPanel where it's contextually appropriate
Resolve the remaining lint warnings without changing behavior by fixing hook dependency lists, removing the icon naming false positive, and switching the YouTube thumbnail to next/image for compliant rendering.
Align the next-intl message schema across components, hooks, and locale files so the frontend uses one canonical structure instead of compile-first workarounds. Restore Spanish, French, German, Japanese, and Korean translations to the new schema while narrowing clipboard hook dependencies to translation contracts.
- FAQSection: useTranslations with dynamic keys via type assertion
- ClipboardApp: useTranslations for JSX, keep useMessages for hooks
- SendTabPanel: useTranslations for html and roomStatus namespaces
- RetrieveTabPanel: useTranslations for html, roomStatus, and ClipboardApp
- FileListDisplay: useTranslations for FileListDisplay namespace
- FileUploadHandler: useTranslations for fileUploadHandler namespace
Only ClipboardApp.tsx retains useMessages for hooks requiring full messages object.
- Simplify flows.zh-CN.md to an entry + quick reference, add "Quick Navigation" and in-depth reading links, original sections 6/7/9/10 are retained in the entry page with titles but changed to links.
- Add in-depth reading sub-document:
- docs/ai-playbook/flows/frontend.zh-CN.md
- docs/ai-playbook/flows/backpressure-chunking.zh-CN.md
- docs/ai-playbook/flows/resume.zh-CN.md
- docs/ai-playbook/flows/reconnect-consistency.zh-CN.md
- docs/ai-playbook/index.zh-CN.md add "Process (In-depth reading split)" index
- Prevent server-side exceptions (Application error) on mobile after redirects
- useOneShotSlowHint: guard document; use global setTimeout; conditionally attach visibilitychange
- useConnectionFeedback: guard document.visibilityState; register/remove listeners only on client
- usePageSetup: guard window before tracking referrer and parsing roomId
- tracking: early return when window is undefined
- docs(flows): add “SSR & DOM access guard (must-read)” checklist; renumber next section
- Add multi-language post “Cached ID reconnect: auto rejoin and resume”:
zh, en, ja, ko, de, fr, es under: frontend/content/blog/cached-id-reconnect/*.mdx
- Include cover asset: frontend/public/blog-assets/cached-id-reconnect.webp
- Describe receiver auto-join, reconnect workflow, and resume behavior.
- Tag with WebRTC/P2P/reconnect for discoverability.
- Receiver: auto-fill and join on Retrieve tab when input empty, not in room, no URL roomId, and cachedId exists (ClipboardApp + roomIdCache)
- Sender: “Use cached ID” now immediately joins the room (add onUseCached + disabled to CachedIdActionButton; wire in SendTabPanel)
- UI: add ThemeToggle and integrate into Header (desktop and mobile)
- Styles: replace hardcoded white with design tokens in Retrieve panel (bg-card/text-card-foreground) for dark mode
- Docs: update AI playbook flows and code-map