feat(page-host): edge resize handles + reachable corners when maximized
Two related improvements to the page-host resize UX:
1. Edge resize handles. Adds N/S/E/W thin-strip hit zones along the
webview edges (between the existing 24x24 corner hit zones).
Pointer events follow the same FSM RESIZE_START -> RESIZE_END
flow as the corners; pointermove math is single-axis.
2. Maximized resize handles stay reachable. Previously corner handles
were `display: none` in maximized — to shrink the window the user
had to drag the navbar to exit maximize FIRST, then grab a corner.
Now all handles are positioned at the OS window edges in
maximized too. The page-fsm gains a RESIZE_START transition from
MAXIMIZED that:
- Clears body class, URL maximized flag, sets handles visible
- Does NOT restore pre-maximize bounds (keeps screenBounds at
workArea so the user's drag delta shrinks from where the cursor
is — restoring smaller pre-max size would teleport the corner
out from under the cursor)
Tests:
- tests/unit/page-fsm.test.js: new transition test for
resize.start in MAXIMIZED, asserts the no-RESTORE_PRE_MAXIMIZE
invariant.
- tests/desktop/session-restore-page-host.spec.ts: two new
integration tests — edge-handle E-drag changes width only, and
maximized SE-corner drag exits maximize + shrinks in one gesture.
- Updated the existing maximized-restore test: it asserted handles
were display:none in maximized, which is now intentionally false.