Skip to content

Releases: sbyoun/OmniAgent

OmniAgent v0.8.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 06:50

Two builds of the same app — take either one.

Files Runtime Size
Electron OmniAgent-electron-* Chromium ~120 MB
Tauri OmniAgent_* WKWebView / WebView2 / WebKitGTK ~10 MB

If you type Korean, Japanese or Chinese in the terminal on macOS, take the Electron build — WEBKIT-IME.md explains why. Otherwise either is fine. macOS builds are signed and notarized.

On Windows, take the Electron build — OmniAgent-electron-0.8.0-x64.exe is an installer, OmniAgent-electron-0.8.0-x64.zip runs without installing. The Tauri build still expects WSL for everything. Windows binaries are not yet code-signed, so SmartScreen will ask once; signing through SignPath Foundation is in progress.

Windows is a real platform now

Until now Windows had a build but not a product: the local pod opened cmd.exe with nothing to attach to, and the host list came from a ~/.ssh/config whose keys the pod could never use. This release makes Windows work the way the Mac does, in two layers.

  • Remote pods are native. Windows' own OpenSSH and your C:\Users\you\.ssh\config — the sidebar fills from it, and the tmux behind a remote pod runs on the server, so nothing else is needed.
  • The local pod uses WSL when you have it, PowerShell when you don't. With a distro installed the local pod runs in the distro — its ~, its files, its tmux ls, full session restore — because tmux has no Windows port and the distro is where one lives. Without WSL the pod is PowerShell (pwsh if installed) under ConPTY; everything works except restore, and the README says so. Detected once at startup; OMNIAGENT_LOCAL, OMNIAGENT_WSL_DISTRO, OMNIAGENT_SSH=wsl and OMNIAGENT_SHELL override it.
  • Copy and paste follow Windows Terminal. Ctrl+Shift+C / Ctrl+Insert copy, Ctrl+Shift+V / Shift+Insert / Ctrl+V paste, and Ctrl+C copies when text is selected and interrupts when it is not. The Edit menu no longer registers Ctrl+C/V/A/Z as system accelerators off macOS, which is what had been swallowing them before the terminal saw them.
  • A selection survives moving the mouse. A program in the pod can request any-motion mouse reporting (an agent TUI does), and xterm cleared the selection on every report it sent — so a highlight lived exactly until the hand came off the mouse. Hover motion now stays out of xterm while a selection stands.
  • Fonts and icons are bundled — Inter, JetBrains Mono and the Material Symbols set — instead of loaded from Google Fonts. Behind a corporate proxy every icon had rendered as its ligature name.
  • Two things only a real Windows machine could show: node-pty does not add .exe to a bare ssh, and Windows OpenSSH does not exit after a one-shot command while its stdin is an open pipe. Both fixed; npm run test:argv pins what a pod is launched with on every platform.

Sessions and pods

  • Guest pods attach and nothing more. A pod opened from the sessions list used tmux new-session -A, so a session you had just killed came back as an empty shell under the same name — a session that could not be deleted. Guests now attach only, and exit when there is nothing to attach to.
  • The sessions list reads correctly on a Finder launch. tmux sanitizes its output for a client it does not consider UTF-8, gluing the four fields of every row into one garbled name; the listing now runs as a UTF-8 client like the pods already did.
  • Pods get a terminal's environment, not the launcher's. Started from a tool runner, the app inherited NO_COLOR, FORCE_COLOR=0 and TERM=dumb and every local pod ran monochrome. Pods now state what they are: xterm-256color, truecolor, and tmux told the same through terminal-features.
  • Compatibility fallbacks for old tmux keep mouse scrolling and the baseline options, and the PTY tests run on their own tmux socket instead of the user's live server.

Explorer and editor

  • Re-read a file that changed underneath — the editor and previews show a copy taken when they opened, next to a pod where an agent is writing the originals. Re-read on demand; unsaved edits ask first.
  • Upload through a picker as well as by drop, for files you cannot drag from.
  • The explorer's rarer actions — upload, new file, new folder — moved behind ⋯; parent and refresh stay one click away.

Release engineering

  • Windows ships an installer and a no-install zip.
  • The release workflow can sign Windows artifacts through SignPath Foundation once the project is approved there; until then it publishes unsigned, exactly as before. The README carries the required code signing policy.
  • The macOS Electron job runs on a pinned macos-15 image; the September macos-latest update broke electron-builder's temporary signing keychain.

Thanks to @jarvis08 for bringing Windows across in the first place — the WSL-as-local-machine design this release builds on.

OmniAgent v0.7.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 02:30

Two builds of the same app — take either one.

Files Runtime Size
Electron OmniAgent-electron-* Chromium ~120 MB
Tauri OmniAgent_* WKWebView / WebView2 / WebKitGTK ~10 MB

If you type Korean, Japanese or Chinese in the terminal on macOS, take the Electron build — WEBKIT-IME.md explains why. Otherwise either is fine. macOS builds are signed and notarized.

Sessions are the thing that lasts

