Commit graph

144 commits

Author SHA1 Message Date
Lawrence Chen
fc5d7eeb05 Bump version to 1.19.2 2026-02-08 18:50:46 -08:00
Lawrence Chen
dd11852ca3 Enable update pill in Release builds
The UpdatePill toolbar item was wrapped in #if DEBUG, making it
invisible in production builds. Users never saw checking/error
states in the titlebar.
2026-02-08 18:31:34 -08:00
Lawrence Chen
dc69451b29 Show checking spinner before update errors
Errors from Sparkle were bypassing the minimum check display duration,
causing the error to appear instantly (1ms) without the user ever
seeing the "Checking for updates" state. Use setStateAfterMinimumCheckDelay
for errors too so the checking spinner shows for at least 2 seconds.
2026-02-08 18:07:54 -08:00
Lawrence Chen
082aef6a53 Skip background glass effect on macOS 26 to fix blank window
The transparency setup (non-opaque window + clear subview backgrounds)
required for the glass effect breaks SwiftUI content rendering on
macOS 26. Disable background glass when NSGlassEffectView is available
until a proper macOS 26 implementation is found.
2026-02-08 17:40:10 -08:00
Lawrence Chen
09f27d91f1 Revert to npm create-dmg for styled DMG layout
hdiutil produces a basic layout. npm create-dmg (sindresorhus) gives
large centered icons with proper spacing. The blank Applications icon
is a macOS 26 rendering issue that affects both approaches.
2026-02-08 17:30:49 -08:00
Lawrence Chen
08a654882d Use hdiutil for DMG creation instead of create-dmg
create-dmg (brew) uses AppleScript/Finder for icon positioning which
times out on headless CI. Switch to hdiutil with Applications symlink
for reliable CI builds.
2026-02-08 17:20:49 -08:00
Lawrence Chen
b4c90a0912 Fix create-dmg PATH conflict on self-hosted runner
Remove npm create-dmg before installing brew version to avoid
the npm version taking precedence in PATH.
2026-02-08 17:14:58 -08:00
Lawrence Chen
cb4c87113b Fix blank Applications icon in DMG installer
Switch from npm create-dmg (sindresorhus) to brew create-dmg
(create-dmg/create-dmg) which properly renders the Applications
folder symlink icon with explicit layout control.
2026-02-08 17:11:19 -08:00
Lawrence Chen
d2ecfc4342
Bump version to 1.19.1 (#23) 2026-02-08 17:04:31 -08:00
Lawrence Chen
29658c18ae
Bump version to 1.19.0 (#22) 2026-02-08 16:34:08 -08:00
Lawrence Chen
c1d0610a2d Fix blank window with NSGlassEffectView on macOS 26
Avoid Auto Layout reparenting of SwiftUI hosting view when applying glass; force HFS+ DMG so volume name mounts as cmuxterm.
2026-02-08 15:59:38 -08:00
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