Skip to content

feat: add progressive reading study panel and speech controls - #949

Merged
Bistutu merged 15 commits into
mainfrom
codex/progressive-reading-20261011
Oct 11, 2026
Merged

Bistutu merged 15 commits into
mainfrom
codex/progressive-reading-20261011

Conversation

@Bistutu

@Bistutu Bistutu commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

网页读者从 Popup「学习」打开渐进阅读,选择正文后按需切换原文、短语提示、逻辑线索和完整双语。可以先选文再打开,也可以打开面板后拖选并点击「读取选中正文」。新正文从原文开始,各档均可直接查看完整双语。短语提示直接在原文显示浅灰底,逻辑线索用细粉色下划线引用条件、否定、可能性和范围词;悬停引用现有参考/解释,并关联下方同一提示。掌握提示收起和恢复与标记同步,重叠线索平铺且不重复原文,切回原文或双语撤掉辅助标记。

学习面板新增原文/译文朗读。选择朗读对象保持静默,点击播放后才合成;支持暂停续播、前后跳 5 秒、从头重听、停止、0.75×/1×/1.25×/1.5× 与循环。循环范围是面板当前展示的原文上下文或完整译文。当前词高亮为按媒体/句段时长估算的跟读,不声称精确词级对齐。时长未知时跳转与重听暂不可用。

Popup「翻译」「局部」「学习」以 42px 高度同排,学习位于局部右侧。主按钮默认显示「翻译(⌥+T)」并读取实际平台/快捷键配置;移除 A↔译、独立快捷键框和两个网站按钮的共同外框。学习面板以正文为主:小标题与读取选文并排,四档帮助改为紧凑标签,删除常驻说明、重复原文标签和底部双语入口。正文用 15px/1.8 排版并独立滚动,常用音频动作固定在下方;从头重听、停止和循环收进「⋯」,折叠不打断播放。矮窗口利用可用视口高度,长错误独立滚动且保留全文,正文和控件不被挤掉。保留 FluentRead 粉色品牌及亮暗主题。学习快捷键默认无绑定;入口悬停/聚焦显示用途与设置入口,支持录制、取消、清除和即时生效,保护输入区域与已启用功能的组合键,包括个人校订。

复用已有 TTS 策略与音色,当前页面原生 Audio 播放。一份当前音频供暂停、跳转、调速、循环与再次播放复用;分词按文本缓存,媒体事件更新进度,无轮询时钟。换文、关闭、路由、禁用或语言/语音配置变化取消请求并释放 Audio/Blob URL;迟到结果不能恢复播放。操作不写掌握状态或学习记录,宿主原文不改写。用户脚本继续在构建期排除学习入口、面板及不可达文案;权限、版本、依赖保持原值。合并前已整合 main 3f5ccc69f792168db8630b8bcf2432ff496ceb6c,最终分支提交 78490b239。

原文逻辑线索与朗读高亮同时显示

入口与阅读操作动图(此前录制,未包含新朗读控件、正文优先布局和原文标记) · 当前截图、操作说明与验证记录

合并前最终复验:14 文件/578 个学习及直接关联用例通过,架构 997 项和用户脚本文案投影 3 项通过,生产 Edge 29/29(朗读 8 组、原文标记 13 次、332 次焦点检查、控制台异常 0)通过。类型检查、Chrome/Firefox、清单及文档构建通过。静态审计 692 文件/11,944 cases。i18n 57/58 的唯一既有缺译失败仍单列,两个所属 Vue 与最新 main 字节一致。

同锁文件和依赖的独立 main 用户脚本基线为 2,076,455 字节,候选为 2,077,027 字节,增加 572 字节(0.0275%);原门槛超出 27 字节,按既有 1 KB 步长最小调整为 2,078,000,余 973 字节。完整 verifier 通过,协议和运行断言全部保留。学习运行时仍从用户脚本剔除。最终追加只调整 verifier 预算和验证报告,产品源码未变。

最终 main 整合、独立体积对照及专项验证记录

原文标记开发阶段验证范围(下列构建与体积对应当时 main 1e414ea8c2,最终整合结果见上方):

  • 最终生产包隔离 Edge 专项 29/29(朗读 8 组),读取真实 Audio 时钟、暂停、跳转、倍速和循环;控制台异常 0,13 次原文标记 DOM 采样(精确坐标、重叠关系、可访问关联、字体排版不变)、390px 亮暗布局及 Tab/Enter、长正文 PageDown、390×320 长错误的独立键盘滚动通过,自有浏览器/profile 已清理,后台第二屏执行未抢焦点。
  • 前版朗读控制器 41、TTS 后台及所有权 137、进度纯函数 8 项通过,三个模块四维覆盖率 100%;整合学习装配 43、快捷键/设置 62 项通过,当时两模块刷新四维 100%,另九个未改模块保留精确源码覆盖证据。
  • 新原文展示分段纯模块 25/25,四维覆盖率 100%;范围与词面一致才标记,保真保留原文和所有重叠提示索引,最多读取 64 个范围并输出 129 段。分段 computed 不依赖媒体进度,模式和提示变化不清音频缓存或重新合成;共享 SpeechFollowText 没有修改。
  • 当前实际 Vue 朗读组件 41、用户脚本文案投影 3、架构 986 项及静态归类审计 683 文件/11,503 cases 通过。前版 Popup 90、用户脚本契约 42 项及 14 个纯模块证据通过精确源码 SHA 核对沿用,本轮未把它们计作重新执行。这些范围有重叠,不相加为全仓测试总数。
  • 本轮类型检查、Chrome/Firefox 构建、清单 verifier、文档构建通过;版本与权限不变。此前用户脚本构建 2,064,882 bytes,小于原有 2,066,000 bytes 预算;本轮只改扩展学习 UI,未重新构建用户脚本。
  • 七语言面板资源通过契约;本轮 i18n 57/58,唯一全量源扫描失败来自主分支个人校订 UI 的缺译,所属 Vue 与 integrated main 字节一致,渐进阅读和 Popup 无缺项。此前另两个既存 VocabularyBook 运行时夹具缺少 VocabularySource.vue,在进入 TTS 断言前失败,本轮未重跑。均单列证据、不计作通过。

朗读浏览器验收使用 Microsoft HTTP 边界的确定性静音 WAV,生产消息路由与原生 Audio 真实执行;未试听真人语音或验证线上音质。语速选择验证实际 DOM/Vue 绑定,未验证系统下拉菜单。Firefox/用户脚本仅构建及契约证据。纯函数缓存样本不代表整页性能或供应商延迟;不宣称真人学习收益。

原文标记只呈现在学习面板,不改宿主文章。朗读当前词保留原有精度 title,可能优先于父标记的参考提示;逻辑描述关联真实提示行,折叠的完整详情仍需展开,不声明屏幕阅读器默认读出隐藏详情。

@Bistutu Bistutu changed the title feat: add optional progressive reading assistance feat: add progressive reading study panel and speech controls Oct 11, 2026
@Bistutu
Bistutu merged commit e96b7c9 into main Oct 11, 2026
2 checks passed
Guo-astro pushed a commit to Guo-astro/fluentread that referenced this pull request Oct 12, 2026
…essive-reading-20261011"

This reverts commit e96b7c9, reversing
changes made to 3f5ccc6.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant