Skip to content

Add sidebar blur effect with withinWindow blending - #9

Merged
lawrencecchen merged 9 commits into
mainfrom
feature/sidebar-blur-effect
Feb 4, 2026
Merged

lawrencecchen merged 9 commits into
mainfrom
feature/sidebar-blur-effect

Conversation

@lawrencecchen

Copy link
Copy Markdown
Contributor

Summary

  • 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, Native Sidebar, etc.)
  • Default to HUD Glass preset with withinWindow blur

Test plan

  • Open Debug > Sidebar Debug... and verify controls work
  • Try different presets and verify blur effect changes
  • Verify withinWindow blending shows blurred terminal text behind sidebar
  • Verify behindWindow blending blurs desktop/other windows

- 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
@vercel

vercel Bot commented Feb 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmuxterm-docs Ready Ready Preview, Comment Feb 4, 2026 10:50am

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b35a70cb14

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/ContentView.swift
Comment on lines +115 to +120
// Overlay mode: terminal extends full width, sidebar on top
// This allows withinWindow blur to see the terminal content
ZStack(alignment: .leading) {
terminalContent
.padding(.leading, sidebarState.isVisible ? sidebarWidth : 0)
if sidebarState.isVisible {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove leading padding so withinWindow blur can see terminal

In withinWindow mode the comment says the terminal should extend full width so the blur samples terminal content, but terminalContent is padded by sidebarWidth, which shifts the terminal content to the right and leaves the sidebar area empty/transparent. This means the blur layer will not show terminal text behind the sidebar (it will blur the window background instead), so the new withinWindow mode doesn’t deliver its intended effect. This is visible whenever sidebarBlendMode is .withinWindow and the sidebar is visible.

Useful? React with 👍 / 👎.

Show close button only on hover instead of when active/multi-selected.
Remove the hover background color from tabs for cleaner appearance.
- 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 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
- 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
- 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
Use osascript to gracefully quit by bundle ID before pkill fallback.
Add more robust pkill patterns to catch instances from any DerivedData path.
- 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
@lawrencecchen
lawrencecchen merged commit cc71e57 into main Feb 4, 2026
4 checks passed
@lawrencecchen
lawrencecchen deleted the feature/sidebar-blur-effect branch February 4, 2026 11:04
swannysec added a commit to swannysec/crux that referenced this pull request Mar 3, 2026
Move ${{ steps.version.outputs.version }} from direct run: block
interpolation to env: block in update-homebrew.yml Download DMG step.
Resolves code scanning alert manaflow-ai#9.
bn-l pushed a commit to bn-l/cmux that referenced this pull request Apr 3, 2026
* 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
MasonStation added a commit to ashlrai/ashlr-mux that referenced this pull request Jul 7, 2026
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ejc3 added a commit to ejc3/cmux that referenced this pull request Jul 15, 2026
…low-ai#1, manaflow-ai#4, manaflow-ai#8, manaflow-ai#9, manaflow-ai#10, manaflow-ai#12, manaflow-ai#14)

Several linked defects in the mirror sizing transaction:

- manaflow-ai#1: applyAssignedGrids re-pinned a stale grid during a WINDOW live-resize
  (or interactive geometry drag), painting past the shrinking pane. The
  divider-drag early return does not cover a window resize, so gate the
  stale re-pin on the same suppression the view path uses.
- manaflow-ai#8: under zoom the visible tree is the single zoomed leaf, so hidden but
  live base panes were unpinned and rendered on a stale grid. Pin each pane
  from the visible tree or the base tree; clear only panes in neither.
- manaflow-ai#9: the pin-grow repaint went through the attach-only redraw kick
  (armed only at .enter), so late-granted cells stayed blank mid-session.
  Extract the shrink/restore SIGWINCH body into forceRedrawKick(windowIds:)
  and call it directly on a pin grow.
- manaflow-ai#10: the stale-repin else-if and gridParityMismatch tested only the
  under direction, so an over-render (rendered > assigned) was an invisible
  no-op. Compare with != on both axes; reapplyAssignedGrid clamps either way.
- manaflow-ai#12: gridParityMismatch read only the ledger, which goes stale because a
  same-size re-apply returns early before reporting. Read the surface's live
  grid first, falling back to the ledger.
- manaflow-ai#4: the parked-container consumer clamped an oversized parked reading to
  the bound and banked it, overwriting a correct size. Reject it (as the
  sibling oversized consumer does) and keep the last good container.
- manaflow-ai#14: rearmIfOutputMissedPlan gated on the plain isVisibleForSizing, which
  goes stale-true when a hidden tab's view is dismantled; gate on
  isEffectivelyVisibleForSizing so an offscreen mirror cannot spin re-arms.

Tests: parkedHiddenReadingOverTheBoundIsRejectedNotClamped (manaflow-ai#4),
gridParityFlagsAnOverRenderedPane (manaflow-ai#10, manaflow-ai#12), and the reworked grid-lag
test now pins that an offscreen mirror does not re-arm (manaflow-ai#14).
DananzMolt added a commit to DananzMolt/Ivrix that referenced this pull request Jul 27, 2026
Documents the fork's Hebrew work: right-to-left rendering and the
direction toggle, bidi-aware cursor placement, UAX manaflow-ai#9 glyph mirroring,
direction-aware arrow keys, the twelve selectable Hebrew faces, and
Cmd+Z undo. Records the constraints too - the uniform-advance
normalisation the faces need, and what Cmd+Z can and cannot undo.
austinywang added a commit that referenced this pull request Aug 26, 2026
Two constructs in today's #8567 never satisfy the Swift compiler (seen
on Swift 6.3.3 / Xcode 26.5): the worktree identity fields were declared
'let ... = nil', which excludes them from the memberwise initializer the
creation path calls with real values (extra arguments at #8/#9), and the
rollback guard compared an optional filesystem-identity tuple against a
non-optional one, which tuples do not support. Make the fields plain
memberwise 'let's (the only production call site provides them; the
spawn-args test now passes nil explicitly) and unwrap the current
identity before comparing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview — 21266803 Deployed Feb 4, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant