github mrndstvndv/termux-ghostty v3.0.0
Release v3.0.0

latest releases: v4.13.1, v4.13.0, v4.12.0...
3 months ago

Changelog

Release: v3.0.0

Features

  • review: add full file view and font size scaling (ef7d71a2)
  • ci: add compose-app release builds and module change detection (37aef5e9)
  • compose-app: update foreground session service and notification handling (925180ef)
  • extrakeys: port shift support and macro improvements to app (b9199a45)
  • keyboard: add unconditional soft keyboard toggle on tap (0261e68e)
  • terminal: Add IME composition delta tracking and remove resize debounce (e362764b)
  • local: add startup command support for local terminal (355906bc)
  • local-terminal: add local shell support with auto-navigate on session exit (280169d4)
  • nav: migrate to Navigation 3 and add settings screen (162bb231)
  • compose-app: forward touch as mouse events to terminal TUI, fix selection handles (84344377)
  • terminal: port terminal rendering to dual-layer compose architecture (0e736fb5)
  • keyboard: support Kitty keyboard protocol for Ctrl+Shift+Letter (60851c6e)
  • ui: add option to use custom font in whole UI (aaf68ee7)
  • build: upgrade project to AGP 9.3.0, Gradle 9.5.0, and compileSdk 37 (1cdec226)
  • sftp: integrate compose-highlight syntax highlighting and upgrade Kotlin to 2.4.10 (d461d7d1)
  • sftp: add git status indicators and in-app file viewer with syntax highlighting (f6f2e673)
  • sftp: sort files alphabetically A-Z (277c6dbf)
  • refresh workspace CWD dynamically on tab tap (aa8ec818)
  • ssh: add native SFTP client, command execution and thread-safety fixes (c16b1373)
  • workspace: add Review tab for workspace git status and diffs (41bad69e)
  • browser: Add in-app browser tab and settings toggle (35d4c8da)
  • service: add disconnect action button to SSH notification (7996cf79)
  • service: open app on notification tap for SSH session (0432f7f4)
  • compose-app: implement copy, paste, and context menu support (eea367d1)
  • compose-app: add clickable link support to terminal view (d44219be)
  • compose-app: Add custom fonts support (089e0d74)
  • remove jvm ssh library and sftp explorer (ad1bdb63)
  • terminal: add native SPSC ring buffer and SSH wakeup drain (c870b2d4)
  • terminal: Sync terminal palette with Material You theme colors (add24a1e)
  • theme: Add theme chooser and Material You dynamic color support (4a0b79b7)
  • keyboard: support extra keys with settings UI and live preview (f30c86c2)
  • dashboard: save and prepopulate last successful connection (bec6bb74)
  • settings: prompt restart on custom option changes (ccbf2168)
  • settings: add ui to edit custom ghostty fork features (8e6df277)
  • right aligned tab bar (25329fcf)
  • keyboard: store and pre-apply keyboard height to prevent layout flash on reopen (d7726895)
  • tabs: Add configurable session tab bar position (b8d2ebd0)
  • session tabs (e45d731e)

Fixes

  • ci: include ci commits in changelog and build triggers (cfc6a18b)
  • terminal: retain IME composition state across finish commands (363499c0)
  • emulator: notify client on session finished for custom IO (b31174e4)
  • terminal: prevent back key from sending ESC to terminal (39b31a11)
  • ui: suppress deprecation warnings, fix Compose API deprecations, tune detekt threshold (27bcb75c)
  • workspace: blank SFTP and Review tabs due to stale HorizontalPager composition (b2d4fa3c)
  • theme: suppress RestrictedApi warnings for Hct color utilities (7f54bc7e)
  • terminal: encode ESC as CSI 27u under kitty keyboard protocol (30a08f00)
  • terminal: route scroll events at touch position for correct tmux pane targeting (1bf64975)
  • terminal: restore Gboard spacebar swipe cursor tracking (33d7d0d3)
  • compose: remove dead 'More' button from selection toolbar (0463473b)
  • compose: dynamically position selection toolbar above or below text (7ed42461)
  • compose: text selection handle drag and toolbar reappear after drag (71b4d87b)
  • compose: resolve NullPointerException on scroll and enter key map in Compose interaction (d2cceda7)
  • terminal: implement pinch-to-zoom scaling behavior in Compose canvas (464f31c8)
  • terminal: wire extra keys controller to TerminalViewClient to fix modifier state reads (f796c2ee)
  • terminal: resolve terminal flashing under high-throughput update sequences (2cccf1de)
  • workspace: fix HorizontalPager NoSuchMethodError runtime crash (8144b218)
  • workspace: prevent erratic tab jumping when refreshing workspace (77360852)
  • make SFTP and Review panels follow workspace cwd (66748d5d)
  • review: back button deselects file instead of refreshing (1b2ecb2e)
  • review: resolve git repository root for relative path diffs (5abaacf2)
  • browser: Allow cleartext HTTP traffic in WebView (b8a20f9c)
  • browser: Resolve blank screen race conditions and add state persistence (6b6ca3c9)
  • compose-app - ssh: Format file sizes and display timezone-aware last modified date (b16ed55a)
  • compose-app - ssh: resolve active workspace and pane cwd using JSON parser (bc5fbbc0)
  • compose-app - ssh: use JSON parser to resolve herdr workspace CWD and label (c37f97e4)
  • compose-app - ssh: dynamically detect herdr workspace switch on tab selections (1bb1a4d8)
  • compose-app - ssh: resolve herdr workspace name and pane cwd correctly (2d989703)
  • compose-app - ssh: resolve pane cwd and workspace name at tab-switch time (b126eaa5)
  • compose-app - ssh: default initial explorer directory to workspace cwd (0561ebb7)
  • compose-app - ssh: save and restore last navigated directory per connection (c831d1b0)
  • session: resolve sftp directory navigation stall by setting poll timeout (c7465192)
  • compose-app - ssh: restore Material You dynamic color support (4caf9e95)
  • compose-app - ssh: isolate tabstrip and terminalview using Scaffold and clipToBounds (13320e0b)
  • compose-app - ssh: add support for opening remote files in external apps (8228e847)
  • compose-app - ssh: resolve invisible tab labels and tabstrip layout gaps (195dc4f4)
  • compose-app - ssh: resolve blank terminal tab and tabstrip color bugs (f2a5a20c)
  • compose-app - ssh: resolve herdr CWD on SFTP Explorer tab click (e9878f8c)
  • compose-app - ssh: fix tab bar colors invisible on dark themes (3c6d6422)
  • compose-app - ssh: remove folder FAB, use tabs only for SFTP navigation (7c40089e)
  • ssh: serialize libssh2 session calls with session_lock mutex (875e39b7)
  • compose-app - ssh: restore one-shot modifier auto-clear on extra keys (c4cdb4b4)
  • compose-app - ssh: fix extra keys lag and touch/swipe latency (694ab078)
  • compose-app - ssh: fix terminal lag during rapid output animations (6c4a5aea)
  • compose-app - ssh: resolve zlib cross-compilation when targeting Android (8fd7f461)
  • compose-app - ssh: pass xterm-ghostty term type when herdr integration is toggled (f6cfd040)
  • compose-app - ssh: implement Herdr notification integration and auto-launch (eb4e06fb)
  • renderer: Draw default background when reverseVideo is false (c3679e3a)
  • emulator: Proactively request full snapshot refresh when UI update is pending (511fd2b8)
  • ssh: set locale env vars on remote before starting shell (848f404b)
  • compose-app - ssh: add support for terminal protocol notifications (e0b14ba4)
  • compose-app - ssh: Prevent stale release callback from clearing active terminal view (b1d05fbe)
  • ci: push version bump to current branch instead of hardcoded master (f6bd8a3e)
  • ssh: return to main screen when native ssh shell session exits (4d5ecf20)
  • terminal: correct cursor y coordinate offsets using line spacing and ascent (33dd34fc)
  • compose: stabilize terminal view size and prevent stale references (50227051)
  • terminal: Implement PTY resizing for native libssh2 SSH piping backend (bad1b7a2)
  • terminal: Resize SSH window on initial custom IO terminal backend creation (63f41bbd)
  • keyboard: ensure sequential ssh writes and direct code point translation for macros (7d261b0d)
  • keyboard: add proper macro support for extra keys like 'CTRL b n' (d803a730)
  • terminal: fix sizing issues and connection close crashes during interactions (6e32139e)
  • terminal: prevent crash-back-to-dashboard on resize and use layout listener for sizing (042d2fcf)
  • terminal: resolve black screen and bind foreground service (01ad9161)
  • bubble: pre-apply keyboard height in onCreate and delay keyboard restore to prevent size flicker (90a4cad7)
  • keyboard: prevent IME show cancellations by not overriding IME visibility state in pre-applied insets (a14eaa6c)
  • terminal: ignore session resizes when view window is invisible (01fce690)
  • ci: enable split APKs for GitHub release builds (ab1ca784)
  • theme: black theme preserves wallpaper-derived colors (16f46367)
  • build: ensure bootstrap download runs before native build in release (79e4a32b)

