Skip to content

Terminal v1.0.1

Choose a tag to compare

@FPS1024 FPS1024 released this 18 Sep 10:33
· 12 commits to main since this release

越狱 iOS 设备的终端 App,修复版本,最低支持 iOS 12.0。终端仿真核心(VT100/xterm、UTF-8、中文与 emoji 列宽、256 色与真彩色、回滚与 reflow)为纯 C,界面层是 Objective-C + UIKit。

安装

rootless 越狱(Dopamine / Palera1n 等)— 推荐

  • 文件:Terminal_1.0.1_iphoneos-arm64.deb
  • 安装位置:/var/jb/Applications/Terminal.app
  • 方式:dpkg -i Terminal_1.0.1_iphoneos-arm64.deb,或用 Sileo / Zebra 的「本地安装」
  • postinst 会自动执行 uicache 并刷新 SpringBoard

ipa(TrollStore 等)

  • 文件:Terminal_1.0.1.ipa,内含 Payload/Terminal.app

本版修复的 issue

  • #1 无法输入中文 —— 4d5703f
  • #2 终端字符串间距异常 —— b0539b1
  • #3 终端刷新异常 —— 962651b

本版修复

  • 中文输入(#1):拼音键盘的预编辑文本没有走完整的 UITextInput 流程,导致打不出中文。现在补上 textWillChange: / textDidChange: 通知,unmarkText / insertText: 正确落盘,退格逐字收缩组词而不是丢掉整串,textInRange: 在预编辑区返回预编辑串,组词期间选区停在预编辑串末尾。
  • 重排 reflow(#2):键盘弹出/收起只改行数,屏幕却会把两行并成一行;列数变窄再变回来,中文旁边会凭空多一个空格。根因是硬换行标记挂在了宽字符的零宽续格上、被重排循环跳过,以及宽字符换行让出的填充格被当成真空格。前者改成挂在最后一个真实格子上,后者新增 VT_WIDE_PAD 标记,重排与取文本时都跳过。
  • 多会话刷新(#3):新建/关闭会话时标签条的显隐改变了顶栏高度,但没人触发重排,标签条被压在终端视图下面,要进设置页再返回才恢复。现在 rebuildTabs 会立刻重排,顶栏也始终置于最前。

校验

文件 SHA256
Terminal_1.0.1_iphoneos-arm64.deb a86a02b76e2dcef204440ef3fed6f43ad3e32f443dafa596f2f63bcfdb48fc3e
Terminal_1.0.1.ipa 0e6145fc2959be98053196b169d4d2cb2ecf3bf81d64388f099018c6f4fd050d

重排引擎的定向回归(行数往返、列数往返、宽字符行尾换行)与固定种子的随机往返测试在 tests/test_vt.c,make test 173 项断言全过;这些测试在修复前的代码上必定失败。

App 图标提取自 macOS 内置的 Terminal.app,属 Apple 的美术资源,不在本项目 MIT 许可的授权范围内;源代码许可见 LICENSE。