Skip to content

Releases: lunaship/dsh-cetus

app-v0.5.0-beta.27

app-v0.5.0-beta.27 Pre-release
Pre-release

Choose a tag to compare

@lunaship lunaship released this 02 Oct 13:43

官方签名 APK。

  • 版本:0.5.0-beta.27(versionCode 35)
  • 最低 Android:8.0(API 26)
  • 签名证书:CN=DSH Links, OU=lunaship, O=lunaship, C=CN
  • 证书 SHA-256:38f71adf8b67d81042c99a3ec0dfdafb4303dd31e3fc491068ccd534cb482a47
  • APK SHA-256:3022c5a5b25aa05c9e1e597b7a40dfcb54e50ab72aa57cc8a115bc1e583f3223

本包是 0.5.0-beta.23 之后的第一版,包含 0.5.0-beta.24–0.5.0-beta.27 四轮改动(其中 beta.24 / beta.25 / beta.26 从未单独发过 APK)。逐条清单见仓库 CHANGELOG.md。

新能力

  • 子代理树(P4.3):会话「⋯」→「子代理」按 parentSessionId 组树,显示标题与运行中 / 空闲;父会话卡片在有子代理运行时显示「N 个子代理运行中」。
  • 本机预览(P5.1 / P5.2):电脑面板批准一个本机端口后,手机在会话「⋯」→「预览」里经本机回环代理打开它(仍走原有证书钉扎与选路,退出时清掉预览 Cookie 与存储)。插件也会从工具输出里识别 localhost 端口,并在会话里提示到电脑上批准。
  • 会话用量与花费(P2.1–P2.3):会话用量面板(令牌总量、缓存命中率、系统 / 工具 / 对话消息分段)、预估花费、余额提醒与省钱 / 均衡 / 最强三档。
  • 诊断(P1.1–P1.3):主机诊断接口与电脑面板一键检查、App 连接诊断页与主机状态点、Tailscale 优先的备用直连地址。
  • 后台与通知(P3.1–P3.3):主机级会话状态事件流;离开 App 后每台电脑只保持一条主机事件连接,全部会话结束后 5 分钟停止;定时任务与长任务完成通知(长任务阈值默认 3 分钟);常驻通知改为进度样式。
  • 目标卡与计划清单(P4.1 / P4.2):会话页顶栏下方目标卡(阶段、可收起、暂停 / 继续 / 编辑 / 清除),目标卡下方可展开的计划清单(收起显示「3/7 · 正在:…」)。

体验

  • 长回复分段渲染(超过约 320 字拆成多个条目,代码块围栏不拆开);流式增量合帧(48ms 兜底),长回复不再逐 token 触发重组。
  • 会话控制:排队消息条(编辑 / 撤回 / 插队)、目标控制、定时任务面板。
  • UI 精简整改(7 步):设置页收成 5 个分区、首页顶栏单行、会话流去重(执行中目标与 todo 只在顶部吸顶摘要出现)、悬浮半透明顶栏与输入区、图标统一 16 视口 / 线宽 1.25。
  • 顶栏与输入区毛玻璃(Android 12+ 用 Kyant0 Backdrop;低版本、省电或减少透明度时退回半透明 / 不透明)。
  • 文件下载完整性校验:插件在响应头返回 x-dsh-link-sha256,App 下载后校验,不一致则丢弃并报错。
  • 通知栏审批默认只提供「拒绝」;新增「允许在通知栏直接批准」(默认关闭,仅 Android 12+,需解锁)。锁屏下的审批通知不显示工具名。
  • 对话中的网络图片默认不自动加载,点按单张加载;新增「隐私」设置分组。

修复

  • 半透明修饰符把内容绘制两遍;会话页输入区在旧布局下被消息区挤出屏幕;工具摘要 LazyColumn key 可能重复导致崩溃;轮中助手消息无法长按复制;SSE 重连时误报「电脑离线」。
  • 公式(KaTeX)与 Mermaid 的离屏 WebView 禁止联网并加 CSP,只放行随包打包的本地 bundle。
  • 英文界面不再混中文;辅助信息小字号由 11sp 调到 12sp。

安装

  1. 下载 app-release.apk(Android 8.0 及以上),允许「安装未知应用」后安装。
  2. 覆盖安装即可,配对数据保留;包名 dev.deeplinks。debug 包 dev.deeplinks.debug 是另一个应用,从它迁移需要重新配对。
  3. App 不会在内部下载安装包;设置 → 关于 里的「检查新版本」只会用系统浏览器打开本 Release 页面。

说明

  • 远程连接(DLP/1)仍是实验性、默认关闭;不要直接把 18640 暴露到公网。
  • 上面几项新能力里的插件侧接口(诊断、预览端口、会话控制、用量)需要宿主上的插件为 0.1.0-beta.19(main)。旧插件下 App 会按能力协商隐藏这些入口。
  • 校验和见同目录 app-release.apk.sha256,可用 shasum -a 256 app-release.apk 核对;apksigner verify --print-certs app-release.apk 可核对证书指纹。

app-v0.5.0-beta.23

app-v0.5.0-beta.23 Pre-release
Pre-release

Choose a tag to compare

@lunaship lunaship released this 30 Sep 07:21

官方签名 APK。

  • 版本:0.5.0-beta.23(versionCode 33)
  • 最低 Android:8.0(API 26)
  • 签名证书:CN=DSH Links, OU=lunaship, O=lunaship, C=CN
  • 证书 SHA-256:38f71adf8b67d81042c99a3ec0dfdafb4303dd31e3fc491068ccd534cb482a47
  • APK SHA-256:3f35675a0990d90a94ddaeeced8150ff5b335965db8873860ff2623f08494df6

主要修复(相对 0.5.0-beta.21):

  • 修复远程冷启动闪退:WorkspaceActivity 在 ON_START(回前台)于主线程调用 HostHttp.evictIdleRemote() → OkHttp connectionPool.evictAll() 关闭远程隧道时写 TLS 关闭帧 → NetworkOnMainThreadException。仅远程路径必现(局域网不复现)。现统一经 HostHttp.evictPools 转后台执行,并加架构守卫测试。
  • 新增本地崩溃记录(设置 → 上次崩溃,可复制/分享/清除,脱敏、最多 3 份)。
  • 冷启动提速:会话列表本地加密缓存(先显示缓存再刷新)、启动去重、蜂窝网络跳过局域网探测、首页不预加载。
  • 配对去掉手输地址/配对码,改为「扫描二维码 / 从相册识别」。
  • 插件对大于 1KB 的 JSON 响应开启 gzip(约 113KB → 约 15KB)。

校验和见同目录 app-release.apk.sha256。

app-v0.5.0-beta.20

app-v0.5.0-beta.20 Pre-release
Pre-release

Choose a tag to compare

@lunaship lunaship released this 26 Sep 09:45

官方签名 APK。

  • 版本:0.5.0-beta.20
  • 签名证书:CN=DSH Links, OU=lunaship, O=lunaship, C=CN
  • 证书 SHA-256:38f71adf8b67d81042c99a3ec0dfdafb4303dd31e3fc491068ccd534cb482a47
  • APK SHA-256:a4843b054a2c1b039f0e1f0fe2abefbdd838e73c43c32df6bcfbf59feada059f

校验和见同目录 app-release.apk.sha256。

dsh-links 0.1.0-beta.18

Pre-release

Choose a tag to compare

@lunaship lunaship released this 23 Sep 03:26

