Commit Graph

22 Commits

Author SHA1 Message Date
zl-q d712645754 Update web compliance disclosures 2026-05-12 17:51:10 +08:00
zl-q 2b8984edbc fix(web): validate question input before divination and fix logout flow
- Add validation for question text in ManualDivinationPage and AutoDivinationPage
- Fix logout flow to call backend API before clearing local auth
- Show error message when question is empty before starting interpretation
2026-05-11 20:07:36 +08:00
zl-q 91c089a894 fix: resolve legal/about pages in production, update deploy docs
- Fix markdown file path resolution for SSR production builds
- Try multiple paths (public/legal, client/legal) for dev and prod
- Update deploy/README.md with frontend deployment instructions
- Document PM2, Nginx configuration, and port mapping
2026-05-11 19:09:35 +08:00
zl-q dda8014428 fix: redirect root to /en/ instead of /zh/ 2026-05-11 19:04:09 +08:00
zl-q ec810a8c45 config: set default locale to English and update CREEM production URLs
- Change default locale from zh to en for international audience
- Update .env.example with production CREEM API URL
- Set SUCCESS_URL to meeyao.com/en/store
2026-05-11 18:51:18 +08:00
zl-q f07e307e82 feat: integrate CREEM web payment for credits purchase
Replace abandoned iOS App Store route with CREEM Merchant of Record
payment integration for web-based credits purchase.

Backend changes:
- Add CreemClient for CREEM API communication
- Add CreemService for checkout creation and webhook handling
- Add creem_transactions table for payment tracking
- Fix webhook payload parsing (id, order.id, customer.id structure)
- Integrate with existing points ledger system

Frontend changes:
- Display dynamic prices from CREEM API
- Support decimal price formatting (e.g., $1.00)
- Add checkout flow with redirect to CREEM hosted page
2026-05-11 18:38:21 +08:00
ZL-Q 3ff33640f4 fix: infinite session creation loop, add sign image animation, align hexagram UI with Flutter
- Fix DivinationProcessingOverlay infinite re-render loop by using refs
  for params/yaoStates/onError instead of direct effect dependencies
- Remove column headers from hexagram detail card (matching Flutter)
- Keep domain-specific terms (六神, 六亲, etc.) in Chinese for all locales
- Translate ganZhiInfo/wuXingWangShuai/ganZhiKongWang section titles to English
- Add sign image overlay animation on fresh divination result (scale + translate)
2026-05-10 21:37:29 +08:00
ZL-Q 982d10d37e fix: about/legal pages read from markdown, remove unused about translations
- AboutPage now reads from public/legal/{locale}/about_us.md
- LegalPage no longer depends on about translations, uses local maps
- Fixed email in LegalPage from ann@xunmee.com to feedback@xunmee.com
- Removed ICP number and wrong email from utils.ts about section
- Removed unused about section from Translations interface and all locales
2026-05-10 20:51:47 +08:00
ZL-Q 20abe0be0c perf: finish web performance pass 2026-05-10 20:29:42 +08:00
ZL-Q 1e4871e337 perf: optimize web data resources 2026-05-10 20:01:14 +08:00
ZL-Q 627454971c fix: improve web auth refresh and mobile tutorials 2026-05-10 15:22:08 +08:00
ZL-Q 323a04206b chore: 归档任务 05-10-auto-divination-page-rewrite
- 更新 AGENTS.md
- 添加 pnpm workspace 配置
- 归档任务文件
2026-05-10 14:54:46 +08:00
ZL-Q 1fe17b03df feat(web): 重写自动起卦页面并修复数据解析
主要更改:
- 重写 AutoDivinationPage 与 ManualDivinationPage 设计一致
  - 每爻单独摇卦(3秒/爻)
  - 完整教程系统(首次进入自动触发)
  - 确认弹窗显示积分信息
  - 统一时间选择组件样式
  - 移除返回按钮

- ManualDivinationPage 添加确认弹窗
  - 点击开始解卦显示积分确认
  - 添加中英文翻译

- 修复干支信息和空亡信息解析
  - 完善 HistoryAgentOutput 类型定义
  - 重写 historyMessageToResultData 正确解析嵌套 ganzhi 对象
  - 修复 DivinationProcessingOverlay SSE 数据解析

- 统一历史列表图标
  - 添加 hexagram 图标(六爻卦象抽象)
  - Dashboard 和 HistoryListPage 使用相同图标

