Sharing polish: server-enforced read-only, portable Download/Load, deprecate chat mode#22
Open
davidackerman wants to merge 4 commits into
Open
Sharing polish: server-enforced read-only, portable Download/Load, deprecate chat mode#22davidackerman wants to merge 4 commits into
davidackerman wants to merge 4 commits into
Conversation
- Read-only sharing is now enforced at the bridge, not just client-side: a connection that registers with `viewOf` (a ?view=1 viewer) may NEVER persist, so a recipient who speaks the WS protocol still can't write back to the shared session. (A peer registering as the owner's own id is still possible without a write token — a future capability-token hardening.) - The Agent Trace panel defaults collapsed (it's provenance you can expand or export, not always-on chrome).
Adds ⬇ Download / ⬆ Load buttons to the workspace panel. Download writes the
current snapshot (viewer state + table data + plot images — the same shape
persistence uses) to a portable .json file. Load applies a file into the
loader's OWN session (their own copy), so it's a forkable share that needs no
live bridge on the recipient's side — the answer to off-VPN sharing ("here's
some cool stuff, load it yourself"). Computed layers stay portable as long as
their source is reachable (http/s3); the bridge /artifacts/ is the LAN version.
DEFAULT_MODE flips to "workspace" — the agent-driven workspace is the product. Legacy ?mode=chat still works but is deprecated: it logs a one-time console warning and will be removed after a deprecation window. New work should drive the workspace from an external agent, not chat mode.
On register the bridge reports its first non-internal IPv4 (host:port); the page uses it for computed-layer artifact URLs instead of "localhost", so a shared/hosted session's layers are fetchable by a LAN/VPN peer (not just the owner). Falls back to the page's connect host if no IP is found.
Deploying tourguide with
|
| Latest commit: |
8ea26a8
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://0a3ce733.tourguide-8j4.pages.dev |
| Branch Preview URL: | https://feature-sharing-polish.tourguide-8j4.pages.dev |
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.
Follow-up to #21 — polishes the sharing story and starts the cleanup.
?view=1viewer registers withviewOfand may never persist — enforced at the bridge, not just client-side, so a recipient who speaks the WS protocol still can't write back to the owner's saved session. (Remaining gap, noted in code: a peer registering as the owner's own id needs a write-token capability — a future hardening.).json; anyone loads it into their own copy, no live bridge needed on their side. This is the answer to off-VPN sharing ("here's some cool stuff, load it yourself"). Computed layers stay portable as long as their source ishttp/s3-reachable.workspaceis now the default;?mode=chatstill works but logs a deprecation warning and will be removed after a window.localhost(reachable by LAN/VPN peers).