Skip to content

Support macOS native window tabbing (tabbingIdentifier) so multi-window can use Merge All Windows #1359

Description

@zwmmm

Description

First of all, thank you for Pake — it's a pleasure to use.

Is your feature request related to a problem? Please describe.

With the recently added multiWindow option (⌘N / File → New Window), multiple native windows work great. However, on macOS these windows cannot be grouped into native tabs:

  • The Window menu never shows "Merge All Windows"
  • No native tab bar in the window title area

Root cause

tauri-runtime-wry disables AppKit automatic window tabbing on macOS unless a tabbingIdentifier is set (see tauri-runtime-wry v0.12.0 release notes — "Disable automatic window tabbing on macOS when the tabbing_identifier option is not defined"):

https://github.com/tauri-apps/tauri/blob/tauri-runtime-wry-v2.10.0/crates/tauri-runtime-wry/src/lib.rs#L4349-L4355

#[cfg(target_os = "macos")]
{
  if window_builder.tabbing_identifier.is_none()
    || window_builder.inner.window.transparent
    || !window_builder.inner.window.decorations
  {
    window_builder.inner = window_builder.inner.with_automatic_window_tabbing(false);
  }
}

Pake's window builder (src-tauri/src/app/window.rs, build_window_with_label) never sets tabbing_identifier, so all Pake windows have tabbing disabled. There is also no config passthrough for it (neither in pake.json window options nor in buildWindowConfigOverrides of the CLI).

Describe the solution you'd like

  1. Add a window config option (e.g. tabbingIdentifier / tabbing_identifier) that maps to tauri's WebviewWindowBuilder::tabbing_identifier.
  2. When multiWindow is enabled, give all windows the same identifier (e.g. derived from the app name) so macOS treats them as one tab group — the "Merge All Windows" menu item and the native tab bar then appear for free.

This is how other Tauri apps enable it, e.g. microsoft/clarity-agent sets a shared tabbing_identifier for its windows and gets the Window-menu "Merge All Windows" behavior for free.

Describe alternatives you've considered

None found on the JS injection side — tabbing is an NSWindow-level property that page scripts cannot reach. The only workaround is patching Pake's Rust source locally.

Additional context

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions