Skip to content

v1.5.0 - #73

Merged
LukeGus merged 93 commits into
mainfrom
dev-1.5.0
Sep 9, 2026
Merged

LukeGus merged 93 commits into
mainfrom
dev-1.5.0

Conversation

@LukeGus

@LukeGus LukeGus commented Sep 9, 2026

Copy link
Copy Markdown
Member

Added home screen widgets, expanded the file manager with pinned files and a trash view, added command history and Wake-on-LAN, and fixed many terminal, keyboard, and login bugs.

Update Log:

  • Added home screen widgets for iOS and Android
    • Quick connect, server status, and snippet widgets
    • Pick which hosts a widget shows and which tab it opens
  • Added command history to the terminal
  • Added Wake-on-LAN with a new MAC address field on hosts
  • Added pinned files and folder shortcuts to the file manager
  • Added trash view to restore deleted files
  • Added file compression from the file manager
  • Added file downloads through the share sheet
  • Added tunnel editor to the host form
  • Added configurable key repeat for the custom keyboard
  • Added snippet reordering and snippet folder renaming
  • Added change password and delete account to settings
  • Added server alerts to the hosts screen
  • Bundled Nerd Fonts, xterm, and Guacamole locally so they work offline

Bug Fixes:

  • Login sessions no longer expire after 24 hours
  • Mobile sessions now survive an app restart
  • OIDC callbacks now route correctly instead of hitting a 404
  • Login fields no longer sit behind the software keyboard
  • Terminal bottom row no longer clipped, rows stay in sync with the visible area
  • Touch scrolling now works in TUI apps
  • Chevron down now hides the keyboard
  • Paste action stays available on iOS
  • Hardware keyboard keys captured correctly on iOS and routed directly on Android
  • Various Android IME fixes (fast input, suggestions disabled, safe composition)
  • Input preserved after backspace on iOS
  • No more false heartbeat disconnects on iOS
  • Keepalive failures are now surfaced instead of failing silently
  • Sessions disconnect properly on unmount and no longer overlap polling requests
  • Back navigation works from sessions and snippets on Android
  • Docker console now connects instead of being refused
  • Remote desktop protocol passed correctly, Android touch jitter tolerated
  • Host endpoints now resolve behind proxies
  • Clearer error when an Android device cannot reach a local IP
  • Server stats widgets fit their container properly
  • Android input and file manager fields now vertically centered

ZacharyZcR and others added 30 commits August 13, 2026 04:26
Closes Termix-SSH/Support#791

Co-authored-by: Benjamin Tausend <benjamin.tausend@googlemail.com>
* feat: implement key repeat for virtual keyboard

Repeat arrow keys, backspace, delete, space, Page Up, and Page Down on long press.

Create repeat interval and initial delay settings to control the long press.

* style: increase Input clickable surface area for focus

Apply padding directly to TextInput instead of container View

* fix(keyboard): stabilize repeat behavior

---------

Co-authored-by: Marcio Rinaldi <me@marciorinaldi.com>
* fix: improve terminal IME handling

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: autolink local expo modules

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: align ime input view module definitions

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: update hardware keyboard handler for swift

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: relax ios key press detection

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: scope ios autolinking to ime module

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: connect Android terminal IME module

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(terminal): integrate native IME with current sessions

---------

Co-authored-by: Tink <tink@Hackint0sh.local>
Co-authored-by: Claude <noreply@anthropic.com>
TUI apps (Claude Code, Codex, vim, htop) draw their bottom input row at
the pty's last row. The WebView was sized by marginBottom so it spans only
the visible area, but xterm computed rows from #terminal's 100vh CSS height,
which WKWebView reports stale after a frame resize. The pty told the shell
too many rows, so TUIs painted their input row behind the keyboard bar.

Measure the real visible height with onLayout, push it into the WebView
(debounced to avoid resize storms), pin #terminal's height to it, then fit
and re-send the pty resize. Re-apply on terminalReady and prefer the pinned
height in nativeFit/resize over the stale 100vh.

Co-authored-by: Tink <tink@Hackint0sh.local>
Co-authored-by: Claude <noreply@anthropic.com>
Adds Quick Connect, Server Status and Snippets widgets on both platforms,
plus a Snippets shortcut in the Hosts header.

Widgets never talk to the server: the app publishes a JSON snapshot into
shared storage (App Group UserDefaults on iOS, SharedPreferences on
Android) and the widget renders only that. No credentials leave the app,
and a corrupt or future-versioned payload falls back to the signed-out
card instead of breaking the launcher.

Tapping a host opens a terminal session on it. Tapping a snippet resolves
it in the app and asks which host to run it on, then executes it through
the existing /snippets/execute endpoint; the last target is remembered and
offered first. Only the snippet id travels in the deep link.

- app/widgets                 payload contract, snapshot builder,
                              publisher, preferences, deep links, run sheet
- modules/termix-widgets      native bridge, WidgetKit extension sources,
                              Android providers and layouts
- plugins/withTermixWidgets   creates the iOS extension target on prebuild
- scripts/verify-widget-contract.cjs
                              fails when the TypeScript, Swift and Kotlin
                              decoders drift apart

Settings gains a Widgets section (publish on/off, show addresses, include
offline, pinned only, snippets, command preview). Signing out clears the
snapshot. Sort and filter move beside the Hosts search field to make room
for the new shortcut.

The iOS extension targets iOS 16 and needs the group.<bundleId>.widgets
App Group enabled on both identifiers.
LukeGus and others added 28 commits September 7, 2026 01:34
@LukeGus
LukeGus merged commit c598d4d into main Sep 9, 2026
1 of 3 checks passed
@LukeGus
LukeGus deleted the dev-1.5.0 branch September 9, 2026 02:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants