Skip to content

feat(window): adopt native macos chrome - #12

Merged
howdeploy merged 3 commits into
howdeploy:mainfrom
cododel:feat/macos-native-chrome
Aug 7, 2026
Merged

feat(window): adopt native macos chrome#12
howdeploy merged 3 commits into
howdeploy:mainfrom
cododel:feat/macos-native-chrome

Conversation

@cododel

@cododel cododel commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Adopts native macOS window chrome while preserving the existing custom CanvasTTY title bar on Windows and Linux.

UI changes

  • Adds a compact 32px macOS brand bar with space reserved for native traffic lights.
  • Preserves the existing custom title bar and right-side window controls on Windows and Linux.
  • Updates startup and failure screens to match the macOS layout from the first frame.
CanvasTTY macOS window chrome

Native macOS controls

  • Uses Electron titleBarStyle: "hidden" on macOS.
  • Positions native traffic lights at x: 12, y: 10.
  • Removes renderer-owned macOS traffic lights and fullscreen controls.
  • Leaves macOS responsible for close, minimize, maximize, fullscreen, and fullscreen hover behavior.

Platform detection

  • Detects macOS in the main process before window creation, so native chrome applies during the loading screen.
  • Exposes synchronous isMacOS through preload for the renderer’s initial layout.
  • Uses fullscreen and maximize events only to synchronize runtime layout.
  • Does not rely on browser user-agent or navigator.platform.

Fullscreen fix

  • Removes the custom fullscreen hover layer and CSS layout workaround.
  • Hides the renderer brand bar in native macOS fullscreen.
  • Restores it after the native leave-full-screen event.
  • Handles both the native green button and Control + Command + F.

Validation

  • Added coverage for platform-specific window chrome options.
  • Added coverage for native fullscreen state events and the preload contract.
  • Added startup-page coverage for native traffic-light spacing.
  • npm test — 214 passing.
  • npm run build — passing.

@howdeploy
howdeploy merged commit 1fbf28b into howdeploy:main Aug 7, 2026
2 checks passed
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.

2 participants