Skip to content

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 07:34
· 13 commits to master since this release

v2.3.0

加了「退出时保存终端」:[general] session = on 之后,退出那一刻把每个窗格的文本历史和标签/分屏布局写进 termux.session,下次启动读回来并标一行「上次会话的历史」;顺手把行为页上被无谓挡掉的 A/B/K/W/M 换页键还回来。

# 内容
退出存盘 / 启动恢复 用户:「关掉终端,里面打过的东西就全没了,能不能后台运行、保存终端」。口径是先做存盘恢复(入口 = 设置 → 行为页第 6 个开关 + ini session,默认 off;真正的常驻后台进程另开版本,本仓库现在一个 socket / 命名管道都没有)。存的东西:每个标签页的锚点色 + 分屏树(v50pp 这种前缀式,数字是左/上侧占比)+ 每个窗格的逻辑行文本 + 当时聚焦在哪一格。三个不显然的做法:① 采集点不在退出钩子,而在 pane_mark_dead() / close_pane() 的开头 —— 窗格的 ScreenBuffer 就在 close_pane 里被 screen_free() 掉,等主循环退出来到退出钩子时历史早没了(第一版就是这样存出一个空文件),所以改成「窗格要被拆掉的那一刻先在内存里留一份,落盘仍只在退出时一次」;② 存逻辑行而不是屏幕物理行,读回时由引擎按新宽度重折 ⇒ 100 列存的历史在 40 列终端里读回来不会腰斩;③ 文本从 cells[] 取时要跳过宽字符的次格(BMP 宽字符次格是 0、emoji 是低代理),当成空格就会把「汉字」存成「汉 字」,中文历史每轮胀一倍。上限:每窗格 4000 行、单行 8000 字节、整档 6 MB,屏底的空行不进档,上一轮那句说明行也不会被当成历史再存一遍。恢复失败一律当「没有快照」:坏档 / 版本不对 / 树语法错都只影响这一个标签页,绝不让启动挂掉。
行为页的字母挡位 v2.2.0 把 A/B/K/W/M 列进行为页的「本页已占用」名单,好让换页字母让路 —— 数错了:行为页只认 ESC/↑↓←→/Space/Enter,那五个字母在这页什么都不做,结果白挡掉一半换页键(A 换不到外观页)。名单删到只剩条目管理页真正占用的 S/A,并加判据钉住「行为页上按 a 必须换到外观页」。