Skip to content

Tear-out tabs into separate OS windows #75

@aultra

Description

@aultra

Description

Add the ability to drag a tab out of the tab bar to create a separate OS window (like Chrome/VS Code), and drag tabs between windows to merge them.

Built on top of the desktop tabbed instances feature (Phase 1, completed).

Implementation Notes

  • Use desktop_multi_window package for macOS/Windows multi-window support
  • Each window runs its own Flutter engine with independent widget tree
  • Tab state serialization enables moving tabs between windows
  • Shared services (auth, permissions, chat) are process-global — no per-window scoping needed
  • macOS: change applicationShouldTerminateAfterLastWindowClosed to false

Key changes

  • pubspec.yaml — add desktop_multi_window
  • lib/navigation/window_manager_service.dart — NEW, multi-window lifecycle
  • lib/widgets/tab_bar_widget.dartDraggable tabs + DragTarget for receiving
  • macos/Runner/AppDelegate.swift — multi-window support
  • lib/main.dart — handle window creation args

Context

See plan file: .claude/plans/curried-beaming-petal.md (Phase 2 section) for full architectural details.

Platform

  • macOS (primary)
  • Windows (when builds resume)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions