mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-13 19:20:04 +00:00
1130f7df32
* ✨ feat: add browser device pairing flow to /settings/devices - Add "Via Browser" tab to ConnectDeviceModal with pairing code display and input - Add "Register this browser as a device" callout card above DeviceList - Support ?pair=<code> URL param to auto-open browser pairing modal with pre-filled code - Improve DeviceList empty state with method cards (Desktop + CLI) - Ship en-US and zh-CN i18n keys for all new browser/sync strings Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * 🔨 fix(devices): fix lint warnings — import sort order and empty catch block * fix(devices): add pair API route and invalidate device list cache - Create /api/devices/pair POST handler that authenticates the user via Better Auth session, validates the code against the user's registered devices via DeviceModel.findByDeviceId, and returns JSON. - Replace the setListKey/key-prop re-mount trick with lambdaQuery.useUtils().device.listDevices.invalidate() so the tRPC React Query cache is properly busted after a successful pair (fixes staleTime: 30s preventing the new device from appearing). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ♻️ refactor(devices): drop browser pairing, fix modal close, redesign UI - Remove the "Via Browser" pairing flow entirely: browser tab in ConnectDeviceModal, the "register this browser" callout card, the ?pair=<code> deep-link, and the /api/devices/pair stub route. Only the real Desktop and CLI connection methods remain. - Fix the modal that couldn't be closed: @lobehub/ui Modal closes via onCancel (antd), not onClose — the X button was a no-op. - Redesign the connect modal (segmented tabs, numbered steps, command blocks with copy, security footer) and the empty state (onboarding hero with Desktop/CLI options + capability cards). - Clean up browser/sync i18n keys; add capabilities + footer keys for en-US and zh-CN. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * 💄 fix(devices): apply card radius — cssVar.borderRadius already has unit The radius tokens (cssVar.borderRadius / borderRadiusLG) already include their unit, so the trailing `px` produced `var(--…)px`, which browsers drop — leaving the cards with sharp corners. Drop the `px` so the cards pick up the same rounded radius as the appearance settings FormGroup. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>