Skip to content

v2.3.0 — UI/动效打磨 + 划词整句翻译

Choose a tag to compare

@pekoqq pekoqq released this 13 Sep 23:26
· 58 commits to main since this release

安装

已发布到 PyPI:pip install readloops,安装后执行 readloops serve 启动。

新增

  • 划词翻译整句:选中多个单词时调用 AI 翻译整段选中文本(新增 POST /api/words/translate 与 ai.py::translate_sentence);选中单个单词仍走本地 ECDICT 词典,句子模式下隐藏「加入生词本」
  • 侧边栏 logo 链接:点击项目名跳转项目主页
  • 空状态快捷键提示:空列表中展示 空格 / 选中 / F 键位提示

重构 — 设计 token 体系

  • 按钮系统:新增 --btn-* 尺寸/圆角/内边距 token;.toolbar-btn 成为全站共享基类(.primary / .danger / .icon / .large),合并此前两套不同的删除按钮设计
  • 动效系统:新增 --page-* / --enter-* / --ease-* token;新增 staggerIn(selector, step, max) 作为成组元素错峰入场的统一入口
  • 玻璃质感统一:提高表面亮度,新增 body::before 氛围光层(随主题切换配色);弹窗、确认框、输入框由实色统一为玻璃

修复

  • 页面切换残影(两个根因):① 渲染函数为 async 但未 await;② transition 移除类时反向补间与淡入动画冲突 → 统一改用 animation
  • 自动专注模式回归:非阅读页点击消耗一次性触发机会 → 增加视图判断
  • 计时栏在非阅读页也显示 → 改为仅阅读视图显示
  • 统计热力图入场「炸开」:188 格各自缩放 → 容器整块淡入
  • 清理两套互相覆盖的错峰逻辑与 return 之后的死代码
  • Windows 控制台中文输出崩溃:默认代码页(cp1252 等)下 readloops --help/init/doctor 会 UnicodeEncodeError → CLI 入口统一把标准流重配置为 UTF-8(含回归测试)

动效

  • 容器只做 opacity、不做位移,位移仅留给内容层
  • 页面离开 0.10s / 进入 0.52s;内容入场 0.78s + 14px 位移 + 0.055s 错峰
  • 新增 --ease-damped: cubic-bezier(0.34, 1.28, 0.42, 1) 带回弹的阻尼缓动
  • 主题切换改为 400ms 颜色过渡

说明:本轮为纯表现层改动;唯一新增后端接口为 POST /api/words/translate,无数据库变更。完整变更见 CHANGELOG。