Commit graph

133 commits

Author SHA1 Message Date
Lawrence Chen
0fca79e7dd Test CI concurrency serialization 2026-02-06 23:15:50 -08:00
Lawrence Chen
20c62b3b9a
Fix CI race condition on self-hosted runner (#19)
* Fix zsh ZDOTDIR wrapper + log parsing with -- messages

* Fix CI race condition: serialize self-hosted builds with concurrency group

Two workflows racing on the same self-hosted runner caused DerivedData
corruption (release's rm -rf nuked DerivedData while CI was building).
Add shared concurrency group and scope DerivedData cleanup to project.
2026-02-06 22:32:14 -08:00
Lawrence Chen
679f88f753
Bump version to 1.18.0 (#17) 2026-02-06 18:15:29 -08:00
Lawrence Chen
7e69751e1b
Sidebar metadata + tagged reload isolation (#16)
* Sidebar primitives + tagged dev isolation

* Allow wider sidebar resize

* Fix tagged socket selection + panel id errors

* Fix progress label quoting + bundle suffix sanitize

* Skip ctrl-enter keybind test when keystrokes blocked

* Fix shell nc hang + prune stale per-surface sidebar metadata
2026-02-06 18:09:56 -08:00
Lawrence Chen
b3c2a8c7c3 Document --tag flag for parallel builds in CLAUDE.md 2026-02-05 23:06:48 -08:00
Lawrence Chen
be9aa135cf Bump version to 1.17.3 2026-02-05 19:57:23 -08:00
Lawrence Chen
0340e794b8
Fix Sparkle auto-update: inject SUPublicEDKey into Info.plist via PlistBuddy (#15)
Root cause: INFOPLIST_KEY_ build setting prefix only works for Apple-recognized
keys (CF*, NS*, LS*), not custom keys like SUPublicEDKey. The key was never
being added to Info.plist, so generate_appcast silently skipped EdDSA signing
(no public key in app = nothing to match against).

Fix:
- Derive public key from private key at build time using CryptoKit
- Use PlistBuddy to inject SUPublicEDKey and SUFeedURL after build
- Add sign_update fallback in appcast script if generate_appcast skips signing
- Add base64 padding normalization for key handling
2026-02-05 19:57:01 -08:00
Lawrence Chen
1733f697a7 Bump version to 1.17.2 2026-02-05 19:38:50 -08:00
Lawrence Chen
6391300d52 Fix Sparkle appcast signing: write key to file instead of stdin
generate_appcast doesn't reliably read EdDSA key from stdin via
--ed-key-file -. Write key to a temp file instead.
2026-02-05 19:38:38 -08:00
Lawrence Chen
906186e190 Bump version to 1.17.1 2026-02-05 19:34:05 -08:00
Lawrence Chen
b56da22b43 Fix Sparkle public key not embedded in release builds
SPARKLE_PUBLIC_KEY was set as a shell env var but Xcode needs it passed
as a build setting argument. Without SUPublicEDKey in Info.plist, Sparkle
silently ignores updates.
2026-02-05 19:33:47 -08:00
Lawrence Chen
7e8de5ac9d
Bump version to 1.17.0 (#14) 2026-02-05 19:20:51 -08:00
Lawrence Chen
fe0b33f19b
Fix traffic lights and titlebar overlap on older macOS (#13)
WindowGlassEffect.apply() replaced the window's contentView with the
glass/blur view on all macOS versions. On macOS 13-15, swapping the
contentView on a window with fullSizeContentView + transparent titlebar
breaks the titlebar view hierarchy, causing traffic light buttons to
disappear behind the content.

Split into two paths:
- macOS 26+ (NSGlassEffectView): full contentView replacement (safe)
- macOS 13-15: insert NSVisualEffectView as a background subview of the
  existing contentView, preserving the titlebar hierarchy

Also fix the custom titlebar overlay overlapping the traffic lights and
left titlebar accessories (sidebar/bell/+ buttons) when the sidebar is
hidden. Use TitlebarLeadingInsetReader to dynamically measure the actual
width of traffic lights + left accessories and apply it as leading padding.
2026-02-05 19:16:38 -08:00
Lawrence Chen
36604ceb19
Bump version to 1.16.0 (#11) 2026-02-04 16:35:51 -08:00
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
Lawrence Chen
600683cd7d
Add --panel flag to new-split command (#10)
* Add --panel flag to new-split command

Allows splitting a specific panel without changing focus first.

Usage: cmuxterm new-split <direction> [--panel <id|index>]

Example: cmuxterm new-split down --panel 1

* Return new panel ID from new-split command

new-split now returns the UUID of the newly created panel, enabling
reliable chaining of split operations without index drift issues.

Before: OK
After:  OK F2675177-3838-49AF-A1A0-1744C0048E99

Example workflow to create left + 2x2 grid on right:
  RIGHT=$(cmuxterm new-split right | awk '{print $2}')
  BOTTOM=$(cmuxterm new-split down --panel $RIGHT | awk '{print $2}')
  cmuxterm new-split right --panel $RIGHT
  cmuxterm new-split right --panel $BOTTOM
2026-02-03 21:37:49 -08:00
Lawrence Chen
7bae1216ff Fix race condition in reload.sh causing -600 error
Add delay after pkill to give Launch Services time to release the
old process handle before opening the new app.
2026-02-03 15:30:23 -08:00
Lawrence Chen
7d951a7f73
Add zig, node, and hypothesis to gitignore (#8) 2026-02-03 15:18:59 -08:00
Lawrence Chen
2afadbbbb9
Add bump-version script and improve reload script (#7)
- bump-version.sh: Automated version bumping for marketing and build
  versions with major/minor/patch support
- reload.sh: Enhanced with better process management, GhosttyKit
  rebuild detection, and improved error handling
2026-02-03 15:17:49 -08:00
Lawrence Chen
c52d5afa53 claude 2026-02-01 21:59:01 -08:00
Lawrence Chen
84e3ee6a56
Bump version to 1.15.0 (#6) 2026-01-30 20:41:43 -08:00
Lawrence Chen
9cb9c1389c
Align render loop with Ghostty (#5) 2026-01-30 20:39:21 -08:00
Lawrence Chen
e6975bd39b Focus release changelog on end-user visible changes
Update release skill to exclude internal/developer changes like
setup scripts, CI, docs, and tests from the changelog. Only
user-facing features, bug fixes, and UI changes should be included.
2026-01-30 16:58:29 -08:00
Lawrence Chen
74e1893312
Bump version to 1.14.0 (#4) 2026-01-30 16:50:32 -08:00
Lawrence Chen
e234123c17 Include local changes 2026-01-30 16:46:30 -08:00
Lawrence Chen
4b77b1117d Fix focus-on-scroll and harden reload scripts 2026-01-30 16:46:30 -08:00
Lawrence Chen
46eefc733e
Bump version to 1.13.0 (#3) 2026-01-29 21:40:00 -08:00
Lawrence Chen
a9ca768577
Merge pull request #1 from manaflow-ai/fix/find-cmdf-focus
Fix find focus and align search overlay
2026-01-29 21:34:00 -08:00
Lawrence Chen
56af7e958a
Merge pull request #2 from manaflow-ai/sentry-environment-config
Disambiguate Sentry environment between production and dev
2026-01-29 20:56:09 -08:00
Lawrence Chen
054da7e883 Disambiguate Sentry environment between production and dev
Set Sentry environment to "development" for DEBUG builds and "production"
for Release builds. Also disable debug logging in production to reduce
noise and potential performance impact.
2026-01-29 20:41:50 -08:00
Lawrence Chen
ca5a9e715e wip 2026-01-29 20:39:21 -08:00
Lawrence Chen
3d022db148 Fix find focus and align search with Ghostty 2026-01-29 20:36:32 -08:00
Lawrence Chen
986f354971 Add UI test for jump-to-unread focus 2026-01-29 19:28:15 -08:00
Lawrence Chen
cb51710d94 Record jump-to-unread focus on first responder 2026-01-29 19:28:12 -08:00
Lawrence Chen
cf6ae2b72d Add KeyboardShortcutSettings to enable customizable shortcuts
The SettingsView was referencing KeyboardShortcutSettings but the file
was not committed, causing CI build failures.
2026-01-29 19:01:20 -08:00
Lawrence Chen
f622dff0a4 Update release skill to use PR workflow with CI monitoring 2026-01-29 18:52:39 -08:00
Lawrence Chen
a4623b9336 Point docs link to term.cmux.dev 2026-01-29 18:51:18 -08:00
Lawrence Chen
3fe9f710c6 Remove duplicate changelog heading 2026-01-29 18:49:13 -08:00
Lawrence Chen
ad86227571 Add changelog and release command
- Add CHANGELOG.md with version history
- Add changelog page to docs site
- Add /release command for preparing releases
2026-01-29 17:58:10 -08:00
Lawrence Chen
7c8ac4c887 Fix CI build cache error by cleaning DerivedData
Add a step to remove stale GhosttyTabs DerivedData before building
to prevent the "cannot open constant extraction protocol list input
file" error that occurs with incremental builds on self-hosted runners.
2026-01-29 17:55:02 -08:00
Lawrence Chen
99c9baa2d4 Add Vercel ignore 2026-01-29 17:50:35 -08:00
Lawrence Chen
af2ab0955c Handle scale on screen changes 2026-01-29 17:46:55 -08:00
Lawrence Chen
a77a684548 Fix SwiftPM cache for releases 2026-01-29 17:45:00 -08:00
Lawrence Chen
142cd19d13 Bump version to 1.11.0 2026-01-29 17:37:19 -08:00
Lawrence Chen
e620ec7349 Update app and tooling 2026-01-29 17:36:26 -08:00
Lawrence Chen
3046531bdd Add notifications documentation for AI agent integrations
Document how to use cmuxterm CLI for notifications with Claude Code,
Codex, and OpenCode. Includes one-liner examples with automatic
detection and fallback to macOS notifications.
2026-01-29 17:20:55 -08:00
Lawrence Chen
bb20dc40e4 Fix release workflow: clear SPM cache before build 2026-01-29 17:12:43 -08:00
Lawrence Chen
eb7c06ceb1 Fix high CPU usage from notifications and add regression tests
- Fix auto-updating Text(date, style: .time) causing continuous SwiftUI updates
  by using static formatting with .formatted(date:time:)
- Fix notification popover keeping SwiftUI observers active when closed by
  clearing contentViewController on popover close and recreating on open
- Fix focus loss when notifications arrive while typing by only setting
  focus in NotificationsPage when the page is visible
- Make Update Pill and Update Logs debug-only features
- Add CPU regression tests: test_cpu_usage.py, test_cpu_notifications.py
- Add lint test for auto-updating Text patterns: test_lint_swiftui_patterns.py
2026-01-29 17:02:16 -08:00
Lawrence Chen
5e6aad94c4 Add Sentry SDK for crash reporting
Initialize Sentry on app launch to capture crashes and errors.
Adds a debug menu item to trigger test crashes for verification.
2026-01-29 16:09:47 -08:00
Lawrence Chen
1c75df2f9f Add homebrew-cmuxterm as submodule 2026-01-29 04:44:31 -08:00