The change
The ecosystem-launcher tile grid (already shipping on pebble console, ares dashboard, and family-hub) now lives in hubble and hatch too. Ten entries — CASA, Hubble, Velocity, Hatch, Airlock, Pebble, Ares, Studio, Meridian, Manual — each a tile with icon, label, and one-liner. Two rows on desktop, one column on mobile. Click opens the target app in the same window, carrying?from=<app>&reason=launcher for arrival telemetry.
Plus: a Sign out link in every topnav that goes to airlock’s new GET /auth/sign-out endpoint, clears the .devarno.cloud cookie cleanly, and lands the user at airlock’s sign-in page.
Before / after
Before:- Hubble topnav: HUBBLE logo, status indicator, nothing else. Want to reach hatch? Type the URL.
- Hatch topnav: HATCH logo, “Airlock Control” badge. No exit.
- Hubble + hatch + the rest: logo, status, Apps dropdown, Sign out. Apps dropdown opens a tile grid with every sibling app reachable in one hop.
Under the hood
Ported theares/dashboard variant (no vaul / no Radix — just lucide-react + a click-outside toggle panel). Each app carries its own copy of cross-app-links.ts and ecosystem-apps.ts with the from=<app> query-string baked in, so receivers can render a “back to hubble” breadcrumb. Five apps now have the same three files (ecosystem-launcher.tsx, cross-app-links.ts, ecosystem-apps.ts) copy-pasted. A shared @devarno/ui-nav package is the natural next consolidation once a sixth instance arrives.
Shipped
- Hubble
#1— ecosystem launcher + sign-out wiring. - Hatch
#2— ecosystem launcher + sign-out wiring. - Hatch
#3— unblocks hatch builds (AuthProviderwas importing a retiredauthClient; rewired to call airlock directly). - Airlock
#10—GET /auth/sign-outendpoint that the topnav links route through (delegates to BetterAuth internally, forwards the clearing cookies). - Family-hub
#83— auth-client shim’ssignOut()now redirects through airlock’s new endpoint.
Side effect
Exercising the nav in-session is what surfaced the CASA/sign-in infinite loop (the bug that blocked ten minutes of UX dogfooding and led to the separate airlock session-storm sweep). Ship more connective tissue, find more bugs.