Skip to content

Releases: l0ng-ai/tty7

v0.10.0

Choose a tag to compare

@l0ng-ai l0ng-ai released this 11 Jul 11:14

Added

  • Tab completion now executes the completion specs' dynamic generators:
    positions whose candidates come from the live system get real values — git
    branches on git checkout <Tab>, container names for docker/podman,
    package.json scripts for npm/pnpm/bun/yarn, cargo/rustup/tmux/brew/apt/pip
    listings, and more. Scripts run off the main thread in the session's cwd
    (800 ms timeout, output capped, short-lived cache) and their results merge
    into the already-open menu as they arrive; a slow or failing generator just
    contributes nothing. (#52)
  • When shell integration never engages in a pane, pressing Ctrl+R now explains
    why the history menu can't appear (once per pane, dismissed by the next
    keystroke) instead of failing silently — naming the wrapper when a
    figterm-style PTY shim (kiro-cli-term, figterm, qterm) is intercepting
    the shell's OSC 133 reports. The chord still reaches the shell, so its own
    reverse-i-search keeps working. (#46)

Fixed

  • ssh <Tab> (and scp/sftp/rsync) now completes host aliases from
    ~/.ssh/configInclude files honored, wildcard patterns skipped — and
    hosts from known_hosts, instead of falling back to listing the current
    directory. (#51)

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 10:40

Changed

  • Ctrl+R history search is now a browsable menu: matching is fuzzy
    (subsequence with word-boundary/consecutive bonuses; space-separated terms
    must all match) blended with frecency, and the ranked candidates float
    beside the prompt — matched characters highlighted, selection moved by
    Ctrl+R/↓ and Ctrl+S/↑, Enter to edit, Cmd+Enter to run outright. An empty
    query lists the whole history by frecency, so bare Ctrl+R is a "recent &
    relevant" browser. The classic (reverse-i-search) line stays. (#45)
  • History records now carry when the command ran and its exit code: new
    entries are <ts>\t<exit>\t<cwd>\t<command>, written when the command
    finishes (zsh INC_APPEND_HISTORY_TIME-style, exit code sniffed from
    OSC 133;D daemon-side); older formats still load. The Ctrl+R menu shows
    "ran 3h ago" and a badge on commands whose last run failed; timestamps
    from zsh/bash history files are carried over when seeding. (#45)

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 03:58

Added

  • Copy on select: an opt-in Settings → Terminal → Clipboard toggle (config
    key copy_on_select) that copies a mouse selection — drag, double-click
    word, or triple-click line, over terminal output or the prompt's command
    editor — to the clipboard the moment the gesture ends, no ⌘C needed. Off
    by default so a stray selection never overwrites the clipboard. (#34)

Fixed

  • The held-⌘ tab-number badges no longer stick on after the window loses key
    status mid-hold (⌘-Tab, Spotlight, a click into another app). The ⌘ release
    goes to whatever app is key by then, so the window never saw it; the badges
    — and any pending reveal — are now dismissed on the activation flip itself.

v0.7.0

Choose a tag to compare

@l0ng-ai l0ng-ai released this 10 Jul 01:23

Added

  • Terminal ANSI colors (color0color15) can now be overridden individually
    via ansi_colors.* in config.json, layered on top of the active theme
    preset — with a color picker per slot under Settings → Appearance → ANSI
    Colors. Malformed values are ignored, and clearing an override falls back to
    the preset's palette. (#37)

  • Font ligatures can now be enabled for terminal text. A new optional
    font_features config passes OpenType features (e.g. {"calt": true})
    through to the renderer, and Settings → Appearance grows a toggle for the
    common calt/liga pair. Ligatures stay disabled by default for cell-grid
    safety, and changes hot-apply to open panes. (#38)

Fixed

  • Ctrl+L now clears the screen while the prompt-local line editor is active.
    The readline dispatcher used to swallow it as an unrecognized chord; it now
    forwards the same form-feed byte the raw terminal path sends, so the shell
    repaints its prompt as expected. (#36)

v0.6.2

Choose a tag to compare

@l0ng-ai l0ng-ai released this 08 Jul 14:37

Changed

  • Context menus and the "+" dropdown now highlight the hovered row with the same
    soft fill the command palette uses for its selected row, instead of the stock
    saturated accent that snapped hard against the rest of the UI. The hover text
    stays at the normal foreground so it reads clearly on the quieter fill.

Fixed

  • Windows: a pane no longer hangs open when its shell exits on its own
    (exit, Ctrl-D, or a crash). ConPTY's output pipe never reports EOF on a
    natural child exit, so tty7 — which detected a shell's death solely from that
    EOF — left the pane wedged open, dead but visible. A Windows-only monitor now
    waits on the shell process directly and reports the exit through the same path
    a Unix read() EOF drives. Closing a tab from the UI was already unaffected;
    macOS and Linux are unchanged. (#30)

  • Nerd Font prompt icons no longer render sliced off on the right. A lone glyph
    now paints into a two-cell window so it renders whole, instead of being clipped
    to exactly one cell and severing the overflow. Pairs with the native powerline
    separators from #19; Mono Nerd Fonts are unchanged. (#17)

  • New tabs and splits no longer stall for seconds while a zsh plugin manager
    reinstalls itself. tty7 now points ZDOTDIR back at your real config dir while
    your startup files run (and restores it for the live session), so plugin
    managers and completion caches (Zim, oh-my-zsh, compinit) resolve correctly
    and load instantly. Also fixes the relocated-config layout that previously
    dropped tty7's integration. (#15)

Full changelog: v0.6.1...v0.6.2

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 08 Jul 09:53

Fixed

  • Tab completion (and inline line editing) over ssh. A remote shell that
    emits its own OSC 133 prompt marks — fish 4.x on a Linux server, most visibly,
    which ships them on by default — used to engage tty7's local line editor, so
    Tab ran completion against the local machine's filesystem instead of reaching
    the remote shell. tty7 now only drives the inline editor while the shell it
    launched is itself idle at its prompt; whenever a foreground command (ssh, a
    TUI, a nested shell) owns the terminal, keystrokes pass straight through to it.
    (#26, follow-up to #18)

Downloads: macOS (Apple Silicon / Intel .dmg), Windows (-setup.exe
installer or portable .zip), Linux (.tar.gz). Full changelog:
https://github.com/l0ng-ai/tty7/blob/v0.6.1/CHANGELOG.md

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 05:40
tty7 v0.6.0

chore(release): v0.6.0

Shell picker in the "+" menu, Windows PowerShell 7 default, and fixes for
powerline separators (#17), full-width-bracket URLs (#20), brew/nix shell
detection (#18) and stale-daemon recovery on upgrade (#22).

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 07 Jul 09:37

tty7 v0.5.0

Added

  • Windows Inno Setup installer — Windows releases now ship
    tty7-<version>-windows-x86_64-setup.exe alongside the portable zip. Installs
    per-user by default (no admin prompt, with an all-users option), adds a Start
    Menu shortcut and an "Apps" uninstall entry, and offers an optional desktop
    icon. Still unsigned, so SmartScreen warns on first launch.
  • Startup update check — tty7 asks GitHub once, in the background, whether a
    newer release has shipped, and pops a one-time "Update available" dialog (once
    per version) plus a persistent "Download" prompt in Settings → About. It never
    downloads or updates itself — you still install by hand. Turn it off with
    check_for_updates in config.json or the toggle in About; a failed or
    offline check is silent.
  • ⌘K clears the screen and scrollback (Ctrl+K on Windows/Linux) — the same
    "Clear" the right-click menu already offered, now on the keyboard shortcut
    Terminal.app / iTerm2 / Ghostty users expect. Also in the command palette and
    remappable as ClearScrollback.
  • ⌘⏎ toggles window fullscreen (new ToggleFullscreen action, also in the
    View menu and command palette), matching the Ghostty/iTerm2 default.
  • Right-click menu shortcut hints — Copy, Paste, Select All, and Find now
    show their keyboard shortcut like the other items, so the menu no longer looks
    half-labelled. (⌘A / ⌘F stay hint-less on Windows/Linux, where those chords
    keep their readline meaning.)

Changed

  • Maximize / restore pane moved from ⌘⏎ to ⌘⇧⏎ (Ghostty's toggle_split_zoom
    default), making room for fullscreen on the bare chord. An existing
    ToggleMaximizePane override in keybindings still wins.

Fixed

  • Windows: launching tty7 no longer opens a stray console window behind the app.
    (#10)
  • The right-click "Select All" now matches the ⌘A shortcut: at the prompt it
    selects the edited command line, otherwise the whole terminal buffer.
  • Ctrl+R reverse-search now accepts plain ASCII keystrokes — a non-CJK input
    source on macOS, and all typing on Linux, was previously swallowed. Reported
    on V2EX.

Full changelog: v0.4.0...v0.5.0

v0.4.0

Choose a tag to compare

@l0ng-ai l0ng-ai released this 07 Jul 04:06
Refactor fullscreen toggle action for improved readability. Simplifie…

v0.3.0

Choose a tag to compare

@l0ng-ai l0ng-ai released this 07 Jul 02:49

Added

  • PowerShell shell integration: powershell.exe and pwsh now emit the OSC 133
    semantic-prompt marks and OSC 7 cwd that zsh/bash/fish already do, injected
    via -EncodedCommand after the user's profile loads (their config is never
    touched). This turns on the inline line editor at the PowerShell prompt — so
    clicking positions the caret and new tabs/splits inherit the working
    directory — which is what previously made mouse clicks a no-op at the prompt
    on Windows.

Fixed

  • Typing exit (or Ctrl-D) left a dead "process exited" pane behind instead
    of closing it. A pane whose shell genuinely ends now closes itself —
    collapsing its split, or closing the tab when it was the only pane (the
    last tab falls back to the home page), like every other terminal. A pane
    that merely lost its daemon connection still stays visible: auto-closing
    those would silently discard — and kill — sessions that may still be alive
    daemon-side. Panes that died while detached clean themselves up on the next
    attach the same way.

  • A full-screen TUI dying without restoring the terminal — the canonical case
    being an ssh session dropping mid-htop/vim — left the pane stranded on
    the alt screen with a hidden cursor and live mouse reporting: a visible
    prompt with no cursor anywhere, mouse clicks echoing 0;19;42M-style junk,
    and broken scrollback. The client now scrubs this residue the moment the
    shell reports its next prompt (OSC 133): it leaves the stranded alt screen,
    re-shows the DECTCEM-hidden cursor, and disables stale mouse/focus reporting
    and kitty keyboard flags — each reset only when its mode is actually set.
    Reattach self-heals the same way, since the daemon replays the prompt state
    after the ring.

  • Windows shell integration never engaged even for the default shell: detection
    keyed off portable-pty's get_shell(), which reports %ComSpec% (cmd.exe)
    regardless of what's actually spawned, so the PowerShell default was mistaken
    for an unsupported shell. It now resolves to powershell.exe directly.