A tmux session outlives the app, a crash, and switching between the two builds. This release stops treating pods as if they were the work.

  • A dropped connection no longer ends the session. An explicit close and a dead ssh link both reached the backend as the same call, so a flaky link took the work with it. Held down by a test that runs a real tmux server on its own socket.
  • A sessions panel in the sidebar lists every session per machine, split into the ones pods created and the ones that were already there. Click to attach. A pod that did not create its session leaves it running when it closes.
  • End sessions from the app — one at a time, or sweep the ones no pod is showing. The sweep never touches sessions the app did not create.
  • Name a pod by double-clicking its title; the tmux session is renamed with it, so tmux ls says training rather than pod-4.
  • A pod's tmux windows are listed in its header, so a multi-window session is navigable without tmux keys.

The fleet is keyed by machine, not by ssh alias

An ~/.ssh/config often reaches one server several ways — a proxy jump from outside, a VPN address, a LAN address. Each alias listed the same sessions again and polled the same machine again. Hosts now report a machine id, so the panel collapses them and shows +2 routes, and aliases share one poll. Connecting still goes through the alias: the route is what makes a machine reachable from where you are.

Explorer and editor

  • Right-click for the absolute path, the name, opening, or downloading — right-clicking empty space is about the folder itself. Remote paths are absolute on their own server, so they paste straight into the pod beside them.
  • PDFs preview in the panel, over the same call images use, so a PDF on a server opens without fetching it first.
  • Refresh the listing, which was a snapshot with no way to retake it.
  • Both panes resize — drag the seam. Sizes are per pod and persist.

Fit and finish

  • An app-wide font (View → Font), with D2Coding bundled and local fonts addable. The default has no Hangul and falls back mid-line.
  • Keyboard shortcuts to switch pods and to close one while leaving its session running.
  • The active pod is ringed when several are open.
  • RAM readings exclude cached files on macOS, which had the meters reading high on an idle machine.
  • Layout is shared between the two builds, so switching lands on the same pods.
  • Korean input stops repeating the last character after a while — xterm accumulated everything ever typed in its hidden textarea.
  • Tauri: the window no longer freezes during remote calls; its commands were running on the main thread.
  • ⌥⌫ deletes a word at the shell again — tmux was holding the ESC longer than zsh waits.
  • npm run package:local builds without a signing certificate; npm test runs both suites.

Thanks to @jarvis08 for the session lifecycle fix, tmux windows, shortcuts, fonts, the RAM correction, the local packaging script, and the active-pod ring.

OmniAgent v0.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 06:24

Two builds of the same app — take either one.

Files Runtime Size
Electron OmniAgent-electron-* Chromium ~120 MB
Tauri OmniAgent_* WKWebView / WebView2 / WebKitGTK ~10 MB

If you type Korean, Japanese or Chinese in the terminal on macOS, take the Electron build — WEBKIT-IME.md explains why. Otherwise either is fine. macOS builds are signed and notarized.

Please update from v0.5.0

Clicking an http link — in a markdown preview, or in terminal output — replaced the app with that page. In the Electron build the preload script is attached to the window rather than to a page, so the site that loaded there inherited the app's whole command surface: running commands through the pty, reading and writing files locally and on every server in your ~/.ssh/config. A link in a README was enough.

Links now open in your browser. Navigation is refused in three places: the click handler, will-navigate, and the window-open handler.

