Skip to content

v1.2.0-beta.9

Pre-release
Pre-release

Choose a tag to compare

@xzghua xzghua released this 09 Sep 10:36
· 66 commits to main since this release

这一版几乎全是两台电脑互连路上踩出来的问题,都是真机现场查出根因后修的。

连着远程主机时,屏幕不再说假话

切过去之后,工作区列表还是上一台的 —— 而侧栏那枚徽章已经写着新主机的名字,等于「本机的数据顶着远程主机的名牌」。点任何会话都打不开,因为那些路径在对面根本不存在。

主进程里其实一直守着这条规矩(绝不回落到本机),是渲染层从另一头把它破了:工作区列表只在启动时拉一次,之后再没人重拉。

一起修的还有所有按工作区路径记的东西:展开的会话列表、「运行中」圆点、「N 道门等你」角标。两台机器上的工作区路径完全可以一模一样,于是它们会跟着路径漂到新主机的同名工作区上 —— 一枚指向不存在的门的角标,比空白危险。

空态也从此分三种:还在拉 / 拉不到 / 真的没有。以前三种长得一模一样,切到一台连不上的主机看到的是一个「很正常」的空列表。

连不上的时候,它现在会说人话

连不上只会给一句「等待连接就绪超时」,而日志里只写「经代理连中转」——唯独不说拨的是哪个地址。有人的中转地址少打/多打一截,查出来靠的是翻日志再翻配置文件。

现在两侧都会记下拨的是谁;关闭码是 1006(「对面没给关闭码」,本身不含信息)时,把它前面那条真实的 socket 报错顶上来:

连不上:write EPROTO ... SSLV3_ALERT_HANDSHAKE_FAILURE   ← 现在
连接断开(1006)                                          ← 以前

中转:一条死连接不再能把房间永久占住

同一个房间只准一台主机(房间号是公开的公钥,「后来的赢」等于给每个扫过码的人一个挤掉真主机的开关)。代价是笔记本合盖、切网、拔网线造出来的僵尸连接会占着房间不放 —— 真主机回来只看到「这个房间已经有一台主机连着了」,而那台就是它自己。

现在三处一起兜底:中转内核原地回心跳、主机端连丢两次就重连、Cloudflare 那侧用休眠期自动应答 + 定时清扫。两侧都兼容旧版本:连老中转不会误判成断线,中转也不会去踢不发心跳的老客户端。

中转上挂着谁,看得见也踢得掉

以前只有一个数字「连着 2 台设备」。现在列出每台的名字,每行一颗「断开」——只关那一条连接,别的设备不受影响,对方会自己重连。这也是僵尸连接的人工出路。

手机:工作流模板库

第二格从一张列表变成三段:工作区 / 归档 / 工作流

「工作流」那段是这台机器上的模板库(以前只有新建工作区向导用得到,工作区一旦建好就再也加不进新模板 —— 电脑端也一样)。看得到每个模板的阶段,一颗「用到…」把它复制进某个工作区,之后改模板不会动到已经加过的那份。

设置里那两屏,字少了一大半

「远程主机」默认摊开的说明文字从 323 字减到 79 字(删得最狠的一段是在设置里解释另一个界面元素——底部那枚按钮上的圆点是什么颜色;那枚按钮自己有提示)。两屏统一成「主路 + 一个默认收起的高级」。

「手机」那张状态卡改写:以前是「在 30.x.x.x:6789 上等着,还没有设备连上来」,把一个你不需要知道的地址放在了主语位置。现在主句只说结论,地址退成第二行小字。

其它

  • 主机保存一次多一台:粘过的配对码不随表单清空,加上按 id 去重而新建的表单没有 id —— 点两次保存就是两台一样的机器。
  • 删掉主机后编辑表单还在:那张表单编辑的是一台已经不存在的主机,再点保存会把它原地复活。
  • 对话正文和表格宽度:上一版给正文加的行宽封顶让段落显得偏窄,而表格却被拉满整行、内容全缩在左边。现在统一:正文跟着会话列走,表格按内容收。

资产:mac 双架构 dmg(Apple 芯片选 -arm64)、Windows x64 安装包、安卓 APK、Linux daemon tar.gz。