Skip to content

Releases: Michi4/tabby-android

v1.4.17

Choose a tag to compare

@Michi4 Michi4 released this 23 Sep 09:39

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

Choose a tag to compare

@Michi4 Michi4 released this 23 Sep 04:04

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

Choose a tag to compare

@Michi4 Michi4 released this 22 Sep 20:40

Tabby Android v1.4.15

Vault: number-damaged salts now RESCUE instead of failing

  • When keySalt/iv/contents loads 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

Choose a tag to compare

@Michi4 Michi4 released this 22 Sep 20:10

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

Choose a tag to compare

@Michi4 Michi4 released this 22 Sep 17:36

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 persists keySalt: .inf, permanently destroying the vault. Our dumps now force single quotes around keySalt/iv/contents scalars.
  • 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

Choose a tag to compare

@Michi4 Michi4 released this 16 Sep 07:46

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

Choose a tag to compare

@Michi4 Michi4 released this 16 Sep 07:36

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

Choose a tag to compare

@Michi4 Michi4 released this 16 Sep 07:21

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

Choose a tag to compare

@Michi4 Michi4 released this 15 Sep 20:16

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

Choose a tag to compare

@Michi4 Michi4 released this 15 Sep 06:51

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 Text was 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).