Repository navigation
Releases
Preview 13 (217b496)
feat(terminal): add a text box, take keys raw again, end a session with its last tab
The terminal's keyboard is a raw TYPE_NULL field again, because a text
field let Gboard autocorrect what went to the pane. "Type in a text box"
in the actions sheet opens a field with the keyboard's autocorrect,
suggestions and voice input. Send pastes the text and presses Return,
and images the keyboard inserts there are sent as files.
Closing a session's last tab, or the last pane of its last tab, ends the
session, as on the desktop.
Preview 12 (d319fad)
ci: pad preview tags so the newest release is listed first
GitHub lists the releases of one day by tag name as text, so
preview-11 sorted below preview-6. Tags are now preview-00012 and so
on. The updater already reads the padded number.
Preview 11 (58a6943)
feat(terminal): send files and images to the computer
Send files in the pane menu, images and stickers from the keyboard, and
Paste with a file on the clipboard upload through Rex's upload_begin and
rex.data.bytes.v1 streams. The pane gets the paths as a paste. A pill
over the terminal shows progress and can stop the send.
Preview 10 (225bc25)
feat: update from previews, load Home honestly, and use the full keyboard
Release builds find newer previews on GitHub. A dot on the settings
button and a row at the top of Settings offer the update, which
downloads into an install session and hands it to Android.
Home lists a host's sessions only while it is online, and shows
placeholder rows while it connects, so it no longer shows a list from
before a drop.
The terminal is a plain text field without suggestions for the input
method, so keyboards offer voice input and gesture typing and show no
number row, while characters still arrive one at a time.
Acknowledgements and the README credit RexPocket for the idea.
Preview 9 (0e62e9a)
feat: reach the tailnet through the Tailscale app, and keep sheets dimmed
A new setting on the Tailscale screen sends tailnet hosts through the
phone's own network, for phones that already run the Tailscale app. Rax's
own node then stops, and keeps its keys.
Bottom sheets draw their dim in the activity's window, so it stays while
the sheet is dragged and fades only when the sheet leaves.
Preview 8 (1cbeaa6)
fix: show connection problems only when they last, and fix bad UI patterns
Connections:
- retryNow() starts the count again, and the app calls it on Retry, when
it comes to the foreground and when the network changes, so Retry shows
a spinner at once and an old error does not come back on open. - A dropped or refused connection shows as a problem once it lasts 3 s;
a slow attempt shows when it ends; a TLS failure, a refusal or a server
that is not Rex shows at once. - A wake from before a connection no longer skips the wait after it.
- HostState.loaded: Home waits for the first views and pane facts, up to
2 s, and keeps a host's sessions on screen during a short reconnect.
Home and other screens:
- A dot, spinner or ring before the host's name, and a line of text only
for a host with a problem. - New session, Tailscale sign-out, split and new tab show progress and
run once at a time. - Background alerts shows the saved choice, with Allow notifications when
notifications are off. - The host editor checks the address when the user leaves the field, and
text fields take taps on their whole row. - The Tailscale screen keeps the Rex servers it found while it is in the
back stack, and shows no raw error text. - Fonts start from the cache, so screens do not jump while they load.
- Screen reader labels for keys, sliders, theme tiles and pane chips.
Terminal:
- A message over the last screen takes the touches, turns the keys off
and closes the keyboard. - The key bar fits narrow phones, and pane chips show the user's names.
- A screen Rex cannot send shows a message with Retry, not a blank pane.
- Closing a pane moves to the next one from the current view.
- Dropped input, waiting tabs in the tab menu, a jump-to-bottom button,
Sign in and Allow on the pane's message, and copy feedback before
Android 13. - A notification for the open session switches its screen to the pane.
Preview 7 (13bf1e1)
feat: run on Android 10 and later
Lower minSdk from 31 to 29 for the app, :ghostty and :tailnet, and build
the native libraries for API 29.
- Before Android 13 there is no notification permission to ask for, so
turning on alerts opens the system notification settings. - Check ForegroundServiceStartNotAllowedException and set the app's night
mode only on Android 12 and later. - Add full-backup rules for Android 11 and earlier, which keep the
tailnet state and imported fonts out of backups. - The Go log level check uses __android_log_is_loggable on Android 11 and
later, and logs INFO and above before that.
Preview 6 (f5cbe67)
fix: fixes from an app-wide review
An app-wide review with several agents, then a second review of the
fixes. Among the changes:
- Ownership, writes, sizes and colours wait until the connection has
attached the session, so Rex does not refuse them after a reconnect. - The data socket reads with a 16 MiB budget, so a slow restore does
not stop the pongs that keep it open. - Keys left from a paste go out before keys typed after a Retry.
- A Rex restart drops the pane facts Rax kept, and waiting
notifications go away for sessions Rax cannot attach. - The fallback screen checks that the pane kept its size and times its
drawing from a measured round trip. - Selection handles use the whole selection, also off screen, and a
dragged handle scrolls past the bottom edge. - The emulators send programs no replies, as Rex's terminal answers
them. Links open for http, https and mailto only. Pinch zoom sets the
size when the fingers lift. Copies over 256 KiB are refused. - The tailnet node stops 60 s after nothing needs it.
- Native fixes in the JNI bridge, snapshot text and Kitty image limits.
- Tests for the protocol client, the stream, the parser, the screen
read, permissions and the terminal library.
Preview 5 (9cf0bb8)
doc: rex is for multiple platforms
Preview 4 (1d93adb)
fix(terminal): tell Rex the pane's colours
Rax never sent its colours to Rex, so Rex told programs that asked that
the terminal used its own colours and a dark scheme. With a light theme,
programs such as Codex and Neovim picked dark colours. Rax now sends the
active terminal colours and the light or dark scheme with set_theme when
it opens a pane, on each new data connection, and when the theme
changes.