Repository navigation
feat(service): seal the account's workspaces for following over Neon Realtime - #3915
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
luke-agent
Bot
force-pushed
the
luke/neon-realtime-shared-socket
branch
3 times, most recently
from
October 20, 2026 01:44
21e5770 to
7bbd164
Compare
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 20, 2026 02:34
7cb060d to
c600a09
Compare
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 20, 2026 03:26
c600a09 to
89c8baa
Compare
luke-agent
Bot
force-pushed
the
luke/neon-realtime-shared-socket
branch
2 times, most recently
from
October 20, 2026 22:20
e95f277 to
9589265
Compare
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 21, 2026 00:11
89c8baa to
6ec4fdd
Compare
luke-agent
Bot
changed the base branch from
luke/neon-realtime-shared-socket
to
main
October 21, 2026 00:11
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 21, 2026 00:28
6ec4fdd to
0ad1b30
Compare
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 21, 2026 00:45
0ad1b30 to
3c0d72b
Compare
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 21, 2026 01:05
3c0d72b to
32541c4
Compare
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 21, 2026 01:17
32541c4 to
620fb89
Compare
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 21, 2026 01:32
620fb89 to
173d121
Compare
… Neon Realtime The live procedure `workspaces` (GET /api/live/workspaces) seals the bearer's workspaces as two live statements, the workspaces and the GitHub installations connected to them, with the same joins and rule of who may read them as listWorkspaces, or answers their rows inline where the reader polls or Realtime cannot seal them. What the held read works out from a row is worked out in the statement, so no photo's bytes travel: its digest, the Linear connection's standing, and each installation's. The digest reads the logo's bytes through decode(…, 'escape') over its text with each backslash doubled, since Realtime refuses convert_to, which Postgres marks only stable. The desktop orders the rows (workspace-live.ts's workspacesOfLiveRows), since Realtime keeps none. roleOf moves to workspace-wire, so the desktop reads a role as the service does. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
luke-agent
Bot
force-pushed
the
luke/live-workspaces-service
branch
from
October 21, 2026 06:27
173d121 to
ecb47c8
Compare
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The service side of the live workspaces list, on the central live layer (
liveRowsand the sealed live procedures).live.workspaces(GET /api/live/workspaces, inlive-procedures.ts). It seals the bearer's workspaces as two statements,workspacesandinstallations, throughsealedParts. WithLUKE_REALTIMEoff, or when polled, it answers the rows inline as a held read. It's gated bysameUserlike every live read.workspacesLiveStatementsinworkspace-store.ts):listWorkspacesliveSelection, with nonow()and noORDER BYdecode(replace(logo, '\', '\\'), 'escape')instead ofconvert_to, giving the same sha256workspacesOfLiveRowsin the newworkspace-live.ts) orders the rows the way the held read does.roleOfmoves toworkspace-wire.tsso the desktop reads a role the same way the service does.sealedLiveQuerySchemais exported again, now that a second module uses it.Tests
listWorkspacesfor an owner, a teammate and an outsider.live-statements.test.tspasses the statements throughmutableFunctionsOfand the Drizzle adapter.The live read refuses a
forUserother than the bearer (sameUser, 401). Its photo check is the same asworkspacePhotoOfDataUrl: a whole base64 payload and a real PNG, JPEG or WEBP signature.Made with Luke