Skip to content

fix(desktop): preserve macOS fullscreen window chrome - #3330

Merged
GCWing merged 1 commit into
mainfrom
codex/fix-macos-fullscreen-chrome
Oct 10, 2026
Merged

GCWing merged 1 commit into
mainfrom
codex/fix-macos-fullscreen-chrome

Conversation

@GCWing

@GCWing GCWing commented Oct 10, 2026

Copy link
Copy Markdown
Owner

Summary

Fix macOS traffic-light misalignment and navigation overlap after native fullscreen transitions. The desktop host derives the button inset from the shared 45px toolbar token and AppKit metrics, publishes native transition phases, and keeps buttons suppressed until the frontend has painted the reserved space.

Vendor Tao 0.36.0 with a focused macOS patch that restores the inset after queued style changes and native titlebar layout, even when Wry replaces the content view. The upstream sources and Apache-2.0 licenses are retained; third_party/tao/OPENBITFUN-PATCH.md records the patch and removal condition. Dependency audits continue to inspect its resolved feature closure.

Type and Areas

Bug fix / desktop, Web UI, native window dependency and boundary checks.

Motivation / Impact

Native fullscreen exit can reset traffic-light geometry after the framework has already restored it. Frontend resize polling can also restore the overlay titlebar too late, placing controls over returning native buttons. AppKit now owns phase timing, while the frontend waits for toolbar transitions and paint before acknowledging clearance. Older frontend and host combinations retain string-payload and no-ack compatibility.

Verification

  • pnpm --dir src/web-ui run test:run src/infrastructure/runtime/fullscreenChrome.test.ts src/app/hooks/useFullscreenChrome.test.tsx src/app/layout/WorkspaceBody.presentation.test.ts — 12 tests passed.
  • pnpm run check:web — passed, including type checking and appearance/theme governance.
  • pnpm run check:core-boundaries:test — 149 tests passed.
  • pnpm run check:core-boundaries — passed.
  • pnpm run check:repo-hygiene — passed.
  • cargo check --locked -p openbitfun-desktop — passed on macOS.
  • cargo test --locked -p openbitfun-desktop --no-default-features --lib macos_window_chrome::tests — 4 tests passed.
  • cargo test --manifest-path third_party/tao/Cargo.toml --test macos_chrome_layout — passed on macOS with display access; covers repeated native relayout with custom/default chrome after content-view replacement.
  • node scripts/check-git-object-sizes.mjs --base origin/main --head HEAD and git diff --check — passed.
  • pnpm run motion:audit — reviewed inventory; transitions honor reduced motion.

Reviewer Notes

AI-assisted; focused automated testing completed. A manual fullscreen animation recording and full remote end-to-end tests were not performed. CI provides the broader cross-platform coverage.

Remote workspace, remote control, Peer Device Mode, and Detached Dispatch were not exercised end to end. This presentation handshake is local to the macOS controller window and does not add product commands or route through session/peer transport. The transport test verifies no subscription is armed on web hosts. Legacy string payloads and clients without paint-ack support are covered.

Dependency ownership: openbitfun-desktop::macos_window_chrome alone selects the added AppKit/Foundation features and existing Block2 version under cfg(macos). Only the macOS desktop consumes these APIs. They add no new library version or native build toolchain; existing Objective-C wrappers provide the notification blocks and native window access. Tao remains the existing cross-platform window dependency at version 0.36.0, with changes confined to its macOS backend. Desktop compilation, native layout tests, and the dependency-boundary checks are the focused verification.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • No new user-facing strings or locale changes are required.

@GCWing
GCWing merged commit 7c3a09f into main Oct 10, 2026
14 checks passed
@GCWing
GCWing deleted the codex/fix-macos-fullscreen-chrome branch October 21, 2026 15:51
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