Changelog

What’s new.

Every release, in plain terms — from the v1.0 launch to v2.5.0, and what’s staged next.

v2.5.0
Correctness & security
July 12, 2026
A large correctness-and-security pass over the 2.x line — roughly 120 fixes, each with a regression test, plus a security audit.
Changed
+ Upload, the SFTP file browser, “Open chat” from Recent Projects, and the Live Activity now correctly require Termoire Pro — matching what the paywall advertises. Anything already in progress is never interrupted.
Fixed
+ macOS — the recurring crash when opening a second window (⌘N) is gone, now guarded by a multi-window smoke test
+ Approve / Deny appears only for a real permission prompt — a bare bell, an idle nudge, or a “finished” event no longer offer buttons that would type a stray y/n into the live session
+ Mosh resume restores the real screen (using the live grid size) and no longer re-runs your per-host startup command into the resumed shell
+ SFTP & uploads — a stalled transfer can be cancelled, a failed upload never leaves or replaces a file with a truncated copy, and the browser shows honest failure states
+ Predictive echo keeps typed password characters hidden, and stale predictions don't linger after a reconnect
+ Paste is bracketed on every surface, so a multi-line paste no longer executes line-by-line
+ Scrollback search returns the newest matches; Fleet, widgets, and the Watch mark stale sessions as stale instead of showing hours-old state as live
+ iCloud preferences merge correctly across devices instead of a stale device overwriting a newer value
Security
+ SFTP downloads reject server-controlled path traversal in filenames
+ Saved passwords honor the biometric gate even over iCloud Keychain sync, including newly saved passwords
+ macOS terminal copies are marked concealed so clipboard-history managers don't persist scrollback that may contain secrets
+ App Lock defers deep links and Shortcuts/Intents that arrive while locked, and replays them on unlock
v2.4.0 – 2.4.1
Tailscale & speech privacy
July 10, 2026
Tailscale host import, Mac dictation, and an on-device-only speech mode. (2.4.1 is the buildable release of the same content.)
Added
+ Import from Tailscale — paste a tailnet API token and add any machine on your tailnet in one tap, with the MagicDNS name, port, and display name prefilled; tailnet hosts show a TAILNET badge
+ macOS voice dictation for the terminal and the chat composer, with the same staged-review flow as iOS (Pro)
+ “Never send speech to Apple” — force on-device speech recognition, with an honest “not available on this device/language” instead of a silent fallback to Apple's servers
+ A per-event-type notification matrix — set Alert / Silent / Off for permission prompts, questions, idle nudges, task progress, and session lifecycle
+ Mac Ghostty parity — predictive echo, link affordances (⌘-click to open), and VoiceOver terminal-grid navigation
Fixed
+ The iOS app target now builds in CI on every change, so platform-fenced code can't slip through again (the 2.4.0 tag predated the fix)
v2.3.0
15 agent CLIs, cost & Watch
July 10, 2026
The agent layer grows to fifteen CLIs with honest capability tiers, usage-based cost tracking, and an Apple Watch companion.
Agents
+ Fifteen agent CLIs — Claude Code, Codex, OpenCode, Gemini, Factory Droid, Grok, Qwen, Copilot, Cursor, Kimi, pi, Oh My Pi, Amp, Goose, and Crush — each on an honest tier (full remote approve/deny, notify-only, or read-only)
+ Reply to your agent from Chat, dictate replies, and optionally have replies read aloud — all on-device (Pro)
+ Apple Watch companion — glanceable agent status and Approve/Deny from the wrist while your phone is reachable (Pro)
+ Chat renders agent markdown — headers, code, lists, blockquotes, and tables
Added
+ Usage-based cost tracking — per-session cost from each CLI's own token usage against a bundled models.dev price table; unknown models show tokens only, never a guessed dollar
+ Ghostty on the Mac — the premium Metal engine now renders natively on macOS, with SwiftTerm as the automatic fallback
+ The Mac tool cluster — the SFTP browser, snippets, repo browser, and localhost preview, with the same Pro gates as iOS
+ A 7-day free trial on Termoire Pro
Fixed
+ A wrong password or rejected key now says so instantly instead of stalling ~15–20s into a false “Connection timed out”
+ A dead Mosh resume offers a fresh New Session instead of retrying forever
+ A chat reply can never execute at a bare shell prompt — an unproven destination types the reply for you to confirm, not send
Changed
+ Agent notifications are quieted to what matters — a banner only when the agent actually needs you; “submitted”, “finished”, and idle nudges update the inbox silently (toggle in Settings)
v2.2.0
Multi-CLI agents
July 7, 2026
First-class support for Codex CLI, OpenCode, and Gemini CLI alongside Claude Code.
Agents
+ Codex CLI, OpenCode, and Gemini CLI join the agent layer, with per-CLI capabilities stated honestly rather than faked
+ Remote approve/deny for Codex and OpenCode; Gemini is notifications-only (its hooks can't grant a pending permission, so those pushes say “answer in the terminal”)
+ Multi-provider usage — Codex reports real server-side 5-hour and weekly rate-limit percentages, the first true rate rings in the app
+ Multi-provider Chat — Codex, OpenCode, and Gemini sessions render as native chat through the same turn builder
Added
+ A per-CLI hook install checklist — every config patch is marker-scoped and coexists with your other tools' hooks; uninstall cleans every surface by construction
v2.1.0
Remote approve/deny & Fleet
July 7, 2026
Answer a blocked agent from your phone, a rebuilt Fleet board, and more SSH key formats.
Agents
+ Remote approve / deny — a host-side permission hook blocks the agent and long-polls the relay; you approve or deny from the notification, inbox, or Fleet, sealed end-to-end (the relay never reads the decision). Lock-screen Approve/Deny are real background actions. There is no auto-approve — every answer is a manual tap.
+ Fleet view, rebuilt — live terminal thumbnails on every row (iPhone, iPad, and Mac), inline search, status filter chips, and per-row actions
+ Richer host hooks distinguish a real permission prompt from a merely idle agent and show per-tool subtitles
+ A visible attach flow — stage images from Photos, Camera, Files, or Paste in a review sheet before uploading over SFTP
Added
+ More SSH key formats — ECDSA P-384 / P-521, aes256-cbc-encrypted OpenSSH keys, and PEM / PKCS#8 containers
+ Biometric-gated saved passwords, and whole-app lock on the Mac
+ Manual tab rename, persisted across relaunch
Fixed
+ An iPad Mosh reconnect regression on notification-tap resume, and automations can no longer fire on a “needs you” event
v2.0.0
Agents, Eternal Terminal & Pro
July 6, 2026
A major release — a whole AI-agent control layer, the Eternal Terminal transport, SFTP and port forwarding, on-device AI, and the groundwork for Termoire Pro.
Agents
+ Agent Chat view — read an agent's session as native chat, tailed live from the host
+ Automations — rules that react to agent-attention events, always shown with a 5-second cancel and never an auto-approve (Pro)
+ Session recording to a standard asciinema cast; input is not recorded by default (Pro)
+ Live Activity + Dynamic Island for the active agent turn — Working, Needs you, Done
+ Send to Agent — paste a git diff, a file, or the last error straight into the agent's prompt as one bracketed, un-submitted paste (Pro)
+ On-device AI (Apple Foundation Models) — natural-language → command, explain & fix the last error, AI commit messages, session naming, and away summaries; nothing leaves the device (Pro)
+ Home & lock-screen widgets — Quick Connect (free) and Agent Status (Pro)
+ App Intents, App Shortcuts, and cross-device Handoff
Connect
+ Eternal Terminal (ET) — a new per-host transport that bootstraps over SSH, then survives socket drops and IP changes by re-attaching the same session and replaying exactly the gap (free; a first-party clean-room Swift implementation)
+ SFTP file browser with upload / download / mkdir / rename / delete (Pro)
+ SSH & ET port forwarding — local (-L) and remote (-R) TCP forwards (Pro)
+ QR pairing — scan a host as an ssh:// URI, or share one as a QR code (never passwords or keys)
+ Git diff viewer and a read-only repo browser over a dedicated SSH channel
+ Localhost browser preview — forward a remote dev-server port and open it in an in-app browser
Manage
+ Secure-Enclave SSH keys — a non-extractable P-256 key with an optional, per-signature Face ID binding (Pro)
+ Settings reorganized into a short list of category subscreens
Terminal
+ Voice dictation with Apple's on-device speech recognition
+ Stage Manager / multi-window on iPad, including dragging a tab out into its own window
Fixed
+ Mosh cold-start resume no longer orphans a live session; SSH config import edge cases; stalled SSH handshakes now honor the deadline
v1.1.1
Mosh reconnect fix
July 4, 2026
A focused fix so a dropped Mosh session survives an app restart.
Fixed
+ Mosh sessions are no longer abandoned on reconnect — after iOS terminates a backgrounded app, resume now waits out a cold network path and keeps the session (showing Reconnect) instead of dropping you into a fresh shell, unless the server has genuinely exited
v1.1.0
AI agents & keyboard
June 30, 2026
Drive CLI coding agents from the soft keyboard, a roomier terminal, and low-latency typing on slow links.
Added
+ AI-agent shortcut keys on the keyboard bar — a compact cluster with esc esc (interrupt), ⇧Tab (mode cycle), and / — for driving CLI coding agents by touch
+ Predictive local echo (Ghostty) — typed characters paint instantly as a dim ghost of your text before the remote echoes, hiding latency on slow or cellular links
+ Agent alerts — a remote bell or desktop-style notification (e.g. when a coding agent finishes a turn or needs you) shows an in-app banner tagged with the host; toggle in Settings
+ Hide the software keyboard from a ribbon key while keeping the session live — tap the terminal to bring it back
+ Collapse the extra-keys ribbon to reclaim its full height for the terminal; a hardware keyboard auto-hides it, and the collapsed state persists
+ Software-keyboard backspace auto-repeat, plus press-and-hold repeat for the ribbon arrow keys (mode-aware for vim/htop) and the native delete key
Fixed
+ Full-screen TUI overlays (e.g. an agent's picker) no longer render above the visible area after a Mosh resume — the repaint now uses the live grid size
+ iOS on-screen keyboard typing now reliably reaches the terminal
+ Corrected the decoding of two Mosh host-state messages (window resize and input acknowledgement)
+ Predictive echo holds steady on slow, lossy links instead of flickering, predicts backspace, and keeps no-echo password prompts protected
Security
+ Mosh datagram length padding — outbound packets are padded to fixed-size buckets so an on-path observer can't read keystroke or screen activity from packet sizes
v1.0.2
Rotation fix
June 28, 2026
A small follow-up — the extra-keys ribbon now re-anchors after a rotation.
Fixed
+ Extra-keys ribbon stays anchored above the keyboard after a device rotation — it no longer ends up partly behind it
v1.0.1
Stability & input
June 28, 2026
Fast-follow bug-fix release — hardware-keyboard input parity and terminal-rendering fixes.
Fixed
+ iPhone — the terminal no longer goes blank after a portrait→landscape rotation; iPhone now uses one consistent layout in both orientations (split view stays iPad-only)
+ Fixed a crash when rotating to landscape with the keyboard up
+ macOS — Shift+Tab now sends back-tab instead of moving app focus
+ Hardware-keyboard chords reach the terminal reliably across iPad, Mac, and the SwiftTerm fallback — Ctrl-letter chords, Shift+Tab, arrow keys (including modifier forms), Tab, single keys, and Escape (which no longer dismisses the keyboard)
+ Matched cursor-key behavior between the Ghostty and SwiftTerm engines via a shared key encoder
+ Landscape rotation no longer blanks the Ghostty surface
+ iPhone text no longer garbles on keyboard show/hide
+ Full-screen TUI bottom rows and mode line stay clear of the keyboard ribbon
+ Defensive fixes for intermittent loss of keyboard input on tab switch / reconnect
Changed
+ Single-character input is delivered as an (unbracketed) keypress rather than bracketed paste, so single-key TUI actions behave correctly
v1.0.0
Initial release
First release
The first public build — a working, hardened SSH terminal.
Connect
+ Real SSH — PTY + shell, password and Ed25519 key auth, live resize
+ Mosh — roaming sessions that survive Wi-Fi/cellular changes and resume after restart; per-host SSH, Mosh, or auto
+ Connect deadlines, TCP keepalive and an SSH-level dead-peer probe, and a reconnect affordance on every dead end
+ Host-key trust-on-first-use with loud changed-key warnings
+ Per-host gating of OSC 52 remote clipboard writes
Terminal
+ Metal-rendered terminal (Ghostty engine, SwiftTerm fallback) with 27 palettes and live font-size control
+ Concurrent tabs with ⌘T / ⌘W / ⌘K / ⌘1–9 shortcuts
+ Themed keyboard accessory row — esc, sticky ctrl, arrows, ^C, paste
+ Snippets with {{placeholder}} prompts from a searchable palette
Manage
+ Grouped, searchable hosts with recents, tags, and per-host accent
+ Ed25519 key generation and import (paste / Files) in the Keychain with SHA256 fingerprints
+ Corrupt host libraries are quarantined, never silently reset
Platform
+ Universal — iPhone navigation stack, iPad split view, and a Mac build
+ Dynamic Type scaling for chrome fonts
+ Privacy manifest and export-compliance in place; collects no data
Planned
Not yet built
No committed targets
Follow-ups we’re exploring — not yet scheduled.
Next
~ Background Apple Watch delivery — approve/deny from the wrist while your phone is away
~ Per-host push signing — end-to-end authenticated agent notifications
~ macOS home & lock-screen widgets

Marketing version 2.5.0 · build 30 · bundle app.termoire.Termoire · category Developer Tools.