release / web (push) Successful in 1m24s
release / go (push) Successful in 1m52s
release / govulncheck (push) Successful in 18s
release / integration (push) Successful in 4m43s
release / android (push) Failing after 3m25s
release / Build signed APK (push) Successful in 4m41s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Skipped
release / Verify release artifacts (tag releases only) (push) Skipped
At launch the stored session cookie loads from the Keystore off the main thread. A request sent before that finished went out without it, typically the library sync that fires as soon as the server answers. The server then answered 401, and the interceptor cleared the store on any 401, which also stopped the load from restoring the cookie and wrote null over the stored one. The user had to sign in on every launch. A session lost mid-use also left them on Home with every request failing, because the app only routes to sign-in when it starts. - The interceptor waits for the stored cookie to load before attaching it, bounded by the existing hydration deadline. - A 401 signs out only when the request carried the current cookie (compare-and-clear). A request sent without one, or with a cookie a newer sign-in has replaced, leaves the login alone. - When the server refuses the session mid-use, the app opens the sign-in screen. A sign-out from Settings does not trigger this. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>