Patch Changes
-
3a7cafd: Fix Android Electric Cloud sign-in flow getting stuck after Google / GitHub auth.
The Chrome Custom Tab redirect (
electric-agents://oauth/callback?...)
was being lost on real Android devices (especially Android 13+ release
builds), so the sign-in never completed and the user was bounced back
to the welcome screen. Multiple layers had to be hardened:- Config plugin that injects an
onNewIntentoverride into the
generatedMainActivity.ktso new intents (delivered when Android
kills our process while the browser is open and then relaunches
via the redirect) are forwarded togetIntent()for
expo-linking/expo-web-browserto pick up. Mitigates
expo/expo#44284. The
plugin importsexpo/config-plugins(not@expo/config-plugins)
because pnpm doesn't hoist the latter into the package's
node_modules, which brokeexpo cli config --jsoninside EAS
Build. - The OAuth deep link is consumed by a global listener mounted in
CloudAuthProvider(in addition to the/oauth/callback
route), so cold-start redirects are completed even before Expo
Router has had a chance to navigate to the route. parseCallbackUrlusesexpo-linking'sLinking.parserather
thannew URL(), which is unreliable for custom schemes in
Hermes release builds.signInwaits a few seconds for the deep link to arrive when the
browser session returnsdismiss, instead of immediately
rolling state back tosigned-out.completeCallbackUrlis idempotent so the three concurrent
handlers (browser-session result, global Linking listener,
/oauth/callbackroute) can't trample each other.- The
/oauth/callbackroute subscribes to cloud-auth state and
navigates with<Redirect>(rendered during the render phase)
instead ofrouter.replaceinside an effect — the effect-based
version raced with Expo Router's own intent handling in dev
builds, leaving the route stuck on the spinner even though
sign-in had succeeded. The redirect destination also takes the
user's onboarding / server state into account so a first-time
signer-in goes back to/onboardingto finish the wizard
instead of being bounced through/(whereSessionListScreen
would crash onuseAgentsbecauseAgentsProviderisn't
mounted yet). - Routes that call
useAgents()(/,/session,/new-session,
/diagnostics) now go through auseAgentsRouteGuardhelper
that emits a<Redirect>to/onboarding//server-setupwhen
the user hasn't finished setup yet, so transient mounts during
redirect chains can't render those screens before the root
layout's own redirects catch up.
- Config plugin that injects an
-
d344c32: Treat Electric Agents server URLs as opaque tenant-scoped base URLs rooted at
/t/<tenant-id>/v1, migrate desktop and mobile Cloud clients to that URL shape, move observation stream ensure endpoints under/_electric/observations/*/ensure-stream, rename the pre-alpha entity/cron/schema/tag/docs APIs to their Electric Agents names, add a non-interactiveelectric agents viewtranscript command, and make Horton title extraction work with lightweight desktop inbox collection facades.Send the done callback for completed wake checkpoints during graceful shutdown, preventing desktop reloads from leaving already completed DS subscription claims pending.
-
c1834f3: Prepare the mobile app for Expo EAS builds and CI. Adds dynamic Expo config, EAS build profiles, mobile CI/export scripts, and aligns shared React/TypeScript dependency resolution so the Expo DOM embed typechecks and passes
expo-doctor. -
Updated dependencies [d344c32]
-
Updated dependencies [c1834f3]
-
Updated dependencies [319e405]
- @electric-ax/agents-runtime@0.3.5
- @electric-ax/agents-server-ui@0.4.11