Updates

  • sdk: update nix android sdk path (772646f0)
  • add ktlint and detekt to compose-app module (e3bb3fdf)
  • flake: add Android SDK platform 37, bump android-nixpkgs (428286f8)
  • browser: switch default home/search engine to DuckDuckGo (f63ef6c2)
  • agents: Do not commit plans to the repository (0652f050)
  • deps: update libghostty to commit 73534c4 (e390dd60)
  • compose-app: upgrade Conscrypt dependency to 2.6.0 for 16kb page alignment (940186fc)
  • gitignore: ignore local .android directory (ce719692)
  • terminal: Disable native piping and switch back to JVM library backend (5886f20b)
  • compose: persist terminal zoom level on scale gesture (97bc42e9)
  • compose: use legacy default zoom calculation (7bd00946)
  • build: finalize compose-app module and terminal size listener configuration (896b3e50)
  • skills: add Jetpack Compose migration skill (765d206c)
  • debug: add inset adjustment logs to TermuxActivityRootView and BubbleSessionActivity (355c0bd3)
  • debug: add size and PTY update logs to diagnose TUI re-renders (ab0df185)
  • keyboard: pre-apply remembered keyboard height in bubble views as well (4a8b1635)
  • keyboard: reset pre-applied keyboard height status on visibility and configuration change (19e6dcb5)
  • Material You: runtime reloading (c3c2782a)
  • add release workflows, migrate to Nix, remove redundant workflows (994856c5)

UI Changes

  • compose-app: Add disconnecting progress indicator and clean up workspace back handling (b7490404)
  • review: add syntax highlighting to diff viewer (af975239)
  • review: remove redundant header and action buttons from diff viewer (1c7f577f)
  • review: scale line number column width dynamically based on digit count (e34bd444)
  • review: add line numbers and horizontal scrolling to diff viewer (bda9a098)
  • browser: Move control/address bar to the bottom of the screen (cac212fd)
  • keyboard: Style extra keys toolbar background and buttons (679c7f96)
  • extrakeys: style toolbar background and buttons according to material 3 (c57fc57d)
  • compose-app: add custom launcher icon (92bf1b50)
  • dashboard: Add toggle for native libssh2 piping in dashboard screen (0166802d)
  • dashboard: add terminal font size settings card (fbe026fe)
  • manifest: configure MainActivity softInputMode to adjustResize (0d835297)
  • terminal: fill available space and add pinch-to-zoom (7e530daa)
  • tabs: reverse tab order when right-aligned (5557a3f7)
  • material you themeing support (aac2f2ac)

Refactoring

  • MainViewModel: split into ServerCoordinator, UserPrefs, NotificationState (6120b366)
  • compose-app: implement multi-server architecture (7c5d765f)
  • terminal: replace BasicTextField sentinel hack with direct TextInputService (9494c3a5)
  • compose: migrate view wrapper to native compose interaction layer (ce63851c)
  • workspace: modularize workspace screen and lazy load browser (4ec3d4a7)

Performance

  • back: one-press back to hide keyboard and navigate on API 33+ (17c9129a)
  • ssh: consolidate native SSH loop into a single thread, drop session_lock (3a523208)
  • terminal: direct native write for keystrokes, cleanup input handling (52aa824e)
  • terminal: optimize keystroke writes and support spacebar cursor control (ac4729d6)
  • terminal: replace AndroidView with Compose Canvas renderer (9b0d16a6)
  • browser: Persist WebView instance to avoid page reload on tab switch (ac9671f3)
  • ssh: enable zlib compression for channel data (a7fa0926)
  • compose-app: reduce APK size via R8 minification and JNI optimizations (97843ceb)
  • native: Offload FNV-1a content hash calculation to Zig (4d5ef22a)
  • snapshot: use contiguous field layout for bulk NIO deserialization (b16e33dc)
  • terminal: debounce terminal resizes to prevent intermediate SIGWINCH re-renders (16c276ef)

Don't miss a new termux-ghostty release

NewReleases is sending notifications on new releases.