Why: Hosted-first clients must keep sessions alive without re-login. Desktop has no refresh scheduler yet.
Done when: kotlinx.coroutines background worker renews refresh_token grant proactively at 80% TTL with an offline retry queue (Desktop gap #3, ~2 d).
source: plans/CLIENT_APPS_PARITY.md:136
Migrated from plans/CLIENT_APPS_PARITY.md (git history retains the original).
Why: Hosted-first clients must keep sessions alive without re-login. Desktop has no refresh scheduler yet.
Done when: kotlinx.coroutines background worker renews refresh_token grant proactively at 80% TTL with an offline retry queue (Desktop gap #3, ~2 d).
source: plans/CLIENT_APPS_PARITY.md:136
Migrated from
plans/CLIENT_APPS_PARITY.md(git history retains the original).