|
|
ab60db0dc5
|
refactor: 使用 sonner、zustand persist、partysocket 替换手写实现
|
2026-03-02 06:57:45 +08:00 |
|
|
|
08e5abe165
|
style: 将 Unicode 转义序列替换为可读的中文字符
|
2026-03-02 06:48:32 +08:00 |
|
|
|
70344bcd98
|
refactor: 迁移前端到 React 19 + Zustand + Tailwind CSS v4
- 将 vanilla TS 单文件 (app.ts 395行) 拆分为 React 组件化架构
- 引入 Zustand 管理全局状态 (连接/录音/预览/历史/toast)
- 自定义 hooks 封装 WebSocket 连接和音频录制管线
- CSS 全面 Tailwind 化,style.css 从 234 行精简到 114 行 (仅保留 tokens + keyframes)
- 新增依赖: react, react-dom, zustand, @vitejs/plugin-react
- Go 后端 embed 路径 web/dist 不变,无需改动
|
2026-03-02 06:36:02 +08:00 |
|
|
|
ea46ad71bf
|
feat: 集成 Tailwind CSS v4,替换手写样式为 utility classes
|
2026-03-02 06:18:20 +08:00 |
|
|
|
aaea414d5a
|
fix: 修复 Chrome 上录音按钮被 pointerleave 过早中断的问题
- 在 pointerdown 时调用 setPointerCapture 锁定指针事件
- 在 pointerup 时释放 pointer capture
- 防止 async startRecording 期间 pointerleave 意外触发 stopRecording
- mic-wrapper 添加 touch-action: none 防止浏览器拦截触摸
|
2026-03-02 05:43:23 +08:00 |
|
|
|
6c1b8e95c8
|
feat: 历史列表添加交错滑入动画
- renderHistory 改为索引循环,设置 CSS 变量 --i 实现交错延迟
- 最大交错层级限制为 10(400ms),避免过长等待
|
2026-03-02 05:23:47 +08:00 |
|
|
|
2c322f5ab1
|
style: 重新设计前端 UI 主题与视觉效果
- 色彩系统从冷黑灰调整为带靛蓝底色的暖深色主题
- 强调色从 #3b82f6 蓝色替换为 #6366f1 Indigo
- 麦克风按钮增大至 96px,添加渐变背景与录音波纹环动画
- 状态指示器改为 pill 胶囊形,连接态带发光效果
- 预览区录音时显示 indigo 边框光晕与顶部渐变
- Toast 添加毛玻璃背景与弹出位移动画
- 历史卡片添加 slide-up 滑入动效支持
- 新增 theme-color meta 匹配深色主题
|
2026-03-02 05:23:39 +08:00 |
|
|
|
b87fead2fd
|
refactor: 优化代码质量,遵循 KISS 原则
- 移除自签证书回退逻辑,简化为仅使用 AnyIP 证书
- 删除 internal/tls/generate.go(不再需要)
- 重构 main.go:提取初始化逻辑,main() 从 156 行降至 13 行
- 重构 internal/ws/handler.go:提取消息处理,handleConn() 从 131 行降至 25 行
- 重构 internal/config/load.go:使用 map 驱动消除重复代码
- 优化前端 startRecording():使用标准 AbortController API
- 优化前端 showToast():预定义 DOM 元素,代码减少 50%
代码行数减少 90 行,复杂度显著降低,所有构建通过
|
2026-03-02 00:25:14 +08:00 |
|
|
|
ce1ff2d04d
|
fix: 用 Pointer Events 替代 touch+mouse 事件,修复移动端双触发导致按钮卡死
- pointerdown/pointerup/pointerleave/pointercancel 统一处理所有输入
- 移除分离的 touchstart/touchend/mousedown/mouseup 事件绑定
- WS 断连时清理 pendingStart 状态,防止按钮永久卡死
- 添加 contextmenu 阻止长按弹出菜单
|
2026-03-01 05:49:07 +08:00 |
|
|
|
30e3271146
|
chore: 优化 package.json scripts 命名(check → lint/lint:fix)
|
2026-03-01 05:43:49 +08:00 |
|
|
|
d0be096165
|
feat: 前端迁移至 TypeScript,集成 Biome 格式化与代码检查
- app.js → app.ts:添加完整类型标注、接口定义
- audio-processor.js → audio-processor.ts:AudioWorklet 类型化
- vite.config.js → vite.config.ts
- 添加 tsconfig.json、vite-env.d.ts
- 集成 Biome 默认配置(lint + format),通过全部检查
- package.json 添加 check/typecheck 脚本
- index.html 修复无障碍问题(button type、SVG title)
|
2026-03-01 05:40:26 +08:00 |
|
|
|
b22b27db75
|
fix: 修复录音按钮快速按放导致按钮卡死的异步竞态问题
|
2026-03-01 05:30:47 +08:00 |
|
|
|
4b5903b6a1
|
feat: 引入 Vite 前端工程化,解决浏览器缓存问题;AudioWorklet 独立打包带 hash
|
2026-03-01 05:13:19 +08:00 |
|
|
|
5d17e2e9ac
|
fix: 修复安卓 Chrome 无音频问题,移除强制 16kHz 采样率,添加 AudioContext resume
|
2026-03-01 04:35:06 +08:00 |
|
|
|
e1c1b2d9b2
|
fix: 修复 AudioWorklet 未收到 start 指令导致无音频数据发送
|
2026-03-01 04:13:10 +08:00 |
|
|
|
9420d43392
|
fix: token 改为配置文件读取,不再自动生成;UI 全部汉化
|
2026-03-01 04:09:55 +08:00 |
|
|
|
35d645a186
|
feat: add mobile web frontend with AudioWorklet recording
|
2026-03-01 03:03:24 +08:00 |
|