设备管理
设备页的卡片含义、添加 / 解除配对流程、按设备的内容类型规则。
设备页是空间成员的实时视图:哪台机器在线、走的是直连还是中继、哪些内容类型被允许从这边发过去。所有动作都对 当前空间 生效;切换空间后视图会随空间更新。
页面结构
| 区块 | 内容 |
|---|---|
| 顶部 Hero | 本机图标 + 设备名 + Peer ID 摘要 + 「切换空间」chip;右侧两个 StatPill 分别显示已配对 / 在线数与同步状态。 |
| Tab 切换 | 单行两个标签:「已配对设备」(桌面 P2P 对端) / 「手机同步」(局域网移动客户端)。每个标签自带计数 chip 与右侧的操作按钮。 |
| Tab 内容区 | 当前 tab 的卡片网格(3 列在大屏,小屏自动收为 1–2 列)。最后一格是虚线「添加」占位卡,点开走对应的注册 / 邀请流程。详见下面两节。 |
顶部 Hero 是只读摘要,要改本机名 / 同步开关请去 设置 → 通用 与 设置 → 同步。「切换空间」chip 走的是另一个对话框。
设备信任变化
其他设备提出成员变化时,UniClipboard 会打开必须处理的选择窗口,并发送系统通知。 在你作出选择前,这个窗口不能关闭:
- 应用变化:本机采用对方提出的成员关系。
- 保留当前空间:本机保留现有设备组;接受另一结果的设备会进入不同空间,双方停止分享新的剪贴板内容。
退出当前空间和保留分开的设备组都需要再次确认。不同空间是正式支持的长期结果,不代表离线或失败, UniClipboard 也不会自动合并两边。
只有后台确认某台设备版本过旧时,它的卡片才会显示「需要更新」;单纯离线不会被判断为需要更新。 本机被移除出空间时,本机卡片会明确显示这一事实。要重新使用它,请从仍受信任的设备重新加入空间。
完整的移动端同步配置流程(LAN 监听器、iOS 快捷指令、凭据管理)单独整理在 移动端同步 这一节。
卡片能告诉你什么
每张卡片自上而下:
- 设备图标 —— 根据设备名启发式选色(在线为强调色、离线为灰);在线时图标右下角再叠一个小绿点。
- 设备名 —— 该设备本机起的名字;过长会被截断。
- 状态行 ——
● 在线/○ 离线+(若有)连接地址 mono 显示。 - 资料更新警告 —— 出现在卡片末端时,表示必须由这台指定设备上线才能完成当前成员变更。
- 通道 chip —— 卡片底部的传输通道徽标(详见下文)。
- 点击整张卡片 —— 打开居中的「设备设置」modal。
传输通道徽标
Online 旁的小标签告诉你这次连接走的是哪条路:
| 标签 | 含义 |
|---|---|
LAN | 通过局域网 mDNS 发现并直连。 |
Direct | NAT 穿透成功,跨网络的 P2P 直连。 |
Relay | P2P 打洞失败,走加密中继转发。 |
中继看到的永远是密文,参见 配对与同步 — 中继看到的。这个标签只反映可达性 / 性能层面,不影响机密性。
添加新设备
在「已配对设备」tab 标签右侧点 邀请新设备(卡片网格里最后一张虚线占位卡也是同一个入口)。弹窗会:
- 调用 sponsor 守护进程生成一段一次性邀请码。
- 显示邀请码 + 倒计时(默认有效期 5 分钟)。
- 提供一键复制按钮。
把邀请码送到新设备(同物理位置直接念 / 私聊都行 —— 邀请码不带口令),让对方在新设备上点 我已经在另一台设备上使用 → 输入邀请码与空间口令。详见 快速开始 — 添加第二台设备。
邀请码过期或已被消费就 无法再用。这是配对协议的"一次性"性质决定的,不是 bug —— 重新生成一张即可。
单台设备的设置 modal
点卡片打开居中的「设备设置」modal,含以下控件:
基本信息
- 顶部 header 显示设备图标 + 名字 + 状态点(在线/离线)+ Peer ID 摘要。完整 Peer ID 在「连接信息」段。
- 连接信息 段以圆角 InfoRow 显示
通道(直连 / 中转 / 未连接 / 不在本地网络)与(若有)地址。
发送与接收开关
向此设备发送(Send to this device):关掉后,本机产生的剪贴永远
不会发到这台对端。这是按对端的「出站」开关,不是空间级别。
从此设备接收(Receive from this device):关掉后,这台对端之后发来的剪贴会
在本机拒绝,不会进入历史、覆盖系统剪贴板或再次转发。这项设置只属于本机,不会
同步到对端;重新打开也只影响之后收到的内容。
内容类型白名单
发送和接收总开关下方各有一组 2 列网格,列出每种内容类型的细分开关,每格由图标、标签和小开关组成:
- 文本
- 图片
- 链接
- 文件
- 富文本(HTML / RTF)
激活的开关会用主色描边和浅色底色;关闭某个方向的总开关后,该方向的整个网格会淡出且不可点。
在发送白名单里关掉某个类型后,对应字节 永远不会离开本机;在接收白名单里关掉 某个类型后,对应内容会在进入历史或系统剪贴板前被本机拒绝。这意味着:
- 关掉「文件」 → 不会再消耗对端的文件缓存配额。
- 关掉「图片」 → 大屏截图不会再吃带宽。
恢复默认位于「同步设置」段右上角,点一下会把发送、接收和所有内容类型恢复到默认值。
规则只对 这一个对端 生效。一台设备配多对端时,可以分别设置,比如对工作笔记本只发文本,对手机不发文件等。
解除配对
modal footer 左侧的 取消配对 按钮(破坏性,会要求二次确认)。解除后:
- 这台对端从「空间成员」列表里消失。
- 移除完成后,受保护空间会拒绝来自该 node ID 的后续传输。
- 本机历史不动 —— 之前同步过来的内容仍在。
成员移除由空间本身完成,并会跨应用或后台服务重启继续处理。若需要另一台设备上线才能完成, 只会在那台设备上显示「等待资料更新」图标;没有独立的刷新流程,也没有“永久丢失确认”操作。
若显示需要恢复,请通过仍受信任的设备恢复或重新加入空间。普通离线不代表设备已经被移除。
移除操作无法抹掉丢失或失窃设备上已经保存的历史,应当视为这些本地副本仍可被访问。
重新配对被移除设备: 在一台仍受信任的设备上生成新的 invite,再在被移除设备上完成 join。
移动端同步设备
已配对的移动客户端在「手机同步」tab 下,独占一片卡片网格 —— 它们不是桌面对端,也不属于 iroh 信任网络。
Tab 头部的操作
切到「手机同步」tab 时,tab 行右侧出现两个按钮:
| 按钮 | 作用 |
|---|---|
配置 | 打开 移动端同步设置 modal —— 总开关、LAN 监听、监听 IP、端口、当前监听 URL 都在里面。 |
添加设备 | 走注册流程,详见 移动端同步 — 配对一台 iPhone。未启用 / LAN 监听未开时点击会先弹出引导对话框。 |
监听器若 bind 失败(端口被占用、权限不足等),添加设备 仍可点击,
点击后会弹出提示说明具体原因。完整原因 + LAN 安全告警在 配置 modal
内部的 Alert 区域展示,不再有专门的状态条。
已配对的卡片
每张卡片:
- 顶部:蓝色
Smartphone图标。 - 中部:注册时给的标签 + Basic Auth 用户名(mono,可直接复制做排错)。
- 底部:最近一次活动时间。
整张卡片可点。点击会弹出 移动端同步设备(Mobile sync device) 对话框,而不是在卡片上就地触发某个动作。dialog 内部分两个视图:
- Info 视图(默认) —— 展示当前连接信息:base URL(旁边带网卡
下拉,可重新挑要对外宣告的 IP),以及一张 QR ——「服务器只存
Argon2 哈希,QR 没法再凭空拼出,点 Edit device 设置新密码后
再来扫」的占位;改过凭据后才换成真正的
uniclipboard://connect二维码,并在下方多出一块 amber 凭据(Credentials) 区域, 自带一键 备份 按钮。底部按钮:左边 Edit device, 右边 Revoke + Done。 - Edit 视图 —— 点 Edit device 进入。可以修改 label、用户名 和/或密码(密码留空表示保持不变,点 Regenerate 自动生成,或 输入新密码 —— 至少 8 位)。改用户名会重铸密码,因此设备需要重新 配对。提交成功后 dialog 会自动切回 Info 视图,顺手把新 QR / amber 凭据呈现出来,方便立刻扫码 / 复制。密码变更时,旧的 Argon2id 哈希 被原子失效,旧凭据立即停用。
点 Revoke 会删除设备记录。携带旧凭据的后续请求会拿到
401 Unauthorized。
移动卡片 不 会出现 LAN / Direct / Relay 传输徽标 —— 移动端同步走的是 SyncClipboard
HTTP(不是 iroh 传输),没有可比较的项。
完整的端到端配置流程(LAN 监听器、对外宣告 IP、iOS 快捷指令安装、安全注意 事项)单独整理在 移动端同步。配对动作本身在 配对与同步 — 移动端伴侣 也有简短说明。
在线状态多久刷新一次
设备页是 推送驱动 的。守护进程内部跑一个 keepalive worker 监测对端
上下线,并通过 peers.changed WebSocket 事件广播变化;页面只负责订阅
并重渲染。
- 对端重新上线:~1 秒内反映出来。对端自己的 keepalive 拨回本机时 事件立即触发。
- 对端断网:~25–60 秒被检测到。来自守护进程自身的 keepalive tick 与底层 QUIC idle 超时。
页面还会在以下两种情况主动拉一次(兜底,防止某次推送被漏掉):
- 本次会话第一次打开设备页时。
- 切换标签后重新回到设备页时。
不再有周期性轮询 —— 关掉设备页后这个页面的网络流量会归零。如果某个
状态明显不对(例如远端明明在跑但你看到 Offline),切换标签再回来强制
刷新一次;仍不对参见 故障排查 — 对端不上线。
与 CLI 的对应
| GUI 操作 | CLI 等价 |
|---|---|
| 「空间成员」列表 | uniclip members(本机 + 已配对对端;加 --probe 获取实时在线状态)。uniclip devices 是其别名。 |
| 添加设备 → 邀请码 | uniclip invite |
| 加入已有空间 | uniclip join <code> |
| 复制 Peer ID | uniclip status --json 中的 network.endpoint |
| 解除配对 | 当前 仅 GUI 提供专用命令;CLI 等价子命令在路线图上 |
| 按对端的内容类型白名单 | 当前 仅 GUI 提供;CLI 等价配置子命令在路线图上 |
| 移动端同步 — 状态 | uniclip mobile status |
| 移动端同步 — 列出已配对 | uniclip mobile status |
| 移动端同步 — 注册设备 | uniclip mobile setup(向导) 或 uniclip mobile add --label … |
| 移动端同步 — 吊销设备 | uniclip mobile revoke <device-id> |