From e533a8cd34995af9aaeeb321b41969a260fef882 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 24 Jun 2026 02:37:59 +0800
Subject: [PATCH] Fix about page support link wrapping

---
 CHANGELOG.md |  335 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 335 insertions(+), 0 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 78f0f20..8b2101b 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,158 @@
 # Changelog
 
+## v2.1.35 (2026-06-23)
+
+### 输入配置页排版优化
+
+- **语言选择改为紧凑网格**:输入页语言列表从拥挤的多行 segmented control 调整为响应式网格,避免单个语言孤立成行。
+- **模型列表改为 grouped list**:识别模型从多张独立卡片调整为统一分组列表,用内部分割线表达层级。
+- **当前模型状态减噪**:当前模型只保留一个主要状态表达,减少蓝框、badge、禁用按钮同时出现造成的视觉负担。
+
+### 构建
+
+- build: `20260623.1435`
+- 说明: 本版本为输入配置页排版优化后的本地验收候选包。
+
+---
+
+## v2.1.34 (2026-06-23)
+
+### 输入配置页签拆分
+
+- **语言选择独立成输入页签**:设置窗口新增“输入”页签,集中承载输入语言和离线识别模型选择。
+- **首页设置减负**:首页保留热键、输入设备、提示音、剪贴板、开机启动和 Dock 图标等通用设置,减少语言区域拥挤感。
+- **保持配置结构不变**:本版本只做阶段 1 信息架构拆分,不新增每语言默认模型、备用模型或自动模型选择配置。
+
+### 构建
+
+- build: `20260623.1312`
+- 说明: 本版本为输入配置页签拆分的本地验收候选包。
+
+---
+
+## v2.1.33 (2026-06-23)
+
+### 首启下载状态修复
+
+- **下载中不再误报失败**:首启模型下载过程中,如果后端仍广播 `need_model` 状态,界面会继续保持下载态;只有下载调用真正失败或后端明确返回 `error` 时才显示失败。
+
+### 构建
+
+- build: `20260623.1242`
+- 说明: 本版本为首启下载状态修复的本地验收候选包,基于 `v2.1.32` 多语种扩展候选包继续修复。
+
+---
+
+## v2.1.32 (2026-06-23)
+
+### 多语种扩展候选包
+
+- **欧洲五语正式语言基础**:新增 French、German、Spanish、Italian、Portuguese 语言版本,并将 Parakeet TDT v3 作为默认离线模型候选。
+- **日语 / 韩语正式语言基础**:新增 Japanese、Korean 语言版本,分别接入日语 Zipformer ReazonSpeech 和韩语 Zipformer 专项模型。
+- **动态语言选择**:设置页语言列表改为由后端语言 profile 动态返回,避免继续硬编码中文 / English。
+- **多语种模型校验**:新增 Parakeet TDT v3、日语 Zipformer、韩语 Zipformer 的模型文件校验和默认模型回退测试。
+- **本地化基础**:新增 `fr`、`de`、`es`、`it`、`pt`、`ja`、`ko` locale 文件,暂以核心设置页文案和英文 fallback 支撑验收。
+
+### 构建
+
+- build: `20260623.0012`
+- 说明: 本版本为多语种扩展本地验收候选包;Canary / Whisper benchmark、真实语音 QA 和完整人工翻译仍需发布前补齐。
+
+---
+
+## v2.1.31 (2026-06-14)
+
+### X-ASR 实验修复
+
+- **X-ASR 首字保护**:hold 模式在按下热键时立即开始预采集音频,确认不是组合键后再显示浮窗并进入正式录音,降低“你看看”等短句首字丢失概率。
+- **组合键与短按隔离**:预采集阶段检测到组合键或用户过早松开热键时会丢弃音频,不进入识别流程。
+- **X-ASR 开头上下文 padding**:X-ASR streaming session 首次接收音频时补 250ms 前置静音,提升贴近开头的短音节稳定性。
+- **取消路径加固**:Escape 取消会停止实时字幕 session,并阻止同一次按住手势在 debounce 后重新启动录音;引擎不可用时仍允许已有录音释放/取消清理完成。
+- **隔离范围**:首字保护能力仅由 X-ASR streaming engine 启用;SenseVoice、Qwen3-ASR、Moonshine、Parakeet 不启用预采集路径。
+
+### 构建
+
+- build: `20260614.2056`
+- 说明: 本版本为 X-ASR 首字/尾字稳定性实验测试包,不是 App Store 正式上传包。
+
+---
+
+## v2.1.30 (2026-06-07)
+
+### X-ASR 实验修复
+
+- **X-ASR 尾句保护**:最终识别前追加 1.5 秒静音 padding,并保留 decode 过程中的最后一个非空结果,减少松开热键时最后一句丢失的问题。
+- **录音中实时字幕**:X-ASR 录音时复用现有动态浮窗显示小号实时字幕;松开热键后浮窗切到“识别中/完成”,最终文本仍按原流程粘贴到目标 App。
+- **流式 session 接口**:新增 streaming engine/session 抽象,当前只由 X-ASR 使用;SenseVoice、Qwen3-ASR、Moonshine、Parakeet 行为保持不变。
+- **录音增量读取**:Recorder 支持安全读取新增 PCM 样本,用于低延迟字幕,不影响最终录音样本收集。
+- **macOS 上屏安全同步**:同步正式上架线的剪贴板校验与代际保护,降低关闭“保留到剪贴板”时误粘旧内容的风险。
+
+### 构建
+
+- build: `20260613.2201`
+- 说明: 本版本为 X-ASR 实时字幕与尾句修复实验候选包,不是 App Store 正式上传包。
+
+---
+
+## v2.1.29 (2026-06-07)
+
+### 实验候选包
+
+- **X-ASR 960ms 实验模型**:新增 `x-asr-zh-en-960ms` 实验模型 profile,用于评估中英混输和未来“边说边出字”方向。
+- **macOS X-ASR streaming backend**:在 macOS 下接入 sherpa-onnx `OnlineRecognizer`,先复用现有“一段录音 -> 最终文本”听写流程验证模型效果,不改 live partial 上屏链路。
+- **本地模型安装脚本**:新增 `scripts/install-x-asr-zh-en-960ms.sh`,只下载 Hugging Face `chunk-960ms-model` 所需四个文件,不把大模型放入 git。
+- **回滚保护**:已创建 `codex/freeze-2.1.28-appstore-20260605.0353`,指向已上传成功的 2.1.28 App Store 源码基线。
+
+### 构建
+
+- build: `20260607.0147`
+- 说明: 本版本为 X-ASR 技术实验候选包,不是 App Store 正式上传包。
+
+---
+
+## v2.1.28 (2026-06-04)
+
+### 发布冻结
+
+- **App Store 发布冻结版本**:冻结上一轮关于页审核信息补全后的代码,准备进入 Mac App Store 发布流程。
+- **发布资料准备**:补充市场发布交接材料、App Store 元数据草稿、隐私与审核说明、构建与上传前置条件清单。
+
+### 构建
+
+- build: `20260604.0049`
+- 说明: 本版本为 Mac App Store 发布冻结基线;本机可生成 App Store sandbox POC 包,真正上传包仍需 Apple Distribution / 3rd Party Mac Developer Installer 证书与 App Store Connect 账号。
+
+---
+
+## v2.1.27 (2026-06-03)
+
+### QA 候选包
+
+- **关于页审核信息补全**:关于页显示 `私语输入法 (PrivateVoice Dictation)`、离线识别说明、数据不出设备声明、开源项目归属、版权许可、隐私政策和支持反馈链接。
+- **苹果审核链接更新**:版权许可、隐私政策、支持反馈统一指向 `privatevoice-dictation-support` 支持站点;保留 VoiceSnap 原项目地址入口。
+- **英文界面同步**:English 关于页同步展示等价隐私与许可说明,避免系统语言为英文时仍显示旧审核信息。
+
+### 构建
+
+- build: `20260603.2238`
+- 说明: 本版本为关于页审核信息补全后的用户验收候选包。
+
+---
+
+## v2.1.26 (2026-06-03)
+
+### 修复
+
+- **macOS App 名称按系统语言本地化**:中文系统显示 `私语输入法`,英文系统显示 `PrivateVoice Dictation`。
+- **麦克风权限提示本地化**:中文系统下麦克风授权文案改为中文。
+- **macOS 构建脚本复制本地化资源**:本地、正式、App Store POC 和 Developer ID sandbox 构建都会把 `*.lproj/InfoPlist.strings` 打入 `.app/Contents/Resources`。
+
+### 构建
+
+- build: `20260603.2151`
+
+---
+
 ## v2.1.25 (2026-06-03)
 
 ### QA 候选包
