Release Notes v1.2.5
TL;DR
- 智能文件名识别更准
新增高置信度文本格式识别,Diff/Patch、LilyPond、XML(含 SVG/Plist)会优先命中,减少扩展名误判。
Added high-confidence text format detection, so Diff/Patch, LilyPond, and XML family formats (including SVG/Plist) are recognized first with fewer wrong file extensions. - 存储维护默认更安全
清理任务改为“先创建回滚快照再删记录”;快照创建失败时会跳过破坏性删除,避免误删后无法撤回。
Maintenance now follows a “snapshot first, deletion second” flow; if snapshot creation fails, destructive deletion is skipped to prevent irreversible loss. - 性能与耗电继续优化
轮询、日志写盘、网络接口探测、权限轮询等路径做了减负,长时间运行更稳更省资源。
Polling, log writing, network interface probing, and permission timers were optimized for lower overhead and better long-running stability. - 同步与传输稳定性提升
iCloud 同步状态管理和局域网传输容错加强,异常场景下更不容易中断。
iCloud sync state handling and LAN transfer fault tolerance were improved to reduce interruptions in edge cases. - 剪贴板图片/文件处理更可靠
文件路径解析、缩略图、图片尺寸和 Base64 图像缓存链路更一致,减少错误判定和异常。
File-path parsing plus thumbnail/image-size/Base64 image caching flows are now more consistent, reducing misclassification and runtime issues. - 建议 1.2.4 用户升级
本次 1.2.5 集中包含 4 组补丁(功能识别、性能、稳定性、维护安全),建议尽快升级。
Version 1.2.5 bundles four patch groups (detection, performance, stability, and maintenance safety); upgrading is strongly recommended.
新增 / Added
- Vim 导航方向可按习惯切换
在设置 -> 快捷键 -> VIM 模式中新增j/k 导航方向选项,可切换j→ k←或j← k→。
Added aj/k navigation directionoption inSettings -> Keyboard -> VIM Mode, so you can switch betweenj→ k←andj← k→. - 智能文件名新增高置信度格式识别
文本转文件名时,优先识别 Diff/Patch、LilyPond、XML 家族(含 SVG/Plist),减少被代码语言误判的情况。
Smart filename generation now prioritizes high-confidence formats such as Diff/Patch, LilyPond, and XML family types (including SVG/Plist), reducing language-based misclassification. - 补充智能文件名回归测试集
新增覆盖 Diff、Unified Diff、Hunk 片段、Markdown 分隔线、LilyPond、XML、Swift/JSON/URL/纯文本等场景的回归测试。
Added regression coverage for Diff/Unified Diff/Hunk snippets, Markdown separators, LilyPond, XML, and Swift/JSON/URL/plain text scenarios.
优化 / Improvements
- 剪贴板轮询与预览触发路径减负
轮询边界计算增加短时缓存,链接预取与状态栏提示减少不必要的异步跳转,降低高频路径开销。
Poll-bound calculations now use short-lived caching, and link prefetch/status-bar pulse paths avoid unnecessary async hops to reduce hot-path overhead. - iCloud 同步状态读取更轻量
变更令牌增加锁与缓存,抓取状态队列复用,减少重复解码和临时队列创建。
Cloud change token handling now uses locking plus caching, and fetch-state queue reuse reduces repeated decoding and transient queue creation. - 上下文匹配与数据处理性能提升
应用前缀匹配改为预排序缓存;导出、诊断、反馈邮件、文本转换中的日期/格式处理减少重复创建对象。
App-prefix matching now uses pre-sorted caching, while export/diagnostics/feedback/text-transform date formatting avoids repeated formatter allocation. - 局域网直连网络探测更平稳
物理网卡缓存加入加锁与刷新去重,复用监控队列,避免短时间内重复创建探测任务。
LAN direct-connect interface caching now uses locking and refresh de-duplication with a reused monitor queue to avoid repeated probe tasks. - 日志系统加入节流与缓冲写盘
Debug/Info 级日志按调用点节流,文件写入改为缓冲+批量落盘,降低日志风暴与磁盘 I/O 压力。
Debug/Info logs are now call-site throttled, and file logging uses buffered batch flushes to reduce log storms and disk I/O pressure. - 计时器容差策略优化
局域网确认弹窗和权限轮询计时器增加 tolerance,减少无意义唤醒。
Timer tolerance is now set for LAN confirmation views and permission polling to reduce unnecessary wakeups.
变更 / Changes
- 保留策略改为仅清理未标记内容
按保留天数清理时,仅处理未打标签项(tag_id == -1),用户手动标记内容默认保留。
Retention-based cleanup now applies only to untagged items (tag_id == -1), while user-tagged content is preserved by default. - 维护清理改为“快照成功后再删记录”
无法创建回滚快照时,会跳过记录删除,优先保证可回退与数据安全。
Record deletion now happens only after rollback snapshot creation succeeds; if snapshot creation fails, deletion is skipped for safety. - 快照替换顺序调整
先持久化新快照,再清理旧快照,避免中途失败导致“新旧都不可用”。
Snapshot replacement now persists the new snapshot first and deletes the old one afterward, preventing rollback gaps on mid-process failure. - 全量同步触发行为调整
手动全量同步会先清空同步错误并重置变更令牌,再走统一拉取流程,状态管理更一致。
Force full sync now clears sync errors and resets the change token before entering the standard fetch pipeline for more consistent state handling.
修复 / Fixes
- 修复 IDE 上下文感知崩溃
修复了复制文本时,读取 IDE 光标上下文偶发触发崩溃的问题。
Fixed an intermittent crash when reading IDE caret context during text copy capture. - 修复副屏分类切换误隐藏
修复了 Deck 面板在外接显示器上点击分类标签(如“全部/文本/图片/文件”)后意外隐藏的问题。
Fixed an issue where Deck panel could unexpectedly hide after clicking category tags (such as “All/Text/Image/File”) on external displays. - 修复老系统面板无圆角
修复了在 macOS 26 以下系统中,弹出面板外观为直角的问题。
Fixed an issue where the panel appeared with square corners on macOS versions below 26. - 修复删除后预览不同步
在Command+P面板中使用空格预览时,删除当前条目后,预览会立刻同步到新的当前条目;如果列表为空则自动关闭预览。
Fixed a stale preview issue in theCommand+Ppanel: when preview is open (via Space), deleting the current item now immediately updates preview to the new current item, or closes it when no items remain. - 修复跨应用文本误判无法解析
针对public.html、public.utf16-plain-text、public.utf16-external-plain-text等文本类型增加兜底解析,降低在 Microsoft Edge、Kiro、微信等应用中出现“Deck 无法解析本剪贴板内容”的概率。
Added fallback parsing for text payload types likepublic.html,public.utf16-plain-text, andpublic.utf16-external-plain-text, reducing false “Deck can’t parse this clipboard content” cases in apps such as Microsoft Edge, Kiro, and WeChat. - 修复菜单项初始化可选值风险
暂停菜单项加入前先做可选值判断,避免初始化阶段的强制解包崩溃。
Pause menu item insertion now checks optionals first, avoiding force-unwrapping crashes during initialization. - 修复剪贴板缓存并发读写稳定性
URL、颜色、文件路径、缩略图、Base64 图片、图片尺寸等缓存链路补齐加锁与一致性更新,降低并发下异常概率。
Cache flows for URL/color/file paths/thumbnails/Base64 images/image size now use stronger locking and consistent updates, reducing concurrency-related failures. - 修复文件路径解析兼容性
文件列表同时兼容file://和普通路径字符串,减少路径识别失败。
File list parsing now supports bothfile://URLs and plain path strings, reducing path resolution failures. - 修复筛选表达式构建中的崩溃风险
多处条件拼接去除强制解包,避免过滤规则复杂时的空值崩溃。
Multiple filter-expression builders were changed to avoid force-unwrapping, preventing nil-related crashes in complex rule combinations. - 修复图片预览与预览图空值判断
预览图是否为空的判断改为更安全写法,避免中大图场景下的异常分支。
Preview-thumbnail emptiness checks now use safer logic, preventing failure paths in medium/large image workflows. - 修复全局快捷键注册/卸载异常处理
热键事件处理增加空指针保护与状态检查,安装/移除失败会记录错误并安全回收状态。
Global hotkey handling now validates pointers and status codes; install/remove failures are logged and state is safely recovered. - 修复局域网传输中的边界与空值问题
TOTP 截断加入边界保护;共享密钥缺失时改为安全跳过,避免异常中断。
Added bounds checks in TOTP truncation and safe-guarded missing shared keys in LAN transfer to avoid runtime interruption. - 修复 Orbit 覆盖安装的静默失败
备份已有应用失败时会明确抛错,不再悄悄继续导致状态不一致。
Orbit overwrite-install now surfaces backup failures explicitly instead of silently continuing with inconsistent state. - 修复图标缓存复制失败回退
图标尺寸副本创建失败时会安全回退到基础图标,避免缓存链路崩溃。
Icon cache now safely falls back to base icons when sized-copy creation fails, avoiding cache-path crashes. - 修复维护扫描误判坏文件链接
当记录中的存储路径文件仍存在时,扫描会直接跳过,避免误判为坏链接。
Maintenance scan now skips records whose stored blob path still exists, avoiding false broken-link detection. - 修复 Swift 6 下 DirectConnectService 并发隔离编译报错
调整nonisolated网络接口探测中的队列使用方式,避免主线程隔离引用导致的编译错误。
Updated queue usage innonisolatednetwork-interface probing to avoid main-actor isolation compile errors under Swift 6.
兼容性与行为说明 / Compatibility & Behavior Notes
- 异常上下文会自动降级处理
当编辑器返回异常的行列信息时,Deck 会跳过异常位置信息而继续记录内容。
When an editor returns invalid line/column context, Deck now skips invalid position data and continues capturing content. - 打标签内容不参与保留期自动清理
使用保留天数清理时,已打标签的内容默认保留,不会被自动删除。
Tagged items are excluded from retention-based automatic cleanup and remain preserved by default. - 快照创建失败时不会执行破坏性删除
若维护任务无法创建回滚快照,会跳过记录删除,仅保留非破坏性流程。
If rollback snapshot creation fails during maintenance, destructive record deletion is skipped and only non-destructive flows continue.
升级建议 / Upgrade Notes
-
建议从 1.2.4 升级到 1.2.5
本次版本主要解决稳定性问题,建议所有受影响用户升级。
This release mainly addresses stability, and all affected users are encouraged to upgrade.
作者寄语 / A Note from the Author
写在 2026 农历新春
感谢每一位支持 Deck 的朋友。你们的反馈和耐心,让 Deck 一步步变得更稳、更好用。新的一年,愿你所想皆有回响,所行皆有收获。
To everyone who supports Deck: your feedback and patience have helped shape Deck into a more stable and more useful tool. Wishing you a rewarding and inspired Lunar New Year 2026.
