Releases: mavdotso/cctray
Release list
v0.5.0 — Accurate Working/Idle status
Accurate Working/Idle status
- Session rows now show Working while Claude or Codex works. Before, they showed Idle almost all the time: Claude used a CPU threshold, and Codex 0.159 transcripts were not recognized.
- Claude status comes from the
UserPromptSubmitandStophooks, so it changes at once. Each row now links to its exact session. When you press Esc, the row changes to Idle within 5 seconds. - The Claude hooks stay installed while Claude is enabled. The Attention chime toggle now controls only the notifications.
- No more "Claude finished" notifications for Claude runs without a terminal, such as the pre-warm and scripts.
Known limit: a Claude session that waits for a permission prompt shows Working.
Build from source on macOS 14 or later. This release does not include a downloadable binary. See the README for installation instructions.
Validation: a harness ran 21 checks against the real sources, and real claude -p runs went through the generated hook. A live scan showed correct states for Claude and Codex. The local release build was installed and launched, and an orphaned claude -p with no terminal gave no notification.
Full changelog: v0.4.0...v0.5.0
v0.4.0 — Native Settings and the current macOS design
Native Settings and the current macOS design
- The app now builds against the installed macOS SDK. Before, macOS drew the pre-26 design because the binary reported SDK 14.0. The minimum macOS version stays 14.
- Settings uses a sidebar with gray icon badges and native grouped forms. The large page headers are gone.
- The menu window shrinks when a row goes away, so no empty bands show at the top and bottom.
- Kill orphaned sessions and Clean stale worktrees use the same row style, in one group below the sessions list.
Build from source on macOS 14 or later; this release does not include a downloadable binary. See the README for installation instructions.
Validation: on macOS 27, a debug build hid a section while the menu was open: the window shrank from 523 pt to 442 pt with no bands, and it still grows. Screenshots checked both cleanup rows, all four Settings panes, and the Clean Worktrees window with a real stale worktree. Local release build installed and launched.
Full changelog: v0.3.3...v0.4.0
v0.3.3 — Clean Worktrees with checkboxes
Clean Worktrees with checkboxes
- Each worktree has a checkbox. A Select all checkbox shows a mixed state when only some rows are selected.
- The list fits its rows and scrolls after 360 pt, so the explanation and footer no longer clip.
- Orange marks only worktrees with uncommitted changes or a lock. Size shows in its own column, and the footer reads "None selected" when nothing is selected.
- Remove asks for confirmation when the selection has uncommitted changes, because those changes are lost.
Build from source on macOS 14 or later; this release does not include a downloadable binary. See the README for installation instructions.
Validation: a harness hosted the real view in AppKit windows and captured screenshots of 4 layouts. Scripted clicks checked Select all, a click on a row name, and the Remove confirmation. Local release build installed and launched.
Full changelog: v0.3.2...v0.3.3
v0.3.2 — Notify when agents finish
Notify when agents finish
- Claude notifications wait while a background subagent, workflow, teammate, or cloud session runs. Only the final stop notifies.
- Background shells and monitors do not hold notifications, because dev servers and watchers never finish.
- Codex notifications ignore internal title-generation turns and do not add a duplicate notify entry when another integration already chains cctray.
Build from source on macOS 14 or later; this release does not include a downloadable binary. See the README for installation instructions.
Validation: a scratch harness ran 12 cases through the attention parser, including a real logged Stop payload with 2 running subagents. All pass; with the change reverted, the 4 agent cases fail. Local release build installed and launched.
Full changelog: v0.3.1...v0.3.2
v0.3.1 — Clean Worktrees in Settings style
Clean Worktrees in Settings style
- The Clean Worktrees window uses the same grouped form, switch toggles, and window background as Settings. The window title shows in the title bar.
- The Remove button shows a spinner while removal runs. The footer reads "Removing N…" and the rows stay locked until removal ends.
Build from source on macOS 14 or later; this release does not include a downloadable binary. See the README for installation instructions.
Validation: preview harness with a temp git repo checked the picker, the spinner mid-removal, and the success screen; local release build installed and launched.
Full changelog: v0.3.0...v0.3.1
v0.3.0 — Silent alerts and Codex notify chaining
Silent alerts and Codex notify chaining
- The attention chime now installs next to an existing Codex
notifycommand instead of refusing. cctray logs the turn, then runs your command with the same payload. Turning the chime off restores the original line. - New Silent alerts setting: keep the notification, skip the sound.
- Relogin detects a login to the same email. Before, it waited for the email to change and reported "No login found".
- Codex usage shows Session and Week. When Codex reports only a weekly limit, the card is one line:
Codex · Week. The Spark column is gone. - The chime error line moved from the menu row to Settings. The Settings window is taller so the last section fits.
- Removed the
CCTray-era migration shims, theSecItemfallback, the access-token cache, and other dead code. Onelsofpass per session scan. - CI builds on
macos-26.
Build from source on macOS 14 or later; this release does not include a downloadable binary. See the README for installation instructions.
Validation: local release build installed and checked in the menu and Settings; self-checks for the Codex notify block and the lsof parser; GitHub CI green.
Full changelog: v0.2.0...v0.3.0
v0.2.0 — Claude Code and Codex
Claude Code and Codex, together
- Add Codex CLI terminal sessions, account switching, and usage limits alongside Claude Code.
- Enable each agent independently and configure its new-session hotkey in Settings.
- Keep the existing usage layout, with available Codex session, weekly, and Spark limits side by side.
- Share attention chimes, terminal focus, keep-awake, and one pre-warm switch across both agents.
- Track Codex working/idle state from transcript events and prevent stale account responses from replacing current usage.
- Use two fixed Settings columns with Liquid Glass on supported macOS versions; opening Settings dismisses the menu.
- Update the website, social preview, and docs for Codex and installation in Applications.
- Remove the test suite and its CI wiring.
Build from source on macOS 14 or later; this release does not include a downloadable binary. See the README for installation instructions.
Validation: local macOS release build and code-signature verification passed; website production build passed. GitHub CI was not required for this release due to the reported billing issue.
Full changelog: v0.1.0...v0.2.0