Skip to content

v1.2.3 | Monumental

Choose a tag to compare

@yuzeguitarist yuzeguitarist released this 27 Jan 07:15
· 277 commits to main since this release

Deck


Release Notes v1.2.3

新增 / Added

  • 搜索规则过滤(/ 规则)
    重磅功能:在搜索框输入 / 即弹出规则面板(固定在搜索框上方)。列表模式显示 6 个规则,↑↓ / j/k / 1–6 切换高亮,回车插入前缀(app/date/type 或 -app/-date/-type),Esc 关闭面板。插入后光标停在前缀后,可直接输入值;空格结束该值并继续输入搜索词,/ 可继续叠加下一条规则;支持 + 多值与引号包裹含空格的应用名。Delete/Backspace 位于前缀或值边界时会整段删除规则(含值与尾随空格),提示模式下 Esc 也会删除当前规则并回到搜索。
    Major feature: type / in the search box to open the rule panel above the field. The list mode shows 6 rules; navigate with ↑↓ / j/k / 1–6, press Enter to insert a prefix (app/date/type or -app/-date/-type), and Esc closes the panel. After insertion, the cursor stays after the prefix for immediate value input; Space ends the value and continues keywords, / chains another rule; supports + multi-values and quoted app names with spaces. Delete/Backspace at the prefix/value boundary removes the whole rule (value + trailing space), and Esc in hint mode deletes the current rule and returns to search.
    SearchRuleFilters.swift, TopBarView.swift, TokenSearchTextView.swift, SearchRulePickerView.swift, SearchRulePickerPanelController.swift, DeckViewModel.swift, Localizable.xcstrings
    搜索规则弹窗(1379×776)
    搜索规则提示(1262×709)

  • 自定义标题(端到端)
    支持为每条记录设置自定义标题,贯通模型、存储、搜索与 UI,并在卡片/预览头部显示。
    Add per-item custom titles across model, storage, search, and UI, shown in card/preview headers.
    DeckSQLManager.swift, ClipboardItem.swift, DeckDataStore.swift, SearchService.swift, ClipItemCardView.swift

  • 自定义标题同步与导出
    自定义标题会随同步、导出与快捷指令流转,保证跨设备一致。
    Custom titles now flow through sync, export, and intents for cross-device consistency.
    CloudSyncService.swift, DataExportService.swift, DeckIntents.swift

  • 智能规则新增“有自定义标题”条件
    Smart Rules 可按“有自定义标题”筛选,并在编辑器中可选。
    Smart Rules now include a “has custom title” condition selectable in the editor.
    SmartRuleService.swift, SmartRulesView.swift, Localizable.xcstrings

  • Figma 剪贴板识别与专用预览
    识别 Figma 剪贴板内容,卡片与预览展示专用图标/信息视图,并仅在预览打开时解析。
    Recognize Figma clipboard payloads with dedicated card/preview UI and parse only when the preview opens.
    ClipboardItem.swift, ClipItemCardView.swift, FigmaClipboardRenderService.swift, FigmaClipboardPreviewView.swift, PreviewWindowController.swift

  • 链接二维码入口
    预览底部信息条新增“显示二维码”按钮(仅链接项显示),行为与右键菜单一致。
    Add a “Show QR Code” button in the preview info bar for links, matching the context menu behavior.
    PreviewWindowController.swift

  • 设置直达“局域网”栏目
    “前往设置添加设备”改为直达“局域网”页,并引入共享的设置导航状态。
    “Go to Settings to add a device” now opens the LAN tab via shared settings navigation state.
    SettingsView.swift, SettingsWindowController.swift, ClipItemCardView.swift

  • 模拟键盘输入粘贴开关 + 自定义快捷键
    新增开关与可配置快捷键(默认 ⌘⌥V),关闭后不再拦截该组合键。
    Add a toggle and configurable hotkey (default ⌘⌥V); when off, the combo is no longer intercepted.
    UserDefaultsManager.swift, HotKeyManager.swift, PasteQueueService.swift, SettingsView.swift, Localizable.xcstrings

  • 文件缺失提示与自动清理
    文件/图片缺失时显示警告提示,并在面板关闭后自动清理缺失记录。
    Show missing-file warnings and auto-purge missing items after the panel closes.
    ClipboardItem.swift, ClipItemCardView.swift, PreviewOverlayView.swift, PreviewWindowController.swift, DeckDataStore.swift, MainWindowController.swift

Deck × Orbit

  • Orbit 摘要携带自定义标题
    Orbit 摘要输出包含 customTitle,保持 CLI/集成一致。
    Orbit summaries now include customTitle for consistent CLI/integration output.
    OrbitCLIBridgeService.swift

