Skip to content

Releases: omnipty-terminal/omnipty

OmniPTY v0.9.0

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 10 Oct 16:11

Changed

  • Oxide is now OmniPTY. Same terminal, new name: there's an unrelated
    company called Oxide and the clash was confusing people. If you already had
    Oxide installed, this update does the move for you: the app becomes
    OmniPTY.app, your config.toml, themes and pinned workspaces are copied
    to ~/.config/omnipty and ~/.cache/omnipty (the old directories are left
    as they were), and theme = "oxide" still selects the same palette, now
    also called omnipty. Shells get OMNIPTY_SESSION and OMNIPTY_VERSION;
    the old OXIDE_* names stay exported through 0.9.x, so update any
    dotfiles that read them before 0.10. A Dock icon pinned to the old
    Oxide.app path needs re-adding. Homebrew users: brew upgrade still
    works once, then switch casks with brew uninstall --cask oxide-terminal && brew install --cask omnipty-terminal/tap/omnipty. The website is now
    omnipty.com; the old addresses redirect.
  • OMNIPTY_MANIFEST_URL points the updater at a different manifest, for
    testing a release before it's published.

Oxide v0.8.2

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 09 Oct 17:56

Changed

  • What's New opens on its own after this update (instead of the usual
    toast), so the note above about the upcoming rename is seen once. The
    next update goes back to the toast.

Security

  • The status bar and file tree poll git status in whatever directory a
    pane is in. Git runs the core.fsmonitor command from a repository's own
    .git/config during status, so an unpacked archive or shared folder
    carrying a planted one could run code the moment you cd into it. Those
    polls, and the git segment of Oxide's generated prompt, now switch
    fsmonitor off.
  • Dragging a file into the terminal, "Insert Path", and the cd fallback
    used without shell integration type the quoted path at the prompt. A
    filename holding control characters (^U, carriage return) could clear
    the line and run a command of its own. Such names are refused with a
    notice instead.
  • OSC 8 hyperlinks only open http, https and mailto targets. Because
    the link's text can say anything, a hidden file:// or app-scheme target
    could launch something on a cmd-click. While you hold cmd over a link,
    the real address is shown in the pane's corner, browser-style, and the
    whole link is underlined rather than one cell.
  • OSC 7 working-directory reports are ignored while the pane's foreground
    process is ssh, so a remote host can't point the file tree and git
    status at a local directory of its choosing.

Oxide v0.8.1

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 07 Oct 13:08

Fixed

  • A markdown preview (and Help → What's New) now re-flows to fit its pane
    when the pane is resized. A preview opened in a thin split stayed that
    thin after the split was widened; now the text, tables and code boxes
    are laid out again for the new width.
  • Running source ~/.bashrc in a bash tab no longer crashes the shell.
    Re-running starship's setup wrapped Oxide's prompt hook inside
    starship's, and the two then called each other until bash ran out of
    stack and segfaulted, taking the tab's unsaved history with it. The hook
    now notices when it is already running and steps aside, and sourcing
    Oxide's own init file twice can no longer make it call itself.

Oxide v0.8.0

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 03 Oct 02:08

Added

  • Inline images. Oxide now draws the pictures programs send, over all three
    protocols in use: kitty graphics (kitten icat, yazi, snacks.nvim,
    timg), iTerm2's (imgcat, wezterm imgcat) and sixel (img2sixel,
    lsix, chafa -f sixel). PNG, JPEG, WebP and GIF (the first frame) are
    all read, and on a Retina display images are drawn at the display's full
    resolution. A picture is part of the scrollback like the text around it:
    it scrolls, survives a window resize and a font zoom, goes when you
    clear or press cmd-k, and a selection copied across one is just the
    text. kitty's Unicode placeholders are supported, which is what lets
    images through tmux (set -g allow-passthrough on). Not there yet:
    animation, and kitty's layers — text printed over an image replaces that
    part of it instead of sitting on top. A new [images] section has
    enabled, and memory_limit for how much decoded image memory a pane may
    hold (128 MB by default).
  • Opening a picture shows the picture. enter on a PNG, JPEG, GIF, WebP or
    BMP in the file tree — or picking one in the cmd-p finder, or
    cmd-clicking its path in output — opens it in a tab of its own, scaled
    down to fit when it's larger than the pane. Any key closes it. Set
    images.preview_in = "split" to have it open beside what you're doing
    instead. It used to be handed to $EDITOR like any other file.

Changed

  • Programs now see Oxide for what it is, and see its real size.
    TERM_PROGRAM is always Oxide — a shell launched from another terminal
    used to inherit that terminal's name, and tools would speak its dialect.
    The window's pixel size is reported in real device pixels (it used to be
    in points, rounded down, so image tools on a Retina display drew at half
    resolution), and stays right after a font zoom or a move to another
    display. Queries for the cell size (CSI 16 t) and the terminal's name
    and version (XTVERSION) are answered where they used to be ignored. With
    images on, the device-attributes reply is now ?62;4;22c rather than
    ?6c: the 4 is how sixel programs learn they can draw. Worth knowing if
    anything of yours matched the old value.

