Repository navigation
Releases: Michi4/tabby-android
Releases · Michi4/tabby-android
Release list
v1.4.17
Tabby Android v1.4.17
Suggestion bar freedom + auto-connect + legal
- No more dead space: the suggestion bar collapses to zero height when empty (the fixed 36dp strip is gone) and has a per-tab toolbar toggle; Settings stays the global default. Safe because resizes are loss-neutral since 1.4.16.
- Play connects automatically: tabs with a saved key/password connect once on open — no second Connect tap, no dialog. Tabs without creds (or after a failure) stay manual; never a loop.
- Legal: Settings → About → Open-source licenses with full Apache-2.0 + JSch BSD texts and per-library copyrights; README notes third-party terms and no-tracking.
- Verified: 255 unit tests green, lint clean, suggestion collapse/toggle + zero-tap connect + licenses dialog all green on emulator.
v1.4.16
Tabby Android v1.4.16
Terminal touch + resize-loss-neutrality (all verified live over real SSH)
- No more prompt duplication on keyboard toggles: the cursor is now glued to its physical line across resizes (it used to teleport, so readline redraws landed wrong) + trailing blank filler trimmed on shrink. Live test: exact prompt inventory across fresh + full-screen phases.
- Tap: glides the cursor on plain shell, sends real SGR/X10 clicks in vim/opencode-style apps.
- Scroll: finger drags become wheel notches inside alt-screen mouse apps.
- Gboard spacebar-swipe moves the remote cursor; hold-to-repeat on key rows (tap still sends once, Enter excluded).
- Parser hardened: echoed mouse bytes are swallowed, never executed as screen deletes.
- stdin write failures are loud now (logcat + error state) instead of silently eating keystrokes.
- 255 unit tests pass, lint clean, 3/3 live instrumentation tests green.
v1.4.15
Tabby Android v1.4.15
Vault: number-damaged salts now RESCUE instead of failing
- When
keySalt/iv/contentsloads as a number but the literal line text is intact valid hex/base64, the app recovers it straight from the file text — an unquoted-but-true salt now OPENS your vault. - Only genuinely destroyed text (
.inf,1.2e+35) still fails, with the exact field named and backup guidance. - Decoding unified: whitespace-tolerant hex, strict-shape base64 (garbage stays a format error, never a misleading wrong-passphrase).
- 48 vault tests pass (incl. full rescue proof: crafted vault with Double-loaded salt opens on pull, round-trips on push); full suite 237 tests, 0 failures.
v1.4.14
Tabby Android v1.4.14
Vault: from bare Invalid vault to exact diagnosis
- Every unusable vault block now reports WHY (field name + detected type, never secret values). A number-damaged
keySalt/iv(12e34…/.inf) tells you the config was hit by a YAML number conversion and must be restored from backup. - Tolerant where safe: hex ignores whitespace, base64 opens wrapped/folded across lines, version accepts numeric strings. Garbage stays a format error, never a misleading wrong-passphrase error.
- Pull/push stay fail-closed: damaged vaults refuse with the specific reason instead of empty pulls or cleartext-merge pushes.
- 52 sync unit tests pass, 0 failures.
v1.4.13
Tabby Android v1.4.13
Vault YAML-safety: fail closed, never destroy the vault
- Hex salts like
12e34…were dumped unquoted; Tabby desktop (js-yaml) reads them as float/Infinity and its next save persistskeySalt: .inf, permanently destroying the vault. Our dumps now force single quotes aroundkeySalt/iv/contentsscalars. - Generated salts/IVs are retried until the hex contains one of
a,b,c,d,f, so our own output is always YAML-safe. - A
vault:block that is present but unparseable now fails closed (Invalid vault) on both pull and push — never mistaken for "no profiles", never merged over with cleartext. - Unit tests pass (58 sync tests, 0 failures).
v1.4.12
Tabby Android v1.4.12
Keyboard toggle: no more 500ms freeze
- The 1.4.11 debounce held every resize back 400ms, so toggling the onscreen keyboard froze the terminal before it redrew.
- Isolated resizes (keyboard toggled after idle) now go out instantly on the SSH network worker: zero lag, zero duplication.
- Rapid bursts (keyboard slide animation frames, rotation) still collapse into one leading + one settled request: a 10-resize burst adds at most one prompt line.
- Verified live against OpenSSH, session stays connected, unit tests pass.
v1.4.11
Tabby Android v1.4.11
Terminal typing fixed
- Root cause of the duplicated prompt lines while typing: every viewport change (keyboard, suggestion chips, key rows) sent an immediate SIGWINCH, and the server reprints the prompt + current line for each one.
- PTY window-change requests are now debounced: typing churn coalesces into at most one settled resize. Verified live: 20 rapid resizes produce zero prompt duplication (previously 4 duplicates from 7 resizes).
- The suggestion bar now has fixed height: chips fade in/out without resizing the terminal, so no SIGWINCH fires per keystroke.
- Verified end-to-end through the real terminal UI: a typed command executes exactly once, single prompt, session stays connected.
No other areas touched — settings work stays paused until the terminal is perfect.
v1.4.10
Tabby Android v1.4.10
SSH terminal
- Fixed live disconnects when typing under the real terminal UI: PTY window-change requests are now serialized on a dedicated SSH network worker instead of racing channel I/O from UI threads.
- Verified against live OpenSSH: direct/delayed keystroke tests and real typed-command execution stayed connected; server-side protocol errors are gone.
Folders/search
- Removed the fake 'null' folder: JSON null groups stay null, and blank/literal-null group ids are treated as ungrouped.
- Search now expands collapsed folders while a query is active, so matches inside them are visible.
- Ungrouped hosts remain listed after folders at the bottom.
Verified with JVM unit tests, debug build, live-SSH UI regression runs, and signed release APK.
v1.4.9
Tabby Android v1.4.9
1.4.6–1.4.8 were pulled before shipping; this release is the first build that ships all of their fixes.
Phones on v1.4.5 can upgrade directly to this APK.
Terminal
- Real scrollback: history now renders above the live screen, finger scrolling works, and Follow behaves predictably.
- Input integrity: suggestions/macros no longer duplicate typed prefixes; disconnected tabs refuse input; fast typing keeps FIFO order.
- Unicode: surrogate pairs and wide characters are added/erased as whole code points.
- Paste honors bracketed paste (DEC private mode 2004) when the server supports it.
Sync safety
- Partial sync failures no longer wipe hosts from failed or locked accounts.
- Device-only SSH-key assignments and port forwards survive successful pulls.
- Corrupt or non-mapping remote YAML now fails closed instead of being mistaken for an empty config.
Updater + settings
- Update downloads no longer auto-launch the installer; installs require an explicit tap.
- Single daily update check; concurrent downloads are refused.
- Settings switches flip instantly, per-tab terminal prefs survive rotation, and corrupt prefs self-heal instead of crashing.
Verified with 206 JVM tests (4 skipped unless live SSH env is set), 9 on-device instrumented tests, lint, debug build, and release APK signing.
v1.4.5
Changelog
1.4.5 (versionCode 10)
TUI rendering perfection + data races (the since-1.3.0 TUI bug, finally pinned)
- Cut-off logos, wrapped tables: Compose
Textwas soft-wrapping the
80-cell buffer lines at its own width (worse at large fonts). Fixed with
softWrap = false+ horizontal scroll — buffer lines map 1:1 to visual
rows (Termius never wraps). Proven with a replayed captured opencode frame. - Robustness: APC/SOS/PM strings (kitty graphics) swallowed; tmux-wrapped
DCS unwrapped;List.removeLast()crash on real phones fixed. - CJK/emoji 2-column: wide glyphs advance 2 cells, filler skipped, wraps
whole (like xterm) — no more misaligned btop bars.
Adaptive viewport
- Real character cells are measured; buffer + remote pty resize together
(SIGWINCH) on font, key-row, keyboard, fullscreen and rotation changes.
Macros, history & suggestions (the big UX win)
- Fish-style suggestion chips learned from commands you ran (secret-looking
lines never recorded), frequency-ranked, toggleable in Settings, filled
for review then submitted normally. - Macros: name + command (both encrypted), tap the row to fill, ▶ to run;
fast-typing now dispatches newline per character — deleting on an empty
line sends DEL correctly on every keyboard. - Fixes: suggestions now not suppressed for short prefixes like `l` (fixed
to 2), demo-shell send race fixed (serializes disciplined sends; lost
markers repro → hammering test), and fill now transmits (nothing vanishes
on submit).