Sync editor changes from the web beta (#187)

On web, every edit ended in "Sync needs attention / The cloud could not be
reached" while the library stayed connected. The op queue checks
convexConnectionSnapshotProvider before sending, and that provider read
ConvexClient.isConnected once and kept the value: on web the socket is still
opening when it is first read, so it said offline for the life of the page
and no op was ever sent. The snapshot is now the latest value of the
connection stream, so it follows every change.

The failure was invisible, so op queue and media queue send failures now
report through AppErrorReporter (a warning, echoed to the browser console on
web). Their text goes through a new redactSyncDiagnosticText, which strips
URL queries (a presigned upload URL carries its signature there) and token
assignments; media logs, which held full presigned URLs, use it too.

tool/check_convex_web_binding.mjs loads web/convex.browser.bundle.js and
checks every external member of the Dart web binding exists on the object it
binds. It runs in the linux CI job; it fails on the pre-#185 binding
(_JsConvexClient.clearAuth) and passes now.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
23cdc22924Dara Adedeji committed on 9/25/2026, 3:31:41 PM· committed by GitHubparent8787b8d
9 files changedLine totals unavailable