优化 / Improvements

  • 搜索框与标签编辑快捷键
    搜索框支持 ⌘A 全选与 ⌘V 粘贴(仅在有搜索内容时全选),标签编辑也支持 ⌘A/⌘V。
    Search supports ⌘A select-all (only with a non-empty query) and ⌘V paste; tag editing also supports ⌘A/⌘V.
    HistoryListView.swift, TopBarView.swift, DeckViewModel.swift

  • 搜索焦点与输入调度优化
    面板打开时抑制自动抢焦点,重命名期间不触发自动搜索;关键 UI 调度提升为 userInteractive。
    Suppress auto-focus on panel open, avoid auto-search during rename, and elevate UI dispatch to userInteractive.
    MainWindowController.swift, HistoryListView.swift, TopBarView.swift, DeckViewModel.swift

  • Figma 预览与图标细节
    Figma 预览改为两列布局、信息更简洁并支持多语言;暗黑模式下图标自动反白。
    Figma preview uses a two-column layout with simplified localized info, and auto-inverts the icon in dark mode.
    FigmaClipboardPreviewView.swift, FigmaClipboardRenderService.swift, ClipItemCardView.swift, Localizable.xcstrings

  • 链接元数据缓存优化
    LinkMetadataService 加入 LRU + 上限(500),并在命中时刷新顺序以降低内存。
    Add an LRU cache with a 500-item cap for link metadata and refresh order on hits to reduce memory.
    LinkPreviewCard.swift

  • 数据库备份一致性
    WAL checkpoint 与文件复制在同一 dbQueue 执行,避免备份期间写入穿插导致不一致。
    Run WAL checkpoint and file copy in the same dbQueue to avoid inconsistent backups during writes.
    DeckSQLManager.swift

变更 / Changes

  • 标题长度上限与显示策略
    自定义标题限制为 12 个字符(保存时截断),标题过长会自动缩放以适配卡片头部。
    Custom titles are capped at 12 characters (trimmed on save) and auto-scale to fit the header.
    ClipItemCardView.swift, Constants.swift

  • 搜索排序与匹配规则
    搜索会同时匹配自定义标题;标题命中项会稳定置顶,但保留原有排序。
    Search now matches custom titles; title hits are stably promoted to the front without reordering within groups.
    DeckDataStore.swift, SearchService.swift

  • 标题重命名触发规则重评估
    保存标题后会重新评估智能规则,但 ignore/transform 仍仅在入库时触发。
    Renaming a title re-evaluates Smart Rules, while ignore/transform actions remain ingestion-only.
    DeckDataStore.swift

  • 规则语法识别范围
    仅 / 插入的规则前缀会被解析,手动输入 app:/date:/type: 会视为普通搜索文本。
    Only rule prefixes inserted via / are parsed; manually typed app:/date:/type: is treated as plain text.
    SearchRuleFilters.swift, TopBarView.swift, TokenSearchTextView.swift

  • 规则语义扩展
    规则支持 -app/-date/-type 排除与 + 多值叠加;type 去掉 email/phone,新增 color;app 多词需引号。
    Rules now support -app/-date/-type exclusion and + multi-values; type drops email/phone and adds color; multi-word app names require quotes.
    SearchRuleFilters.swift, Localizable.xcstrings, DeckViewModel.swift

  • 模拟键盘粘贴换行策略
    模拟键盘输入粘贴遇到换行时改为发送 Shift+Enter,避免直接回车提交。
    Simulated typing paste sends Shift+Enter for newlines instead of a direct Return.
    PasteQueueService.swift

  • Focus 模式内容记录
    专注模式不再仅记录文本,富文本/文件/图片也会被保留。
    Focus mode no longer records only text; rich text, files, and images are retained.
    ClipboardService.swift

  • Figma 记录不进入搜索
    新产生的 Figma 记录不写入搜索文本,避免污染搜索结果。
    New Figma entries no longer write search text to avoid polluting search results.
    ClipboardService.swift

修复 / Fixes

  • SQL LIKE 可选值类型错误
    通过 IFNULL 处理 custom_title,避免 .like 的可选类型导致 Expression 报错。
    Wrap custom_title with IFNULL to keep .like as Expression and avoid optional-type errors.
    DeckDataStore.swift

  • 重命名输入状态与焦点问题
    修复重命名时跳入搜索框、Esc 失效与关闭面板残留输入框;回车保存后 UI 立即刷新标题。
    Fix rename focus jumps, Esc failures, and lingering edit fields on close; Enter now updates the title immediately in UI.
    DeckViewModel.swift, ClipItemCardView.swift, HistoryListView.swift, MainWindowController.swift

  • file:// 解析与安全处理
    统一 file:// 归一化与本地解析逻辑,避免路径含空格解析失败,并移除不安全的 propertyList 回退。
    Normalize and locally resolve file:// paths to handle spaces, and remove the unsafe propertyList fallback.
    Extensions.swift, ClipboardItem.swift, ClipboardService.swift, PreviewWindowController.swift

  • 文件/图片粘贴与缩略图稳定性
    修复 fileURL 大小计算错误、缩略图对不存在文件的生成,以及大图安全读取与去重。
    Fix fileURL size calculation, skip thumbnails for missing files, and harden large-image reads and de-dup.
    ClipboardItem.swift, PreviewOverlayView.swift, ClipItemCardView.swift

  • 搜索规则输入与索引崩溃
    修复规则前缀带空格失效、UTF-16/Emoji 索引崩溃与删除范围不完整的问题。
    Fix rule prefixes with trailing spaces, UTF-16/emoji index crashes, and incomplete delete ranges.
    SearchRuleFilters.swift, TopBarView.swift, TokenSearchTextView.swift

  • 搜索分页与缓存一致性
    修复新搜索未取消旧分页导致结果混入,并在结果不足时自动扩容拉取。
    Fix result mixing from stale pagination and auto-expand fetches when results are insufficient.
    DeckDataStore.swift

  • 并发与主线程隔离编译报错
    修复 Swift 6 并发/隔离相关编译问题,包括主线程调用、非隔离上下文访问与必要 await。
    Resolve Swift 6 concurrency/isolation compile errors, including main-thread access, nonisolated calls, and required awaits.
    PreviewWindowController.swift, SteganographyService.swift, BlobStorage.swift, DataExportService.swift, DeckDataStore.swift, SearchService.swift, DeckSQLManager.swift

  • 安全与稳定性修补
    防止 TOTP 计数下溢、停止在 UserDefaults 存 PSK、补齐 blob 文件回收与目录创建保护。
    Prevent TOTP underflow, stop persisting PSK in UserDefaults, and tighten blob cleanup and directory creation.
    MultipeerService.swift, DirectConnectService.swift, DeckDataStore.swift, BlobStorage.swift, DirectConnectService.swift

  • 搜索缓存失效与内存压力
    标题/OCR 更新仅失效对应缓存,内存压力时正确清空缓存,避免旧结果残留。
    Invalidate cache per updated item (title/OCR) and clear properly on memory pressure to avoid stale results.
    SearchService.swift, DeckDataStore.swift

  • 拖拽临时文件可靠性
    拖拽回退为同步生成临时文件,确保拖拽可用,并引入统一临时目录与自动清理。
    Revert drag export to synchronous temp file creation for reliability, with unified temp storage and auto cleanup.
    TemporaryFileManager.swift, ClipItemCardView.swift

  • Figma 解析鲁棒性
    增强 Figma HTML 容错解码与缓存策略,解析失败不再永久缓存为 false,并记录更清晰日志。
    Improve tolerant HTML decoding and caching for Figma payloads, avoiding permanent false caches and adding clearer logs.
    UnsupportedPasteboardPayload.swift, ClipboardItem.swift

  • 设置与预览细节修补
    补齐 SettingsView.swift 的 Combine 引入与二维码按钮点击区域/间距修正。
    Fix missing Combine import in SettingsView.swift and refine QR button hit area/spacing.
    SettingsView.swift, PreviewWindowController.swift

  • 存储路径初始化退避
    存储路径初始化失败后增加 60 秒退避,避免重复重试风暴。
    Add a 60s backoff after storage path init failures to avoid retry storms.
    DeckSQLManager.swift

说明 / Notes

  • 规则提示已全面本地化
    规则提示/帮助文案覆盖德/英/法/日/韩/繁体/简体,并统一说明“输入值后空格继续搜索词,/ 添加下一规则”。
    Rule hints/help text are localized across DE/EN/FR/JA/KO/zh-Hant/zh-Hans with consistent guidance on spacing and chaining.
    Localizable.xcstrings

兼容性与行为说明 / Compatibility & Behavior Notes

  • 规则使用示例
    示例:app:\"Google Chrome\"+Safari -type:code+text -date:26-01-01+26-01-02(+ 多值,- 排除)。
    Example: app:\"Google Chrome\"+Safari -type:code+text -date:26-01-01+26-01-02 (+ multi-values, - exclusion).
    SearchRuleFilters.swift

  • Figma 预览范围
    当前仅展示基础信息列表,不进行图形/元素渲染。
    The Figma preview currently shows basic info only, without rendering graphics/elements.
    FigmaClipboardPreviewView.swift

升级建议 / Upgrade Notes

  • 数据库迁移与索引重建
    升级后会迁移 SQLite 并重建 FTS,以支持自定义标题搜索;首次启动请等待索引完成。
    Upgrade migrates SQLite and rebuilds FTS for custom-title search; allow time for initial indexing.
    DeckSQLManager.swift