Tray layout bugs surfaced by the #261 repro rig
While running the seeded-repro investigation for #261 (seeded proof harness driving the ambient Codex provider card), two layout bugs in adjacent code turned up. Neither reproduces #261, both are confirmed numerically. They are tracked here so they aren't lost when #261 closes.
1. useTrayPanelLayout measure uses zoom-invariant scrollHeight while TrayPanel applies CSS zoom
apps/desktop-tauri/src/surfaces/TrayPanel.tsx applies style={{ zoom: trayScale }} on the rendered surface; useTrayPanelLayout.measure / auto-fit sizes the WIN32 window from DOM metrics (body scrollHeight + bottom offsets).
- Measured: body scrollHeight is IDENTICAL at tray zoom 100/150/200 (800-ish px in all runs — see probe in
proof-261-seed/zoom*/probe trace), but rendered visual height scales with zoom. Outcome: at tray zoom >100% the window is sized to the PRE-zoom height and tall cards are clipped below the fold; a horizontal scrollbar appears mid-flyout.
- Repro path: apply tray zoom 150% in Settings -> Menu -> Tray panel scale (or the settings preset), open tray flyout with a tall card (e.g. Codex with long top-model + reset credits) and observe the clipped bottom content + horizontal scrollbar.
- Suspected fix area:
apps/desktop-tauri/src/hooks/useTrayPanelLayout.ts measure/apply block — multiply measured content height by the active zoom factor before clamping (or compute content height in post-scale px).
- Evidence:
proof-261-seed/zoom150-ds1/, proof-261-seed/zoom200/ capture folders in run 2026-08-06 (rects.json, panel_series.json, screenshots).
2. Proof-harness anchor point overflows work area on tall auto-fit flyouts
apps/desktop-tauri/src-tauri/src/proof_harness.rs anchor positioner anchors the flyout at y=252 for the default initial size; after auto-fit settles a tall panel (≥ ~790px) the bottom edge drops below the 1040px work bottom on 1920x1080 displays, clipping content against the screen edge (harness-only behavior).
- Not user-facing under normal use — impact scoped to proof runs; fix entails re-anchoring the flyout to the selection nearest the bottom edge (justified-above-taskbar) when measured height > available space, or clamping auto-fit max-height to
workBottom - anchorY - inset and letting content scroll.
- Evidence:
proof-261-seed/zoom200/rects.json (settled rect bottom y > work bottom).
Both findings are independent of the #261 Codex-tab resize-loop investigation; their triggers are orthogonal (static tall content / static anchor math).
Note: the first finding's measured probe values come from a temporary resize probe injected for investigation (cleanly reverted; no main-line diff remains). The second is observable WIN32-geometry behavior.
Tray layout bugs surfaced by the #261 repro rig
While running the seeded-repro investigation for #261 (seeded proof harness driving the ambient Codex provider card), two layout bugs in adjacent code turned up. Neither reproduces #261, both are confirmed numerically. They are tracked here so they aren't lost when #261 closes.
1.
useTrayPanelLayoutmeasure uses zoom-invariantscrollHeightwhile TrayPanel applies CSSzoomapps/desktop-tauri/src/surfaces/TrayPanel.tsxappliesstyle={{ zoom: trayScale }}on the rendered surface;useTrayPanelLayout.measure/ auto-fit sizes the WIN32 window from DOM metrics (body scrollHeight + bottom offsets).proof-261-seed/zoom*/probe trace), but rendered visual height scales with zoom. Outcome: at tray zoom >100% the window is sized to the PRE-zoom height and tall cards are clipped below the fold; a horizontal scrollbar appears mid-flyout.apps/desktop-tauri/src/hooks/useTrayPanelLayout.tsmeasure/apply block — multiply measured content height by the active zoom factor before clamping (or compute content height in post-scale px).proof-261-seed/zoom150-ds1/,proof-261-seed/zoom200/capture folders in run 2026-08-06 (rects.json,panel_series.json, screenshots).2. Proof-harness anchor point overflows work area on tall auto-fit flyouts
apps/desktop-tauri/src-tauri/src/proof_harness.rsanchor positioner anchors the flyout at y=252 for the default initial size; after auto-fit settles a tall panel (≥ ~790px) the bottom edge drops below the 1040px work bottom on 1920x1080 displays, clipping content against the screen edge (harness-only behavior).workBottom - anchorY - insetand letting content scroll.proof-261-seed/zoom200/rects.json(settled rect bottom y > work bottom).Both findings are independent of the #261 Codex-tab resize-loop investigation; their triggers are orthogonal (static tall content / static anchor math).
Note: the first finding's measured probe values come from a temporary resize probe injected for investigation (cleanly reverted; no main-line diff remains). The second is observable WIN32-geometry behavior.