diff --git a/README.md b/README.md index 4597cea2..bdb00082 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,19 @@ -# cmuxterm +

cmuxterm

+

A Ghostty-based terminal with vertical tabs and a notification panel for macOS

-Vertical tabs for Ghostty on macOS, built on libghostty. +

+ + Download cmuxterm for macOS + +

-[![Download macOS](https://img.shields.io/badge/Download-macOS-1b5fdd?style=for-the-badge&logo=apple)](releases/latest/download/cmuxterm-macos.dmg) +## Features -## Releases +- **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 +- **Built on libghostty** — Native macOS performance with Ghostty's GPU-accelerated rendering +- **Auto-updates** — Stay current with Sparkle-powered updates -Tag a version like `v0.1.0` and push it to trigger the GitHub Actions release workflow. -The workflow builds `GhosttyKit.xcframework`, builds the Release app, signs, notarizes, -staples, and uploads `cmuxterm-macos.dmg` to the release. +## Why cmuxterm? -## Auto updates - -cmuxterm uses Sparkle with the same update UI flow as upstream Ghostty. The app looks for -an appcast at: - -``` -https://github.com/manaflow-ai/cmuxterm/releases/latest/download/appcast.xml -``` - -To sign updates, set these secrets for release builds: - -- `SPARKLE_PUBLIC_KEY`: Sparkle EdDSA public key (embedded in the app). -- `SPARKLE_PRIVATE_KEY`: Sparkle EdDSA private key (used when generating appcasts). - -You still need to generate and upload `appcast.xml` alongside each release asset. - -To generate keys locally (stores the private key in your Keychain and appends values -to `.env`), run: - -```bash -./scripts/sparkle_generate_keys.sh -``` - -For manual appcast generation (uses `SPARKLE_PRIVATE_KEY`): - -```bash -SPARKLE_PRIVATE_KEY=... ./scripts/sparkle_generate_appcast.sh cmuxterm-macos.dmg vX.Y.Z appcast.xml -``` - -### Required GitHub secrets - -- `APPLE_CERTIFICATE_BASE64`: Base64-encoded Developer ID Application .p12 -- `APPLE_CERTIFICATE_PASSWORD`: Password for the .p12 -- `APPLE_SIGNING_IDENTITY`: e.g. `Developer ID Application: Your Name (TEAMID)` -- `APPLE_ID`: Apple ID used for notarization -- `APPLE_APP_SPECIFIC_PASSWORD`: App-specific password for the Apple ID -- `APPLE_TEAM_ID`: Apple Developer Team ID -- `SPARKLE_PUBLIC_KEY`: Sparkle EdDSA public key for update verification -- `SPARKLE_PRIVATE_KEY`: Sparkle EdDSA private key for appcast signing +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. diff --git a/docs/assets/macos-badge.png b/docs/assets/macos-badge.png new file mode 100644 index 00000000..c76acf83 Binary files /dev/null and b/docs/assets/macos-badge.png differ