Skip to content

Releases

Terminal v1.0.8

Choose a tag to compare

@FPS1024 FPS1024 released this 21 Sep 09:52

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

这一版修的是 tab:以前按下去没反应,现在能补全了,硬件键盘的 tab / shift+tab 也真正送进了 PTY。

安装

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

  • 文件:Terminal_1.0.8_iphoneos-arm64.deb
  • 包名:terminal
  • 安装位置:/var/jb/Applications/Terminal.app
  • 方式:Sileo / Zebra 里直接升级,或 dpkg -i Terminal_1.0.8_iphoneos-arm64.deb

装完由 Sileo 给出「重启 SpringBoard」按钮,点不点由你决定。

本版修复

  • 输入法还在组词时,屏幕上的字和 shell 里的命令行是对不上的 —— #4,4bc254b

    中文键盘组词(预编辑,带下划线的那串字母)时,屏幕上显示的字只画在 App 里,并没有
    送进 PTY。此时按 tab,shell 收到的只是一个 tab、命令行还是空的,补全自然没反应:
    屏幕上写着 pyt,shell 那边什么都没有。现在按 tab、^C、方向键这类功能键时,终端
    会先把预编辑内容上屏再发按键,两边保持一致。

  • 硬件键盘的 tab 根本到不了 App —— 4bc254b

    iOS 13.4 之后系统把 tab 当「焦点导航」键,没在 keyCommands 里显式声明的话 UIKit
    会直接吃掉,insertText: 也不会被调用。现在 tab / shift+tab 都注册成按键命令
    (分别发送 0x09 与 ESC [ Z),iOS 15 起再带上 wantsPriorityOverSystemBehavior
    抢在系统行为前面。

  • 快捷键条点按更跟手 —— 4bc254b

    快捷键条所在的 UIScrollView 关掉 delaysContentTouches,按下即发送,不用等滚动视图
    判定手势。

  • vt_key_encode 的 shift+tab 分支少拷了结尾的 NUL,顺手补上 —— 4bc254b

关于 tab 补全

补全是 shell 的能力,终端只负责把 0x09 原样写进 PTY:bash 与 zsh 都自带命令与文件名
补全,但被补全的命令必须真的在 PATH 里。若没有任何候选(例如设备上并没有装 python,
或者前缀有歧义),按 tab 不会有可见变化,最多响一声铃 —— 那是 shell 的正常行为,不是
终端把按键丢了。

验证

  • make test:177 项断言,0 failures(新增 tab / shift+tab / backtab 编码用例)
  • 本机真 PTY 探针(App 同一套 vt.c / pty.c):zsh 下 ec + Tab 补全为 echo、
    pyt + Tab 补全为 python3;bash 下 wh + Tab 按预期响铃(候选有歧义),说明
    按键确实到达了 shell

SHA256:b31358e420b255e226ac5fcc13eab754e9f27fe6c989312dbf1bd43865df6c3b

Terminal v1.0.7

Choose a tag to compare

@FPS1024 FPS1024 released this 20 Sep 16:45

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

这一版把「装完自动 respring」彻底改成「装完由 Sileo 给出重启按钮,你自己按」。

安装

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

  • 文件:Terminal_1.0.7_iphoneos-arm64.deb
  • 包名:terminal
  • 安装位置:/var/jb/Applications/Terminal.app
  • 方式:Sileo / Zebra 里直接升级,或 dpkg -i Terminal_1.0.7_iphoneos-arm64.deb

包名从 1.0.5 起是 terminal(更早是 com.malacaihongpi.terminal),新包用
Replaces: / Conflicts: 把老包顶掉,Sileo 里照提示走就行。

本版修复

  • 装完之后让 Sileo 给出「重启 SpringBoard」按钮 —— 3475cdf

    1.0.6 只是把 postinst 里的 killall -HUP SpringBoard 删掉,结果 Sileo 记的是
    finish:return,安装完只显示「完成」,并没有重启按钮 —— 光删是不够的。

    Sileo 的机制在它自己的源码里(Sileo/Backend/APT Wrapper/APTWrapper.swift):

    • 起 apt 时给它传 SILEO=6 1 与 CYDIA=6 1(配合 apt 的 Keep-Fds,fd 6 会留给
      dpkg 与维护者脚本),然后从 fd 6 上读 finish: 开头的行
    • finish:return → 「完成」,finish:reopen → 重启 Sileo,finish:restart /
      finish:reload → 「重启 SpringBoard」,finish:reboot / finish:usreboot → 重启设备
    • 点下去之后是 Sileo 自己执行 sbreload(DownloadsTableViewController.swift)

    所以 postinst / postrm 现在往那个 fd 写一行 finish:reload:装完由 Sileo 给出按钮,
    按下才重启。环境变量的值是 "6 1"(fd + 级别),只取前一段;fd 没开(比如手动
    dpkg -i)就安静跳过,不会往 stderr 吐 Bad file descriptor。

同时包含 1.0.6 的变更

  • postinst / postrm 删掉 killall -HUP SpringBoard —— 34bb75e

同时包含 1.0.5 的变更

  • deb 包名从 bundle id 改成 terminal —— f3c4b44

同时包含 1.0.4 的修复

  • -- 被 iOS 改写成别的字符(智能标点) —— cbf86fd

同时包含 1.0.3 的修复

  • zsh 里键入中文回显成乱码(<00ad> 之类) —— 61170e0

校验

文件 SHA256
Terminal_1.0.7_iphoneos-arm64.deb 386a4eedd4ae4aad29927679dbcbd277da6421ffd8f868222193b6742501da12

make test 173 项断言全过。

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

Terminal v1.0.6

Choose a tag to compare

@FPS1024 FPS1024 released this 20 Sep 16:16

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

这一版只改打包脚本:装完不再自己 respring。

安装

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

  • 文件:Terminal_1.0.6_iphoneos-arm64.deb
  • 包名:terminal
  • 安装位置:/var/jb/Applications/Terminal.app
  • 方式:Sileo / Zebra 里直接升级,或 dpkg -i Terminal_1.0.6_iphoneos-arm64.deb

从 1.0.5 起包名是 terminal(更早的版本叫 com.malacaihongpi.terminal),新包用
Replaces: / Conflicts: 把老包顶掉,Sileo 里照提示走就行。

本版变更

  • 装完不再自动 respring —— 34bb75e

    postinst / postrm 末尾原来各有一句 killall -HUP SpringBoard,进度条一走到头
    屏幕就自己黑一下重启,抢在用户前面动手。现在脚本只执行 uicache 登记(或注销)图标,
    SpringBoard 什么时候重新载入交给用户按 Sileo 提示的那个按钮 —— 和别的包一个节奏。
    装完日志里会多一行 Terminal: 图标已登记,重新载入 SpringBoard 之后出现,免得以为图标丢了。

  • 版本号 1.0.6(Makefile / Info.plist / mkdeb.sh / README)

同时包含 1.0.5 的变更

  • deb 包名从 bundle id 改成 terminal —— f3c4b44

同时包含 1.0.4 的修复

  • -- 被 iOS 改写成别的字符 —— cbf86fd
    输入视图漏关了 iOS 11 起新增的「智能标点」三项(smartDashesType /
    smartQuotesType / smartInsertDeleteType),它们默认开着,而且在字符送进 App
    之前就改写按键:-- 变成一个长破折号 —,直引号变弯引号,... 变 …。
    现在全部显式关掉,按键原样透传。

同时包含 1.0.3 的修复

  • zsh 里键入中文回显成乱码(<00ad> 之类) —— 61170e0
    pick_lang() 原来只看 locale 目录在不在,C.UTF-8 / zh_CN.utf8 在 Darwin 上
    其实没有数据,名字一无效 shell 就停在 C locale,zsh 的 ZLE 掉进单字节模式。现在改成
    直接问 libc(newlocale + wcwidth_l),并把 LANG / LC_CTYPE / LC_ALL 一起
    设成真正可用的那个。

校验

文件 SHA256
Terminal_1.0.6_iphoneos-arm64.deb 70ea257f62141ae996939fc1c808a37ce365addbbd72cddbc1ade1be9d9ff635

make test 173 项断言全过。

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

Terminal v1.0.5

Choose a tag to compare

@FPS1024 FPS1024 released this 20 Sep 16:04

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

这一版只改打包:deb 的包名(Package:)从 bundle id com.malacaihongpi.terminal 改成 terminal。

安装

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

  • 文件:Terminal_1.0.5_iphoneos-arm64.deb
  • 包名:terminal
  • 安装位置:/var/jb/Applications/Terminal.app
  • 方式:Sileo / Zebra 里直接升级,或 dpkg -i Terminal_1.0.5_iphoneos-arm64.deb
  • postinst 会自动执行 uicache 并刷新 SpringBoard

从 1.0.4 及更早版本升级(包名变了,注意一下)

老包的包名是 com.malacaihongpi.terminal,两边落地的是同一个
/var/jb/Applications/Terminal.app,所以新包声明了:

Replaces: com.malacaihongpi.terminal
Conflicts: com.malacaihongpi.terminal
  • Sileo / Zebra:直接装新包,它会提示并顺手把老包卸掉,照做即可
  • 手动 dpkg:先 dpkg -r com.malacaihongpi.terminal,再 dpkg -i 新包,
    否则 dpkg 会以「想覆盖别人拥有的文件」为由拒绝安装

本版变更

  • deb 包名改成 terminal —— f3c4b44
  • 版本号 1.0.5(Makefile / Info.plist / mkdeb.sh / README)

同时包含 1.0.4 的修复

  • -- 被 iOS 改写成别的字符 —— cbf86fd
    输入视图漏关了 iOS 11 起新增的「智能标点」三项(smartDashesType /
    smartQuotesType / smartInsertDeleteType),它们默认开着,并且在字符送进 App
    之前就改写按键:-- 变成一个长破折号 —,直引号变弯引号,... 变 …。
    现在全部显式关掉,终端里的按键原样透传。

同时包含 1.0.3 的修复

  • zsh 里键入中文回显成乱码(<00ad> 之类) —— 61170e0
    pick_lang() 原来只看 locale 目录在不在,C.UTF-8 / zh_CN.utf8 在 Darwin 上
    其实没有数据,名字一无效 shell 就停在 C locale,zsh 的 ZLE 掉进单字节模式。现在改成
    直接问 libc(newlocale + wcwidth_l),并把 LANG / LC_CTYPE / LC_ALL 一起
    设成真正可用的那个,rc 里残留的 LANG=C.UTF-8 也压不住它。

校验

文件 SHA256
Terminal_1.0.5_iphoneos-arm64.deb 2f8b87c1e4ab1743ef139f215c94c5b9d9373abd69b4c861c87528af181b6e4b

make test 173 项断言全过。

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

Terminal v1.0.4

Choose a tag to compare

@FPS1024 FPS1024 released this 20 Sep 12:41

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

这一版修的是「连按两个 -,第二个不按原样进去」。

安装

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

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

从 1.0.2 / 1.0.3 直接覆盖安装即可,bundle id 没变,设置与会话不受影响。

本版修复

  • -- 被 iOS 改写成别的字符 —— cbf86fd

    输入视图原来只关了 autocorrection / spellChecking / autocapitalization,漏掉了 iOS 11 起新增、和它们并列的智能标点三项。这三项默认是 Default(跟着键盘类型走,通常是开着的),而且它们在字符送进 App 之前就把按键改写掉:

    你按的 实际送进来的
    - - 一个长破折号 —
    " 弯引号 “ / ”
    ... …

    终端要的是原样透传,所以 smartDashesType / smartQuotesType / smartInsertDeleteType 现在全部显式关掉。关掉之后 -- 就是两个 -。

  • 顺带把 replaceRange:withText: 补完整:系统要改写的范围正好紧贴光标时(智能标点、听写纠正、输入法改写都是这种情况),先在 shell 里把它们退掉再打新内容,终端里不会再多留一份旧字符串;范围不紧贴光标的仍然不动,免得凭空删掉命令行上的东西。

同时包含 1.0.3 的修复

  • #locale zsh 里键入中文回显成乱码(<00ad> 之类) —— 61170e0
    pick_lang() 原来只看 locale 目录在不在,C.UTF-8 / zh_CN.utf8 这些在 Darwin 上其实没有数据,名字一无效 shell 就停在 C locale,zsh 的 ZLE 掉进单字节模式。现在改成直接问 libc(newlocale + wcwidth_l),并把 LANG / LC_CTYPE / LC_ALL 一起设成真正可用的那个,rc 里残留的 LANG=C.UTF-8 也压不住它。
  • out/ 里从此只放一个 deb,不再产出 ipa —— 32e7ebc

校验

文件 SHA256
Terminal_1.0.4_iphoneos-arm64.deb a26e6431adc1fb097b6a54bd641cc2d21e1ca1fef130fb0a8c7fabf1f05941e2

make test 173 项断言全过。

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

Terminal v1.0.3

Choose a tag to compare

@FPS1024 FPS1024 released this 20 Sep 12:35

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

这一版修的是「中文能打进去、shell 里回显的却是乱码」:问题出在 shell 的 locale 上,跟输入法本身没关系。

安装

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

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

从 1.0.2 直接覆盖安装即可,bundle id 没变,设置与会话不受影响。

本版修复

  • zsh 里键入中文回显成乱码(echo ��<00ad>�<0096><0087>) —— 61170e0

    pick_lang() 原来靠 stat /usr/share/locale/<name> 目录在不在来挑 locale,可这跟 libc 认不认这个名字是两回事:C.UTF-8、zh_CN.utf8 在 macOS 与 iOS 上都没有数据,最后兜底那句 "en_US.UTF-8" 更是从来没验证过。名字一旦无效,shell 就停在 C locale,zsh 的 ZLE 掉进单字节模式,把中文按 <00ad> 这种记法回显出来;而此时命令其实已经正确执行,cat 也完全正常(那是内核行规程的回显,不经过 ZLE),所以看起来很像"输入没送进终端"。bash 的 readline 会把字节原样吐出来 —— 这就是同一个环境里 bash 看着正常、只有 zsh 不正常的由来。

  • 现在改为直接问 libc:newlocale(LC_CTYPE_MASK) 建得出来、且 wcwidth_l(0x4E2D) == 2,才算这个 locale 可用,按 zh_CN.UTF-8 → en_US.UTF-8 → UTF-8 挑。并把 LANG / LC_CTYPE / LC_ALL 一起设成这个真正可用的名字:LC_ALL 优先级最高,所以 ~/.zshrc 里残留的 export LANG=C.UTF-8(甚至 LC_CTYPE=C.UTF-8)也不会再让 zsh 掉回单字节模式;而如果设备上只有 LC_CTYPE 可用(Darwin 的 UTF-8 就是这种),就只设 LC_CTYPE,免得 setlocale(LC_ALL, "") 整体失败反而更糟。

其他变更

  • out/ 里从此只放一个 deb(make ios 的 App 挪到 build/Terminal.app),不再产出 ipa —— 32e7ebc
  • $TERM_PROGRAM_VERSION 改为构建时注入,跟着版本号走(原来写死 1.0)
  • 不用再手动 export LANG=C.UTF-8(C.UTF-8 是 Linux 的东西,Darwin 上没有),README 已补上说明

校验

文件 SHA256
Terminal_1.0.3_iphoneos-arm64.deb 2cc7e11d76cd87d5a54b2d0a2d3b3f3d5125f824fd0c2f0c04b74fd858212f0a

复现与验证都在真 shell 上做的:起 /bin/zsh 逐字节键入 echo 中文,LANG/LC_CTYPE/LC_ALL=zh_CN.UTF-8 与「只设 LC_CTYPE=UTF-8」两种情况回显与输出均正常,只设 LANG=C.UTF-8(旧行为)则复现出上面的乱码。make test 173 项断言全过。

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

Terminal v1.0.2

Choose a tag to compare

@FPS1024 FPS1024 released this 18 Sep 11:19

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

1.0.1 修好了中文输入法的组词(预编辑)流程,但选候选项上屏这一步仍然是丢的:英文能打,拼音候选点下去终端里什么都没有。这一版补上。

安装

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

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

ipa(TrollStore 等)

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

本版修复

  • 中文候选词上屏(#1 后续):有的中文输入法上屏时只调用 unmarkText、不调用 insertText:,原来我们把预编辑串直接清掉,等于把这串字丢了。现在 unmarkText 会把内容记下来、推到本轮 RunLoop 末尾补发;如果紧接着走的是标准入口 insertText:,insertText: 会先取消这份待发内容,所以不会重复发送。
  • insertText: 里单个非 ASCII 字符(中文、emoji)改为直接按 UTF-8 送出,不再走按键编码;ASCII 与控制键行为不变。
  • 补上 setAttributedMarkedText:selectedRange:(UIKit 有时走带属性的那个入口),textInRange: 不再给输入法返回 nil。

同时包含 1.0.1 的修复

  • #1 无法输入中文(预编辑文本走完整的 UITextInput 流程)—— 4d5703f
  • #2 终端字符串间距异常(reflow 丢换行、多空格)—— b0539b1
  • #3 终端刷新异常(标签条显隐没触发重排)—— 962651b

校验

文件 SHA256
Terminal_1.0.2_iphoneos-arm64.deb 640ee98dda9c6ed5a49492f3fff4101bc740dc798af8ad066688a13a30d30770
Terminal_1.0.2.ipa d193f6a871f98fc3618dfae29f8deb5182006373fbc31804ac172e332c3ccc3e

重排引擎的定向回归与固定种子的随机往返测试在 tests/test_vt.c,make test 173 项断言全过。

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

Terminal v1.0.1

Choose a tag to compare

@FPS1024 FPS1024 released this 18 Sep 10:33

越狱 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。

Terminal v1.0.0

Choose a tag to compare

@FPS1024 FPS1024 released this 17 Sep 15:18

面向越狱 iOS 设备的终端 App:原生 App 形态、带主屏幕图标,最低支持 iOS 12.0。终端仿真核心(VT100/xterm、UTF-8、中文与 emoji 列宽、256 色与真彩色、回滚与 reflow)以纯 C 实现,界面层为 Objective-C + UIKit —— 不使用 SwiftUI,也不需要 Swift 运行时。

安装

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

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

ipa(TrollStore 等)

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

亮点

  • 中文输入:完整实现 UITextInput,走系统输入法与候选条,预编辑文本只参与渲染、不写入 PTY
  • 中文显示:CoreText 级联字体链 + 字距校正,中英文与 emoji 严格按列对齐
  • 粘贴:默认括号粘贴,远端未启用时自动把换行转成回车,多行内容粘贴前确认
  • 中文选择:双击选词、三击选行、长按后拖动扩选
  • 多会话标签、快捷键条、硬件键盘、鼠标上报(1000/1002/1003)
  • 自动探测 /var/jb,优先使用 rootless 前缀下的 Shell

本版修复

  • 修复终端文字上下颠倒:UIKit 的绘制上下文是 y 向下,CoreText 需要 scale(1, -1) 的文字矩阵

校验

文件 SHA256
Terminal_1.0.0_iphoneos-arm64.deb 08237faa1eb2df50051cfa757958a3dd0c038570b04bdd3a0fd71c551401674e
Terminal_1.0.0.ipa 5ab7a3e01a48230a0d407bac553328767c7f57ce4782556ac7c1e5dfdc8a8650

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