@@ -118,6 +271,188 @@
 
 ---
 
+## v2.1.18 (2026-06-01)
+
+### 改进
+
+- **统一权限页字体层级**:收敛权限页标题、摘要、权限项标题、按钮和状态文字的字号与字重,使其与其他设置页保持一致。
+
+### 构建
+
+- build: `20260601.1905`
+
+---
+
+## v2.1.17 (2026-05-31)
+
+### 改进
+
+- **防止历史页清理菜单文案换行**:加宽底部“清理”下拉菜单,并保持清理选项单行显示,避免“清除已导出 CSV 的历史”断行。
+
+### 构建
+
+- build: `20260531.1359`
+
+---
+
+## v2.1.16 (2026-05-31)
+
+### 改进
+
+- **调整历史页清理入口位置**:将“清理”菜单从顶部工具栏移动到底部分页区域左侧,减少顶部操作拥挤,并让清理确认提示跟随底部入口显示。
+
+### 构建
+
+- build: `20260531.1131`
+
+---
+
+## v2.1.15 (2026-05-31)
+
+### 改进
+
+- **历史页增加基础分页与存储安全提示**:历史页改为后端分页加载,每页固定 100 条,并新增历史文件大小、打开所在文件夹、清除已导出 CSV 历史和基于全量统计的导出菜单状态。
+- **用户词库列表增加基础分页**:词库页改为后端分页加载,每页固定 100 条,避免词库规则过多时一次性渲染整张列表。
+
+### 构建
+
+- build: `20260531.1102`
+
+---
+
+## v2.1.14 (2026-05-31)
+
+### 改进
+
+- **统一应用内图标视觉**:设置页侧边栏、About 页和首次设置页改用与 Dock 一致的蓝色麦克风图标,移除 `P` / `V` 字母图标。
+
+### 构建
+
+- build: `20260531.0120`
+
+---
+
+## v2.1.13 (2026-05-30)
+
+### 改进
+
+- **历史勘误 CSV 支持未处理增量导出**:历史记录新增 `exportedAt`,导出勘误 CSV 可选择“今天未处理 / 近 7 天未处理 / 全部未处理”,成功写入 CSV 后才标记本次历史,避免下次重复导出旧记录。
+- **优化勘误表预览明细排序**:导入预览优先展示新增、冲突、无效、超限和重复等关键项,空项排到最后,摘要统计仍包含全部候选。
+
+### 构建
+
+- build: `20260530.1949`
+
+---
+
+## v2.1.12 (2026-05-30)
+
+### 改进
+
+- **调整词库页导入导出按钮**:用户词库按钮改名为“导入用户词库 / 导出用户词库”并放在一起,“导入勘误表”移动到工具栏最右侧。
+
+### 构建
+
+- build: `20260530.1800`
+
+---
+
+## v2.1.11 (2026-05-30)
+
+### 改进
+
+- **CSV 勘误表改为中文表头**:导出的勘误 CSV 使用 `记录ID`、`识别时间`、`识别历史文本`、`错误词/正确词` 等中文列名,样例行文案改为“正确的格式是点 CSV”,并保持导入端兼容旧版英文表头。
+
+### 构建
+
+- build: `20260530.1757`
+
+---
+
+## v2.1.10 (2026-05-30)
+
+### Bug 修复
+
+- **修复历史保留时长不生效**:移除后端固定最多 50 条历史的硬截断,识别历史现在会按用户选择的 7 天、30 天、90 天或永久真实保留。
+- **修复历史文件清理不及时**:新增历史、读取历史和切换保留时长时都会按当前保留规则清理过期记录,并同步保存到 `history.json`。
+
+### 改进
+
+- **展示历史保存位置**:历史页面新增 `history.json` 保存路径展示,长路径单行省略但可复制完整路径,避免撑坏页面布局。
+- **新增历史勘误 CSV 流程**:历史页可导出勘误 CSV,词库页可导入勘误表并先预览新增、重复、冲突、无效、空项和超限统计,确认后只追加新增规则。
+- **增强词库写入安全**:CSV 勘误导入采用批量追加和写入失败整体回滚,避免半写入;新写入的 `history.json` 和 `userdict.json` 权限收紧到 `0600`。
+
+### 构建
+
+- build: `20260530.1640`
+
+---
+
+## v2.1.9 (2026-05-28)
+
+### 改进
+
+- **产品改名为 PrivateVoice Input / 私语输入**:更新应用可见名称、窗口标题、打包元数据、启动项名称、单实例锁和系统数据目录。
+- **更新 About 信息**:关于页展示“永远离线·稳定极速 / Private.Offline”以及 MIT License 二次开发声明和支持页面链接。
+- **保留旧用户数据迁移**:新数据目录会从旧 `VoiceSnap` 应用支持目录迁移配置、词库、历史和模型文件,已存在的新文件不会被覆盖。
+
+### 构建
+
+- build: `20260528.1206`
+
+---
+
+## v2.1.8 (2026-05-19)
+
+### Bug 修复
+
+- **修复长按松手后悬浮窗可能停在录音态**:松手后立即切到“识别中”,音频设备停止和采样转换改为后台执行,避免底层音频 stop 偶发卡住导致浮窗假死。
+- **修复右 Alt 状态可能残留**:macOS 侧按键检测会用系统实时 Option flags 校正旧事件态,防止 release 事件异常时误判为仍在按住。
+
+### 构建
+
+- build: `20260519.1818`
+
+---
+
+## v2.1.7 (2026-05-19)
+
+### Bug 修复
+
+- **修复多屏输入时悬浮动效跑到别的屏幕**:macOS 录音动效现在优先跟随当前辅助功能焦点窗口,其次跟随前台 App 窗口,再兜底鼠标所在屏幕。
+
+### 构建
+
+- build: `20260519.1603`
+
+---
+
+## v2.1.6 (2026-05-18)
+
+### Bug 修复
+
+- **优化点按结束手感**:录音中第二次按下热键即刻停止,不再等到松开;“完成”状态自动隐藏缩短到 250ms。
+- **修复 macOS 长按启动不稳**:右 Alt 的事件态不再 250ms 后过期,长按启动阈值调整为 180ms。
+
+### 构建
+
+- build: `20260518.2229`
+
+---
+
+## v2.1.5 (2026-05-18)
+
+### 改进
+
+- **重做 macOS 录音悬浮动效**:从黑色胶囊改为透明无边界的蓝粉光波样式,保留中心跳动元素与录音计时。
+- **优化多显示器定位**:拖拽保存、启动还原和默认显示位置按对应屏幕处理,避免副屏或垂直排列屏幕下悬浮窗跳回主屏。
+
+### 构建
+
+- build: `20260518.2205`
+
+---
+
 ## v2.1.4 (2026-05-18)
 
 ### 改进

--
Gitblit v1.9.3