Files
OSGKeyboard/docs/osgkeyboardversion.html
T
Rocky 46f6d818b8 docs(release): consolidate 1.8 notes and demos
Present the skipped 1.7 work as one user-focused 1.8 update and record the real keyboard UI for AI, clipboard, and skills walkthroughs.
2026-08-15 09:07:24 +08:00

681 lines
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-Hans" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>OSGKeyboard — What's New / 更新说明</title>
<meta name="robots" content="noindex">
<meta name="color-scheme" content="light dark">
<style>
:root {
--bg: #f7f7f5;
--text: #1a1a1a;
--text-secondary: #5c5c5c;
--text-tertiary: #8a8a8a;
--card: #ffffff;
--border: rgba(0, 0, 0, 0.08);
--accent: #2f6fed;
--chip-bg: rgba(47, 111, 237, 0.1);
}
html[data-theme="dark"] {
--bg: #0a0a0b;
--text: #f2f2f2;
--text-secondary: #b0b0b0;
--text-tertiary: #7a7a7a;
--card: #161618;
--border: rgba(255, 255, 255, 0.1);
--accent: #6b9fff;
--chip-bg: rgba(107, 159, 255, 0.16);
}
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
background: var(--bg);
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC",
"Hiragino Sans GB", "Helvetica Neue", Helvetica, Arial, sans-serif;
-webkit-text-size-adjust: 100%;
line-height: 1.5;
}
body {
/* Fixed bottom padding only — App WKWebView already lays out above the home indicator. */
padding: 20px 16px 28px;
max-width: 720px;
margin: 0 auto;
}
.page-header {
margin-bottom: 20px;
}
.page-header h1 {
margin: 0 0 6px;
font-size: 1.5rem;
font-weight: 700;
letter-spacing: -0.02em;
}
.page-header .subtitle {
margin: 0;
color: var(--text-secondary);
font-size: 0.95rem;
}
.empty {
display: none;
margin-top: 40px;
text-align: center;
color: var(--text-secondary);
font-size: 0.95rem;
}
.empty.visible { display: block; }
.version-block {
display: none;
background: var(--card);
border: 1px solid var(--border);
border-radius: 16px;
padding: 18px 16px 8px;
margin-bottom: 16px;
}
.version-block.visible { display: block; }
.version-chip {
display: inline-flex;
align-items: center;
padding: 4px 10px;
border-radius: 999px;
background: var(--chip-bg);
color: var(--accent);
font-size: 0.8rem;
font-weight: 650;
letter-spacing: 0.01em;
margin-bottom: 14px;
}
.section { margin-bottom: 16px; }
.section h2 {
margin: 0 0 8px;
font-size: 1.05rem;
font-weight: 700;
}
.group { margin-bottom: 12px; }
.group-title {
margin: 0 0 6px;
font-size: 0.95rem;
font-weight: 650;
color: var(--text);
}
ul {
margin: 0;
padding: 0 0 0 1.15em;
}
li {
margin: 0 0 6px;
color: var(--text-secondary);
font-size: 0.92rem;
}
li strong {
color: var(--text);
font-weight: 600;
}
.lang-block { display: none; }
.lang-block.visible { display: block; }
/* Inline demo media directly under a group title. */
.wn-media {
margin: 2px 0 12px;
text-align: center;
}
.wn-media video,
.wn-media img {
display: block;
width: 100%;
max-width: 260px;
height: auto;
margin: 0 auto;
border-radius: 14px;
border: 1px solid var(--border);
background: #000;
}
/* Landscape-ish clip (near-square) can sit a bit wider. */
.wn-media.wide video,
.wn-media.wide img {
max-width: 340px;
}
</style>
</head>
<body>
<header class="page-header">
<div class="lang-block" data-lang="zh">
<h1>更新说明</h1>
<p class="subtitle">本页展示当前版本及更早版本的更新内容</p>
</div>
<div class="lang-block" data-lang="en">
<h1>What's New</h1>
<p class="subtitle">Notes for this version and earlier releases</p>
</div>
</header>
<p class="empty" id="empty-zh">暂无与当前版本匹配的更新说明。</p>
<p class="empty" id="empty-en">No release notes match this app version.</p>
<!-- ========== 1.8.0 ========== -->
<article class="version-block" data-version="1.8.0">
<div class="version-chip">1.8.0</div>
<div class="lang-block" data-lang="zh">
<section class="section">
<h2>新功能</h2>
<div class="group">
<p class="group-title">AI 与语音助手</p>
<div class="wn-media wide">
<video src="assets/whats-new/ai-voice-assistant-zh.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>键盘可切换到 <strong>AI</strong>:对着麦克风提问,回答会在键盘中实时出现,方便查看后再写入</li>
<li>在即时通信等输入框中,先点白色<strong>「插入」</strong>,再点绿色<strong>「发送」</strong>;只有真正插入的内容会进入历史与字数统计</li>
<li>AI 空闲时会轮播常用提问和热点建议,点一下即可生成回答;需要天气、新闻等最新资料时会联网查找,失败会自动换方式重试</li>
<li>设置 → <strong>AI Agent</strong> 可调节<strong>「回复篇幅」</strong>:简短 / 中等 / 详细</li>
<li>刚输入过内容时,<strong>长按麦克风</strong>说出修改要求,可预览后替换原文或追加新内容</li>
<li>润色会保留原本的提问语气,不再把「你能听到吗」等问句改写成回答</li>
</ul>
</div>
<div class="group">
<p class="group-title">剪贴板与技能</p>
<div class="wn-media wide">
<video src="assets/whats-new/clipboard-skills-zh.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>在设置 → <strong>剪贴板</strong>开启<strong>「历史记录」</strong>(默认关闭),可在本机保存最近 15 条纯文本;页面也可直接前往系统设置,将「从其他 App 粘贴」设为允许</li>
<li>键盘顶栏的<strong>剪贴板</strong>按钮可打开历史,点一条即可插入;开启<strong>「建议条」</strong>后,最新复制内容会显示在键盘上方</li>
<li>复制文字后约 30 秒内切到 AI,可直接选择<strong>回复、总结或翻译</strong>;也可以说出「回复剪贴板」或「翻译剪贴板」</li>
<li>App 新增<strong>技能</strong>页,可管理最多 8 个键盘技能,并通过长按拖动调整顺序</li>
<li>右上角 <strong>+</strong> 可自定义技能名称、图标和提示词,也可连接自己的 iCloud 快捷指令</li>
<li>内置技能可从复制内容<strong>提取待办、写入日历、存入备忘录</strong>,或识别地址后打开高德、百度与 Apple 地图导航</li>
</ul>
</div>
</section>
<section class="section">
<h2>全新 App 界面</h2>
<ul>
<li>首页改为信息总览:使用统计、听写历史和个性词库集中显示为资料卡,点按后使用标准返回按钮进入完整列表</li>
<li>iPhone 底部导航重做为 <strong>首页 / 技能 / 风格 / 设置</strong>四栏 Liquid Glass Dock,绿色胶囊清楚标示当前页面</li>
<li>技能与润色风格统一为卡片式管理:点按选择、右上角编辑、右下角显示启用状态;技能支持像主屏幕图标一样长按拖动排序</li>
<li>设置入口重新整理,AI Agent、剪贴板、语音与文字输入等页面更容易找到,当前设置摘要直接显示在导航行右侧</li>
<li>iPad 改为侧栏 + 内容区布局,增大导航触控区域并统一图标对齐;翻译移到麦克风旁与撤销对称,顶栏原位置改为剪贴板入口</li>
</ul>
</section>
<section class="section">
<h2>中英文输入全面升级</h2>
<ul>
<li>英文键盘新增类 QuickType 候选栏,同时显示原词、纠错和补全;约 4 万词离线词表会结合系统词库、通讯录名称与文本替换提供建议</li>
<li>英文邻键纠错更贴合真实键盘位置,并减少对专名、短词和全大写词的误改;拒绝纠错后会学习保留原词</li>
<li>拼音优化 <code>wom</code> 等混合简拼排序,并支持 <code>zh</code><code>ch</code><code>sh</code> 两键简拼;中文候选频率和英文选择偏好会保存在本机</li>
<li>支持叠指连打、英文双空格句号,以及根据输入框显示前往、搜索、发送、完成、下一项等回车键文案</li>
<li>iPad 键盘横竖屏均铺满可用宽度,底行加入逗号、句号和系统地球键,并提供撤销、重做、复制和剪切</li>
</ul>
</section>
<section class="section">
<h2>更稳定、更可控</h2>
<ul>
<li>听写、AI 回答、编辑结果和剪贴板粘贴现在都可通过同一个撤销键一次回滚</li>
<li>长按麦克风现在用于<strong>编辑上次输入</strong>;旧的长按剪贴板语音流程已由剪贴板历史和快捷技能替代</li>
<li>中文输入资源会在 App 中自动完成初始化,部署完成后已打开的键盘也会自行恢复,无需反复重启</li>
<li>修复跨设备剪贴板导致键盘卡住、切换键盘崩溃、录音取消不及时,以及 AI 会话结束后麦克风不可用等问题</li>
<li>默认继续使用设备端语音识别;AI 使用你自己的 API Key,未配置时首页和麦克风上方会提示;剪贴板默认关闭,内容只在你主动操作后交给所配置的服务商</li>
</ul>
</section>
</div>
<div class="lang-block" data-lang="en">
<section class="section">
<h2>New Features</h2>
<div class="group">
<p class="group-title">AI and voice assistant</p>
<div class="wn-media wide">
<video src="assets/whats-new/ai-voice-assistant-en.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>Switch the keyboard to <strong>AI</strong>, ask with the microphone, and watch the answer appear on the keyboard before writing it into the current app</li>
<li>In messaging fields, tap white <strong>Insert</strong>, then green <strong>Send</strong>; only inserted answers count toward history and character statistics</li>
<li>Idle AI rotates useful prompts and current topics that can be sent with one tap; questions that need weather, news, or other current information use web search with automatic fallback</li>
<li>In Settings → <strong>AI Agent</strong>, choose <strong>Response length</strong>: Short / Medium / Detailed</li>
<li>Right after entering text, <strong>hold the microphone</strong>, describe the change, then preview and replace the original or append the result</li>
<li>Polish preserves your original question instead of rewriting prompts such as “Can you hear me?” into answers</li>
</ul>
</div>
<div class="group">
<p class="group-title">Clipboard and Skills</p>
<div class="wn-media wide">
<video src="assets/whats-new/clipboard-skills-en.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>Turn on <strong>History</strong> in Settings → <strong>Clipboard</strong> (off by default) to keep the latest 15 plain-text copies on this device; the same page opens system Settings for Paste from Other Apps permission</li>
<li>Open history from the keyboard's top-bar <strong>Clipboard</strong> button and tap an item to insert it; the optional <strong>Suggestion strip</strong> keeps the newest copy above the keyboard</li>
<li>Within about 30 seconds of copying text, switch to AI and choose <strong>Reply, Summarize, or Translate</strong>, or say “reply to the clipboard” or “translate my clipboard”</li>
<li>The new <strong>Skills</strong> page manages up to eight keyboard skills and reorders them with a long-press drag</li>
<li>Use the top-right <strong>+</strong> to create a skill with your own name, icon, and prompt, with an optional iCloud Shortcut connection</li>
<li>Built-in skills can <strong>extract to-dos, add calendar events, save to Notes</strong>, or recognize an address and open Amap, Baidu Maps, or Apple Maps</li>
</ul>
</div>
</section>
<section class="section">
<h2>A New App Interface</h2>
<ul>
<li>Home becomes a true overview: usage statistics, dictation history, and Personal Dictionary appear together as preview cards that open full lists with standard back navigation</li>
<li>The iPhone dock is rebuilt around four Liquid Glass destinations — <strong>Home / Skills / Styles / Settings</strong> — with a green capsule marking the current page</li>
<li>Skills and polish styles share one card-based interaction: tap to select, edit from the top-right, and see enabled status at the bottom-right; skills reorder with a Home Screen-style long-press drag</li>
<li>Settings navigation is reorganized so AI Agent, Clipboard, Speech, and Text Input are easier to find, with current summaries shown directly beside each row</li>
<li>iPad uses a sidebar + detail layout with larger, aligned navigation rows; Translation moves beside the microphone opposite Undo, and its former top-bar slot becomes Clipboard</li>
</ul>
</section>
<section class="section">
<h2>Chinese and English Typing, Rebuilt</h2>
<ul>
<li>The English keyboard adds a QuickType-style bar for the typed word, correction, and completion; an offline list of about 40,000 words works with the system lexicon, contact names, and text replacements</li>
<li>Neighbor-key correction follows the physical keyboard while autocorrect makes fewer unwanted changes to names, short words, and all-caps text; rejecting a correction teaches the original</li>
<li>Pinyin improves mixed abbreviations such as <code>wom</code> and supports two-key <code>zh</code>, <code>ch</code>, and <code>sh</code>; Chinese candidate frequency and English choices learn locally</li>
<li>Overlapping key presses, the English double-space period, and contextual Go / Search / Send / Done / Next Return labels make typing feel closer to the system keyboard</li>
<li>On iPad, the keyboard fills portrait and landscape width, adds comma, period, and the system globe key, plus undo, redo, copy, and cut</li>
</ul>
</section>
<section class="section">
<h2>More Stable, More Controllable</h2>
<ul>
<li>One Undo key now rolls back dictation, AI answers, edit results, and clipboard pastes</li>
<li>Holding the microphone now <strong>edits the last input</strong>; Clipboard History and quick skills replace the previous hold-to-command clipboard flow</li>
<li>Chinese input resources initialize automatically in the app, and an already-open keyboard recovers after deployment without repeated restarts</li>
<li>Fixes Universal Clipboard freezes, keyboard-switch crashes, delayed recording cancellation, and a microphone that could remain unavailable after AI sessions</li>
<li>On-device speech recognition remains the default; AI uses your own API key, with setup tips on Home and above the microphone when missing; Clipboard stays off until enabled and sends text only after your action</li>
</ul>
</section>
</div>
</article>
<!-- ========== 1.6.6 ========== -->
<article class="version-block" data-version="1.6.6">
<div class="version-chip">1.6.6</div>
<div class="lang-block" data-lang="zh">
<section class="section">
<h2>新功能</h2>
<div class="group">
<p class="group-title">全新保活流程</p>
<ul>
<li>键盘保活流程全新升级,大幅提升后台保活逻辑,大幅降低耗电量并提升稳定性</li>
</ul>
</div>
<div class="group">
<p class="group-title">新增键盘输入功能</p>
<div class="wn-media wide">
<video src="assets/whats-new/keyboard-typing.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>新增<strong>拼音</strong><strong>英文</strong>键盘:支持全拼、微软/搜狗双拼、词组候选、可选模糊音;拼音与英文均支持自定义词库</li>
<li>键盘布局整体升级,语音 / 中文 / 英文外观统一;左侧 Logo 可跳转主 App,右侧改为输入方式切换与翻译入口</li>
<li>新增<strong>中文候选词面板</strong>,候选池更大,长词和更多备选更容易找到;多字输入时可分词选择</li>
<li>新增英文联想补全、自动纠错与候选撤销,输入更快更准</li>
<li>新增键盘防误触和误输入纠正,整体体验更接近系统键盘</li>
<li>新增<strong>按键音效与震动</strong>,以及轻 / 强震动设置</li>
<li>新增长按删除加速,改长文更高效</li>
<li>新增英文键盘智能大写:连续大写、句首自动大写</li>
<li>新增<strong>撤销上次输入</strong>按钮:麦克风旁可一键撤回最近一次听写或编辑结果</li>
<li>新增<strong>键盘偏好</strong>设置,支持记住上次使用的语音或文字界面,再次打开无需反复切换</li>
</ul>
</div>
<div class="group">
<p class="group-title">编辑上次输入</p>
<div class="wn-media wide">
<video src="assets/whats-new/edit-last-input-zh.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>刚用 OSGKeyboard 输入过内容时,麦克风上方会提示<strong>「长按可编辑上一条」</strong></li>
<li><strong>长按</strong>麦克风进入编辑,说出想怎么改(如「改得更正式些」「结尾加一句问候」);<strong>短按</strong>仍是普通听写</li>
<li>说完<strong>再点一下</strong>结束录音,稍候即可左右滑动对比<strong>原文 / 编辑后</strong></li>
<li>确认后点<strong>应用编辑</strong>替换原文,或选择<strong>插入当前位置</strong>;右上角关闭可放弃本次编辑</li>
</ul>
</div>
<div class="group">
<p class="group-title">润色模式整体升级</p>
<div class="wn-media">
<img src="assets/whats-new/polish-styles-zh.png" alt="润色风格列表" loading="lazy">
</div>
<ul>
<li>大幅升级<strong>趣味润色</strong>(含直男癌等),风格更鲜明,同时减少事实失真</li>
<li>润色强度简化为轻度 / 重度:轻度优先保真,重度释放五种趣味风格的完整创意</li>
<li>新增<strong>同音 / 近音纠错</strong>,语音识别后的错字修复更准</li>
<li>长文本润色与翻译分段更清晰,列表结构更易读,翻译后保留段落格式</li>
</ul>
</div>
<div class="group">
<p class="group-title">应用内更新说明</p>
<ul>
<li>版本更新后自动展示更新说明;设置页版本行也可随时查看,跟随应用内语言与深浅色</li>
</ul>
</div>
<div class="group">
<p class="group-title">设置优化</p>
<ul>
<li>设置页层级与卡片布局更清晰,转写与润色入口更好找</li>
<li>简化首次设置:未完成语音配置时仍可正常打字</li>
<li>文本输入设置页的方案、模糊音与资源文案跟随应用内语言</li>
</ul>
</div>
</section>
<section class="section">
<h2>问题修复</h2>
<ul>
<li>修复润色代答问句:口述问句(如「你能听到我说话吗?」)时不再被改写成一句回答,全部风格与强度都会保留问句本身</li>
<li>修复自定义润色风格编辑偶发显示空白模板</li>
</ul>
</section>
<section class="section">
<h2>稳定性与可靠性</h2>
<ul>
<li>重构蓝牙与音频路由处理:切换蓝牙设备(耳机)后,录音恢复更可靠</li>
<li>修复录音启动 / 取消竞态,减少识别完成后卡在润色阶段的问题</li>
<li>Apple 本地识别改用降噪接口:同房间旁人说话时,更倾向听清你的近讲声音</li>
<li>为识别与润色增加明确超时与原文兜底,网络不稳时不再无限等待</li>
<li>加强主 App 与键盘的结果确认与恢复,降低结果丢失或无法上屏的概率</li>
<li>修复火山 ASR 连接问题;修复云端 ASR 配置验证误报</li>
<li>重构键盘启动流程、降低内存峰值,减少闪退与被系统终止</li>
<li>输入引擎按需加载,语音与文字切换更快、更省内存</li>
<li>未使用麦克风时,不主动拉起主 App 占用内存</li>
<li>移除冗余多步引导;优化会话未完成时的体验</li>
<li>自定义词 / 本地识别相关能力打包更完整</li>
</ul>
</section>
</div>
<div class="lang-block" data-lang="en">
<section class="section">
<h2>New Features</h2>
<div class="group">
<p class="group-title">Redesigned keep-alive flow</p>
<ul>
<li>Keyboard keep-alive is rebuilt for more reliable background continuity, lower power use, and better stability</li>
</ul>
</div>
<div class="group">
<p class="group-title">Typing keyboards</p>
<div class="wn-media wide">
<video src="assets/whats-new/keyboard-typing.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>New <strong>Pinyin</strong> and <strong>English</strong> keyboards: full Pinyin, Microsoft/Sogou double Pinyin, phrase candidates, optional fuzzy Pinyin; both support custom dictionaries</li>
<li>Unified keyboard chrome across Voice / Chinese / English; left logo opens the main app; right side switches input mode and opens translation</li>
<li>New <strong>Chinese candidate panel</strong> with a larger pool for long phrases and alternatives; multi-character input supports segmented selection</li>
<li>English autocomplete, autocorrect, and candidate undo for faster, more accurate typing</li>
<li>Anti-mis-tap and mistype correction for a closer-to-system keyboard feel</li>
<li>New <strong>key sounds and haptics</strong>, with light / strong haptic options</li>
<li>Accelerating long-press delete for faster long-text edits</li>
<li>Smarter English capitalization: caps lock and sentence-start autocapitalization</li>
<li>New <strong>undo last input</strong> button beside the mic to roll back the latest dictation or edit result</li>
<li>New <strong>Keyboard Preferences</strong>: remember the last Voice or Typing surface so you dont keep switching</li>
</ul>
</div>
<div class="group">
<p class="group-title">Edit last input</p>
<div class="wn-media wide">
<video src="assets/whats-new/edit-last-input-en.mp4" autoplay muted loop playsinline preload="metadata"></video>
</div>
<ul>
<li>Right after you insert text with OSGKeyboard, the mic shows <strong>“Hold to edit your last input”</strong></li>
<li><strong>Long-press</strong> the mic to start editing and say how to change it (e.g. “make it more formal”, “add a greeting at the end”); a <strong>short press</strong> is still plain dictation</li>
<li><strong>Tap once more</strong> to finish, then swipe to compare <strong>Original / Edited</strong></li>
<li>Confirm to <strong>apply the edit</strong> (replace), or choose <strong>insert at cursor</strong>; close from the top-right to discard</li>
</ul>
</div>
<div class="group">
<p class="group-title">Polish upgrades</p>
<div class="wn-media">
<img src="assets/whats-new/polish-styles-en.png" alt="Polish styles list" loading="lazy">
</div>
<ul>
<li>Stronger <strong>fun polish</strong> styles (including Straight-Talk Rescue / 直男癌), with clearer voice and less factual drift</li>
<li>Intensity simplified to Light / Heavy: Light prioritizes fidelity; Heavy unlocks the full creativity of the five fun styles</li>
<li>New <strong>homophone / near-homophone correction</strong> after speech recognition</li>
<li>Clearer segmentation for long polish and translation; lists read better; translations keep paragraph structure</li>
</ul>
</div>
<div class="group">
<p class="group-title">In-app release notes</p>
<ul>
<li>Release notes appear automatically after an update, and the Settings version row opens them any time, following your in-app language and theme</li>
</ul>
</div>
<div class="group">
<p class="group-title">Settings</p>
<ul>
<li>Clearer Settings hierarchy and cards; transcription and polish are easier to find</li>
<li>Simpler first-run setup: you can type even before voice setup is finished</li>
<li>Schema, fuzzy-Pinyin, and resource strings on the Text Input settings page follow the in-app language</li>
</ul>
</div>
</section>
<section class="section">
<h2>Bug Fixes</h2>
<ul>
<li>Fixed polish answering a question: dictating a question (e.g. “Can you hear me?”) is no longer rewritten into an answer — the question is preserved across every style and intensity</li>
<li>Fixed the custom polish style editor occasionally opening a blank template</li>
</ul>
</section>
<section class="section">
<h2>Stability &amp; Reliability</h2>
<ul>
<li>Rebuilt Bluetooth / audio-route handling so recording recovers more reliably after switching headsets</li>
<li>Fixed start / cancel races that could leave the UI stuck in polish after recognition finished</li>
<li>Apple on-device recognition uses voice-processing / noise reduction so your near-talk mic is preferred over other speakers in the room</li>
<li>Explicit timeouts and original-text fallback for recognition and polish — no endless waits on flaky networks</li>
<li>Stronger host ↔ keyboard result confirmation and recovery to reduce lost or uninsertable text</li>
<li>Fixed Volcengine ASR connection issues and false cloud ASR config-validation failures</li>
<li>Rebuilt keyboard launch path with lower peak memory to reduce crashes and jetsams</li>
<li>Input engines load on demand — faster Voice ↔ Typing switches and lower memory use</li>
<li>Does not wake the host app just to hold memory when the mic isnt used</li>
<li>Removed redundant multi-step prompts; smoother experience when a session isnt finished</li>
<li>More complete packaging for custom words and on-device recognition assets</li>
</ul>
</section>
</div>
</article>
<!-- ========== 1.1.0 ========== -->
<article class="version-block" data-version="1.1.0">
<div class="version-chip">1.1.0</div>
<div class="lang-block" data-lang="zh">
<section class="section">
<h2>新功能</h2>
<ul>
<li>新增「润色风格包」:内置轻度清理、清晰结构、正式表达、日常聊天,并支持 iCloud 同步</li>
<li>新增「趣味润色风格」:直男癌拯救器、装逼指南、大厂黑话、帝吧大神、小红书集美五种润色风格</li>
<li>新增自定义润色风格功能</li>
<li>新增「画中画」保活,并作为默认风格,支持在设置中切换回灵动岛;关掉画中画即可结束会话</li>
<li>云端识别支持真流式(百炼 / 火山 / OpenAI),说话时文字会实时上屏</li>
<li>新增历史记录可按天删除(只清当天)</li>
<li>设置里对流式 ASR 供应商显示「流式识别」标签;OpenAI 云端识别默认走流式</li>
</ul>
</section>
<section class="section">
<h2>体验改进</h2>
<ul>
<li>设置页重新设计,结构更清晰</li>
<li>灵动岛保活默认改为 5 分钟(更省隐私与电量),支持多种时长设置</li>
<li>更新 iPhone 历史、词库 Tab 图标,与 Mac / iPad 统一</li>
<li>润色风格卡片与设置摘要更简洁,少装饰、少冗余状态字</li>
<li>设置、风格等相关页面统一卡片留白与圆角</li>
<li>更新权限与隐私说明</li>
</ul>
</section>
<section class="section">
<h2>问题修复</h2>
<ul>
<li>完成新手引导后不再卡在最后一页</li>
<li>删除重装后会重新出现欢迎引导</li>
<li>松手后尾音更不容易丢字;识别过短时会整句再识别一次兜底</li>
<li>按下录音时麦克风预热阶段的开头语音更不易被丢掉</li>
<li>末段识别为空时,不再把前面已经识别好的字抹掉</li>
<li>修复趣味润色在短句时的失真问题</li>
</ul>
</section>
</div>
<div class="lang-block" data-lang="en">
<section class="section">
<h2>New Features</h2>
<ul>
<li>Polish style packs: Light Cleanup, Clear Structure, Formal, and Casual Chat, with iCloud sync</li>
<li>Fun polish styles: Straight-Talk Rescue, Flex Guide, Big-Tech Buzzwords, Tieba Legend, and Xiaohongshu Vibes</li>
<li>Custom polish styles</li>
<li>Picture-in-Picture keep-alive as the default, with Dynamic Island as an option in Settings; ending PiP ends the session</li>
<li>True streaming cloud ASR (Bailian / Volcengine / OpenAI) with live on-screen text while you speak</li>
<li>Delete history by day (clear only that day)</li>
<li>Settings shows a “Streaming ASR” badge for streaming providers; OpenAI cloud ASR defaults to streaming</li>
</ul>
</section>
<section class="section">
<h2>Improvements</h2>
<ul>
<li>Redesigned Settings with a clearer structure</li>
<li>Dynamic Island keep-alive defaults to 5 minutes (more privacy- and battery-friendly), with multiple duration options</li>
<li>Updated iPhone History and Dictionary tab icons to match Mac / iPad</li>
<li>Simpler polish-style cards and Settings summaries — less decoration and fewer status words</li>
<li>Consistent card padding and corner radius across Settings and style pages</li>
<li>Updated permission and privacy copy</li>
</ul>
</section>
<section class="section">
<h2>Fixes</h2>
<ul>
<li>Onboarding no longer sticks on the last page after completion</li>
<li>Welcome onboarding shows again after delete-and-reinstall</li>
<li>Less end-of-utterance truncation on release; very short captures retry the whole phrase</li>
<li>Speech at the start of mic warm-up is less likely to be dropped</li>
<li>An empty final segment no longer wipes earlier recognized text</li>
<li>Fixed fun-polish distortion on short sentences</li>
</ul>
</section>
</div>
</article>
<script>
(function () {
function parseVersion(raw) {
if (!raw) return null;
var parts = String(raw).trim().split(".").map(function (p) {
var n = parseInt(p, 10);
return Number.isFinite(n) ? n : 0;
});
while (parts.length < 3) parts.push(0);
return parts.slice(0, 3);
}
function compareVersions(a, b) {
for (var i = 0; i < 3; i++) {
if (a[i] !== b[i]) return a[i] - b[i];
}
return 0;
}
function readParams() {
var params = new URLSearchParams(window.location.search);
var lang = (params.get("lang") || "").toLowerCase();
if (lang.indexOf("zh") === 0) lang = "zh";
else if (lang.indexOf("en") === 0) lang = "en";
else lang = (navigator.language || "").toLowerCase().indexOf("zh") === 0 ? "zh" : "en";
var theme = (params.get("theme") || "").toLowerCase();
if (theme !== "light" && theme !== "dark") {
theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
}
var version = params.get("v") || params.get("version") || "";
return { lang: lang, theme: theme, version: version };
}
var cfg = readParams();
document.documentElement.lang = cfg.lang === "zh" ? "zh-Hans" : "en";
document.documentElement.setAttribute("data-theme", cfg.theme);
document.querySelectorAll(".lang-block").forEach(function (el) {
el.classList.toggle("visible", el.getAttribute("data-lang") === cfg.lang);
});
var current = parseVersion(cfg.version);
var blocks = Array.prototype.slice.call(document.querySelectorAll(".version-block"));
var visibleCount = 0;
blocks
.map(function (el) {
return { el: el, version: parseVersion(el.getAttribute("data-version")) };
})
.filter(function (item) {
if (!item.version) return false;
// No v= → show all; otherwise only versions <= current app version.
if (!current) return true;
return compareVersions(item.version, current) <= 0;
})
.sort(function (a, b) {
return compareVersions(b.version, a.version);
})
.forEach(function (item) {
item.el.classList.add("visible");
// Re-append in newest → oldest order.
item.el.parentNode.appendChild(item.el);
visibleCount += 1;
});
var empty = document.getElementById(cfg.lang === "zh" ? "empty-zh" : "empty-en");
if (empty) empty.classList.toggle("visible", visibleCount === 0);
})();
</script>
</body>
</html>