docs(readme): refresh feature narrative and add three-device banner

This commit is contained in:
Rocky
2026-09-27 19:25:55 +08:00
parent fcd66b24d9
commit 8c16bf67d8
4 changed files with 136 additions and 74 deletions
+60 -29
View File
@@ -4,6 +4,10 @@
OSGKeyboard is a voice input tool for iPhone, iPad, and Mac. Its iOS keyboard combines on-device dictation, Chinese and English typing, an AI assistant, clipboard skills, and optional managed credits in one input surface. On Mac, hold Option for global dictation.
<p align="center">
<img src="download/OSG_All-1600.png" srcset="download/OSG_All-1600.png 1600w, download/OSG_All.png 13742w" alt="OSGKeyboard running on iPad, Mac, and iPhone" width="100%">
</p>
![Platform](https://img.shields.io/badge/iOS%20%2F%20iPadOS-26%2B-0078D4?logo=apple)
![Platform](https://img.shields.io/badge/macOS-15%2B-555?logo=apple)
![Swift](https://img.shields.io/badge/Swift-6.0-FA7343?logo=swift)
@@ -22,38 +26,41 @@ OSGKeyboard is a voice input tool for iPhone, iPad, and Mac. Its iOS keyboard co
</a>
</p>
> The public Mac DMG is the signed and notarized historical version 1.1. The macOS target in this repository evolves with the 2.0 codebase; build with Xcode 26 for the latest source capabilities.
> The public Mac DMG is the signed and notarized historical version 1.1. The macOS target in this repository has moved forward with the 2.2 codebase; build with Xcode 26 for the latest source capabilities.
>
> The repository version follows [`project.yml`](./project.yml) (2.1.0, build 110). The `2.2.0` and later entries in CHANGELOG are already reflected in the capability descriptions below.
## One keyboard, four ways to input
### Voice dictation
### Voice + AI assistant: preview, then insert
- iOS 26 uses Apple `SpeechAnalyzer` and `DictationTranscriber` on-device by default
- Tap the microphone to start or stop; text lands in the current app at the cursor
- Optional AI polish, punctuation, structure, and post-polish translation
- Nine built-in polish styles, custom styles, Light / Heavy playful intensity, and optional mood emoji
- The Mac menu-bar app supports Option-hold global dictation; Apple Silicon Macs can download local Qwen3 MLX models
- Tap the microphone to dictate or hold it to ask AI; voice and AI share one Assistant entry
- Answers stream into the keyboard and auto-insert only while the original field and cursor context still match
- Voice-edit the last verified OSGKeyboard insertion and replace or append
- Follow the focused field with Send, Search, Go, Done, Next, or newline
- One undo covers dictation, AI answers, edits, and clipboard pastes
### Chinese and English typing
### Voice input: on-device by default
- Chinese: full pinyin, Microsoft double pinyin, Sogou double pinyin, optional fuzzy pairs, abbreviation ranking, and an expanded candidate panel
- English: three-slot QuickType, a ~40k-word offline lexicon, completion, correction, and next-word suggestions
- iOS and iPadOS use Apple `SpeechAnalyzer` and `DictationTranscriber` on-device by default
- A personal dictionary and contextual hotwords lift recognition of names, terminology, and phrases you use often
- Voice-edit the last text inserted by OSGKeyboard
- Optional AI polish: nine built-in styles, custom styles, Light / Heavy playful intensity, and optional mood emoji
- Optional post-polish translation that re-targets the polished result into your chosen language
### Chinese and English typing: effortless when speaking is not convenient
- **Chinese**: full pinyin, Ziranma, Xiaohe, Microsoft, and Sogou double pinyin — with fuzzy pairs, abbreviation ranking, candidate paging, number selection, swipe selection, and mixed Chinese-English input
- **English**: three-slot QuickType, a ~40k-word offline lexicon, prefix completion, autocorrect, next-word prediction, candidate undo, and sentence capitalization
- Touch behavior: proximity correction, overlapping presses, hold-to-delete, double-space period, and system Return semantics
- One personal dictionary participates in Chinese candidates, English suggestions, speech biasing, and polish protection
### Unified AI assistant
- Tap to dictate or hold to ask AI; voice and AI share one Assistant entry
- Answers stream into the keyboard and auto-insert only while the original field and cursor context still match
- Voice-edit the last verified OSGKeyboard insertion, then replace or append
- Follow the focused field with Send, Search, Go, Done, Next, or newline actions
- One undo action covers dictation, AI answers, edits, and clipboard pastes
### Clipboard and skills
### Clipboard and skills: copy, then act
- Clipboard history is off by default; when enabled, it keeps up to 15 plain-text items in the device-local App Group
- On-device semantic analysis recommends up to five relevant actions from the complete skill catalog after a copy
- Built-in skills extract tasks and events, save to Notes, and open map navigation through Apple Shortcuts or map apps
- Built-in Reply, Summarize, Translate, Tasks, Events, Notes, and navigation through Apple Maps, Amap, or Baidu Maps
- Extract Tasks and Extract Events now write through native EventKit, with no companion Shortcut to install; Calendar uses write-only access so existing events are never read
- Create custom skills with a name, SF Symbol, prompt, and optional iCloud Shortcut
- Install any number of skills; manage and reorder them in the Skills tab while the keyboard dynamically shows relevant actions for the current clipboard text
@@ -61,13 +68,13 @@ OSGKeyboard is a voice input tool for iPhone, iPad, and Mac. Its iOS keyboard co
OSGKeyboard does not make cloud service the only option:
1. **On-device** — the default. Local iOS dictation requires no account or API key and does not upload raw audio.
1. **On-device** — the default. Local iOS dictation requires no account or API key and does not upload raw audio. Apple Silicon Macs default to a local Qwen3 MLX model, with Apple Speech Recognition as a fallback.
2. **Bring your own provider (BYOK)** — configure your own cloud ASR / LLM credentials. Requests go directly to the selected provider, and credentials stay in Keychain.
3. **OSG managed credits** — optional on iOS / iPadOS. After Sign in with Apple, use managed speech and AI without entering provider credentials. Before first use, the app explains which data leaves the device and asks for explicit consent.
Local dictation and user-owned providers remain independent and never require an OSGKeyboard account.
First-run onboarding uses a short-lived anonymous credential issued after App Attest verification so users can try voice input, translation, smart reply, and hold-to-ask AI once each. These four lessons create no account, require no API key, and consume no credits. Afterward, users may skip sign-in or use Sign in with Apple to claim the eligible 1,000-credit signup reward.
First-run onboarding uses a short-lived anonymous credential issued after App Attest verification so users can try voice input, clipboard translation, smart reply, and hold-to-ask AI once each. These four lessons create no account, require no API key, and consume no credits. Afterward, users may skip sign-in or use Sign in with Apple to claim the eligible 1,000-credit signup reward.
## Optional account and credits
@@ -76,27 +83,34 @@ The iOS / iPadOS account center includes:
- Sign in with Apple, profile controls, sign-out, and in-app account deletion
- Managed balance, consumable App Store credit packs, and referrals
- Server verification of purchases and a synchronized credit ledger
- Short-lived, scope-limited managed-service grants for the keyboard extension
- Short-lived, scope-limited managed-service grants for the keyboard extension; the main app's account token is never exposed to the keyboard
## History, statistics, and sync
- Home brings together seven-day dictation statistics, recent history, and the personal dictionary
- Voice history keeps up to 300 entries and supports day-based deletion
- Home surfaces a monthly calendar, recent history, and the personal dictionary; the four metric cards for dictation characters, time, translation characters, and custom terms jump straight to their detail screens
- Voice history keeps up to 300 entries and supports day-based deletion; the corrected pre-polish ASR transcript and active-style metadata are kept alongside the final text for future style learning
- Settings, personal dictionary, polish styles, history, and statistics can be selectively synced through private iCloud
- API keys stay in Keychain by default and replicate through iCloud Keychain only after iCloud settings sync is enabled; clipboard history, account tokens, and typing learning are not carried by settings sync
## Reliability and recovery
- The keyboard loads engines on demand, samples memory throughout its lifetime, and proactively releases the Chinese engine, English lexicon, and in-flight pipeline work at the 40 MiB and 48 MiB budget thresholds; a hard shed waits while you are mid-composition
- MetricKit integration (iOS 26 and later) records crash, hang, CPU, and disk-write diagnostics on device — including keyboard-extension memory kills that never surface as crashes in App Store Connect — and exports them from Settings ▸ Diagnostics
- Beta builds (local Debug and TestFlight) batch-upload those diagnostics when the Settings toggle is on, so `0xdead10cc` shutdowns can be investigated without asking testers to export by hand; App Store builds never upload
- CI gates on a static check that the App Group identifier and the shared Keychain access-group ordering agree across the app, the keyboard extension, the Mac target, and `project.yml`
## Platform capabilities
| Capability | iOS / iPadOS 26+ | macOS 15+ |
|---|:---:|:---:|
| System keyboard / global hotkey | Custom keyboard | Hold Option |
| On-device speech | Apple SpeechAnalyzer | Qwen3 MLX (Apple Silicon) + Apple Speech fallback |
| Chinese full / double pinyin | Yes | — |
| English completion / correction | Yes | — |
| Chinese full / double pinyin / fuzzy pairs | Yes | — |
| English completion / correction / next-word | Yes | — |
| AI polish and translation | Yes | Yes |
| Unified assistant and voice questions | Yes | — |
| Clipboard history and skills | Yes | — |
| Native Reminders / Calendar export | Yes | — |
| Optional OSG account and managed credits | Yes | — |
| Personal dictionary, history, and statistics | Yes | Yes |
| iCloud sync | Optional settings, dictionary, history, statistics, and more | Compatible shared data |
@@ -113,6 +127,23 @@ The iOS / iPadOS account center includes:
See the [Privacy Policy](https://hkgood.github.io/OSGKeyboard/privacy/) for data categories, retention, account deletion, and third-party services.
## Frequently asked questions
**Do I need an OSG account?**
No. You do not need an OSG account for on-device dictation or when using providers you configure yourself. Sign in with Apple is used only for managed credits, credit purchases, referral rewards, and profile management.
**Does my audio get uploaded?**
On-device recognition does not upload your recordings. Audio leaves the device only when you explicitly choose cloud recognition configured with your own API key or cloud recognition paid for with managed credits.
**Why does the keyboard need Full Access?**
Full Access lets the keyboard share settings with the OSGKeyboard app, read saved provider configurations, and access the clipboard only after you opt in. We do not collect what you type during normal keyboard use.
**Is OSGKeyboard open source?**
No. It uses a source-available license for personal learning and non-commercial local use. Redistribution, public derivative versions, and commercial use require permission.
**Why is the Mac download version 1.1?**
The signed and notarized Mac installer currently available for download is version 1.1. The Mac source in the repository has moved forward to version 2.2; build it on macOS with Xcode 26 or later to use the latest capabilities.
## Quick start
### iPhone / iPad
@@ -179,4 +210,4 @@ The [OSGKeyboard Source Available License](./LICENSE) is not an open-source or M
<p align="center">
开口即文字 · Speak it. It's typed.
</p>
</p>
+76 -45
View File
@@ -4,6 +4,10 @@
OSGKeyboard 是面向 iPhone、iPad 与 Mac 的语音输入工具。iOS 键盘把端侧听写、中英打字、AI 助手、剪贴板技能与可选托管积分放在同一个输入界面;Mac 提供按住 Option 即可使用的全局听写。
<p align="center">
<img src="download/OSG_All-1600.png" srcset="download/OSG_All-1600.png 1600w, download/OSG_All.png 13742w" alt="OSGKeyboard 在 iPad、Mac、iPhone 上同时使用" width="100%">
</p>
![Platform](https://img.shields.io/badge/iOS%20%2F%20iPadOS-26%2B-0078D4?logo=apple)
![Platform](https://img.shields.io/badge/macOS-15%2B-555?logo=apple)
![Swift](https://img.shields.io/badge/Swift-6.0-FA7343?logo=swift)
@@ -22,52 +26,55 @@ OSGKeyboard 是面向 iPhone、iPad 与 Mac 的语音输入工具。iOS 键盘
</a>
</p>
> Mac 公开 DMG 是已签名并公证的历史版本 1.1。仓库中的 macOS target 随整体源码演进到 2.0;最新源码能力可使用 Xcode 26 构建。
> 公开下载的 Mac DMG 是已签名并公证的历史版本 1.1。仓库中的 macOS target 随整体源码演进到 2.2;最新源码能力请用 Xcode 26 构建。
>
> 当前仓库版本以 [`project.yml`](./project.yml) 为准(`2.1.0` · build 110)。CHANGELOG 中 `2.2.0` 及更新的条目已经包含在本 README 的能力描述中。
## 一个键盘,四种输入方式
## 一把键盘,四种输入方式
### 语音听写
### 语音 + AI 助手:先预览,再插入
- iOS 26 默认使用 Apple `SpeechAnalyzer` 与 `DictationTranscriber` 在设备端识别
- 轻点麦克风开始或结束,转写结果直接插入当前 App 的光标位置
- 可选 AI 润色、标点整理、结构重建与润色后翻译
- 9 种内置润色风格、自定义风格、趣味风格轻度 / 重度档位与可选情绪 emoji
- Mac 菜单栏 App 支持按住 Option 全局听写;Apple Silicon 可下载 Qwen3 MLX 本地模型
### 中英打字
- 中文:全拼、微软双拼、搜狗双拼、可选模糊音、简拼排序和展开候选面板
- 英文:三格 QuickType、约 4 万词离线词表、补全、纠错与下一词建议
- 输入体验:邻键纠错、叠指连打、长按连删、双空格句号、系统 Return 语义
- 个性词库同时参与中文候选、英文建议、语音偏置与润色保护
### 统一 AI 助手
- 轻点听写,长按向 AI 提问;语音与 AI 共用一个助手入口
- 回答流式显示;仅当原输入框与光标上下文仍匹配时自动上屏
- 支持口述修改最近一次可靠的 OSGKeyboard 输入,并选择替换或追加
- 轻点麦克风开始听写,长按直接向 AI 提问;语音与 AI 共用同一个助手入口
- 回答流式显示,仅当原输入框与光标上下文仍匹配时才自动上屏
- 可口述修改最近一次由 OSGKeyboard 插入的文本,并选择替换或追加
- 根据当前输入框显示发送、搜索、前往、完成、下一步或换行
- 一次撤销覆盖听写、AI 回答、编辑与剪贴板粘贴
### 剪贴板与技能
### 语音输入:端侧优先
- iOS / iPadOS 默认使用 Apple `SpeechAnalyzer` + `DictationTranscriber` 在设备端识别
- 个人词典与上下文热词帮助提升名字、术语与常用表达的识别准确率
- 可用语音修改最近一次由 OSGKeyboard 插入的文本
- 可选 AI 润色:9 种内置风格、自定义风格、轻松 / 加重两档趣味强度与可选情绪 emoji
- 可选「润色后翻译」:在润色基础上再翻成目标语言
### 中英打字:不通话也能流畅输入
- **中文**:全拼、自然码、小鹤、微软、搜狗双拼;模糊音、简拼排序、展开候选、数字选词、滑动选词、中英混输
- **英文**:三格 QuickType、约 4 万词离线词表、补全、纠错、下一词建议、撤销自动纠错、句首自动大写
- 输入体验:邻键纠错、叠指连打、长按连删、双空格句号、系统 Return 语义
- 一个个性词库同时参与中文候选、英文建议、语音偏置与润色保护
### 剪贴板与技能:复制之后,直接行动
- 剪贴板历史默认关闭,开启后最多保存 15 条纯文本,仅存于本机 App Group
- 复制后由本地语义分析从完整技能目录中推荐最多 5 个相关操作
- 内置待办、日程与备忘录可通过 Apple 快捷指令导出;地图导航直接打开高德、百度或 Apple 地图
- 可创建自定义技能:名称、SF Symbol、提示词和可选 iCloud 快捷指令
- 技能安装数量不限;技能页可安装、卸载和排序,键盘按当前剪贴板内容动态展示相关技能
- 内置回复、总结、翻译、待办、日程、备忘录、地图导航(高德 / 百度 / Apple 地图)
- 提取待办与日程改用原生 EventKit 写入,无需安装配套捷径;日历只申请「仅写入」权限
- 可创建自定义技能:名称、SF Symbol、提示词与可选 iCloud 快捷指令
- 技能安装数量不限;技能页可安装、卸载、排序,键盘按当前剪贴板内容动态展示相关技能
## 三种服务路径
OSGKeyboard 不把云端服务绑定为唯一选择:
1. **设备端** — 默认路径。iOS 本地听写无需账号或 API Key,原始录音不上传。
2. **自备服务商(BYOK)** — 配置自己的云端 ASR / LLM 凭证,请求直接发送到所选服务商;凭证保存在 Keychain。
1. **端侧** — 默认路径。iOS 本地听写无需账号或 API Key,原始录音不上传;Mac(Apple Silicon)默认使用本地 Qwen3 MLX 模型,Apple 语音识别作为备用。
2. **自备服务商(BYOK)** — 配置你自己的云端 ASR / LLM 凭证,请求直接发送到所选服务商;凭证保存在 Keychain。
3. **OSG 托管积分** — iOS / iPadOS 可选。Apple 登录后可使用托管语音与 AI,无需填写服务商凭证;首次启用前会明确说明离开设备的数据并征求同意。
本地听写和自备服务商始终可以独立使用,不要求 OSGKeyboard 账号。
首次引导会先使用 App Attest 签发的短时匿名凭证,让用户各体验一次语音输入、翻译、智能回复与长按询问 AI;这四次教学不创建账号、不需要 API Key,也不消耗积分。体验后可跳过登录,或使用 Apple 登录领取符合条件的 1000 积分注册奖励。
首次引导会先用 App Attest 签发的短时匿名凭证,让用户各体验一次语音输入、剪贴板翻译、智能回复与长按问 AI;这四次教学不创建账号、不需要 API Key,也不消耗积分。体验后可跳过登录,或使用 Apple 登录领取符合条件的 1000 积分注册奖励。
## 可选账号与积分
@@ -76,34 +83,41 @@ iOS / iPadOS 账号中心支持:
- Sign in with Apple、资料管理、退出登录与 App 内账号注销
- 托管积分余额、App Store 消耗型积分包与邀请
- 服务端核验购买结果并维护积分账本
- 键盘扩展只接收短时、限权的托管服务凭证
- 键盘扩展只接收短时、限权的托管服务凭证,主 App 账号令牌不会下发给键盘扩展
## 历史、统计与同步
- 首页集中展示近 7 天听写统计、最近历史与个性词库
- 语音历史最多保留 300 条,可按天删除
- 首页集中展示当月日历、最近历史与个性词库;听写字数、时间、翻译字数与词库条数四张指标卡片可直接跳到详情
- 语音历史最多保留 300 条,可按天删除;最近确认的「润色前 ASR 转写」与风格元数据会一并留存,方便后续学习
- 设置、个性词库、润色风格、历史与统计可按类型选择经私有 iCloud 同步
- API Key 默认保存在 Keychain;仅在开启 iCloud 设置同步后经 iCloud 钥匙串复制。剪贴板历史、账号令牌与打字学习不会通过 iCloud 设置同步
## 稳定性与可恢复
- 键盘启动时按需加载引擎,键入过程中持续采样内存,并在 40 MiB / 48 MiB 阈值主动释放中文引擎、英文词库与在飞管线任务;正在拼字时会推迟重度释放
- iOS 26 起接入 MetricKit,将崩溃、卡顿、CPU 与磁盘写入诊断(含不会在 App Store Connect 中显示为崩溃的键盘扩展内存回收)记录在本机,可在「设置 ▸ 诊断」中导出
- 测试版(本地 Debug 与 TestFlight)会按设置开关批量上传上述诊断,方便排查 `0xdead10cc` 类回收;App Store 版本仅保留在本机
- CI 静态校验 App Group 标识符与共享 Keychain 访问组顺序,确保 App、键盘扩展、Mac 端与 `project.yml` 配置一致
## 平台能力
| 能力 | iOS / iPadOS 26+ | macOS 15+ |
|---|:---:|:---:|
| 系统键盘 / 全局热键 | 自定义键盘 | 按住 Option |
| 端侧语音识别 | Apple SpeechAnalyzer | Qwen3 MLX(Apple Silicon)+ Apple Speech 回退 |
| 中文全拼 / 双拼 | 支持 | — |
| 英文补全 / 纠错 | 支持 | — |
| 端侧语音识别 | Apple SpeechAnalyzer | Qwen3 MLX(Apple Silicon)+ Apple 语音回退 |
| 中文全拼 / 双拼 / 模糊音 | 支持 | — |
| 英文补全 / 纠错 / 下一词 | 支持 | — |
| AI 润色与翻译 | 支持 | 支持 |
| 统一助手与语音问答 | 支持 | — |
| 剪贴板历史与技能 | 支持 | — |
| 原生待办 / 日程写入 | 支持 | — |
| 可选 OSG 账号与托管积分 | 支持 | — |
| 个性词库、历史与统计 | 支持 | 支持 |
| iCloud 同步 | 设置、词库、历史与统计等可选同步 | 共享兼容数据 |
## 隐私原则
- **端侧优先**:使用本地识别时,原始录音不离开设备
- **端侧优先**:本地识别时原始录音不离开设备
- **主动联网**:只有明确选择云端识别、润色、AI 或技能时,相关数据才会发送
- **路径透明**:自备服务商请求直达所选服务商;托管积分请求经 `account.osglab.com`
- **击键不上传**:中文候选学习与英文建议偏好保存在本机,密码框不学习
@@ -113,20 +127,37 @@ iOS / iPadOS 账号中心支持:
完整数据类型、保留策略、账号删除与第三方服务说明见[隐私政策](https://hkgood.github.io/OSGKeyboard/privacy/)。
## 常见问题
**必须注册 OSG 账号吗?**
不需要。端侧听写或自备服务商都不要求账号;Apple 登录仅用于托管积分、积分购买、邀请奖励与资料管理。
**录音会上传吗?**
默认的端侧识别不会上传录音。只有你明确选择自备云端识别或托管积分的云端识别时,音频才会离开设备,并发送至相应云端服务处理。
**键盘为什么需要「完全访问」?**
开启后键盘才能与主 App 共享设置、读取已保存的服务配置,并在你主动启用后访问剪贴板。此权限不代表 OSGKeyboard 会收集日常键入内容。
**OSGKeyboard 是开源软件吗?**
不是。项目采用源码可见许可,仅允许个人学习与非商用本地使用;再分发、公开衍生版本与商业使用需要获得许可。
**为什么 Mac 下载是 1.1?**
公开下载的 Mac DMG 是历史版本 1.1;仓库内的 Mac 源码已演进到 2.2,如需最新功能请在 macOS 上用 Xcode 26 或更高版本自行构建。
## 快速开始
### iPhone / iPad
1. 从 App Store 安装并打开 OSGKeyboard。
2. 按引导添加键盘、开启“完全访问”,并授予麦克风与语音识别权限。
3. 选择本地识别、自备服务商或可选托管积分。
4. 在任意输入框切换到 OSGKeyboard:轻点听写、长按问 AI,或切换到中文 / English 打字。
1. 从 App Store 安装并打开 OSGKeyboard
2. 按引导添加键盘、开启「完全访问」,并授予麦克风与语音识别权限
3. 选择本地识别、自备服务商或可选托管积分
4. 在任意输入框切换到 OSGKeyboard:轻点听写、长按问 AI,或切换到中文 / English 打字
### Mac
1. 下载历史版 1.1 DMG,或从当前源码构建 `OSGKeyboardMac`。
2. 授予麦克风与辅助功能权限。
3. 在任意 App 按住 Option 说话,松开后插入结果。
1. 下载历史版 1.1 DMG,或从当前源码构建 `OSGKeyboardMac`
2. 授予麦克风与辅助功能权限
3. 在任意 App 按住 Option 说话,松开后插入结果
## 从源码构建
@@ -167,7 +198,7 @@ iOS 的 Flow 会话由主 App 负责采音和识别;键盘扩展通过 App Gro
主要依赖和灵感包括 Apple Speech、librime、librime-xcframework、rime-pinyin-simp、NanoMouse、Hamster、mlx-audio-swift、Peter Norvig 的公有领域 n-gram 统计,以及 Google Material Icons。
准确版本、许可证与 OSG 自有英文词表声明见 [NOTICE-TYPING.md](./NOTICE-TYPING.md),也可在 App 的“设置 → 关于 → 第三方许可”中查看。
准确版本、许可证与 OSG 自有英文词表声明见 [NOTICE-TYPING.md](./NOTICE-TYPING.md),也可在 App 的「设置 → 关于 → 第三方许可」中查看。
## 许可
@@ -179,4 +210,4 @@ iOS 的 Flow 会话由主 App 负责采音和识别;键盘扩展通过 App Gro
<p align="center">
开口即文字 · Speak it. It's typed.
</p>
</p>
Binary file not shown.

After

Width:  |  Height:  |  Size: 421 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 MiB