Oxide v0.7.3

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 02 Oct 15:08

Fixed

  • A startup command that opens an interactive session — ssh -t into
    another machine, a REPL — now shows what you type when your shell is bash.
    bash handed the command its line editor's terminal settings, with echo
    off, and ssh carried them over to the remote machine: the remote prompt
    came up, but your typing stayed invisible. zsh wasn't affected.

Oxide v0.7.2

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 30 Sep 20:45

Added

  • The text inputs — the command palette, the file finder, command history,
    the new/rename/move prompts, startup commands, and the tree's filter — now
    take the mouse and a selection. Click to put the cursor somewhere, drag or
    shift-click to select, or hold shift with any of the keys that move the
    cursor (shift-←, shift-opt-←, shift-cmd-→…). Typing or pasting
    replaces the selection. In the palette, finder, history, prompts and
    startup commands, cmd-a selects everything and cmd-c / cmd-x /
    cmd-v copy, cut and paste (ctrl-shift- on Linux).

Changed

  • A new app icon: the terminal prompt in a ring that's rusting away at one
    edge. It's in the Dock, the Linux app menu and on oxideterminal.com.

Fixed

  • A long startup command wraps onto more lines instead of running off the
    edge of its box, both while you type it and in the list of a workspace's
    commands. The other inputs wrap the same way.

Oxide v0.7.1

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 30 Sep 15:18

Added

  • bell = "sound" now plays the system bell sound on Linux, through
    canberra-gtk-play or paplay. With neither installed, it falls back to
    the visual flash. ((#4),
    thanks @agustux for contributing!)
  • Dragging a file or directory in the file tree scrolls the tree when the
    drag nears its top or bottom edge, so a destination that's out of view is
    one drag away instead of a drag, a scroll, and another drag.
  • The file tree keeps a strip of empty space at the bottom of its panel. A
    tree full of directories used to leave nowhere to drop for the root; now
    there always is, wherever the tree is scrolled to.
  • The file tree's right-click menu does more. On a file or directory it adds
    Rename… and Delete (to the Trash, after the same y the d key
    asks for); on a directory, New file or folder… inside it. Right-click
    the root's name at the top, or the empty space under the rows, to add to
    the root.
  • P (shift-p) in the file tree previews the selected markdown file, the
    same as Preview markdown on right-click. It's the tree::preview
    action, if you'd rather bind another key (p alone is "select parent").
  • Selecting text with the mouse scrolls the terminal when the drag reaches
    the pane's first or last row, and keeps scrolling for as long as you hold
    it there — faster once you're past the pane's edge — so a selection can
    run longer than the screen.
  • Each workspace in the drawer has a × that deletes it, straight away.
    d still asks for a y first.
  • tabs.close_last = "workspace" | "new_tab" chooses what closing a
    workspace's last tab does. "workspace" (the default, and how it has
    always worked) closes the workspace with it, and the window with the last
    workspace. "new_tab" keeps the workspace and leaves it a fresh tab in
    your home directory.
  • Double-click the drawer's right edge to put it back to tree.width.

Fixed

  • Text in the small input boxes (the palette, rename, the tree's filter and
    prompts) stays put as the cursor moves through it. The caret used to push
    the letters after it sideways, so they jiggled with every arrow key.
  • A tab's × closes the whole tab when it's the workspace's last one, as it
    does for any other tab. It used to close only the focused pane of a split.
  • A new workspace is named workspace 1 again once nothing else has that
    name, and otherwise takes the lowest number that's free. The number used
    to keep counting up for as long as the window was open, so deleting
    workspace 1 and adding another gave you workspace 2.
  • A drag in a program that tracks the mouse (neovim, tmux, lazygit) keeps
    going when the pointer leaves the pane: the program hears about the
    nearest cell, and about the release. It used to hear nothing past the
    pane's edge, so a neovim selection stopped scrolling there and the
    program could be left thinking the button was still down. Drags are also
    reported once per cell rather than sixty times a second on macOS.
  • A mouse selection that ends outside the pane it started in now ends there.
    The pane used to miss the release and keep selecting the next time the
    pointer crossed it with a button down.

Oxide v0.7.0

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 28 Sep 21:43