Also in this release

  • Sessions panel — a second sidebar listing every tmux session per machine, split into the ones pods created and the ones that were already there. Open one to attach; end them individually or sweep the strays. A pod attached to a session it did not create leaves it running on close.
  • The fleet is keyed by machine, not by ssh alias. A config that reaches one server three ways (proxy jump, VPN, LAN) listed its sessions three times and polled it three times over. Connecting still goes through the alias — the route is what makes a machine reachable from where you are.
  • Name a pod by double-clicking its title; the tmux session is renamed too, so tmux ls says training instead of pod-4.
  • Resizable explorer and editor — drag the seam. Sizes are per pod and survive a restart.
  • Layout is shared between the two builds, so switching lands on the same pods.
  • Korean input no longer repeats the last character after a while (xterm accumulated everything ever typed in its hidden textarea).
  • Tauri build: the window no longer freezes during remote calls — its commands were running on the main thread.
  • ⌥⌫ deletes a word at the shell again (tmux was holding the ESC for half a second, outrunning zsh's timeout).

OmniAgent v0.5.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 01:16

Two builds of the same app — take either one.

Files Runtime Size
Electron OmniAgent-electron-* Chromium ~120 MB
Tauri OmniAgent_* WKWebView / WebView2 / WebKitGTK ~10 MB

The Tauri build is a tenth of the size and lighter on memory. The Electron build is larger, but on macOS its terminal takes Korean, Japanese and Chinese input reliably — WKWebView drops composed syllables through a timing race that varies by machine and by launch. WEBKIT-IME.md has the measurements and WebKit's own account of it.

If you type CJK in the terminal on macOS, take the Electron build; otherwise either is fine.

macOS builds are signed and notarized, so they open without the Gatekeeper detour.

Since v0.3.2

  • Both shells now build from one tree — the frontend is shared and picks its backend at runtime
  • Korean input in the terminal: the composing syllable is drawn while it waits and survives xterm clearing the textarea (thanks @jarvis08)
  • ⌥⌫ deletes a word at the shell again (tmux was sitting on the ESC for half a second)
  • Mouse drags select normally instead of being copied-and-cleared by tmux
  • Per-pod resource meters, tmux-session uptime, and a monitoring toggle
  • ⌘⇧I opens an IME diagnostic page

OmniAgent v0.3.2

Choose a tag to compare

@github-actions github-actions released this 04 Aug 05:55

Fixes Korean/CJK input in the terminal on machines without a locale in their shell config.

If your shell startup files don't export LANG, pods came up with charmap=US-ASCII and the shell's line editor could not handle multibyte input — Hangul consonants appeared to vanish, while the file explorer and editor worked fine. The cause was environment inheritance: panes take the environment of the tmux server, so setting a locale on the process we spawn only ever reached the client. Pods now carry the locale on the session itself (new-session -e LANG=… -e LC_CTYPE=…), with the server's global environment updated for later sessions and a fallback for older tmux builds.

Existing pods reattach to sessions created the old way. To be sure, quit the app, run tmux kill-server, and start again — or just open a new pod.

Also in this release

  • Per-pod resource meters — CPU/RAM bars for each pod's machine in its header (numbers in the tooltip), plus this machine's load in the footer. Polling is per machine, so ten pods across two servers cost two ssh round trips, not ten. A footer toggle turns monitoring off entirely.
  • Uptime now tracks the tmux session, which survives app restarts, instead of when the pod was opened — long-running work reads 4d 2h.
  • A real app icon replacing the default Tauri one.

macOS builds are signed and notarized.

OmniAgent v0.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Aug 04:34

Signed & notarized builds — and paths you can click.

New

  • ⌘/Ctrl-click a path in any pod's output: directories open the file explorer there, files open in the editor. Paths underline only while the modifier is held. Absolute and ~ paths resolve directly; relative ones resolve against the directory the explorer is showing.
  • Image viewer — png/jpg/gif/webp/svg and friends render in the document pane instead of showing as text. Remote files included (fetched over ssh).
  • State restore — the explorer's directory and the file open in the editor come back after a restart, along with the pod layout.

Distribution

  • macOS builds are now signed with a Developer ID certificate and notarized by Apple, so downloads open normally — no more right-click → Open.

OmniAgent v0.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 05:52

Documents in the editor, files in and out of pods — and Korean input fixed for real.

Editor

  • Markdown preview — .md files open rendered, with a toggle back to the source editor
  • Copy all — rich text (formatting preserved) in preview, raw source in edit mode
  • Download — save the open file to ~/Downloads, straight from the editor header

Explorer

  • Download any file from the file list — works for remote pods too (fetched over ssh), never overwriting: collisions become name (2).ext

Fixed

  • Korean/CJK input no longer duplicates or drops characters. The custom IME bridge introduced in v0.1.5 was built on a misdiagnosis — the original problem was the missing UTF-8 locale fixed in v0.1.4. Stock xterm handles Hangul correctly under WKWebView, so the bridge has been removed. (v0.1.5–v0.2.1 are affected; upgrade if you type CJK.)

macOS builds unsigned — right-click → Open on first launch.

OmniAgent v0.2.1

Choose a tag to compare

@github-actions github-actions released this 03 Aug 00:57

Quality-of-life: natural macOS editing + symlink-aware explorer.

  • ⌘⌫ deletes the whole line, ⌥⌫ a word, ⌘←/→ jump to line start/end, ⌥←/→ move by word — iTerm-style natural text editing in every pod
  • The file explorer now follows symlinks: linked directories show as folders and can be entered (local and ssh pods)

macOS builds unsigned — right-click → Open on first launch.

OmniAgent v0.2.0

Choose a tag to compare

@github-actions github-actions released this 03 Aug 00:39

The control tower gets eyes: agent status detection.

Every pod now classifies its agent's state live from the output stream:

  • 🟢 WORKING — output flowing (mint dot)
  • ⚪ IDLE — quiet at a prompt (gray dot)
  • 🟠 NEEDS INPUT — the agent is asking you something ([y/N], "Do you want…", password prompts, bell): amber pulsing dot + a badge on the pod header. Answering releases it.

The app header shows a live fleet summary — 1 NEEDS INPUT · 3 WORKING · 1 IDLE — so a glance tells you which agent is stuck.

macOS builds unsigned — right-click → Open on first launch.

OmniAgent v0.1.7

Choose a tag to compare

@github-actions github-actions released this 03 Aug 00:23

Copy works: drag-select in any pod and paste anywhere.

  • tmux-mode copies now reach the macOS clipboard via OSC 52 (#13) — terminal clipboard capability declared before client attach, and the addon provider accepts tmux's empty-selection form
  • Works in local and ssh pods; Shift+drag still gives native selection

macOS builds unsigned — right-click → Open on first launch.