v0.12.0
First open is no longer a 20-30s progress bar
Two changes to the shared board cache, reviewed independently for concurrency, security and operational cost:
Probe-based cache admission. Proving that a signed-in user's token can read the board now costs one tiny GraphQL query instead of a full multi-page board load. Coming back from a break admits you into the warm shared cache in ~half a second; an aging access proof refreshes in the background while your read is served instantly. The probe is exactly as strict as the full load it stands in for — a parity test pins the two verdicts together across not-found, rate-limit, revoked-token, insufficient-scope and partial-error fixtures.
Off-request board warmer. One server-side loop per board keeps the cache fresh while anyone has the board open, and on a slower cadence for 16 hours past the last read — carrying it through the night so the morning's first open is served instantly. It replaces the per-tab background revalidation entirely, cutting steady-state GitHub traffic from roughly one full reload per active tab per minute to one per board per few minutes. The warmer rides the most recent user's token, stops when that user's session ends, tolerates transient GitHub hiccups, and never vouches for anyone's access.
Mutations benefit too: with the cache held inside the fresh window, card edits no longer block on a full board reload.
The only remaining cold load is the very first request after a server restart. External edits made directly on GitHub surface within a few minutes for passive viewers (active users see them as fast as before).