Added

  • Updates now come from downloads.oxideterminal.com and are signed. Oxide
    checks each downloaded update against a key built into the app before
    offering to install it, and never installs one that doesn't match — even if
    the download or the server were tampered with. GitHub is no longer in the
    update path on macOS, so the check works even when GitHub is rate-limiting
    or down. Linux reads the same source to learn about a release; the pill
    still opens the release page, since packages come from the AUR or the
    tarball.

  • Drag a file or directory in the file tree to move it: drop it on a
    directory to move it inside, on a file to move it beside that file, or on
    the empty space below the rows to move it to the tree's root. Nothing is
    overwritten, same as m.

  • Drag a workspace in the drawer to reorder it, the way tabs already work.
    cmd-alt-1..9 follow the new order, and so do pinned workspaces after a
    restart.

  • Drag the drawer's right edge to resize it. The width is remembered across
    launches; changing tree.width in the config resets it.

  • markdown.preview_in = "tab" | "split" chooses where a markdown preview
    opens. "split" puts it beside the pane you're in, laid out for that
    narrower width. The default is still a new tab.

  • editor.open_in = "tab" | "split" chooses where a file opens when the
    focused pane can't take it (see Fixed). The default is a new tab.

Changed

  • The markdown preview (and Help → What's New) now reads all of markdown,
    not the subset it used to. New: strikethrough, _underscore_
    emphasis, lists nested to any depth with paragraphs and code inside
    their items, numbered lists that keep their numbers, quotes inside
    quotes, GitHub's > [!NOTE] alerts, footnotes, reference-style links,
    <https://…> autolinks, headings underlined with ===, indented code
    blocks, definition lists, YAML front matter, and backslash escapes.
    Styles nest properly, so a bold or struck-through sentence with code in
    it stays bold or struck through to its end. Long lines wrap under their
    own text instead of back at the left edge, and blocks are set apart by a
    blank line.
  • Adding, renaming, and moving in the file tree, and adding and renaming
    workspaces, now ask for the name in a small modal in the middle of the
    window, titled with what you're doing ("Rename main.rs"), instead of a
    line squeezed into the drawer's footer. Renaming a tab uses the same one.
    The tree's / filter stays in the drawer, next to the rows it filters.

Fixed

  • The scroll wheel scrolls the view in Neovim, LazyGit, and other programs
    that track the mouse. It was being sent as arrow keys, so it moved the
    cursor instead. Programs that don't track the mouse (less, man) still
    get arrow keys, and shift + scroll still bypasses the program.
  • Opening a second file from the file tree, the file finder, or a
    cmd-click while a terminal editor still has the first one open no longer
    does nothing. The file opens in a new tab (or a split, with
    editor.open_in) that closes when you quit the editor. The same goes for
    Open Settings, and for any pane that's busy running something else.
  • macOS: window.blur = true blurs what's behind a translucent window
    again. On recent macOS it did nothing, and windows behind Oxide showed
    through sharp.
  • window.opacity now applies to the whole window evenly. The file tree,
    tab bar, and status bar used to stay solid while the workspaces panel was
    more see-through than the terminal. The terminal also came out more
    opaque than the number you set (0.5 looked like 0.75); it now matches, so
    an existing setting will look a little more transparent than before.
    Panes dimmed by window.inactive_pane_opacity stay as see-through as the
    focused one: only their contents fade, where before the dimming also made
    them more solid.
    The active tab is the same: lighter than the bar, not more solid.
    Opening the command palette or any other modal no longer turns a
    translucent window dark and solid; the modal simply sits on top.
  • Changing window.opacity or window.blur in the config applies to open
    windows straight away, including going between solid and translucent.
    That used to need a restart.
  • A markdown preview or What's New page shorter than the pane opens at the
    top of it, not pushed down to the bottom.
  • Text fields have a real cursor and word editing everywhere: the command
    palette, command history, file finder, startup commands, the tree filter,
    and the new prompt modal. Option+Left/Right move by word, Option+Delete
    deletes the word before the cursor, Cmd+Left/Right jump to the ends, and
    Cmd+Delete clears back to the start (Ctrl+arrows and Ctrl+Backspace on
    Linux). Before, most of these fields could only append and backspace.

Oxide v0.6.3

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 26 Sep 18:21

Fixed

  • macOS: Option+Left/Right now jump by word and Option+Delete deletes the
    previous word in zsh and bash, matching Terminal.app and Ghostty. Before,
    Option+arrows rang the bell and printed ;3D or ;3C, and Option+Delete
    only deleted one character. Works regardless of option_as_meta. Linux
    keeps the standard xterm encoding for Alt+arrows, which tmux, vim and fish
    depend on. (#3)

Oxide v0.6.2

Choose a tag to compare

@bobbycoleman-dev bobbycoleman-dev released this 25 Sep 23:44

Fixed

  • Linux: the release tarball starts again on Ubuntu 24.04, Debian 12 and any
    other distro with a glibc older than 2.44. Earlier tarballs were built on
    Arch and inherited its glibc 2.44, so everywhere else they died with a
    GLIBC_2.43 not found error before a window appeared. Releases are now
    built against glibc 2.35 — Ubuntu 22.04, Debian 12, Fedora 36 and
    everything newer — and the packaging step refuses to ship a binary that
    needs more. (#2)