From 3097a30428817997adf0d9ea39ccd975b4ff50c2 Mon Sep 17 00:00:00 2001 From: flemming-it Date: Mon, 1 Jun 2026 00:06:04 +0200 Subject: [PATCH] =?UTF-8?q?fix(studio):=20larger=20default=20window=20?= =?UTF-8?q?=E2=80=94=201440x900=20across=20all=20platforms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stefan observed the default Studio window opened smaller than comfortable when launched fresh (no persisted size). On macOS specifically the xib-stored default was around 800x600 — too tight to read the sidebar + content + run panel side-by-side. Set 1440x900 as the initial content size across all three host platforms: - macOS: MainFlutterWindow.swift sets contentSize via NSWindow.setContentSize after the FlutterViewController attaches, and centers on the active NSScreen. Clamped to the screen's visibleFrame so we never open larger than the display (matters for non-Retina external monitors). - Linux: gtk_window_set_default_size 1280x720 -> 1440x900 - Windows: Win32Window::Size 1280x720 -> 1440x900 1440x900 is the effective Retina resolution of a 13" MacBook (Stefan's dev machine) and the smallest "modern desktop" footprint that lets the sidebar + content + tool panel breathe. Version 0.51.8 -> 0.51.9. Signed-off-by: flemming-it --- lib/main.dart | 2 +- linux/runner/my_application.cc | 2 +- macos/Runner/MainFlutterWindow.swift | 17 +++++++++++++++-- pubspec.yaml | 2 +- windows/runner/main.cpp | 2 +- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 2c7e5bd..3d92a60 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -27,7 +27,7 @@ import 'widgets/widgets.dart'; /// Studio's own build version. Bump on every UI commit so the /// running app self-identifies — visible in the sidebar header /// and quick-glance proof that you're seeing the current build. -const String kStudioVersion = '0.51.8'; +const String kStudioVersion = '0.51.9'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); diff --git a/linux/runner/my_application.cc b/linux/runner/my_application.cc index f3bd58e..1ce191f 100644 --- a/linux/runner/my_application.cc +++ b/linux/runner/my_application.cc @@ -52,7 +52,7 @@ static void my_application_activate(GApplication* application) { gtk_window_set_title(window, "F\u2206I Studio"); } - gtk_window_set_default_size(window, 1280, 720); + gtk_window_set_default_size(window, 1440, 900); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments( diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift index 3d56843..d479ec9 100644 --- a/macos/Runner/MainFlutterWindow.swift +++ b/macos/Runner/MainFlutterWindow.swift @@ -4,15 +4,28 @@ import FlutterMacOS class MainFlutterWindow: NSWindow { override func awakeFromNib() { let flutterViewController = FlutterViewController() - let windowFrame = self.frame self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) // Override the window title so the OS task switcher and // window chrome read "F∆I Studio" instead of the // pubspec-derived "fai_studio". self.title = "F∆I Studio" + // Pick a comfortable default window size. 1440x900 is the + // effective Retina resolution of a 13" MacBook (Stefan's + // dev machine) and the smallest "modern desktop" footprint + // that comfortably fits the sidebar, content area, and a + // tooling panel side-by-side. Clamp to the active screen's + // visibleFrame so we never open larger than the display — + // important for external monitors at non-Retina scales. + if let screen = NSScreen.main { + let visible = screen.visibleFrame + let targetWidth = min(CGFloat(1440), visible.width) + let targetHeight = min(CGFloat(900), visible.height) + self.setContentSize(NSSize(width: targetWidth, height: targetHeight)) + self.center() + } + RegisterGeneratedPlugins(registry: flutterViewController) super.awakeFromNib() diff --git a/pubspec.yaml b/pubspec.yaml index 0fb50a8..24982bd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: fai_studio description: "F∆I Studio — desktop GUI for the F∆I hub" publish_to: 'none' -version: 0.51.8 +version: 0.51.9 environment: sdk: ^3.11.0-200.1.beta diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp index f7734db..a24729f 100644 --- a/windows/runner/main.cpp +++ b/windows/runner/main.cpp @@ -26,7 +26,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, FlutterWindow window(project); Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); + Win32Window::Size size(1440, 900); if (!window.Create(L"F\u2206I Studio", origin, size)) { return EXIT_FAILURE; }