Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents https://cmux.com
Find a file
Lawrence Chen cc71e5797e
Add sidebar blur effect with withinWindow blending (#9)
* Add sidebar blur effect with withinWindow blending

- Add NSVisualEffectView-based blur backdrop for sidebar
- Support withinWindow blending mode to blur terminal content behind sidebar
- Auto-switch to overlay layout when withinWindow mode is selected
- Add sidebar debug panel with material, blending, tint, and opacity controls
- Add preset options (HUD Glass, Popover Glass, etc.)
- Default to HUD Glass preset with withinWindow blur

* Simplify tab close button visibility and remove hover background

Show close button only on hover instead of when active/multi-selected.
Remove the hover background color from tabs for cleaner appearance.

* Add config reload support with notification system

- Add reloadConfiguration() methods for app-wide and per-surface reload
- Handle GHOSTTY_ACTION_RELOAD_CONFIG action from Ghostty
- Add ghosttyConfigDidReload notification for views to react
- TerminalSplitTreeView reloads GhosttyConfig on notification
- Add openConfigurationInTextEdit() helper
- Fix activeMainWindow() to correctly find main window

* Add custom tab titles and pinned tabs support

- Add customTitle and isPinned properties to Tab
- Separate process title from custom title with applyProcessTitle()
- Add setCustomTitle()/clearCustomTitle() for user-defined tab names
- Add togglePin()/setPinned() with automatic reordering
- Pinned tabs stay at the top, new tabs insert after pinned section
- moveTabToTop/moveTabsToTop respect pinned tab ordering

* Add --panel option to new-split command

- CLI: Parse --panel <id|index> option for new-split
- Controller: Resolve panel argument to split specific surface
- Return new panel UUID on successful split creation

* Fix notifications popover positioning with layout-aware anchor

- Use AnchorNSView with layout callback for reliable positioning
- Force layout before showing popover to ensure current geometry
- Convert anchor bounds to window content view coordinates
- Add fallback positioning near top-left when anchor unavailable
- Fix button hit testing with explicit frame and contentShape

* Improve app termination in reload script

Use osascript to gracefully quit by bundle ID before pkill fallback.
Add more robust pkill patterns to catch instances from any DerivedData path.

* Add sidebar blur effect with live-adjustable glass settings

- Add WindowGlassEffect for window-level NSGlassEffectView (macOS 26+)
- Add SidebarBackdrop with configurable material, blend mode, tint, and opacity
- Add Sidebar Debug panel (Debug menu) for live adjustment of sidebar appearance
- Add Background Debug panel for window glass tint settings
- Support both behindWindow and withinWindow blur modes
- Live tint updates without requiring window reload

* Align titlebar text to left edge of content area
2026-02-04 03:04:45 -08:00
.claude/commands Focus release changelog on end-user visible changes 2026-01-30 16:58:29 -08:00
.github/workflows Fix CI build cache error by cleaning DerivedData 2026-01-29 17:55:02 -08:00
Assets.xcassets Add dev build branding and reload scripts 2026-01-28 01:20:48 -08:00
CLI Add --panel flag to new-split command (#10) 2026-02-03 21:37:49 -08:00
docs Add notifications documentation for AI agent integrations 2026-01-29 17:20:55 -08:00
docs-site Bump version to 1.15.0 (#6) 2026-01-30 20:41:43 -08:00
ghostty@4713b7e236 Update ghostty submodule workflow 2026-01-28 22:35:28 -08:00
GhosttyTabs.xcodeproj Bump version to 1.15.0 (#6) 2026-01-30 20:41:43 -08:00
GhosttyTabsUITests Add UI test for jump-to-unread focus 2026-01-29 19:28:15 -08:00
homebrew-cmuxterm@c12d753824 Add homebrew-cmuxterm as submodule 2026-01-29 04:44:31 -08:00
node_modules Update app and tooling 2026-01-29 17:36:26 -08:00
Resources/ghostty/terminfo/78 Add cmuxterm CLI and socket control modes 2026-01-28 21:19:48 -08:00
scripts Add sidebar blur effect with withinWindow blending (#9) 2026-02-04 03:04:45 -08:00
Sources Add sidebar blur effect with withinWindow blending (#9) 2026-02-04 03:04:45 -08:00
tests Align render loop with Ghostty (#5) 2026-01-30 20:39:21 -08:00
.gitignore Add zig, node, and hypothesis to gitignore (#8) 2026-02-03 15:18:59 -08:00
.gitmodules Add homebrew-cmuxterm as submodule 2026-01-29 04:44:31 -08:00
.vercelignore Add Vercel ignore 2026-01-29 17:50:35 -08:00
AGENTS.md agents 2026-01-22 03:18:02 -08:00
bun.lock Update app and tooling 2026-01-29 17:36:26 -08:00
CHANGELOG.md Bump version to 1.15.0 (#6) 2026-01-30 20:41:43 -08:00
CLAUDE.md claude 2026-02-01 21:59:01 -08:00
cmux-Bridging-Header.h Rename to cmux and add About panel 2026-01-26 03:05:03 -08:00
CONTRIBUTING.md Include local changes 2026-01-30 16:46:30 -08:00
ghostty.h Initial commit: macOS terminal app with vertical tabs using libghostty 2026-01-22 01:16:24 -08:00
package.json Update app and tooling 2026-01-29 17:36:26 -08:00
Package.resolved Initial commit: macOS terminal app with vertical tabs using libghostty 2026-01-22 01:16:24 -08:00
Package.swift Rename to cmux and add About panel 2026-01-26 03:05:03 -08:00
README.md Add documentation site and Homebrew installation 2026-01-29 04:41:39 -08:00
TODO.md wip 2026-01-29 20:39:21 -08:00

cmuxterm

A lightweight native macOS terminal with vertical tabs and notifications for AI coding agents

Download cmuxterm for macOS

Features

  • Native macOS app — Built with Swift and AppKit, not Electron. Fast startup, low memory.
  • Vertical tabs — See all your terminals at a glance in a sidebar
  • Notification panel — Tabs flash when AI agents (Claude Code, Codex) need your attention
  • Lightweight — Small binary, minimal resource footprint. No bundled browser engine.
  • GPU-accelerated — Powered by libghostty for smooth rendering

Install

Homebrew:

brew tap manaflow-ai/cmuxterm
brew install --cask cmuxterm

Or download the DMG directly.

Why cmuxterm?

Running multiple AI coding agents? cmuxterm helps you manage them. Instead of losing track of which terminal needs input, the notification panel shows you exactly where to look.

A native macOS app means it launches instantly, uses minimal RAM, and feels right at home on your Mac.