Repository navigation
Releases: fachrihawari/omaterm
Release list
omaterm 0.10.0
Agents on branches of their own, and agents that work together.
Agents on branches
- New Agent in Worktree…, in the command palette or a project's
menu, starts an agent on a new branch, in a git worktree of its own
under the repository's.worktreesfolder, with your.envfiles
copied in. Run several at once: none touches another's files, or
yours. From an agent or a script:omaterm new --worktree fix-login -- claude. - The session shows its branch, and the Git tab follows it into the
worktree, with a Branch view of everything the branch changed
since it started. - Merge into main… squashes the branch into one commit, or makes a
merge commit, then removes the worktree. A merge that would conflict
isn't made: Update from main brings main's new commits into the
worktree, so conflicts are resolved there, never in your checkout.
Your uncommitted files in the main checkout are never overwritten. - Push & Create PR and Discard Worktree… are in the session's
menu too. Closing a session asks before it drops work that isn't in
main;omaterm closealways keeps the worktree. - A worktree whose folder is gone says so in its session, rather
than running quietly in your home folder.
Agents working together
- An agent can lead others. It starts workers in worktrees made
from its own branch, which nest under its session in the sidebar,
collapsible with a count. Closing the lead asks whether to close
them too or keep them. omaterm ask,replyandinbox.asktypes a message into
another agent's prompt once that agent is at its prompt and you
aren't typing there, and waits for the answer; with--no-waitthe
answer comes to the asker later as a message of its own, waking it.
An agent that stops without answering sends back the end of its
screen. Two agents can't wait on each other forever.omaterm merge w1takes a worker's branch into the lead's own.
Merging into main stays yours; a conflict is sent back to the
worker to resolve.omaterm wait a b --any|--allwaits for several sessions at
once, andomaterm diff --branchshows a worker's own changes,
without the lead's.- Ask for Review…, in a session's menu or the palette, starts a
second agent beside it, Codex reviewing Claude Code for instance.
The reviewer reads what the session changed, changes nothing itself,
sends the agent what to fix for up to three rounds, then tells you
its verdict, which shows under its session. - The skill teaches all of it to Claude Code, Codex, Pi and
OpenCode;omaterm skill setupupdates an installed one.
Smaller things
- Ctrl+click a path an agent printed,
src/app.go:42:7, and the
editor opens it at that line and column, taken from the folder the
program runs in. - What an agent last said of its turn shows under its session, in
the sidebar, the palette and on your phone: a report's message, or
Claude Code's last paragraph. omaterm sendandpromptwait for you to finish typing in
that pane, andpromptpastes its text into the agent's prompt as
one piece. Neither counts as your typing anymore, so a lead's
message to a worker no longer holds its mail back.- Every pane knows its project:
$OMATERM_PROJECTand
$OMATERM_PROJECT_DIR, beside$OMATERM_SESSIONand
$OMATERM_PANE. omaterm restartkeeps a pane's environment, and the command it
was started with.omaterm reportreaches the sidebar from inside Claude Code and
Codex, and an agent's own report stands over its program's bare
one.- Codex's "hooks need review" screen counts as needing you, so a
message isn't typed into it. Approve omaterm's hook once with
/hooksin Codex.
omaterm 0.9.9
Shortcuts that fit your Mac, and a window that fits half a screen.
Keyboard shortcuts
- ⌘W closes the tab on macOS, not omaterm. The menu bar's Close
Window took it, and with it the app. ⌘R, ⇧⌘R and the zoom keys did
nothing there, and now reload, split right and zoom. - Ctrl+W (⌘W) closes the pane you're in, and the tab with its last
pane, as the pane's × does. It ended every shell of a split, and
closing a browser pane closed the session beside it. - Option types again on macOS. ⌥1 typed ¡ (and [ ] { } @ on German
and Nordic keyboards) while it switched tabs. On a Mac, tabs are now
⌘1–⌘9, projects ⌥⌘1–⌥⌘9, and a browser pane goes back and forward
with ⌘[ and ⌘]. ⌥← and ⌥→ move the shell's cursor by words. Linux
and Windows keep Alt. - The editor's two-key shortcuts work: Ctrl+K Ctrl+0 folds
everything rather than resetting the zoom. - Shortcuts in a web page follow your keyboard's layout. On AZERTY,
Ctrl+Z in a page's form closed the tab. - The shortcuts list finds "cmd+shift+d" on macOS, where it shows
⇧⌘D.
Smaller things
- The window goes down to 600 wide. Tiled to half a laptop's
screen, it was drawn 900 wide anyway and squeezed, its text tall and
narrow. The side panels give way when there's no room, and come back
as it widens. - Quitting asks first when it would end a running agent: on
Windows, or with the session daemon off, sessions end with the app. - An agent's panes stay in its own project. A Claude Code
background session could take a pane of another project for its own,
and start its dev server there. - Open in Default Browser works on macOS and Windows.
omaterm 0.9.8
Files
- The Files tab shows every file, and dims what git ignores, as
VS Code does. Dotfiles such as.githuband.envwere missing, and
ignored files such as build output looked like source..gitstays
hidden, and an ignored folder such asnode_modulesis read only as
you open it.
omaterm 0.9.7
Things that worked, but not quite right.
Git
- Every file name works in the Git panel. A name with a space or an
accent couldn't be staged or discarded, and git's warnings showed as
files. - Merge conflicts show as conflicts, marked "!", with Mark Resolved.
They looked untracked, and Discard did nothing to them. - Each diff tab shows its own diff, named for its file. All of them
were "Diff", and showed whichever diff was opened last.
Files and the editor
- Quick open and the Files tab show the files as they are now. A
file an agent made didn't appear until a restart. Opening a file that
is gone says so. - Alt+Up and Alt+Down move lines in the editor, rather than
switching sessions. - A very large file or picture shows a note rather than filling
memory: a log of gigabytes, or a picture claiming 30000×30000 pixels,
could get the app killed.
Smaller things
- Closing a pane leaves the keyboard in the one next to it, and
Ctrl+W with "No file open" on screen no longer closes a session. - Settings' text fields behave: Escape closes the window again
after a field disappears, the web port doesn't refill while you clear
it, and a half-typed shell isn't used. - The Info tab's open button for a port opens its page. The
editor's two buttons that did nothing are gone, and the Keyboard page
shows Alt+1 to Alt+9 rather than the first two. - Cyrillic text no longer confuses session status, and a theme's
palette is read right when it repeats a color.
omaterm 0.9.6
No more hangs, and what you see stays true.
Nothing hangs
- Global search returns when it finds more than it shows. A broad
search used to show nothing at all. omaterm waitends when its session closes, rather than waiting
for ever.- Committing no longer freezes the window while the repo's
pre-commit hooks run, and neither do checkout, the branch list or
turning web access on and off. - Reconnecting to the session daemon keeps trying until it connects.
After 10 seconds it gave up, said it was connected, and left every
pane blank.
What you see stays true
- Sessions made from your phone or the
omatermcommand while the
app was reconnecting are kept, and a session you closed meanwhile
stays closed. - A session you close always ends, even when the session daemon was
slow or away. Its programs used to run on unseen. - The session on screen stays read after the daemon reconnects.
- The branch shown follows the repo after a
git switchin a
terminal. - Git says why it failed: a hook's verdict, a missing
user.email,
rather than "exit status 1". - Edits you make in
settings.jsonwhile omaterm runs are kept. A
zoom or a theme change wrote over them. A wrong value now passes over
that one setting, rather than resetting them all. - A command answered "busy" never runs later. An agent that tried
again made a second session.
Steadier underneath
- A program printing notifications in a loop shows one every 5
seconds, not thousands. - A slow phone on web access no longer makes the session daemon
hold hundreds of megabytes of screens. - The session daemon doesn't quit while a command is under way.
- Paired devices stay revoked, however many omaterm processes change
web access at once. - Setting up the agent integration keeps a symlinked settings file
a dotfiles manager tracks. - Sockets that don't fit their folder go in a folder only you can
open, not the shared/tmp.
omaterm 0.9.5
Nothing lost, and no crashes: a second look at what could go wrong.
Your work is safer
- Unsaved edits are never lost unasked. Closing an editor's tab with
its ×, quitting, closing the window and Restart Now now ask first. They
used to drop your changes without a word. - The editor follows its file on disk. A file an agent changes while
it's open now shows the change, and saving no longer writes your old
text over theirs: if both changed, omaterm asks. Saving can no longer
leave a file empty when the disk is full. - Discard and stash Drop ask first. Both are one click on an icon
that appears next to Stage, and can't be undone. A quick second Drop no
longer drops the wrong stash. - Removing a project says what it ends: a running agent or server,
and unsaved files. Close Pane in the palette asks when a program still
runs, as the pane's × does. - Turning "Start the session daemon at login" on or off asks first.
It restarts the daemon, which ends the programs your sessions run. - "Run Without It" no longer resumes each agent twice. The other
version's daemon still runs your sessions; a banner says so. - Agents can't end every session. With "Let agents control the app"
on,omaterm docould restart the session daemon, set up the agent
integration, install the command or pair a device. It can't any more.
omaterm stays up
- The session daemon no longer crashes when a pane is started twice
at once, which could happen at login, taking every session with it. - No crash when the last project is removed while it loads.
- A project's Git status, files and branch stay with it. Switching
projects quickly could show the last one's changes, so Stage and
Commit acted on its repository. - A closed session's scrollback is gone from disk for good with the
session daemon too, and old scrollback no session holds is cleaned up. - Built with Go 1.27.3, which fixes vulnerabilities web access could
be reached through.
omaterm 0.9.4
Polish: omaterm looks like one app from corner to corner.
- One dialog style. Confirmations in the main window, sheets in
Settings and the Pair dialog share one width, place, title and button
size, with red for the button that destroys something. - One header for every view. An editor, a picture, a diff and the
Git graph have a terminal pane's header: as tall, with its title, so
switching tabs no longer moves the content. - Changed files read alike in the Git tab, Changes and a commit's
files: the file's icon, its name with its folder beside it, and its
status letter at the end, in rows of one height. - The Git graph's columns line up in every row, wherever a branch
opens. - The command palette's titles start at one edge; sessions and
projects name their kind as commands and settings do. - Banners are built alike: the agent setup offer shows a bot, and
putting something off reads "Not Now" everywhere. - Long branch names use the room there is in the status bar and the
Info tab before they're cut. - Light themes: pane cards have a hairline edge, and the focused
pane of a split shows its ring. - Smaller things: folders come first in the file tree; the Git
graph shows no dash before its count is known; the branch picker's
"current" badge is legible on the chosen row; a markdown preview
doesn't show a caret position; the phone key bar's keys have room
around their labels; Settings' "Open settings file" lines up with the
pages above it.
omaterm 0.9.3
A steadier main window, and fewer surprises.
Dialogs and windows
- A confirm dialog acts on what it asked about. A session closed or
a tab moved from the command line while "Close this tab?" was open
could make it close a different one, possibly a running session. - Dialogs come first. The command palette or a picker no longer
opens over a dialog waiting for your answer, and a dialog that opens
closes the picker that was up. - Pickers dim what is behind them, and global search keeps its full
height while it has few results. - Narrow panes keep Close and Zoom in reach; the git and status chips
shrink first. - Tabs that don't fit scroll with the shown one kept in view, and
"+" stays put. They used to be cut off with "+" out of reach. - The sidebar footer fits a narrow sidebar.
- No stray shell inside a diff or an editor tab. One was started
there, out of sight, and kept running. - The status bar's process and port items open the Info tab.
- A session rename is kept when you click away, as Enter keeps it.
- The diff header reads plainly: "Index → Working Tree" or
"Staged: HEAD → Index".
Sessions
- Restarting a session runs its command again, rather than leaving
a bare shell: a dev server comes back as a dev server. - A program that fails says so: its session shows as failed with
" exited (code N)", and a shell that dies on its own tells you
before its session goes. - The omaterm command says why it can't reach omaterm (permission,
or the app not answering) rather than only that it couldn't. - A closed session's scrollback is gone from disk for good. A save
running just as it closed could write it back. - The Info tab stops refreshing when you leave it.
Housekeeping
- Files left by the first omaterm are removed: its old workspace
files and its shell histories. Yourconfig.tomlis left alone. - The unused "block ads" setting is gone.
omaterm 0.9.2
This release is about your sessions being safe, and omaterm staying up.
Your sessions are safer
- A damaged sessions file no longer wipes your sessions. If omaterm
couldn't read its sessions file, it started empty, ended every running
session (and its scrollback) as unknown, and deleted the file as the
window closed. It now keeps a copy, leaves the file and every session
alone, and tells you. - A project whose folder is missing keeps its sessions. When a
project's folder was gone at launch (an unplugged drive, a rename), the
project and its sessions were dropped. It now shows as "folder missing",
its sessions keep running, and it comes back with the folder. - Each session reopens as you left it: the pane you were in, the
zoomed pane, and the session each project showed. omaterm used to open
on the first pane of the first session. - A name you give a session sticks. An agent that had named the
session first renamed it back at its next conversation. - Agents resume after the session daemon restarts. Without the
systemd service, a daemon restart brought agents back as bare shells. - Sessions made from your phone while omaterm was reconnecting are no
longer dropped. - Upgrading from 0.8 keeps your text size and diff layout.
omaterm stays up
- If omaterm crashes, it keeps the report and tells you at the next
launch, with Show Report. Settings › About lists the reports. - The session daemon survives a bug in one request, rather than ending
every session with it, and a paired device can no longer exhaust its
memory. - A session daemon that stopped answering no longer freezes the window.
- No more crash when showing a project after one of its sessions was
closed from the command line or a shell exited in it; such sessions
also no longer stay behind, dead. - Status keeps updating after "Restart Sessions". It froze for the
rest of the run. - Programs reading the clipboard no longer hang while the window is
closed.
Settings
- Keyboard lists and filters every shortcut itself. "All Keyboard
Shortcuts" opened a dialog in the main window, under Settings. - Text fields take what you type with Enter, and Escape puts back
what they had; switching windows no longer applies a half-typed value. - Confirmations that remove something are red, as elsewhere.
- Choosing Custom… for the search engine keeps the current one until
your URL works. - Search lands on every setting it finds, and Enter opens it.
- The window fits at its smallest size, toasts show in it, and closing and
reopening it quickly keeps it open.
omaterm 0.9.1
Closing Settings no longer closes omaterm
Closing the Settings window with its close button, Escape or Ctrl+W
crashed omaterm, taking the main window with it. It now closes only
Settings.
Settings sits with the sidebar's buttons
The gear moved from the right end of the status bar, where it was easy
to miss, to the bottom of the sidebar, before Open Project and the
command palette.