mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
* feat(pairing): unscanned desktop pairing offers expire (QR 10 min, link 60 min) Headless serve/orcad mint offers without a TTL, so they never expire. Paired rows and rows without offerExpiresAt are unaffected. * feat(pairing): refresh the mobile QR before it expires and show runtime link expiry The QR re-mints a minute before expiry while visible; an unused runtime link shows its expiry and, once expired, is replaced by a notice. Web clients rejected while pairing now suggest asking for a new link. * feat(mobile): say a refused pairing code expired or was replaced A first pairing the desktop refuses (direct or Relay) now asks for a new code instead of showing the raw transport error. * refactor(pairing): replace type assertions in code-refusal detection and tests * test(mobile): re-record pairing race golden for refused-code error * fix(pairing): keep pairing codes valid across sleep and stale registry writers - QR refresh rechecks the wall clock every 15 s and on window focus, so a computer waking from sleep never keeps showing an expired code. - A registry save from a process with an older copy can no longer reset a paired row back to unscanned (which would let its offer expire). - The QR caption says how long a copied code works. * test(pairing): annotate the IPC handler stub cast