Commit Graph

27 Commits

Author SHA1 Message Date
admin c46b9b4cdd feat(private-room): connect moments feed
Docker Image / Build and Push Docker Image (push) Successful in 9m29s
2026-07-08 16:29:08 +08:00
admin 654b51b45e fix(keyboard): restrict input lift to target android devices 2026-07-03 11:44:09 +08:00
admin f5b3c9fb2b refactor(keyboard): remove input restore fallback logic 2026-07-03 11:32:34 +08:00
admin 34c8e2db4e feat: Implement responsive page layout components and CSS variables
- Added PageScaffold component for shared page layout with safe-area padding and scroll management.
- Introduced ResponsiveMobileShell for mobile canvas layout with customizable backgrounds.
- Created ScrollablePage component for scrollable content areas.
- Updated CSS styles for coins rules screen, sidebar components, and subscription sections to use responsive design tokens.
- Added viewport CSS variables provider to synchronize CSS variables with the visual viewport.
- Refactored breakpoints and dimensions for better responsiveness across devices.
2026-07-03 10:06:22 +08:00
admin efd89de0b0 Revert "feat(logging): report important keyboard events"
This reverts commit b59da8f7e4.
2026-07-02 17:17:10 +08:00
admin 8586e87ab6 fix(chat): keep mobile send from losing focus 2026-07-01 20:00:54 +08:00
admin b59da8f7e4 feat(logging): report important keyboard events 2026-07-01 18:45:03 +08:00
admin 94bb6adbb5 fix(keyboard): support OPPO Facebook fallback 2026-07-01 17:30:29 +08:00
admin 94fa3e9b7a fix(chat): simplify Xiaomi Facebook keyboard lift 2026-07-01 16:13:46 +08:00
admin 27c9e107a2 fix(keyboard): limit adaptation to Xiaomi Facebook IAB 2026-07-01 12:01:12 +08:00
admin fd1a2bad3c refactor(keyboard): remove unused keyboard watchdog functionality 2026-07-01 11:48:59 +08:00
admin 6e51cb7d16 Refactor: Remove original Dart references from comments across multiple files
- Updated comments in various components, schemas, and repositories to remove references to original Dart files.
- Ensured consistency in documentation while maintaining the context of the code.
2026-06-29 11:31:21 +08:00
admin 18bd9eaa47 refactor(hooks): split keyboard height hook modules 2026-06-26 15:50:45 +08:00
admin 23330787c0 chore(chat): add keyboard adaptation diagnostics 2026-06-26 15:34:37 +08:00
admin 09cbd54c79 fix(chat): release input focus when keyboard closes 2026-06-26 12:01:24 +08:00
admin 07658071f2 fix(chat): reset input lift after keyboard closes 2026-06-24 16:35:42 +08:00
admin b489e50e3e fix(chat): disable keyboard adaptation in regular browsers 2026-06-24 16:18:53 +08:00
admin a68dfbfa99 fix(chat): allow Xiaomi Facebook keyboard fallback 2026-06-24 16:14:10 +08:00
admin 3624c08387 chore(chat): log keyboard adaptation diagnostics 2026-06-24 16:00:21 +08:00
admin 890eedf7d9 fix(chat): release keyboard fallback on close 2026-06-24 15:48:29 +08:00
admin a229dcf7d1 fix(chat): scope keyboard fallback to Xiaomi Facebook IAB 2026-06-24 15:40:16 +08:00
admin 08c954903f fix(chat): improve in-app keyboard avoidance 2026-06-24 15:13:11 +08:00
admin 853ae776f9 fix(chat): adapt input bar to soft keyboard in FB in-app browser
FB IAB on Xiaomi (and similar WebViews that don't shrink 100dvh) keeps
the chat input covered by the soft keyboard. Fix by writing the
visualViewport-derived keyboard height to a CSS variable on <html> and
consuming it as padding-bottom on the chat input bar.

- Add useKeyboardHeight hook (visualViewport + rAF batching, no re-renders)
- Apply --keyboard-height + env(safe-area-inset-bottom) to .bar padding
- Add scrollIntoView on textarea focus so the input stays visible
- Add viewportFit: cover so safe-area-inset-bottom is reported
2026-06-24 14:13:18 +08:00
admin 67d0bd5cd0 refactor(hooks): remove unused PWA install and visibility hooks
refactor(package): remove deprecated dev:proxy script
fix(user): ensure user-auth-sync is exported in index
2026-06-17 17:27:18 +08:00
admin ed4ccddae3 refactor(chat): decouple chat state from auth and gate quota alerts to guests
- Remove ChatAuthStatusChanged dispatch from auth login flow; chat screen now subscribes directly to auth state machine (loginStatus) to derive isGuest and drive WS lifecycle
- Gate quota-exceeded and warning dialogs to guests only (non-guests have no message limit)
- Dispatch ChatLoadMoreHistory for non-guest initial load vs ChatInit for guests
- Fix AppConstants import path from @/core/constants/app_constants to @/core/app_constants
- Add defensive isGuest checks in quota effects to prevent non-guest quota triggers
2026-06-11 18:31:08 +08:00
admin 372b93fe45 chore: regenerate barrel files for contexts and services
Add auto-generated barrel index files for auth, chat, sidebar, and user contexts, and update the services barrel with comprehensive exports for api, dto, and schema modules to streamline imports across the application.
2026-06-09 16:54:13 +08:00
admin 8cab34864e feat(ui): migrate Flutter UI library to Next.js 16 (App Router)
Migrate all 87 Dart files from /Users/chase/Documents/cozsweet/lib/ui/
to TypeScript React components, replacing Flutter-native features with
Web equivalents and reimplementing the BLoC pattern with React
Context + useReducer.

Highlights
- 1:1 BLoC -> Context+useReducer+side-effects mapping for auth, chat,
  user, and sidebar features (4 providers wired in root-providers.tsx)
- 500px MobileShell primitive eliminates per-screen layout boilerplate
- Headless Dialog primitive (createPortal + ESC + scroll lock) powers
  quota / pwa-install / username / pronouns / subscription / other-options
  dialogs
- New integrations/: facebook-sdk, google-identity, pwa-install,
  media-recorder (Web Speech API + MediaRecorder), browser-detect,
  chat-websocket (singleton), message-queue (throttled send)
- CSS Modules + existing design tokens (no new styling system);
  extended with breakpoints.css and dimensions.css
- Custom hooks: useBreakpoint (useSyncExternalStore),
  useFullVisibility (IntersectionObserver), usePwaInstall,
  usePullToRefresh
- Vitest + jsdom; 15 unit tests (chat-reducer, auth-validators)
- React 19.2.4, Next.js 16.2.7, Zod 4, lottie-react, classnames

Workarounds
- next.config.ts: experimental.staticGenerationRetryCount = 0 to
  bypass Next.js 16.2.7 /_global-error workStore prerender bug
- src/app/global-error.tsx: required Client Component
- src/types/globals.d.ts: centralized window.google / FB /
  SpeechRecognition declarations

Routes (/, /splash, /auth, /chat, /chat/deviceid/[deviceId],
/sidebar) all build and lint clean.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-09 13:39:49 +08:00