Commit Graph

82 Commits

Author SHA1 Message Date
admin b7779878cf feat(chat): unlock history after payment 2026-06-29 10:53:52 +08:00
admin 455204e1e4 feat(chat): add history unlock api 2026-06-26 19:27:56 +08:00
admin 1b73c3ac10 refactor(chat): remove private unlock machine flow 2026-06-26 19:17:29 +08:00
admin fe85af0cd7 fix(chat): queue outgoing messages 2026-06-26 11:11:43 +08:00
admin 949b2ef00d fix(chat): restore direct voice unlock subscription 2026-06-25 17:18:41 +08:00
admin ffc3db9a91 fix(chat): add voice unlock payment choices 2026-06-25 14:41:21 +08:00
admin c8f0827e40 fix(subscription): return chat paywalls after payment 2026-06-25 10:20:13 +08:00
admin 583215a99d fix(chat): route private unlocks to subscription 2026-06-24 19:27:49 +08:00
admin a987da9bfe fix(chat): redirect guests before quota upgrade 2026-06-24 18:47:10 +08:00
admin 5aa32a4256 fix(chat): redirect guests to auth before image paywall 2026-06-24 18:41:59 +08:00
admin c288148c12 fix(chat): remove dynamic upgradeHint for daily limit message 2026-06-24 18:18:21 +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 42c03f8901 feat(chat): migrate chat protocol to lock detail 2026-06-24 14:06:30 +08:00
admin bfbf7ee91a feat(app): improve payment and paywall UX 2026-06-24 10:02:22 +08:00
admin 05821d9a29 fix(chat): prompt guests to log in at quota limit 2026-06-23 17:41:07 +08:00
admin f14b8a48d2 fix(chat): handle guest total limit 2026-06-23 15:14:17 +08:00
admin ebd44c4980 feat(chat): add private message unlock flow 2026-06-23 13:21:57 +08:00
admin 6bcc070ba1 refactor(chat): rely on server message limits 2026-06-23 11:20:48 +08:00
admin d81abd6efd feat(chat): support ai photo viewing 2026-06-23 10:34:02 +08:00
admin 61fd4ca916 feat(chat): handle daily message paywall 2026-06-22 10:46:17 +08:00
admin cf54bc742d fix(chat): limit external browser prompt daily 2026-06-18 14:23:31 +08:00
admin d190de4dda refactor(api): use dto barrel imports 2026-06-18 14:16:00 +08:00
admin f600e11d55 refactor(auth): centralize login status sync 2026-06-18 12:52:49 +08:00
admin 0d0dabaace refactor(utils): add barrel exports 2026-06-18 11:58:50 +08:00
admin b09795a7b8 fix(deploy): force stop existing next service 2026-06-18 11:35:26 +08:00
admin 172ef28060 feat(chat): prompt facebook users to open external browser 2026-06-18 10:59:13 +08:00
admin e4b1690b45 fix(chat): redirect unauthenticated users from chat 2026-06-17 19:44:22 +08:00
admin bded7497d2 fix(chat): show browser hint in development 2026-06-17 18:03:25 +08:00
admin 5d66cef85c refactor(dto): move app models into dto layer 2026-06-17 17:34:55 +08:00
admin 977c0905bd refactor(chat): remove redundant auth state management from ChatScreen documentation
refactor(chat): update guest chat quota logic to use isProduction utility
fix(user): add TODO for user initialization event on login status change
2026-06-17 15:30:36 +08:00
admin 287affa34a refactor(app): move route screens out of components
Exclude test and spec files from generated barrels so page imports do not load test modules at runtime.
2026-06-17 14:13:42 +08:00