fix(page): clamp side panels to window and reflow on OS resize
Two related layout bugs in the page-host renderer:
1. Side panels (page info, extensions, tags, notes, entities, widgets) were
anchored to webview-relative coordinates (left at -202, right edge at
webviewWidth + 210) and relied entirely on setWindowPadding having
expanded the BrowserWindow by PANEL_OVERHANG * 2 = 420px. Near a screen
edge the OS clips the expansion, the gutter shrinks, and panels float
into negative coordinates that the user never sees. Now clamp every
panel left into [-gutterEach, centerColumnWidth + gutterEach -
PANEL_WIDTH] using window.innerWidth as ground truth — panels slide
over the webview content rather than disappearing off the edge.
2. The renderer never listened for window resize events, so OS-driven
bounds changes (display-watcher rescue, future Aero-snap, etc.) left
panel positions stale. Add a rAF-throttled resize listener that
re-runs updatePositions, picking up the new window.innerWidth and
re-clamping panels in place.
Out of scope: re-enabling resizable: true on the canvas window for
native OS resize gestures. That requires a "who owns the bounds right
now" lock between the custom in-renderer drag handles and the OS path,
plus a screenBounds refresh from getBounds() on each OS-driven resize.
Left as a follow-up — the resize listener added here is the prerequisite
half.