DSH 0.1.7-alpha.1 适配(V4 tool/result 缝合)+ 多帧 zstd 会话日志修复。

  • 适配 DSH 0.1.7-alpha.1 的 V4 session 日志:tool/result 从「role: user + tool-result 包装块」升为一等 role: tool 消息(toolCallId / isError 提到 message 上,content 直接是内层内容数组)。新增 toolResultMeta() / toolResultContent(),两种形状都认:callId 以 message.toolCallId 为先、回落 source.callId;isError 以 message.isError 为先、回落包装块;结果正文在包装块存在时取内层 content。
  • 修复:V4 会话上失败的 write/edit 会被当成成功变更,手机端「产出文件」卡片把失败操作写过的文件也列进来。
  • 修复:真实 V3 会话的结果正文原本是把整个 ToolResultBlock 序列化后的 JSON,现在取内层正文块(App 侧把 tool_result 的 text 当纯文本渲染,无需 App 改动)。
  • 兼容性:DSH 源码基线由 0.1.5-rc.2 升至 0.1.7-alpha.1(npm alpha)。next/0.1.5-rc.3 经逐字节比对为本插件相关面上无代码变更(仅 package.json 版本号)。迁移面与回滚限制(V4 新会话无法在 RC 线读取、settings.yaml 一次性导入 profiles/web/cordis.patch.yml)详见 docs/COMPATIBILITY.md 的「DSH 0.1.7-alpha.1 migration notes」。
  • 证据:单测 183 绿(新增 6 条 V3/V4 tool/result 用例,先 git stash 掉 src/ 验证过新用例确会失败);scripts/e2e-arch-smoke.mjs 对 0.1.7-alpha.1 35/35(隔离 stateDir,操作者 state.json 哈希未变);操作者 host 已在 0.1.7-alpha.1 上重启,两台既有手机配对与 Relay 路由凭据完好。真机端到端尚未在本基线重跑。
  • 修复:会话日志的多帧 zstd 没被解完。session*.jsonl.zstd 是按追加逐帧写的容器,而 Node 的 zstdDecompressSync / createZstdDecompress 只解第一帧(后续帧不报错也不出现在输出里),原来的 zstdDecompressAll() 单次调用只能拿到会话头那一行(实测:973,558 字节的日志只消费了 178 字节)——「从会话文件补全 reasoning」因此一直静默失效(返回空 Map)。新增 src/zstd-frames.js,逐帧解压并按解码器自身消费的压缩字节数(bytesWritten)推进;实测同一文件 562 帧 / 1,489 行 / 3.5MB 正文、耗时约 48–99ms。同时该路径现在也能直接读未压缩的 session.vN.jsonl。
  • 证据:单测 194 绿(新增 test/zstd-frames.test.mjs 8 条 + test/session-log-reasoning.test.mjs 3 条:多帧、单帧、空输入、逐帧 jsonl 保序、尾随非 zstd 字节只返回前缀、非 zstd 返回空、输出上限抛错、64 帧覆盖、文件→推理→投影端到端)。把 decompressZstdFrames 临时换回“单次调用旧行为”后这批用例 11 条中 7 条失败,确认测试锁住了该回归。
  • 为能真正测到「文件补全思考」这条链路,把日志扫描从 src/index.js 抽成 src/session-log-reasoning.js 的纯函数 reasoningBlocksFromSessionLog()(flush 点仍与 src/history.js 同源),readSessionReasoning 只留 IO、路径解析与缓存。
  • 验证:scripts/e2e-arch-smoke.mjs 在 0.1.7-alpha.1 上 35/35(含插件加载,即新模块 import 生效);host 已重启加载新源码,loopback pair-info/devices/relay-status 与手机端 18640/dsh-link/health 均 200,两台配对完好。
  • 未复现:上述验证过程中有一次 npm run prepack 报 193/1(未记下用例名),随后连续 8 次全量 + 6 次集成子集重跑均 194/0,无稳定复现。
  • 未修复的已知缺口(已确认,非本次改动引入):seeded/forked 会话(日志含 session/end-seed)没有 assistant/chunk 行,reasoning 只存在 assistant/message 的 content reasoning 块里;而 history.js 的 assistant/message 分支只取 text 块、文件扫描只认 chunk 行,所以这类会话在手机上不显示思考。
  • 仓库卫生:test/pairing-qr-payload.test.mjs 的配对夹具原是从真实 pair-info 响应抄下来的,含维护者真实主机名、局域网/Tailscale 地址、设备 id、配对码与主机证书指纹。本仓公开,已全部替换为同形状占位值,并重写历史清除旧值。
  • Android App 配套版本 0.5.0-beta.20(自适应工作台与导航重构、Mermaid 位图缓存像素预算、高权限命令统一确认、系统分享缓存配额、二级窗口 FLAG_SECURE)。

