diff --git a/linux/CHANGELOG.md b/linux/CHANGELOG.md index c6b155d..a98dca7 100644 --- a/linux/CHANGELOG.md +++ b/linux/CHANGELOG.md @@ -9,6 +9,21 @@ The version is defined in [`blitztext/__init__.py`](blitztext/__init__.py). ## [Unreleased] +## [2.03.33] - 2026-06-10 + +### Fixed +- **Settings window no longer resizes when switching pages.** Added + `Gtk.Stack.set_homogeneous(True)` so the dialog always allocates the + maximum page height, preventing the window from growing or shrinking + as pages are visited. +- **Benchmark — Wakeword: "Engines to test" section no longer hidden.** + The paned divider position was raised from 260 to 390 px so all TTS + config fields, the engine checkboxes, wakeword model selector, sample + count, and run button are fully visible without scrolling. Both + benchmark pages also disable the page-level `ScrolledWindow` so the + paned correctly fills the viewport height rather than expanding + past it. + ## [2.03.32] - 2026-06-10 ### Changed diff --git a/linux/blitztext/__init__.py b/linux/blitztext/__init__.py index b4a4c3f..346b158 100644 --- a/linux/blitztext/__init__.py +++ b/linux/blitztext/__init__.py @@ -6,4 +6,4 @@ counterpart to the macOS Blitztext menu bar app: it runs natively on the host (not in a container) so it can type into any application via xdotool. """ -__version__ = "2.03.32" +__version__ = "2.03.33" diff --git a/linux/blitztext/gtksettings.py b/linux/blitztext/gtksettings.py index 7c891e3..8e43f6a 100644 --- a/linux/blitztext/gtksettings.py +++ b/linux/blitztext/gtksettings.py @@ -840,6 +840,7 @@ class SettingsDialog: # Right stack self._stack = Gtk.Stack() self._stack.set_transition_type(Gtk.StackTransitionType.NONE) + self._stack.set_homogeneous(True) # keep window size stable across pages _body.pack_start(self._stack, True, True, 0) # Resize-grip strip — sits below the body, above the button row, so @@ -2496,6 +2497,11 @@ class SettingsDialog: self.bench_summary.set_margin_top(4); self.bench_summary.set_margin_bottom(2) results_box.pack_start(self.bench_summary, False, False, 0) + # Disable the page-level SW so the paned fills the viewport height + _psw = page.get_parent() + if isinstance(_psw, Gtk.ScrolledWindow): + _psw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER) + paned = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL) paned.pack1(sel_sw, resize=True, shrink=False) paned.pack2(results_box, resize=True, shrink=False) @@ -2642,6 +2648,11 @@ class SettingsDialog: results_box.pack_start(ww_sw, True, True, 0) results_box.pack_start(self.wwb_summary, False, False, 0) + # Disable the page-level SW so the paned fills the viewport height + _psw = page.get_parent() + if isinstance(_psw, Gtk.ScrolledWindow): + _psw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER) + # Wrap controls in a ScrolledWindow so the pane can shrink past its # natural height when the user drags the divider upward. ctrl_sw = Gtk.ScrolledWindow() @@ -2650,10 +2661,12 @@ class SettingsDialog: ctrl_sw.add(ctrl) # ---- Paned: drag the divider to give more space to the table ---- + # Controls need ~390px (URL + key + model + voices + Connect + + # engines section + checkboxes + wakeword + samples + run button). ww_paned = Gtk.Paned(orientation=Gtk.Orientation.VERTICAL) ww_paned.pack1(ctrl_sw, resize=True, shrink=True) ww_paned.pack2(results_box, resize=True, shrink=False) - ww_paned.set_position(260) + ww_paned.set_position(390) page.pack_start(ww_paned, True, True, 4) def _run_bench(self, _b) -> None: