AJAX fragment: extract #main-panel with matching close tag (depth
tracking) instead of taking everything to end of file. Prevents
shell closing tags from breaking the DOM swap.
Back button test: verifies content actually changes — checks for
"Geography" and "Rendering Pipeline" after going back, not just
that body has >100 chars. Tests forward nav content change too.
7/7 navigation tests pass including back button content verification.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two new tests:
- browser back button works after navigation: URL returns to original,
content renders (not blank), no raw SX visible
- back button preserves layout: heading stays in top area, no side-by-side
All 7 navigation tests pass including forward nav, back button, layout,
content update, header survival, and raw SX checks.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
AJAX navigation: detect SX-Request/HX-Request headers and return just
the #main-panel fragment instead of the full page shell. Fixes layout
break where header and content appeared side-by-side after navigation.
New navigation test suite (tests/playwright/navigation.spec.js):
- layout stays vertical after clicking nav link
- content updates after navigation
- no raw SX component calls visible after navigation
- header island survives navigation
- full page width is used (no side-by-side split)
All 5 tests pass. 14 total Playwright tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>