dsh-links 0.1.0-beta.17

Pre-release

Choose a tag to compare

@lunaship lunaship released this 20 Sep 12:04

DSH Links 插件 0.1.0-beta.17。

安全加固:

  • 手机端 danger-full-access 默认拒绝;新增宿主配置 allowMobileDangerFullAccess(默认 false),permission.defaultPreset 与权限预设均拒绝而非静默降级。
  • 权限变更与文件下载要求该设备正持有对应会话的活跃 SSE 订阅。
  • session.create 的 cwd/workspaceId 限定在已注册工作区内,列表不可用时 fail-closed。
  • 文件下载与 JSON 响应补安全头部(nosniff / frame-options / referrer-policy);工作区创建与文件接口不再回显 OS 原始报错;tls.json 读取时 chmod 0600。
  • Relay 控制面错误脱敏(真实错误只进服务端日志);IPC 握手绑定服务端一次性 challenge 防重放;init 不再把管理员密码打印到 stdout。
  • 审计日志记录设备吊销与权限预设变更(短 id,不含 token)。

配套 Android App 0.5.0-beta.19。npm 包不含 relay/ 源码。

dsh-links 0.1.0-beta.16

Pre-release

Choose a tag to compare

@lunaship lunaship released this 13 Sep 16:38
  • 冷启动配对就绪门控:pair-info / qr.png 在 HTTPS 端口真正 listen 之前返回 503 proxy_not_ready(含 phase 与 Retry-After),不再出现可用于扫码但证书指纹为空的配对信息;TLS 初始化失败或端口被占用保持明确的 failed 态。Web 面板按 phase 区分「启动中」与「启动失败」。
  • 审批接管兜底:无 callId 的审批 waterfall(如沙箱升级审批)回退绑定最近一条未决审批事件,手机可正常决策,5 分钟超时对此类审批实际生效;接管/透传原因写入日志。
  • 会话被 Web 端或其它设备占用时,移动 API 返回 409 session_busy 与可读文案(此前为笼统 502)。
  • scripts/e2e-arch-smoke.mjs 加固:随机空闲端口 + 独立临时目录、指纹钉扎核验 HTTPS 证书、空会话 SKIP、try/finally 清理。
  • 新增回归测试:就绪窗口、移动 API 错误映射(npm run prepack 167/167,冒烟 35/35)。
  • 配套 Android App:0.5.0-beta.18(私有仓发布签名 APK)。
  • 兼容矩阵与移动同步契约已同步更新(docs/COMPATIBILITY.md、docs/MOBILE_SYNC_CONTRACT.md)。

dsh-links 0.1.0-beta.15

Choose a tag to compare

