You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Homebrew Cask brew tap yuzeguitarist/deck && brew install --cask deckclip — 两行命令安装,版本随 GitHub Release 自动更新。 brew tap yuzeguitarist/deck && brew install --cask deckclip — two commands to install, versions auto-sync from GitHub Releases.
⌃A / ⌃E
历史列表支持 Emacs 风格快捷键,一键跳到数据库意义上的最新一页或最旧一页。
History supports Emacs-style shortcuts to jump to the true newest or oldest page from the database.
更干净的尾跳
跳到末尾时单次定向拉取,避免在中间逐页加载;超大库下搜索尾跳会收紧候选上限。
Tail jumps use one targeted fetch instead of paging through the middle; search tail jumps cap candidates on very large libraries.
可靠性
修复 ⌃E 连用失效,以及 ⌃E 后 ⌃A 困在尾页、较新记录需重开面板才出现的问题。
Fixes ⌃E stopping on repeat use and ⌃A after ⌃E leaving you stuck on the tail until reopening the panel.
暂停录制
恢复录制后不会再把暂停期间复制的内容自动写进历史。
Paused recording no longer ingests clipboard changes that happened during pause when you resume.
设置内反馈弹窗
从「关于 > 更新与反馈 > 提交反馈」打开的「选择反馈方式」面板中,取消与选项按钮可正常使用(与快捷键入口一致)。
The feedback destination sheet opened from Settings › About works for Cancel and both options, matching the keyboard shortcut entry.
关于页支持作者
「关于」中新增支持区块:官网入口使用 Deck 图标并直达定价页「支持开发」;另提供 GitHub 入口(随应用语言打开中文或英文站点)。
About adds a Support section: the Deck icon opens the pricing page at Support Development, plus GitHub; the website locale follows app language (Chinese vs English site).
数据与安全(数据库 / 模板库 / iCloud / AI)
数据库初始化状态更可靠;模板条目改为落盘存储并支持从旧版 UserDefaults 正确迁移与补救;iCloud 同步在加密、fileURL、元数据与崩溃恢复上更一致;Smart Rule 不再静默授权需网络的脚本插件;AI 认证文件与 Keychain 写入更安全。
Stricter DB init semantics; template items stored on disk with legacy migration/repair; iCloud sync improvements for encryption, file URLs, metadata, and crash recovery; Smart Rule no longer auto-authorizes networked script plugins; tighter permissions and safer Keychain updates for AI auth.
网络工具与局域网直连
网页抓取/搜索在较大响应体下组包更快;移除局域网手动节点时同步清理出站连接调度状态,避免长期增删节点后无用条目占用内存。
Web fetch/search assembles large bodies more efficiently; removing a LAN manual peer clears outbound scheduling state for that IP so stale map entries do not accumulate.
新增 / Added
Homebrew Cask 安装
现在可以通过 Homebrew 安装 Deck:先 brew tap yuzeguitarist/deck,再 brew install --cask deckclip。后续版本随 GitHub Release 自动同步。
Deck is now available via Homebrew: brew tap yuzeguitarist/deck then brew install --cask deckclip. Future releases auto-sync from GitHub Releases.
右键「系统分享」子菜单
卡片右键菜单新增「系统分享」二级子菜单,列出隔空投送、信息、邮件等所有 macOS 系统级分享服务,无需先拖到访达再操作。横版与竖版模式均支持。
Card context menu adds a "System Share" submenu listing AirDrop, Messages, Mail, and all macOS sharing services — no need to drag to Finder first. Supported in both horizontal and vertical layout modes.
历史列表 ⌃A / ⌃E(Emacs)
在面板历史列表聚焦时,⌃A 从数据库重新加载「最新一页」并选中其中时间上最新的一条;⌃E 单次拉取「最旧一页」并选中时间上最旧的一条,与上下文排序下的视觉顺序解耦。
With history focus, ⌃A reloads the newest page from the database and selects the chronologically newest item; ⌃E fetches the oldest page in one query and selects the chronologically oldest item, independent of context-aware visual order.
关于页「支持作者」
设置「关于」新增「支持作者」:一行使用应用图标打开官网定价页并定位到「支持开发」区块;另一行打开 GitHub 仓库页面。应用语言为中文时打开中文站,否则打开英文站。
Settings › About adds Support the Author: one row with the app icon opens the pricing page at the Support Development section; another opens the GitHub repository. Chinese app language uses the Chinese site; otherwise the English site.
优化 / Improvements
尾页跳转更省路径
跳到列表末尾时直接按时间升序取末段,避免为凑齐末尾而一页页从中间往后翻。
Jumping to the list end reads the oldest slice directly by sort order instead of paging forward from the middle.
大库下搜索跳转更克制
在记录量很大时,为搜索结果的尾跳收紧单次候选上限,降低无谓扫描。
When the library is very large, tail jumps in search mode use a tighter one-shot candidate cap to avoid excessive work.
关于页支持入口展示
支持区块内图标尺寸与左侧对齐统一,GitHub 标识更易辨认、边缘更顺滑。
Support-section icons share consistent sizing and alignment, with a clearer, smoother GitHub mark.
模板库持久化
模板条目正文与预览写入 Application Support(UserDefaults 仅存索引);开启安全模式时对模板文件加密;删除/移动库或条目时仅更新索引,避免每次操作全量重写所有 payload。
Template payloads live under Application Support with metadata indices in UserDefaults; security mode encrypts template files; remove/move operations update indices only instead of rewriting every payload.
iCloud 拉取结束时间 lastSyncDate 在每次拉取流程结束时更新(含失败提前返回),与 serverChangeToken 是否前进解耦,便于展示「最近一次拉取结束」。 lastSyncDate updates whenever a fetch attempt finishes (including early error exits), decoupled from whether the server change token advanced.
Web 工具大响应流式读取
对 URLSession 异步字节流采用分块缓冲再合并到 Data,降低多 MB 响应下的 CPU 与分配开销(仍保留 5 MB 上限与超限语义)。
Async response bytes are buffered in chunks before appending to Data, reducing CPU and allocation work for multi-megabyte bodies while keeping the 5 MB cap and overflow behavior.
修复 / Fixes
⌃E 可反复使用
不再与「加载更多」共用的加载标志误挡后续 ⌃E;分页任务只在异步块内标记加载中,避免长时间占住状态。
Subsequent ⌃E presses are no longer blocked by the shared loading flag used for “load more”; pagination marks loading only inside its async work.
⌃E 后再按 ⌃A 回到真实最新
先前仅在当前内存列表中选「第一项」,在尾页场景下并非全局最新,且向左/向新方向看不到更早加载过的记录;现改为与 ⌃E 对称的「真·首屏」重载。
After ⌃E, ⌃A previously selected the first item of the in-memory tail slice, not the global newest, and newer items seemed missing until reopening; it now reloads the true head page symmetrically to ⌃E.
暂停期间复制不再在恢复时被记录
暂停后若在系统里复制过内容,恢复录制时不会再把当时剪贴板里的那一条当作新事件写入历史;只有恢复之后的新复制才会进入记录。
Clipboard captures made while recording is paused are no longer saved the moment you resume; only copies after resuming are recorded.
设置中打开的反馈选择面板
将反馈对话框推迟到下一轮主循环再进入 AppKit 模态会话,避免从设置页 SwiftUI 按钮同步弹出时内容区无法点击(仅标题栏关闭可用)的问题。
Feedback destination dialog is presented on the next main-loop turn so AppKit modal sessions started from Settings SwiftUI actions receive clicks in the content area, not only the title-bar close control.
数据库初始化
仅在完整性检查通过且自定义函数、建表、迁移均就绪后置 isInitialized;完整性无法恢复时不再误标为已初始化,避免半初始化卡死。 isInitialized flips true only after integrity, custom SQL functions, table creation, and migrations succeed; failed integrity recovery no longer leaves a false “ready” flag.
模板库迁移
仅在实际解码成功并落盘后才升级存储版本;解码失败会保留旧数据并重试。若曾错误升级版本导致「只剩库壳」,启动时会尝试从遗留的 templateItems JSON 自动补救。
Storage version advances only after a successful legacy decode and payload write; decode failures keep legacy data for retry. Orphan legacy blobs are repaired when indices are empty but old JSON remains.
模板 fileURL 图片
保存到模板库时,若已从文件物化为图片字节,剪贴板类型会改为具体图片类型,与 payload 一致。
When a file-URL image is materialized to bytes for the template library, the stored pasteboard type matches the image payload.
iCloud:fileURL 同步
仅当本地能解析出与路径字符串不同的实际内容时才上传;图片类会以具体图片类型写入记录;无法物化时跳过上传并记日志,避免跨设备只剩路径串。
fileURL items upload only when local resolution yields real content (not just the path string); images use concrete image types; unresolvable items are skipped with logging.
iCloud:加密元数据
开启端侧加密时,appPath / appName 与预览、搜索文案等一致:加密失败则置空并记录警告,不再静默明文上云;encryptAppMeta 语义与接收端解密对齐。
With iCloud encryption, app path/name follow the same rules as other fields: encrypt-or-omit with warnings, no silent plaintext; encryptAppMeta matches receiver decryption.
iCloud:上传崩溃恢复
批量上传完成后,仅从持久化「进行中」列表里移除已成功或已取消的条目;失败并重入队的记录名保留,避免在下次 flush 前崩溃后无法被启动恢复逻辑发现。
Persisted in-flight upload names are cleared only for succeeded or cancelled records; failed records pending re-queue stay listed until the next successful completion path.
iCloud:Server change token
解码失败时清除损坏的 UserDefaults 数据,避免长期反复失败。
Corrupt server change token data in UserDefaults is removed after a decode failure.
Smart Rule 与网络脚本插件
Smart Rule 下需要网络且未授权的脚本插件不再自动授权,需用户在插件设置中手动授权。
Smart Rule no longer auto-authorizes script plugins that require network access; users must approve in plugin settings.
ChatGPT / AI 认证文件与 Keychain auth.json 目录与文件权限收紧(700 / 600);API Key 优先 SecItemUpdate,避免先删后加导致更新失败时旧密钥丢失。
Tighter POSIX permissions on auth.json (700/600); API keys prefer SecItemUpdate over delete-then-add to avoid losing the previous secret on add failure.
直连:移除手动节点后的出站状态
删除节点时从出站连接世代映射中移除对应 IP(不再仅自增计数保留键),在反复添加/删除不同设备时减少无用字典条目。
Removing a manual peer drops the outbound-connect epoch entry for that IP instead of retaining the key with an incremented counter, trimming stale entries when peers are added and removed over time.
兼容性与行为说明 / Compatibility & Behavior Notes
快捷键环境
需在 macOS 上使用 Control 组合键;历史区域需处于列表焦点(非搜索框内编辑等)。
Shortcuts use the Control modifier on macOS; the history list must have focus (not while typing in search, etc.).
尾跳后的列表范围
执行 ⌃E 后,当前可见列表仅为该次拉取的末尾一页,直到 ⌃A 拉回最新一页或关闭再开面板等重新加载首屏的操作。
After ⌃E, the visible list is that tail page until ⌃A reloads the newest page or another action reloads the head (e.g. reopening the panel).
模板库数据位置
首次从旧版本升级时,模板条目会从 UserDefaults 大包迁移至 ~/Library/Application Support/Deck/TemplateItems/;若曾遇迁移异常,新版会尽量从遗留 JSON 自动修复。
On first launch after upgrade, template items migrate from the legacy UserDefaults blob to ~/Library/Application Support/Deck/TemplateItems/; a repair pass may recover from a partially migrated state.