Changelog
This release brings massive improvements to navigation, agent + cli capabilities, and sandboxing quality of life. I can’t capture all the details here, so check out the updated documentation at https://ouijit.com/docs to see it all.
- Unified home and project views: Focus in one or across multiple projects at a time with intuitive task and terminal grouping and the addition of unread indicators for agents
- Improved ergonomics for sandbox first workflows: You can now configure the default environment for a project’s tasks, with per-hook and per-command overrides, and more granular access control for the ouijit cli in the sandbox along with the ability to ask for one off scripts to run on the host with your approval.
- Agents in Ouijit are more capable than ever: Your agents can help you get more done with full control and management over Ouijit’s terminals and panels, and the ability to link you straight to other places in Ouijit like tasks, PRs, lines in diffs, and more.
Smaller improvements:
- Select the project and immediately start a task from the new task overlay
- Configure a default branch for new task worktrees to start from, including remotes
- More expansive PR search for Github, and issue search for Github and Linear
Fixes:
- Github issue integration now has parity with Linear issues with proper task linking.
- Terminal tags persist across app restarts
- Publish a PR review draft without a summary comment
- More control over sandboxing. Each hook now has its own sandbox setting, and runners follow a project default, rather than everything taking after the terminal it was opened in. An agent can run sandboxed while the dev server beside it stays on the host. nono and custom sandboxes are no longer experimental.
- Experimental: Linear issues. Linear issues show up next to GitHub’s in the Issues list, and you can start a task from one. Agents can read them and draft comments with
ouijit linear. Enable it and add an API key in Project Settings.
- OpenCode 2 support. Status and the CLI reference now work on OpenCode 2, and
opencode -c picks up the task’s own session.
- Removed the Lima sandbox backend.
- Added an About window, and Help menu links to the docs and to report an issue.
- Ctrl-Z and
fg now work on a hook’s command.
- Programs in a host terminal can use the microphone and camera on macOS.
- The terminal + menu can now set up a run command or a new script.
ouijit markdown and ouijit preview now work in terminals on the home view.
- Fixed a finished agent still showing as thinking after you open settings.
- The onboarding intro no longer shows on a project that already has tasks.
- Fixed a long terminal title squeezing the diff button.
- Adds experimental support for a custom sandbox backend that runs a project-supplied launcher. Enable in
Project Settings > Experimental.
- Diff lenses. An agent groups a diff into the parts of the change, so you read it by what changed rather than by file. Works on a task diff or a pull request, and lenses are saved per project.
- Cloning from GitHub. You can now import projects directly from GitHub to create them.
- Experimental: code analysis. Reads your git history to surface the files that change most, the ones that usually change together, and who owns them. Chips on the diff, a risk section on pull requests, and a project panel. Enable it per project under Project Settings → Experimental Features.
- A redesigned light mode. Panels, seams and rims read with depth instead of flat, and secondary text is more legible. Sepia follows, dark is unchanged.
- The sidebar toggle moved to the title bar, and the sidebar no longer starts open.
- Mod+K now ranks recents by what you looked at rather than what you clicked.
- The diff file list keeps its width and collapsed state between visits and launches.
- Context menu submenus no longer close when you move diagonally toward them.
- Fixed “Open in editor” failing silently, and it now works on a task that hasn’t been started.
- Codex no longer plays the turn-end sound partway through a turn.
- Fixed long URLs and file paths overflowing an expanded task card.
- A worktree deleted outside the app can be recreated from anywhere that opens the task.
- A redesigned diff Add comments inline on a diff and send them to your agent. Folding sticky headers, image and binary diffs, untracked file contents, and smooth rendering of large diffs. Compare a worktree against any ref - uncommitted changes, the merge target, a remote branch, or the branch as pushed.
- A better new-task composer. Improved layout and interactions,
⌘E expands it into a full document sheet with attachments. Escape keeps your draft instead of discarding it, and ⌘N opens the composer from anywhere.
- Experimental: GitHub pull requests in the app. Enable it per project under Project Settings → Experimental Features. Review from there: comment, approve, or request changes, with drafts held locally until you send them, and merge. A task can be created from an issue or checked out from a pull request, and
ouijit pr provides cli management to your agents.
- macOS no longer re-downloads the same update every hour while a restart is deferred, and Esc on the restart prompt dismisses it instead of installing.
- Terminals get a proper UTF-8 locale, fixing garbled box-drawing characters when the app is launched from Finder.
- Terminal panel tabs shrink like browser tabs instead of overflowing the header.
- Adding a project no longer offers to register neighboring repos.
- Fixed dragging to select text when renaming a task card.
- Added power user navigation with Mod+K search and switcher for terminals, projects and tasks
- Task context menus now include and option to open the task worktree directory in Finder (mac) or the OS file manager
- Removed automatic markdown and link preview panels from command output detection
- Fixed an issue where new scripts and hooks registered via the ouijit CLI did not immediately refresh
- Terminals can now be filtered by tag
- Fixed canvas control menu display from being visually clipped
Ouijit now supports custom theming and theme system preferences! Select from presets like dark, light, and favorites like Dracula and Tokyo Night, or create your own. Custom theming control is also available via the ouijit CLI so you can just simply ask a supported agent to create any theme you’d like. Ask your agent or visit app settings to try it out.
- Added nono as an experimental lightweight sandbox provider for tasks. Visit the experimental section in project settings to enable it.
- Improved new task initialization times
- Fixed an issue that could cause run script panels to close prematurely
- You can now run and attach multiple run scripts, markdown previews, and URL previews to a single terminal
- Agents can now use the
ouijit CLI to add and remove URL previews to your terminals
- OpenCode is now an integrated agent harness, with full
ouijit CLI and notification support
- Fixed an issue where white bars at window edges could be visible during window resize in light mode themes
- You can now configure the default folder for projects
- Project icon color can now be customized
- Non-task terminal shells are now surfaced on the kanban board
- Added support for fish shell
- Fixed home view terminal focus for Cmd+I and Cmd+W
- Fixed an issue where recovered runner sessions could end up orphaned from their parent task terminal
- Fixed an issue where refreshes wouldn’t persist your current view
- Fixed “Open in Editor” not launching terminal editors
- Fixed an issue where drag interaction interfered with text selection on expanded task cards in the kanban view
- Updated visual polish of toasts
- App level settings are now more discoverable, with a link out from project settings
- Lifecycle hooks has consistent dialog tie ins, and consistent CLI flags available for using, skipping, or running with one time stand-in hooks
- Improved copy and hints in hook creation dialogs
- Terminals are now exit code aware, showing a red status indicator when a command exits non-zero
- Moving a task to done now behaves consistently across kanban board drags and CLI status updates
Done hook terminals automatically close on success, or linger on non-zero exit codes so issues can be inspected
- Status indicators now have a hover tooltip
- Cleaner loading state while a workspace sets up
- Adding a plain (non-git) folder now offers to
git init it in place instead of dead-ending on a “not a git repository” error
- Refreshed the first-run onboarding: unified opt-in, recovery from stuck states, and a restyled empty state
OUIJIT_TASK_PROMPT is being deprecated in favor of OUIJIT_TASK_DESCRIPTION. Update your dependent scripts; OUIJIT_TASK_PROMPT will stop working in a future release
- Task descriptions now support inserted images and files images via paste or drag-and-drop
- Added
--run-hook, --skip-hook, and --hook-command flags to ouijit task start
- Queue concurrent start-hook dialogs instead of dropping them
- Show shortcut hints in the new-task form footer
- Fix
pi and claude subcommands opening an interactive session through the wrapper
- Fix agent wrappers re-exec’ing themselves
- Fix Shift+Enter not inserting a line break in Pi
- Fix done column hook icon not activating when a done hook is set
- Persist terminal renames and focus across restore/reconnect
- Honor Shift+Return for line breaks in terminal
- Allow entering a description before task creation
- Improve left sidebar discoverability
- Rename cleanup hook to done
- Fix
ouijit plan unset not clearing terminals current plan
- Fix OUIJIT_* values being shell-evaluated in hook commands
- Fix stale OUIJIT_TASK_PROMPT after editing a task description
- Fix Pi integration repeated audio notifications
- Added support for Pi
- Fixed issue with stale agent status indicator in the home view
- Closing the task for a terminal will now present an option to close all the tasks associated terminals
- Projects now give the option of a clean worktree checkout in addition to the default APFS clone behavior
- The ouijit CLI create-and-start command will now prompt the lifecycle hook dialog if one is set
- Various performance and UX improvements
- New app icon
- Added quick resume with previous session restoration
- Plan rendering now supports mermaid diagrams
- Improved task and project cycling transitions
- Pinnable sidebar
- Global font settings
- Autoupdate global setting
- Ouijit CLI bugfixes
- The ouijit CLI has a new command
ouijit task current for retrieving the current task of a ouijit terminal.
- Terminal cards now have the same actions available as other terminal views, along with drag handle visualization.
- Improved UI treatment, adding more depth and physicality to floating elements and buttons.
- Improved Sandbox isolation via dual worktree syncing
- Web preview panel - Run panel dev server URLs automatically detected and exposed in a new panel
- Canvas layout for terminals (Experimental) - New react-flow-based spatial layout, accessible from project settings
- Bulk task actions - Multi-select and act on tasks from the kanban board
- Task branching for stacked PRs - Branch tasks off other tasks to build stacked PR workflows
- Plan CLI commands - ouijit plan set/get/unset to associate a plan markdown file with a terminal session for preview
- Ouijit CLI reference in Claude sessions - Full CLI docs are now auto-injected into Claude Code sessions
- Fix sandbox terminal collision
- Improved Sandbox isolation via dual worktree syncing
- Web preview panel - Run panel dev server URLs automatically detected and exposed in a new panel
- Canvas layout for terminals (Experimental) - New react-flow-based spatial layout, accessible from project settings
- Bulk task actions - Multi-select and act on tasks from the kanban board
- Task branching for stacked PRs - Branch tasks off other tasks to build stacked PR workflows
- Plan CLI commands - ouijit plan set/get/unset to associate a plan markdown file with a terminal session for preview
- Ouijit CLI reference in Claude sessions - Full CLI docs are now auto-injected into Claude Code sessions
Ouijit CLI
Ouijit now ships with a CLI - ouijit - that gives you full control over your projects from the terminal.
What it does
The CLI talks to the running Ouijit app over a local REST API, so everything stays in sync with the desktop UI.
- Tasks - create, start, rename, set status, set descriptions, delete
- Hooks - configure lifecycle hooks (start, continue, review, cleanup, run, editor)
- Tags - add, remove, and set tags on tasks
- Scripts - manage and run project scripts
- Projects - manage registered projects
All commands output JSON, making it easy to pipe into jq or use in scripts.
Example
Give Claude Code a prompt like:
Create a task called “fix auth redirect”, start it, and set the description to “Session token not persisting after OAuth callback”
and it will use the CLI to do it without you leaving the terminal.
The CLI turns Ouijit into an automation target. Shell scripts and AI agents can now create tasks, trigger workflows, and react to status changes - all without touching the GUI.
Better Diffs
- Syntax-highlighted diffs — no more walls of red and green
- Word-level diffs show exactly what changed within a line
- Hunk headers between sections so you always know where you are in the file
Plan Previewer
- When Claude writes a plan, a Plan button appears in the terminal header with a rendered markdown preview
- File references in plans are clickable — opens the file in your editor
- Split-view or full-width mode with a draggable divider
- Live updates as the plan changes, with a picker to switch between multiple plans
Better Diffs
- Syntax-highlighted diffs — no more walls of red and green
- Word-level diffs show exactly what changed within a line
- Hunk headers between sections so you always know where you are in the file
Plan Previewer
- When Claude writes a plan, a Plan button appears in the terminal header with a rendered markdown preview
- File references in plans are clickable — opens the file in your editor
- Split-view or full-width mode with a draggable divider
- Live updates as the plan changes, with a picker to switch between multiple plans
- Fixed oversized icons in diff sidebar file tree
- Fixed kanban drag-and-drop not being optimistic
- Fixed task description not initially showing as updated after change
- Added a dedicated project settings panel to collect and streamline hooks, scripts, and sandbox configuration
- Enable advanced lima sandbox config via YAML
- Improved sandbox setup disclosure leading up to shell access
- Fix blank window on quit when sessions are active
- React migration: replace vanilla DOM with React components by @pbjer in https://github.com/ouijit/ouijit/pull/88
- Rename tasks via context menu
- Rename terminals during their session lifetime
- Improved diff views
- Improved scroll position preservation in terminals during TUI redraws