Skip to content

fix: 内测反馈集中修复(课堂助手/认证/窗口/番茄钟/UI)+ 新手引导 - #8

Merged
Aparencia merged 7 commits into
mainfrom
dev
Jul 31, 2026
Merged

Aparencia merged 7 commits into
mainfrom
dev

Conversation

@Aparencia

Copy link
Copy Markdown
Owner

本批为内测反馈驱动的集中修复,共 7 笔提交。

修复

域 问题 要点
classroom 精细采集三症状 视觉 prompt 抓浏览器元数据、ASR 静音幻觉(脏话/重复语气词)、截断 JSON 泄漏进时间线
auth 邮箱验证死页面 + 重置密码失效 + 登录循环 emailRedirectTo 指向官网 /verified;重置密码改应用内 OTP(桌面端 file:// 无法回跳);AuthGuard 模式降级缺口
window 最小化时任务栏右键关闭无响应 确认对话框弹在不可见窗口内,发送前先 restore/show/focus
pomodoro 周期计数异常 无重置路径 + 跨模式状态残留 + 副作用双重执行
ui 明亮主题弹窗全透明 Tailwind v3 对 var() 令牌色的透明度修饰符静默失效

新增

  • feat(onboarding): First Dive 新手引导系统 + 新手期双标签导航
  • website: /verified 邮箱验证落地页(静态导出,useSyncExternalStore 读 hash 规避 hydration 不匹配)

验证

  • client: 455 tests / lint 0 errors / tsc 0
  • ai-gateway: 164 tests
  • website: eslint 0 + next build 通过(/verified 静态页已生成)
  • L3 深度安全审查:0 findings

发布注意

ai-gateway 有改动(vision prompt + JSON 解析兜底),合入后需触发服务端部署——部署完对全部存量客户端立即生效,不必等客户端发版。

沉淀

新增 4 则知识卡片(课堂助手三症状、登录循环、番茄钟计数、Tailwind 透明度修饰符)+ 内测运营文档。

内测反馈课堂助手视频与音频识别异常,定位为三个独立缺陷:

- 视觉 prompt 未排除浏览器 UI,模型忠实 OCR 了 B 站标题/播放量/URL
  → auto/full prompt 增加忽略清单,无教学内容时 text 返回空串
- Path A 音频链无 VAD(Path B 有),静音段直送 ASR 触发幻觉输出
  重复语气词与脏话 → 新增 asrFilters:RMS 0.008 静音门控 + 输出端
  幻觉过滤(纯标点/重复灌水/短句脏话,宁放过不误杀)
- 模型输出被 max_tokens 截断后,_parse_response 兜底把原始 JSON
  整段当 text 返回并渲染进时间线 → 改为正则抢救 text 字段,
  抢救不到返回空文本

新增 vitest 10 例 + pytest 6 例,用例取自内测截图真实幻觉文本
内测用户点击 QQ 邮箱验证链接后落到 localhost:3000 死页面,误以为
验证失败(实际已验证成功),进而反馈'不用验证也能登录'。

- signUp 补 emailRedirectTo 指向官网新增 /verified 落地页,该页兼顾
  成功与链接过期(hash 含 error)两种结果,用 useSyncExternalStore
  读取 hash 以规避静态导出的 hydration 不匹配
- ResetPassword 改为应用内验证码(OTP)流程:桌面端 file:// 协议无法
  作为 redirectTo,链接回跳结构性不可用;顺带移除原 token_hash 分支
  从未调用 verifyOtp 的死代码
- 修复登录循环:AuthGuard 与'跳过登录'的模式降级缺口 + session-expired
  事件风暴

需配合 Supabase Dashboard:Site URL、Redirect URLs 白名单、Recovery
邮件模板加 Token 占位符(均已配置)
close 事件走确认对话框分支前未确保窗口可见,任务栏右键「关闭窗口」
时对话框弹在最小化窗口内、用户不可见,表现为命令无效。发送
window:closing 前先 restore/show/focus。
无重置路径的周期计数 + 跨模式状态残留 + store/hook 副作用双重执行
导致番茄钟计数统计异常。
Tailwind v3 对 var() 形式的令牌色应用 /透明度 修饰符时静默丢弃,
明亮主题下 ContextMenu 背景变为全透明。改用 color-mix 方案。
新增新手引导流程(onboarding feature + OnboardingOverlay),并调整
侧边栏/布局与 3D 导航实体以适配新手期双标签导航策略。
- 知识卡片:番茄钟计数、Tailwind var 透明度修饰符两则踩坑记录 + 索引更新
- 内测运营:协议、招募公告与playbook、分层管理、内测者简介
- Foresight:AI 时代竞争力策略、新手引导与番茄钟自定义头脑风暴、SOP 设计
@Aparencia
Aparencia merged commit e505f1f into main Jul 31, 2026
5 checks passed
@Aparencia

Copy link
Copy Markdown
Owner Author

🎉 This PR is included in version 0.29.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Aparencia added a commit that referenced this pull request Aug 4, 2026
- #5: Gemini generate_stream iteration moved into thread pool via
  asyncio.to_thread, unblocking the event loop during streaming
- #6: providers return real input/output token split; fallback cost
  tracking prefers it and falls back to 60/40 estimate instead of
  the misleading 50/50 split (output priced 2-3x higher)
- #7: balance queries use Key pool primary key (plural env vars),
  DeepSeek balance no longer silently skipped
- #8: JWKS fetch distinguishes network failures (stale cache reuse
  with 60s retry backoff) from HTTP/key errors (fail-closed),
  preventing whole-site 401 on transient Supabase hiccups
- #9: import_concept registered in TIMEOUT_CONFIG/RATE_LIMITS plus
  startup validation warning for unregistered features
- #10: error_pattern cache key includes user_id and hashes full
  content, preventing cross-user result reuse
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant