v1.2.7 | Honed
Release Notes v1.2.7
TL;DR
-
连接拒绝与重试:拒绝/超时后立即显示"已拒绝",冷却倒计时"X后重试",冷却结束后需手动点击"重试"才再次连接。
Connection: immediate "Rejected" on decline/timeout; cooldown countdown; manual retry only after cooldown. -
安装体验:DMG 提供
Deck Installer Tools文件夹,install.command一键安装并清理隔离属性,help.txt多语言说明,图标随系统明暗切换。
Install: single tools folder, one-click install with quarantine cleanup, multi-language help, auto dark/light icon. -
Orbit 精简:聚焦环形应用切换演示,移除黑洞/拖拽/Caps Lock 等路径,代码瘦身,交互更稳定。
Orbit: radial app-switching only; removed drag/black-hole paths; code cleanup; more stable. -
传输与连接:大内容改走资源/流式传输;直连支持多端口回退;单条共享同步标签;资源与清单乱序到达可正确处理;直连标签改用真实 ID。
Transfer: resource/stream for large payloads; multi-port fallback; tag sync on share; out-of-order resource/manifest handled; real tag IDs for direct connect. -
关键修复:标签接收后即时刷新;TOTP 验证码实时轮换,减少校验失败。
Fixes: tag list refreshes on receive; TOTP live-rotating to reduce verification failures. -
Welcome 体验优化:欢迎页圆角和按钮配色已优化,左侧文案切页更稳定;无可迁移内容时自动跳过第 7 页(6 直接到 8)。
Welcome onboarding polish: corner/button colors are refined with steadier text transitions, and page 7 is auto-skipped when no importable data is found (6 goes directly to 8).
新增 / Added
-
新增标签拖拽排序功能
在弹出面板(⌘P)中,按住 Command 键后拖动标签即可自定义排列顺序。所有标签(系统标签与用户自定义标签)均支持拖拽排序,顺序会自动保存。
In the popup panel (⌘P), hold Command and drag any tag to reorder. All tags (system and user-defined) support drag reordering, and the order is persisted automatically.- 拖拽时标签仅在水平轴移动,纵向位置锁定
Tags move only horizontally during drag; vertical position is locked. - 标签完全跟随鼠标位置,无加速度或惯性
Tags follow the cursor exactly with no acceleration or inertia. - 左右边界严格限制,标签不会超出显示区域
Left/right boundaries are strictly enforced; tags cannot exceed the visible area. - 拖拽中释放 Command 键会取消操作并恢复原始顺序
Releasing Command during drag cancels the operation and restores the original order. - 被拖拽标签有轻微放大和阴影效果,便于区分当前操作目标
The dragged tag shows a subtle scale-up and shadow effect for visual distinction. - 拖拽标签与其他标签重叠时,被覆盖的标签会自动虚化(降低透明度),视觉层级更清晰
When the dragged tag overlaps another tag, the overlapped tag fades out (reduced opacity) for clearer visual hierarchy.
- 拖拽时标签仅在水平轴移动,纵向位置锁定
-
新增安装工具文件夹结构
原先分散的脚本改为统一收纳到Deck Installer Tools,默认包含install.command与fix.command。
Standalone scripts are now grouped intoDeck Installer Tools, includinginstall.commandandfix.command. -
粘贴队列 HUD 胶囊支持拖拽并自动记忆位置
右下角的粘贴队列 HUD 胶囊现在可以用鼠标拖拽到屏幕任意位置,位置会自动保存。鼠标悬停时显示小手光标提示可拖动,即使 App 不在前台也能正常显示。
The paste queue HUD capsule at the bottom-right can now be dragged to any position on screen. The position is automatically saved and restored. An open-hand cursor appears on hover to indicate draggability, even when the app is in the background. -
新增多语言帮助文档
help.txt
帮助文档覆盖当前 App 支持语言,并明确“脚本用途 + 双击运行步骤”。
The newhelp.txtcovers all currently supported app languages and explains script purpose plus double-click run steps. -
新增 LAN 文件归档工具
LANFileArchiver
新增统一打包、解包、临时文件认领和清理能力,专门用于局域网资源传输路径。
AddedLANFileArchiverfor archiving, extraction, temp-resource claiming, and cleanup in LAN transfer flows. -
新增直连流式传输链路(大内容)
直连模式新增stream_start / chunk / stream_end传输链路,用于大内容和文件归档发送。
Added a direct-connect streaming path (stream_start / chunk / stream_end) for large payload and archived file transfer. -
新增资源清单机制(Multipeer)
新增resource_manifest元信息通道,在资源到达后可准确还原内容类型、时间、应用名和标签信息。
Added aresource_manifestmetadata channel in Multipeer so type, timestamp, app name, and tag metadata are restored correctly after resource transfer.
优化 / Improvements
-
Welcome 引导页细节优化
圆角调整为 30pt,浅色模式下右侧按钮图标/文字改为黑色,切页观感更稳定。
Welcome refinements: 30pt corner radius, black right-side button text/icons in light mode, and steadier page transitions. -
首次启动引导页全面重设计
引导页改为左右分栏沉浸式布局,左侧文字右侧配图。图片贴合右下角裁切露出局部。窗口改为无边框无红绿灯按钮,极简黑白风格,适配 Light/Dark Mode。导航按钮叠加在图片区底部,所有按钮统一使用毛玻璃材质。每页图片中央叠加对应 SF Symbol 动画图标(macOS 15+)。
Welcome view redesigned with a left-right split layout. Images are anchored bottom-right with overflow clipping. Borderless window with no traffic lights, minimalist black-and-white scheme, Light/Dark adaptive. Navigation buttons overlaid on the image panel with frosted glass material. Each page displays an animated SF Symbol overlay on the image (macOS 15+). -
菜单栏图标重绘
图标改为document.on.clipboard,默认单色渲染,暂停时使用分层渲染以区分状态。复制内容入库时触发.symbolEffect(.bounce.up.byLayer)动画,反馈更直观。
Menu bar icon now usesdocument.on.clipboard, with monochrome by default and hierarchical rendering when paused. Copy events trigger a bounce-up symbol effect for clearer feedback. -
菜单栏右键菜单增强
顶部图标右键菜单新增“反馈意见”入口(与面板“告诉我们您的想法”一致,打开邮件并使用反馈 HTML 模板);在“偏好设置...”与“退出 Deck”之间新增版本与更新分组,显示“版本 X.X.X”并提供“检查更新”,点击后复用“关于”页手动检查更新流程,检测到新版本会弹出更新窗口。
The status-bar icon context menu now includes a Feedback entry (same behavior as “Tell us your thoughts”, opening email with the HTML feedback template). A version/update section was also added between Preferences and Quit, showing “Version X.X.X” and a “Check for Updates” action that reuses the About page’s manual update-check flow and presents the update prompt window when a newer version is found. -
TagChips 顶栏布局与按钮状态优化
标签栏改为更符合直觉的分布:添加标签按钮(+)和新建标签编辑器紧贴标签区内最后一个标签右侧;设置、暂停/恢复、退出和反馈按钮保留在右侧。相关按钮默认无背景,鼠标悬停时才显示高亮效果(与搜索按钮风格一致)。
Tag bar layout is now more intuitive: the Add Tag (+) button and new-tag inline editor sit inside the tag area directly after the last tag, while settings, pause/resume, quit, and feedback stay on the right. These controls are now transparent by default and show highlight only on hover, matching the search-button behavior. -
设置窗口侧边栏右侧圆角优化
设置窗口左侧导航栏的右上角和右下角添加了圆角效果,侧边栏与右侧内容区之间的过渡更柔和,同时移除了原先的 1px 直线分隔线,改为右侧方向的柔和阴影分层。内容区域向左延伸填充圆角间隙,确保白色背景页面(如 Orbit)不会在圆角处露出灰色底色。
The right-top and right-bottom corners of the settings sidebar now have rounded corners for a softer transition between the sidebar and content area. The previous 1px straight divider line has been replaced with a subtle rightward shadow for depth. The content area extends slightly behind the sidebar to fill rounded-corner gaps, ensuring pages with white backgrounds (e.g. Orbit) don't expose gray corners. -
统计页面 UI 全面重设计
统计页面采用极简风格重新设计:概览数据合并为单一卡片并加入千分位格式化;数据安全提示精简为标题旁的小胶囊标记;内容类型分布新增右侧图例列表显示百分比;常用应用每行加入水平进度条与百分比显示;7 天活动柱状图细化为窄柱大圆角渐变填充;存储信息融入概览卡片底部。
The statistics page has been redesigned with a minimalist style: overview stats merged into a single card with number formatting; the data security notice is now a compact capsule badge; type distribution chart now has a side legend with percentages; top apps rows feature inline progress bars with percentage display; the 7-day activity chart uses narrower bars with gradient fills; storage info is integrated into the overview card footer. -
模版库使用提示和描述优化
模版库页面标题旁增加了"光标助手"胶囊标记,明确表示模版库是配合光标助手使用的功能。副标题和使用提示卡片重新编写,采用分步骤引导的形式清晰说明创建模版、设置触发词和快速调用的完整流程。
A "Cursor Assistant" capsule badge is now shown next to the Template Library title, clarifying its purpose. The subtitle and usage tips card have been rewritten with a step-by-step guide format explaining the full workflow of creating templates, setting trigger words, and quick invocation. -
触发词添加弹窗 UI 优化
触发词添加 Sheet 重新设计:顶部增加图标和说明文字;输入框改为自定义样式;匹配类型选择器从系统分段控件替换为自定义按钮组;类型选择网格改为水平布局,选中态更简洁;底部按钮区域点击范围扩大至整个区域。
The Add Trigger Word sheet has been redesigned: header now includes an icon and description; text field uses a custom style; match type selector replaced with custom tab buttons; type selection grid uses a horizontal layout with cleaner selection states; bottom button hit area now covers the full region. -
智能规则编辑页面 UI 优化
编辑规则页面中"全部满足/任一满足"的匹配模式选择器从系统分段控件替换为自定义胶囊按钮组;条件和动作项改为带图标的卡片式行布局,视觉层级更清晰;添加条件/动作页面移除冗余空白,Sheet 高度改为自适应内容。
The Smart Rules editor UI has been refined: the "All/Any" match mode selector is replaced with custom capsule-style buttons; condition and action items now use card-like rows with icons for better visual hierarchy; the Add Condition/Action sheets remove excess whitespace with content-adaptive height. -
存储整理与自检 UI 优化
"会做的事情"说明从纯文本换成带彩色图标的分行展示,每项操作一目了然;整理完成报告弹窗的标题居中并使用圆形图标背景,卡片标题改为小号大写字母,数值使用等宽圆角字体,关闭按钮改为自定义样式。
The maintenance description now uses icon-labeled rows instead of plain text; the report sheet header is centered with a circular icon background, card titles use small-caps style, metric values use rounded monospace font, and the close button has a custom style. -
安全设置页面 UI 优化
隐写密钥口令输入框添加前置图标(锁/钥匙),密码文本改为等宽字体;保存和清除按钮改为带填充背景的胶囊样式;安全模式说明从 bullet list 改为带彩色图标的分行展示;OCR 识别语言列表的图标按语言差异化显示;存储信息末行移除多余的分隔线。
Steganography passphrase field now has a leading icon (lock/key) with monospaced font; save and clear buttons use capsule-style with fill backgrounds; security mode info uses icon-labeled rows instead of bullet list; OCR language icons are now differentiated per language; storage info section removes the trailing divider. -
代码示例增加语法高亮(脚本插件 / CLI Bridge)
设置页中的脚本插件创建示例(manifest.json、index.js)和 CLI Bridge 命令示例已增加颜色渲染,便于快速区分关键字、字符串、数字、注释与变量。
Added syntax highlighting to settings code samples (Script Plugins and CLI Bridge), improving readability for keywords, strings, numbers, comments, and variables. -
连接状态反馈更清晰
右侧状态提示补齐颜色和文案语义:冷却中为红色拒绝提示,冷却结束后显示蓝色可重试动作。
The right-side status feedback is clearer: red reject/cooldown messaging while waiting, then a blue retry action when ready. -
关于页面 UI 优化
版本号改为胶囊标签样式;"核心功能"和"智能功能"合并为单一"功能概览"卡片;快捷键标签改为仿键盘键帽样式(圆角 + 微阴影 + 描边);"更新"和"反馈"合并为一个卡片。
Version number now uses a capsule badge style; "Core Features" and "Smart Features" are merged into a single "Features Overview" card; shortcut badges now mimic keyboard keycaps (rounded corners + subtle shadow + border); "Updates" and "Feedback" are merged into one card. -
搜索栏重构为收起/展开模式
默认状态仅显示放大镜图标(扁平设计、无投影、悬停圆形高光),点击或键盘输入后平滑展开为胶囊搜索栏(宽度 300pt),失焦且无查询内容时自动收起。保留全局键盘捕获、中文输入法兼容和/斜杠命令功能。标签栏紧邻搜索图标排列;点击搜索栏以外的内容区域可自动退出搜索状态(点击标签栏和规则选择器弹窗时不影响搜索)。
Search bar refactored to a collapse/expand pattern: shows only a magnifying glass icon by default (flat, no shadow, circular hover highlight); smoothly expands into a capsule search bar (300pt) on click or keyboard input; auto-collapses when blurred with empty query. Global keyboard capture, Chinese IME compatibility, and/slash command all preserved. Tag chips now sit directly next to the search icon; clicking the content area outside the top bar exits search mode (clicking tags or the rule picker popup does not). -
空状态图标更新
弹出面板的三种空状态(标签无记录、剪贴板为空、未找到结果)图标从clipboard替换为doc.on.clipboard,使用分层渲染模式(.hierarchical),深色/浅色模式自动适配。
The three empty-state icons in the popup panel (tag has no records, clipboard is empty, no results found) now usedoc.on.clipboardwith hierarchical symbol rendering, automatically adapting to light and dark mode. -
多语言文案同步更新
新状态文案已补齐多语言翻译,连接提示在不同语言下保持一致表达。
The new status copy is fully localized, keeping connection feedback consistent across supported languages. -
系统提示与更新流程文案多语言补齐
已将导入导出弹窗(成功/失败/数量提示)、生物识别验证默认文案与取消按钮、更新通知标题与正文、更新流程状态文案、辅助功能权限弹窗、iCloud 同步错误提示、Orbit 安装错误提示统一接入多语言。
Localized system-facing copy across export/import dialogs (success/failure/count), biometric auth defaults and cancel label, update notification title/body, updater status texts, accessibility permission dialogs, iCloud sync error messages, and Orbit installer error prompts. -
首次安装路径更顺滑
新增安装脚本会在执行安装时自动处理隔离属性,尽量减少用户进入系统“隐私与安全性”手动放行的频率。
The new installer script now clears quarantine during installation to reduce manual Security & Privacy unblock steps. -
DMG 布局进一步整理
Deck.app与Applications保持主区域展示,安装工具文件夹固定放在其下方,首次安装路径更直观。
Deck.appandApplicationsremain in the main area, with the tools folder placed below for a clearer first-install flow. -
安装器视觉一致性增强
安装器图标默认使用 1024 Logo,并支持明暗外观自动匹配。
The installer icon now uses the 1024 logo by default and adapts automatically to dark/light appearance. -
Orbit 演示界面视觉层级简化
Orbit 环形演示移除了黑洞/AirDrop 指示层与拖拽消散链路,保留点击、悬停、键盘切换等核心交互。
Orbit demo visuals were simplified by removing black-hole/AirDrop overlays and drag-dissolve chains, while keeping click/hover/keyboard core interactions. -
接收缓冲与帧解析容错优化
接收链路加入更清晰的单条消息上限与总缓冲上限,异常包会更早拦截,减少卡死和误解析。
Receive flow now enforces clearer per-message and total-buffer limits, rejecting bad payloads earlier to reduce stalls and misparsing. -
面板弹出/收起动画优化
缩短动画时长(show 0.16s、hide 0.18s),展示时改用 easeOut 曲线,收起更干脆、展开收尾更柔和。
Panel show/hide animation shortened (0.16s / 0.18s) with easeOut on show for snappier close and gentler expand stop. -
快捷键连发与动画期间防抖
对 ⌘P 等全局快捷键增加节流与按键释放检测,避免长按或快速连按导致面板闪烁、卡顿;动画进行中不再响应新的 toggle 请求。
Hotkey throttling and key-release detection added to prevent panel flash and jank from key-repeat or rapid presses; toggle requests are ignored during active animation. -
面板关闭后延迟清理
面板关闭时不再立即执行 purgeMissingFileItems 和 clearExpiredData,改为延迟约 0.6 秒后执行,避免快速开关面板时主线程被重任务抢占导致掉帧。
Panel close no longer runs purgeMissingFileItems and clearExpiredData immediately; cleanup is deferred ~0.6s to avoid main-thread stalls during rapid toggles. -
面板获得焦点时机优化
调整 activateApp 与 makeKeyAndOrderFront 的调用顺序,面板展示前先激活应用,动画完成后仅在需要时再次激活,减少“面板已显示但未获得焦点”的停顿感。
Activation and makeKeyAndOrderFront order adjusted: app activates before panel animates; post-animation re-activation only when needed, reducing “panel visible but not focused” stalls. -
剪贴板 Copy/Cut 监听能耗优化
全局按键监听仅在命中 ⌘C / ⌘X 时触发检测,其他按键在回调内直接过滤,避免每次按键都创建 Task 或切换主线程,降低后台能耗。
Copy/Cut monitor now filters key events in-place; only ⌘C and ⌘X trigger detection, avoiding Task creation and main-thread switches on every keystroke to reduce background energy use. -
粘贴队列快捷键监听能耗优化
快捷键配置改为缓存读取,配合 UserDefaults 变更通知同步;按键回调增加 fast path,仅处理 V 键与 Typing Paste 自定义快捷键,无关按键直接返回,减少 JSON 解码与主线程切换开销。
Hotkey settings are now cached and synced via UserDefaults notifications; keyDown callbacks use a fast path to process only V key and Typing Paste shortcut, avoiding JSON decode and main-thread hops on unrelated keys. -
暂停倒计时 UI 能耗优化
暂停指示器与标签栏倒计时由 Timer.publish 改为 .task + Task.sleep,仅在限时暂停时每秒刷新;无限期暂停不再持续唤醒,减少 CPU 唤醒。
Pause countdown UI now uses .task + Task.sleep instead of Timer.publish; tick only when paused with an end time; indefinite pause no longer triggers periodic wakeups, reducing CPU activity. -
搜索栏展开/收起动画与样式
搜索栏展开/收起使用自定义 timingCurve 动画,背景从 Capsule/Circle 切换改为单一 RoundedRectangle 条件填充,图标用 scaleEffect 替代字体切换,过渡更顺滑。
Search bar expand/collapse now uses a custom timingCurve; background unified to RoundedRectangle with conditional fill; icon uses scaleEffect instead of font switching for smoother transitions. -
分组分享自动选择更稳路径
当分组内包含文件 URL 或大内容时,会自动退化为逐条资源发送,避免分组大包失败。
Group sharing now automatically falls back to per-item resource transfer when file URLs or large payloads are included, avoiding oversized group-send failures. -
资源接收生命周期更稳
资源文件到达后会先迁移到应用临时目录再处理,避免系统回收临时文件导致读取失败。
Received resource files are now moved into app-controlled temp storage before processing, preventing read failures from OS temp cleanup.
变更 / Changes
-
Welcome 迁移页自动跳过
欢迎窗口打开后会后台预扫描;无可迁移内容时自动隐藏第 7 页(6 直接到 8)。
Welcome now pre-scans in background and auto-hides page 7 when no importable content is found (6 goes directly to 8). -
移除光标助手和局域网共享的 Beta 标记
光标助手与局域网共享设置页面标题旁的 Beta 标签已移除,这两项功能现已正式发布。
The Beta badge next to Cursor Assistant and LAN Sharing settings headers has been removed; both features are now considered stable. -
连接重试策略调整
“X后重试”现在是操作提示而非自动行为,系统不会在倒计时结束后自动重连。
“Retry in X” is now an action hint rather than an automatic action; the app will not auto-reconnect after countdown. -
安装辅助入口改为文件夹形态
DMG 中安装辅助内容从“直接展示两个脚本”调整为“展示一个工具文件夹”,减少界面噪音。
Installer helpers in the DMG are changed from two standalone scripts to a single tools folder to reduce visual clutter. -
Orbit 演示行为范围调整
Orbit 现在默认走“单模式应用切换”路径,不再进入剪贴板环切换流程,也不再启用跳转预测排序。
Orbit now follows a single-mode app-switching flow by default, without clipboard-ring switching or jump-model prediction ordering. -
空状态图标更新
弹出面板的三种空状态(标签无记录、剪贴板为空、未找到结果)图标从clipboard替换为doc.on.clipboard,使用分层渲染模式(.hierarchical),深色/浅色模式自动适配。
The three empty-state icons in the popup panel (tag has no records, clipboard is empty, no results found) now usedoc.on.clipboardwith hierarchical symbol rendering, automatically adapting to light and dark mode. -
面板顶部间距优化
顶部导航栏(搜索、标签、控制按钮)距面板上边缘间距从 14pt 减至 10pt,面板视觉更紧凑。
Top bar padding reduced from 14pt to 10pt for a more compact panel appearance. -
文件 URL 传输策略调整
文件 URL 不再按普通内联数据发送,改为统一归档后传输并在接收端还原。
File URLs are no longer sent as inline blobs; they are archived for transfer and restored on the receiver. -
单条共享 payload 扩展元信息字段
共享 payload 新增contentLength、timestamp、appName、tagName、tagColor,用于更准确还原来源上下文。
Single-item payloads now includecontentLength,timestamp,appName,tagName, andtagColorfor better context restoration. -
大内容发送阈值行为调整
超过阈值的内容会自动切到资源传输(Multipeer)或流式传输(直连),小内容仍走内联。
Payloads above threshold now auto-switch to resource transfer (Multipeer) or streaming (Direct), while small items stay inline.
修复 / Fixes
-
修复 Welcome 切页时左侧文案漂移
左侧文案不再因布局偏移出现明显横向移动。
Fixed visible horizontal drift of left text during onboarding page transitions. -
修复 Welcome 引导页索引越界崩溃
处理了WelcomeView在页面切换时偶发的数组越界访问(pages[currentPage])问题,避免出现Swift/ContiguousArrayBuffer.swift:691: Fatal error: Index out of range崩溃。
Fixed an occasional index-out-of-range crash inWelcomeViewpage switching (pages[currentPage]), preventingSwift/ContiguousArrayBuffer.swift:691: Fatal error: Index out of range. -
修复拒绝后仍显示连接中
处理了对方拒绝或超时后发起端状态未及时更新的问题,避免界面误导。
Fixed the issue where sender-side status could remain “Connecting” after a decline or timeout. -
修复重复触发连接弹窗的问题
通过冷却与手动重试流程,减少短时间内重复请求导致的连续弹窗。
Reduced repeated invitation popups by enforcing cooldown and manual retry flow. -
修复重复内容导致的列表 ID 冲突警告
当智能识别结果里出现重复文本(如多个127.0.0.1)时,不再触发 SwiftUIForEach的重复 ID 警告,列表渲染更稳定。
Fixed a SwiftUIForEachduplicate-ID warning when detected content contains repeated values (such as multiple127.0.0.1), improving list rendering stability. -
修复打包脚本变量解析异常
处理了release.sh在部分环境下可能触发的变量解析报错,提升打包稳定性。
Fixed a variable parsing issue inrelease.shthat could trigger an unbound-variable error in some environments. -
修复 Orbit 精简后窗口控制器的上下文进程获取编译问题
调整了 Orbit 窗口控制器中的上下文进程获取实现,避免精简后出现返回类型不匹配导致的编译错误。
Fixed a compile issue in Orbit window controller context-process resolution after simplification by correcting the return-type implementation. -
修复关闭面板时的线程优先级反转告警
优化了面板关闭时的焦点收尾流程,减少主线程等待低优先级任务导致的性能告警。
Reduced priority-inversion performance warnings when closing the panel by streamlining focus teardown and avoiding main-thread waits. -
修复极速按 ESC 时焦点未归还
现在在弹出面板刚出现的极短时间内立刻按 ESC,焦点也会稳定返回到原来的应用,不再出现“面板已关闭但焦点仍停在 Deck”的情况。
Fixed a focus-return race when pressing ESC immediately after opening the panel; focus now reliably returns to the previous app instead of staying on Deck. -
修复自动更新后残留
.Deck.app.old.*备份文件
更新完成后新 App 启动时会自动删除/Applications下的旧版备份,不再累积残留。
Old app backups (.Deck.app.old.*) in/Applicationsare now automatically removed on startup after an update, preventing accumulation. -
修复单条资源接收时标签未即时显示
接收端创建新标签后会立即刷新标签栏,内容和标签可同步可见。
Fixed delayed tag visibility for single-item resource receive by refreshing the tag list immediately after tag creation. -
修复大内容在局域网下偶发传输失败
通过资源/流式链路替代单次大包发送,降低大图、安装包、文件夹分享失败概率。
Fixed intermittent LAN failures for heavy payloads by replacing one-shot large sends with resource/stream transfer. -
修复资源接收临时文件偶发丢失
处理回调里先迁移临时文件再解码,避免文件在回调结束后被系统回收。
Fixed occasional temp-file loss on receive by moving resources before decode, avoiding cleanup after callback return. -
修复默认端口占用导致直连失败
新增端口回退后,默认端口被占用时仍可自动连上。
Fixed direct-connect failures when the default port is occupied by adding automatic port fallback. -
修复 TOTP 弹窗验证码显示与验证窗口不同步
验证码现在按当前时间窗口实时计算,避免倒计时变化但验证码不变化导致的偶发失败。
TOTP is now computed live against the current time window, preventing failures caused by countdown changes while code stayed static. -
修复验证请求早期失败时的 continuation 残留风险
发送验证请求编码失败、会话不可用或发送异常时,会及时清理等待态,避免后续二次回调风险。
Continuation state is now cleared on early verify-request failures (encode/session/send), preventing later double-callback risks. -
修复资源先到但清单未到时被忽略的问题
接收端新增“先收资源后补清单”的配对处理,不再因为到达顺序差异直接丢弃资源。
Fixed resource drops caused by arrival-order mismatch by adding resource-first then manifest matching on receiver side. -
修复资源接收失败场景的临时文件残留
对接收失败、会话停止和过期缓存等路径补齐清理,减少临时目录堆积。
Added cleanup on receive-failure, service stop, and stale-cache paths to reduce temp-file buildup. -
修复未验证设备资源被缓存的安全边界问题
在安全模式下,未完成验证的资源会被立即拒绝并清理,不再进入等待队列。
In security mode, unverified resources are now rejected and cleaned immediately instead of being queued. -
修复直连共享标签 ID 映射错误
直连共享标签改为按真实标签 ID 读写,并同步维护标签显示顺序,避免标签错位。
Fixed direct-connect tag ID mapping by using real IDs and maintaining tag display order consistency. -
修复接收方验证码弹窗“取消后不关闭”
接收方点击取消后会立即关闭弹窗,交互反馈更明确。
Receiver-side TOTP dialog now closes immediately when cancel is tapped. -
修复直连发送路径中的未使用变量编译告警
清理了sendItem里无实际用途的弱引用绑定,消除无效警告。
Removed an unused weak-capture binding in direct-sendsendItem, eliminating the compiler warning. -
修复 HotKeyManager 全局快捷键事件处理的类型不匹配编译错误
统一InstallEventHandler参数类型:将paramErr显式转为OSStatus,并把事件数量参数改为Int,避免因类型不一致导致构建失败。
Fixed type-mismatch compile errors in HotKeyManager global hotkey event handling by aligningInstallEventHandlerargument types: castingparamErrtoOSStatusand passing event count asInt. -
修复“模拟键盘输入粘贴”快捷键取消按钮无反馈
当快捷键已是默认值⌘⌥V时,取消按钮现在会显示为灰色不可点;只有在用户自定义过快捷键后才可点击并恢复默认,避免“点了没反应”的误解。
Fixed no-feedback behavior of the Typing Paste shortcut cancel button. When the shortcut is already the default⌘⌥V, the cancel button is now dimmed/disabled; it becomes clickable only after customization to reset back to default. -
修复规则选择面板布局递归告警
调整规则选择面板的刷新时机,避免在布局过程中触发递归布局告警,弹层显示更稳定。
Adjusted rule-picker panel refresh timing to avoid layout-recursion warnings during active layout, improving popup stability. -
优化敏感窗口标题检测的系统日志噪声
对不适合查询的系统进程做了过滤,减少task name port相关报错刷屏,同时保持常用场景检测能力。
Added filtering for system processes that are unsuitable for title queries, reducingtask name portlog noise while preserving normal detection behavior. -
归档解压路径越界防护(Zip Slip)
解压前会先检查压缩包条目路径,解压后再校验输出路径与符号链接目标,避免越界落盘。
Added archive extraction boundary protection by validating zip entries before extraction and verifying output/symlink paths after extraction to prevent path escape. -
资源清单发送失败时的临时文件残留
当resource_manifest发送失败时,会立即清理对应临时文件,避免积累。
Temp artifacts are now cleaned immediately whenresource_manifestsending fails, preventing file buildup. -
安全模式协商上下文不一致
连接邀请现在携带securityMode上下文,接收端会解析并同步对端安全模式状态。
Connection invitations now carrysecurityModecontext, and the receiver parses it to keep peer security-mode state in sync. -
分组加密一致性问题
分组发送时若任一条目加密失败会直接失败,接收端若解密任一条目失败会丢弃整组,避免“部分成功”造成数据错乱。
Group transfer is now all-or-nothing for encryption: send fails if any item fails to encrypt, and receive drops the whole group if any item fails to decrypt. -
验证流程并发覆盖与异常成功判定
验证流程加入忙碌保护和对端绑定校验;verify_success缺少或非法密钥时会判定失败,不再误报成功。
Verification flow now has busy protection and peer binding checks;verify_successwithout a valid secret now fails instead of being treated as success. -
直连异常包处理不及时导致状态错乱
接收缓冲在追加前先做上限判断;遇到溢出或非法长度包会直接拒绝连接,减少 DoS 与状态错乱风险。
Direct receive buffer now enforces limits before append; overflow/invalid-length payloads trigger immediate connection rejection to reduce DoS and state corruption risks. -
直连拒绝/重连后的连接状态不同步
拒绝和重连路径现在会先统一标记断开,避免 UI 长时间显示“已连接”假状态。
Reject/reconnect paths now mark disconnected first, preventing stale “connected” UI state. -
AES-GCM 空密文与 PSK 边界异常
发送侧不再接受空combined密文;PSK fallback 改为合法长度密钥,挑战阶段 PSK 非法会直接拒绝连接。
Sender no longer accepts empty AES-GCMcombinedoutput; PSK fallback now uses valid key length, and invalid PSK during challenge handling now rejects the connection immediately. -
接收落盘目录使用远端 transferId 的路径风险
接收归档落盘目录改为安全化transferId组件,降低路径注入风险。
Archive receive destination now uses sanitizedtransferIdcomponents to reduce path-injection risk.
兼容性与行为说明 / Compatibility & Behavior Notes
- macOS 安全限制下仍需手动触发脚本
将 App 拖入Applications后,系统不会自动执行 DMG 内脚本;如需修复隔离属性,请手动双击对应脚本。
After dragging the app intoApplications, macOS will not auto-run scripts inside the DMG; run the needed script manually.
升级建议 / Upgrade Notes
- 建议尽快升级到 v1.2.7
本版本覆盖局域网连接与传输(拒绝状态、冷却重试、大内容流式传输、多端口回退、标签同步)、安全验证(TOTP 实时轮换、加密一致性、Zip Slip 防护)、安装体验(工具文件夹、一键安装、多语言说明)及多处 UI 优化,建议所有用户升级。
v1.2.7 covers LAN connection and transfer (reject state, cooldown retry, large-payload streaming, multi-port fallback, tag sync), security and verification (live TOTP, encryption consistency, Zip Slip protection), install experience (tools folder, one-click install, multi-language help), and extensive UI improvements. Upgrade recommended for all users.
