Add Fission Developer SDK and declarative protected routes - #192
Merged
Conversation
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.
This change adds the public application-worker boundary for Fission Developer and completes the host-side attachment path needed for development tools to discover, authenticate to, scope, and observe a running application. The new
fission-devtoolscrate keeps the worker contract renderer-independent: an application supplies its build, dispatch, snapshot, and restore behavior, while the resident developer host owns the shell and presentation surface. The inbox example demonstrates the separate development-worker entry point without changing its ordinary desktop binary.Developer sessions are published through owner-restricted descriptors containing a per-session bearer capability.
DeveloperSessionClientdiscovers the session for a project, connects through the authenticated loopback control endpoint, and scopes testing operations and screenshots to the application surface rather than the surrounding Developer UI. Reload observation reports whether a candidate generation activated or was rejected while the active generation remained available.The routing portion adds
ProtectedRoute, a declarative wrapper intended for use directly insideRouterroute builders. It acceptsRouteDecision::Pending,Allow,Deny, orRedirect, lazily builds only the selected branch, preserves the existing router and route-handler mechanisms, and supports replacement or push-history redirects with an encoded return destination. For example:Native Web and desktop shells turn redirect outcomes into the normal Fission navigation effect. Terminal rebuilds after applying the route change. SSR returns a non-cacheable
302 Foundfor redirects and403 Forbiddenfor denied content, preventing protected output from entering route caches. Static generation emits a canonical redirect page rather than protected content. The reference documentation describes the decision model, lazy branch behavior, async store-backed authorization flow, return destinations, and shell-specific behavior.