Repository navigation
v0.2.1
中文
修复
- 软键盘下的终端:TUI 的输入框不再被键盘盖住。原因是 daemon 在窗格比请求的尺寸大时
从左上角裁剪、且不会改动窗格本身的尺寸 —— 键盘一弹出,请求的行数跟着变矮,丢掉的
正好是光标所在的那一端。现在请求按窗格自己的行数发出,可视窗口按底部对齐,
于是键盘弹出不再产生任何往返,窗格最后一行永远贴在按键条上沿。 - 退格键能删掉 TUI 里已输入的文本。原来输入框每次按键后就被清空,退格在 IME 看来
"没有变化",于是一个字节都不会发给终端 —— 整会话退格皆死。现在字段常驻两个用户看不见的
空格作哨兵,比它长是打字、比它短是退格(每删一个字符发一个 DEL)。 - 终端画面不再只剩三行。本地缓冲区没有跟着 daemon 实际渲染的几何走,一直停在默认的
80×24,底部对齐的窗口算术于是一行都画不出来。现在以帧声明的尺寸为准,只在真的变了时才
resize(xterm 的 resize 会重排内容)。 - 已配对一台手机后,第二台永远配不上。等待逻辑把
hdp-pocket注释的出现当成了
"我的手机到了",而那是所有手机共用的注释 —— 于是它在第一条轮询就误判成功、删掉自己的
一次性密钥,扫码的人拿到的只能是"配对码已经失效"。现在按启动前的快照做差集,
并且一次性密钥在__exchange里被用掉的瞬间就删除。
新增
- 中文/日文等组合输入不再泄进终端:IME 组词期间一个字节都不发,提交时才发出去。
- 硬件键盘(蓝牙键盘,或
adb注入的按键)也能打字、退格、回车 —— 这条路不经过 IME,
自写的输入客户端必须自己接。
其他
- 新增
CHANGELOG.md(就是这份),并且 release 的正文改为取自它:条目缺失时发布任务
直接失败,而不是发一个什么都不说的 release。
English
Fixed
- The terminal under a soft keyboard: a TUI's composer is no longer covered. The daemon
crops a pane from its top-left when the requested size is smaller than the pane and never
resizes the pane itself — so opening the keyboard shortened the request and threw away
exactly the end the cursor lives at. The grid is now asked for at the pane's own height
and the visible window is anchored to the bottom, which also removes every round trip
the keyboard used to cost. - Backspace deletes again. The composer cleared its field after every keystroke, so a
backspace was "no change" to the IME, no byte reached the terminal, and deleting was dead for
the whole session. The field now keeps two invisible spaces as a sentinel: longer is typing,
shorter is a backspace (one DEL per character deleted). - The screen is no longer three lines. The local buffer never followed the geometry the
daemon actually rendered — it stayed at xterm's default 80×24, and the bottom-anchored window
arithmetic could not draw anything. The model now matches the frame's declared size, and is
resized only when it really differs (xterm's resize reflows content). - A second phone could never pair on a machine that already had one. The wait treated the
hdp-pocketcomment — which every paired phone carries — as "my phone has arrived", reported
success on the first poll, deleted its own one-time key, and left the person scanning a code
that could only say "expired". It now diffs against a snapshot taken before the key was
written, and the one-time key is removed the instant__exchangeuses it.
Added
- Composing input (Chinese, Japanese) no longer leaks into the terminal: nothing is sent
while the IME is composing; the committed text is sent once. - Hardware keyboards (Bluetooth, or anything driving the phone through
adb) can type,
backspace and press Enter — that path never touches the IME, so a hand-written input client
has to handle it itself.
Chores
- Added
CHANGELOG.md(this file), and a release body is now taken from it: a tag with no
entry fails the release job instead of publishing a body that says nothing.
Installing
Android — adb install -r HerdrPocket-<version>-arm64-v8a.apk
(use armeabi-v7a for a 32-bit device, or the universal APK if you
do not know which one you have).
macOS — open the .dmg and drag the app out. The build is
unsigned, so the first launch needs either a right-click → Open,
or:
xattr -d com.apple.quarantine "/Applications/herdr_pocket.app"
Full Changelog: v0.2.0...v0.2.1