@lunaship lunaship released this 12 Sep 15:29
  • 手机 API 下发 Web 归档集合:bootstrap / sessions 携带 archivedSessionIds,sessions/search 的索引路径与降级标题搜索都过滤已归档会话;旧 App 忽略未知字段。合同见 docs/MOBILE_SYNC_CONTRACT.md。
  • workspace.list 适配只认 workspace/follow 的持久 baseline(跳过瞬态状态帧,不再把瞬态帧当成空快照),并从 baseline 提取 archivedSessionIds;流式首帧读加 15 秒期限,读完后始终关闭迭代器。
  • Android App 配套版本 0.5.0-beta.17;归档集合跟随需本版与该版的组合,旧组合忽略新字段、不破坏既有行为。
  • workspace.list 适配只认 workspace/follow 的持久 baseline(跳过瞬态状态帧,不再把瞬态帧当成空快照),并从 baseline 提取 archivedSessionIds;流式首帧读加 15 秒期限,读完后始终关闭迭代器。
  • Relay Control 支持维护者开通的管控租户:邀请与 Host 按 user_id 隔离。自托管仍是单个 admin;没有 App 登录、没有公开注册。会话继续只存在于插件本机。停用租户会立刻作废未用邀请、吊销其 Host,并让已有控制台会话失效;维护者可恢复登录(已吊销 Host 不自动回来)。托管租户默认最多 4 个未用邀请、8 台已接入 Host,避免共享 Relay 被单户占满。配额「已接入」是未吊销名额,插件断开不释放。租户控制台 Host 列表主表只显示占名额的电脑,已吊销折起。邀请主表是未用码和仍占名额的已接入记录,失效折起;清理不会删掉还能对照吊销电脑的已用码。租户概览大数显示已接入占名额与未用邀请(对照上限),不是含已吊销的历史总数,管理员台账列出各户用量,已接入或未用码满额的标「已满」并排到前面(tenant list 同理),维护者不开户内机器,对方自己登录去吊销或签发;台账可再复制登录地址(回环不外发)。台账「查看电脑」只列出该户 Host / 邀请 / 记录(类似按用户看节点),优先让对方自己登录吊销;SSH 用 tenant hosts --login 列出占名额电脑(--all 含已吊销,不含路由密钥);未用邀请满额时不带 replaceOldestUnused 仍返回 409,控制台确认后会作废最早未用码再签发(未用名额仍不超过上限)。满额 ENROLL(接入码有效、名额已满)返回 QUOTA_EXCEEDED,插件提示到控制台吊销,而不是再签发接入码。满额不消耗该码,吊销后同一张码可再接入。已接入满额且仍有未用码时,控制台签发按钮改为「同一电脑换路由」,避免作废新电脑已贴的码。吊销腾出名额后,若仍有未用码则提示新电脑再点接入,而不是立刻再签发。租户控制台在已接入满额时显示横幅,离线 Host 标「占名额」,列表把离线占名额的排在前面、最久未见的标「建议吊销」,横幅可一键吊销那台;签发前确认这张码只适合同一电脑换新路由。控制台不再要求换 Relay 前先吊销。控制台操作记录(GET /v1/events)记下谁签发/吊销了邀请与 Host,以及控制台登录成败(不含接入码、密码、会话)。未知登录名的失败不写入,以免冲掉真实操作记录。维护者可用 dsh-links-relay tenant 在本机开通/停用/恢复租户。Host 列表显示插件本机主机名,并按 Agent REGISTER 与节流后的 PING 显示在线/离线(写入 last_seen_at);插件断开后立即离线,不是 90 秒窗口里的假在线。插件「断开」暂停 Agent 并保留路由凭据,可重连,不是吊销。同一电脑贴新接入码会换新路由、不占额外名额;旧路由的 REVOKED 不会擦掉新凭据,接入失败会恢复原 Agent。换到别的 Relay 会先 409 确认(confirmRelaySwitch);新接入成功后插件会对原 Relay 发 REVOKE_SELF 以空出名额,原 Relay 不可达时才提醒去原控制台吊销,若原接入串带有控制台地址则插件可打开「原控制台」(不是 App 登录)。新电脑贴带控制台地址的接入码却满额时,插件记住该公网地址,刷新后仍可打开控制台去吊销。更换或换 Relay 成功后插件提示同一网络下的手机下次打开即可跟上,纯远程请重新扫云端配对码,手机不登录控制台。云端配对码在插件已有有效路由时即显示,不必等 Agent 心跳在线;暂停或吊销后隐藏。换路由后云端码按路由戳刷新,避免扫到旧码。App CONNECT 在 MAC 通过后若 Host 已吊销或旧路由已被替换,返回 REVOKED(不是 AUTH_FAILED),手机清掉失效云端路由、保留局域网配对,并在设备列表留下「扫码恢复云端」(本机标记,不登录 Control)。设备列表健康探测不再把该错误当成暂时离线,也不再因此删除整台配对。GET /dsh-link/mobile/bootstrap 带当前 relay 快照(未接入为 null),同一网络下可换上新路由。插件暂停仍是可重试的 AGENT_OFFLINE。匿名日流量挂起返回可重试的 RATE_LIMITED,不是 REVOKED:插件保留路由凭据,手机保留配对,控制台显示「挂起(日流量)」,UTC 零点后自动恢复;邀请制租户不受日流量限制。控制台吊销 Host 后,插件把 REVOKED 当终态:停止 REGISTER 重连、清掉 route 凭据(保留本机 Host 密钥以便再接入),并提示到控制台签发新接入码。控制台「复制」优先给出可粘贴进插件的完整接入串(含主机);裸邀请码只作为官方 Relay 的简写。吊销后在同一台自建 Relay 上再贴裸码,会回到已记住的主机,而不是误连官方。新开或被重置密码的租户必须先改成自己的控制台密码,才能签发或吊销;自建 admin 仍只用 config 密码。TLS 反代若对回环 Control 走 HTTP,可设 admin_secure_cookies,登录 Cookie 才会带 Secure;自建 http://127.0.0.1 保持关闭。Control 只在对端是回环时采信 X-Forwarded-Proto / X-Forwarded-For,这样租户经 HTTPS 反代能登录,登录限流也不会把所有人算成本机。租户可自己改控制台密码,管理员可重置;其它控制台会话会失效。租户可清理自己的失效邀请和已吊销 Host,不会动到别人;Host 列表用电脑名、Host ID 和接入时间区分同名电脑,邀请记录标出消费该码的电脑(吊销或删除 Host 后仍保留当时的电脑名),电脑仍占名额时可从该行吊销,操作记录带电脑名(仍不含接入码)。接入码默认 8 小时、最长 24 小时;控制台可选 30 分钟 / 2 小时 / 8 小时 / 24 小时,签发结果写出截止时间;超长 ttl 会被夹紧。满额 ENROLL 不消耗该码,并把短于默认时长的未用码续到 8 小时(不超过签发后 24 小时),方便吊销后再贴。开通租户后优先交出 config 的 public_control_url(指向回环 8080 的 HTTPS 反代);未配置时才抄非回环 Origin。127.0.0.1 不会当成租户登录入口。配置了该地址时,接入串带 c=,插件记住并可「打开控制台」;手机 bootstrap / 云端码不含此字段。App 仍不登录 Control。插件「断开」仍只暂停;「释放名额」发送 DLR REVOKE_SELF,立刻空出控制台已接入名额(手机随后看到 REVOKED,云端字段失效、局域网配对仍在),不经过 App 登录。
  • 历史把成功的 write/edit/str_replace_editor 投影为本轮产出文件;GET .../sessions/:id/file?path= 在工作区沙箱内读文件(上限 8MB)。bootstrap capabilities.files.workspace 声明该能力。
  • 会话列表不再下发 JSON null 的 agentPreset / cwd 等可选字段。旧 App 的 JSONObject.optString 会把 null 显示成顶栏字面量「null」;缺键则回落默认预设。
  • 兼容性:DSH 源码基线由 0.1.2-alpha.5 升至 0.1.5-alpha.2(npm alpha)。npm latest 现为 0.1.5-rc.1(next 为 0.1.5-rc.2)。详见 docs/COMPATIBILITY.md。
  • 移动端同步合同写明:GET .../requests 快照须带 pending 澄清题目与审批元数据;App 历史刷新 / 重同步后不得丢掉仍 pending 的澄清与审批卡。
  • Relay README 不再把已删除的旧私有仓写成「已归档」;race 测试命令与 CI 一致,不再把 CGO_ENABLED=0 和 -race 写在一起。
  • CI 比对插件 testdata/dlr1-vectors.json 与同仓 relay/testdata 镜像;RC1 证据脚本的 Relay 命令与门禁对齐。
  • README 截图标明仍来自 App 0.5.0-beta.14;SECURITY 写明公开仓含 relay/ 源码、npm 包不含。