- 修复 DivinationResultPage 追问导航 threadId
2026-05-10 14:53:43 +08:00
ZL-Q efe48f2068 feat(web): 历史解卦列表、结果页与追问功能
- 合并 DivinationResultPage 和 HistoryResultPage 为统一结果页
- 重写 HistoryFollowUpPage:API 加载历史消息、SSE 流式追问、配额管理
- 追问免费且限一次,输入框 UI 对齐设计稿(圆角容器+配额徽章+圆形发送按钮)
- 结果页追问状态根据线程消息数动态判断
- 历史列表筛选改为 9 类独立类型
- 提取 historyMessageToResultData 为共享函数,新增 enqueueFollowUpRun API
- 新增 auto_awesome/search/arrow_upward 图标
- 新增三语言 [id].astro、[id]/followup.astro、divination/result.astro 页面
2026-05-10 13:59:04 +08:00
ZL-Q f695dd86e9 fix(web): 修复手动起卦教程、硬币动画与积分显示
- 修复硬币翻转动画:从 @keyframes 改为 CSS transition 实现双向动画
- 修复教程自动显示:将 setTutorialChecked 移入 setTimeout 回调,
  避免 useEffect cleanup 提前清除 timer 导致 setGuideStep 不执行
- 添加 AppShell UserSettingsContext 共享 userProfile
- 实现教程结束后调用 updateUserSettings 标记 manual_divination_shown
- 添加点击已确认爻进行编辑的功能 (editingIndex 状态)
- 确认爻后不再重置硬币状态
- 积分显示从硬编码改为读取 API 返回值
- 手机端教程使用 absolute 定位替代 fixed 避免滚动偏移
- 添加 isMobile 响应式状态追踪窗口大小变化
2026-05-09 23:35:53 +08:00
ZL-Q e31d88e788 fix(web): 对齐手动起卦页面六爻显示与设计稿
- 老阳显示 ○ 符号,老阴显示 × 符号
- 未确认的爻显示灰色线,确认后显示紫色线
- 移除"待录入"/"老阴/少阳"等文字,改用符号显示
- 移除硬币选择区域的结果显示
2026-05-09 21:47:51 +08:00
ZL-Q a1b4418d55 feat(web): 优化设置页面交互与语言同步
- 二级页面返回按钮导航到设置页而非路由栈上一页
- 通用设置开关等待后端响应后再更新 UI,失败时显示 toast
- 删除用户名/邮箱的硬编码默认值,使用 auth token 邮箱作为 fallback
- AppShell 侧边栏显示真实头像和用户名
- 页面加载时检查 URL 语言与用户偏好是否一致,不一致则重定向
2026-05-09 21:32:51 +08:00
zl-q 1d5efb46e7 chore: clean up stale task files and update ManualDivinationPage 2026-05-09 18:24:35 +08:00
zl-q 1fbb07f692 feat(web): add settings sub-pages and connect to backend APIs
- Add GeneralSettingsPage for language, privacy, and notification settings
- Add FeedbackPage for user feedback submission with image upload
- Connect settings to backend PATCH /users/me/settings API
- Implement language preference sync between frontend and backend
- Update login flow to pass language preference and redirect based on user settings
- Add Astro entry pages for /settings/general and /settings/feedback routes
- Update sidebar navigation: language button links to general settings
- Fix account data card to link to profile page
- Remove "deletion" text from account data description
2026-05-09 18:23:21 +08:00
zl-q 5aa46d3311 feat(web): add authenticated app shell 2026-05-09 16:00:29 +08:00
zl-q c12320cb79 feat(web): rebuild web with Astro 6 + React 19 + Tailwind 4
Replace static HTML website with Astro SSG framework:
- Astro 6 + React 19 (client islands) + Tailwind CSS 4 + shadcn/ui
- i18n: zh/zh_Hant/en with URL prefix routing
- Pages: Landing, Features, Pricing, About, Privacy, Terms (3 locales)
- Responsive full-width layout with scroll reveal animations
- Cyber gradient theme with particle effects inspired by Kimi
- Features page: alternating layout with hexagram illustrations
- Legal pages: markdown rendering with side info card
- Language switcher preserves current page path
- Assets shared via symlinks to web/design/assets/ (no duplication)

Tech decisions documented in .trellis/spec/web/index.md
Task: .trellis/tasks/05-08-web-astro-react-tailwind-shadcn-ui
2026-05-09 12:11:10 +08:00
qzl 1519c782c7 feat(web): add product website with i18n and privacy policy
Static HTML product site for MeeYao with violet brand theme.
Supports EN/简中/繁體 via client-side i18n with localStorage persistence.
Includes index.html (landing page) and privacy.html (App Store compliance).
Hosted on meeyao.com, deployed to ~/deploy/web on EC2.
2026-04-30 14:49:14 +08:00