Bookmarkable URLs: #app/<token>, sealed under a user route key - #178
Merged
Conversation
…der a user route key The page fragment gains one grammar, `app/<token>`, so "this app, here" can be bookmarked. The token is deterministic AES-256-GCM (SIV-style nonce) over `install-id ‖ route`, zero-padded to 256 bytes, under a user-level route key: equal state is equal URL, the route is unreadable off the page, and a route that decrypts is one this user's visor wrote. - engine: a visor-owned document rides the app-document machinery under the reserved id `polyvisor:visor` (keyhive-sealed, synced, checkpointed for free) and holds the route key and the install table. - kernel: `route.rs` owns grammar and crypto; `apps.route-encode` / `route-decode` in internal.wit; no new dependencies. - glue: `shell.open-frame(session, route)` writes the fragment (`replaceState` only), `close-frame` clears it, and the frame serves `polyvisor:app/route` locally, relaying `set` for the glue to encode. - visor: consumes `shell.fragment` once per page load, after unseal. - TodoMVC keeps its filter in the route. - docs/design.md "Routing" records the construction, the accepted residual channel (update timing and state equality), and why sharing is foreclosed here by construction. e2e: bookmark-round-trip; reload-with-app-open sites now wait for the fragment restore instead of pressing Open.
lannbot
enabled auto-merge
September 8, 2026 01:23
…fragment # Conflicts: # visor/src/ui.rs
… in the app sheet; notices in the drawer)
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 page fragment gains one grammar,
app/<token>, so "this app, here"can be bookmarked. The token is deterministic AES-256-GCM (SIV-style
nonce) over
install-id ‖ route, zero-padded to 256 bytes, under auser-level route key: equal state is equal URL, the route is unreadable
off the page, and a route that decrypts is one this user's visor wrote.
the reserved id
polyvisor:visor(keyhive-sealed, synced, checkpointedfor free) and holds the route key and the install table.
route.rsowns grammar and crypto;apps.route-encode/route-decodein internal.wit; no new dependencies.shell.open-frame(session, route)writes the fragment(
replaceStateonly),close-frameclears it, and the frame servespolyvisor:app/routelocally, relayingsetfor the glue to encode.shell.fragmentonce per page load, after unseal.residual channel (update timing and state equality), and why sharing
is foreclosed here by construction.
e2e: bookmark-round-trip; reload-with-app-open sites now wait for the
fragment restore instead of pressing Open.
Gates:
just cigreen;just e2e18/18 (new:bookmark-round-trip).Automerge is armed.