Beta / Android only / Trusted LAN / Relay 内测(需接入码)。安装:dsh plugin --profile web add dsh-links@0.1.0-beta.15

兼容与未验证项见 docs/COMPATIBILITY.md 与 docs/MOBILE_SYNC_CONTRACT.md。

dsh-links 0.1.0-beta.14

Choose a tag to compare

@lunaship lunaship released this 06 Sep 17:16

dsh-links 0.1.0-beta.14

  • 补发超过 500 事件时不再静默跳号:无法证明连续覆盖则发重同步信号。
  • 多题澄清改为逐题校验;旧 App 不声明多题能力时回落桌面。
  • 审批与 SSE 断开分离:短暂断线有限宽限,吊销/插件退出立即失效。
  • 历史与实时流把 approval/asked 与 approval/decided 归并为同一请求状态。
  • Relay 源码并入本仓库 relay/。Android App 仍为私有源码,配套版本 0.5.0-beta.16。
  • npm beta 自 0.1.0-beta.12 以来的下一发包;源码线上的 0.1.0-beta.13(DSH 0.1.2-alpha.5 适配)未单独发包,本版一并包含。

Beta / Android only / Trusted LAN / Relay 内测(需接入码)。安装:dsh plugin --profile web add dsh-links@0.1.0-beta.14

