This also fixes a bug where a double "layout" was applied to the not
found pages.
It also sets the layout min height to use 100svh instead of 100vh, so
that it doesn't unecessarily scroll on iOS.
* Start replacing jotai with @tanstack/router
* Remove jotai completely
* Move the common layout & reimplement the ?action parameter
This also makes sure everything is properly loaded in the route loader,
and we use fragment where it makes sense
* Change the default error component
* GraphQL API: make the sessions fetchable through node(id: ID!)