Tabs (HATEOAS)

Server-driven tabs. Each tab is a query-param link (?tab=…); the framework intercepts the click and routes it through the WebSocket via the in-band __navigate__ action (server v0.8.19+, client v0.8.26+). No HTTP round-trip; Mount() re-runs with the new param.

Settings

Tab content is rendered server-side from the same template — switching tabs is a re-render, not a partial fragment. Bookmark ?tab=settings and the deep link works on next load too.