兼容与未验证项见 docs/COMPATIBILITY.md 与 docs/MOBILE_SYNC_CONTRACT.md。

dsh-links 0.1.0-beta.12

Choose a tag to compare

@lunaship lunaship released this 30 Aug 15:14

dsh-links 0.1.0-beta.12

  • 「手机连接」面板 Claude 风重设计(暖象牙 + 赤陶,下划线 Tab,设置/设备分组)。
  • 下线 GET /dsh-link/mobile/balance:llm.balance 并非 DSH RPC 方法(rc.8 起即不存在),端点从未可用;App 余额入口已容错为不展示。
  • 兼容性:DSH 基线 0.1.0-rc.8 → 0.1.1-rc.2,本机冒烟通过(RPC 集 / events.mux WebSocket / 面板 slot);真机端到端待重跑,见 COMPATIBILITY.md。
  • Beta / Android only / Trusted LAN / Relay 内测(需接入码)。Android App 为 0.5.0-beta.14。

dsh-links 0.1.0-beta.11

Choose a tag to compare

@lunaship lunaship released this 27 Aug 16:33

dsh-links 0.1.0-beta.11 — 2026-08-28

  • 「手机连接」面板 UI 重设计:配色收敛为统一的青绿令牌体系(主色/危险/成功/警告各配柔和底色与边线),圆角统一为 8/12/18 三档。
  • 面板质感升级:弹窗遮罩毛玻璃、三层投影、品牌头渐变链接图标;二维码卡片加高光与虚线装饰框,配对码下方补充扫码引导文案。
  • 交互细节:待确认设备圆点呼吸动效(prefers-reduced-motion 下自动关闭)、主/次按钮与输入框完整 hover/active/focus/disabled 状态、「配对需本机确认」升级为卡片式开关、设备列表数量徽标、暴露警告加警示图标、弹窗支持 Esc 关闭。
  • 逻辑、数据流与接口调用无变更;Android 客户端仍为 0.5.0-beta.14。

安装:dsh plugin --profile web add dsh-links@0.1.0-beta.11