Skip to content

Validate deployment URLs and reject ambiguous workspace links - #390

Open
fioan89 wants to merge 12 commits into
mainfrom
fix/deployment-link-parsing
Open

fioan89 wants to merge 12 commits into
mainfrom
fix/deployment-link-parsing

Conversation

@fioan89

@fioan89 fioan89 commented Nov 13, 2026

Copy link
Copy Markdown
Collaborator

Toolbox decodes the URI query before it separates fields and accepts repeated names. It also accepts URL components that it later drops when it selects a deployment.

The URI handler now matches the route exactly, decodes each field once, and rejects duplicate names. Workspace links select an HTTP or HTTPS origin. Toolbox keeps safe configured base paths and validates saved addresses before restoring credentials.

Toolbox can show the connection step more than once during startup. A
second CLI login could fail after the first succeeded and send the user
back to token entry.

The wizard now starts one connection attempt at a time. A retry waits
for the cancelled attempt to finish, and only the active attempt can
publish a session or report a failure.

Saved sessions restore behind the workspace list. If restoration fails,
the wizard opens the sign-in form so the user can reconnect.
A workspace link for another deployment could leave the previous setup
page visible until Toolbox regained focus.

The provider now displays the replacement wizard as soon as it handles
the link, so setup can continue while Toolbox stays in focus.
The HTTP clients follow redirects automatically, and the CLI downloader attaches deployment headers to configured mirrors. A request can therefore carry credentials outside the intended origin.

Toolbox follows same-origin redirects for reads and scopes authentication headers to the deployment. For CLI versions that support redirect control, Toolbox disables redirects for authenticated commands and generated SSH connections.
Toolbox decodes the URI query before it separates fields and accepts repeated names. It also accepts URL components that it later drops when it selects a deployment.

The URI handler now matches the route exactly, decodes each field once, and rejects duplicate names. Workspace links select an HTTP or HTTPS origin. Toolbox keeps safe configured base paths and validates saved addresses before restoring credentials.
An OAuth credential update can fail after the provider accepts the
session. Treating that error as a failed sign-in sends the user back
to setup even though the workspace connection is active.

The wizard now logs the error and keeps the signed-in session open.
A regression test covers a credential store that rejects the update.
Setup logs the CLI in with the current OAuth token. Calling the token
refresh handler again after sign-in repeats that login and can leave
the CLI and the saved session out of sync.

The wizard now saves the OAuth session directly after setup. The
refresh handler still updates credentials when a running session
receives a new token. A test checks the login count and saved token.
The provider tests use short deployment names and repeat the setup for
several credential choices. This makes it hard to see which deployment
receives a link and which credentials the wizard should use.

The tests name the source and target deployments and cover the restore
choices in a table. Their assertions identify when the CLI signs in
and which workspace page the provider opens.
Setup assumes a token exists when it hands credentials to the CLI.
If the user switches from certificate to token authentication during
setup, a missing token can produce an error with no explanation.

The HTTP client and CLI now use the same token check. The wizard
reports a missing token and skips CLI login for certificate sessions.
Tests cover both paths.
Looking up a page to display can start a CLI sign-in. The wizard also
uses a separate step and a flag to track how the connection started.

The router now starts a saved-session restore when it registers the
wizard. Looking up the page only selects what Toolbox displays. The
wizard records the origin of the connection so a failed restore can
show the sign-in form and repeated callbacks reuse the active job.
The redirects branch predates the latest sign-in fixes. It carries an
older setup wizard and a separate change to the HTTP client.

The merge brings in the reviewed wizard changes and preserves the
redirect restrictions. Session restore uses the updated sign-in flow
when the HTTP client connects to a deployment.
The link parsing branch predates the latest sign-in fixes on its
parent branch. Its workspace links still use the older setup wizard.

The merge brings in the updated redirects branch and preserves the
link validation changes. Valid workspace links use the updated wizard
when they connect to a deployment.
When a link launches Toolbox, the URI handler can run before the
workspace page opens. The handler marks startup complete even if it
rejects the link. The workspace page then prompts the user to sign in
to the deployment that already has a saved session.

The provider now marks startup complete when it accepts a workspace
sign-in or finishes the OAuth exchange. A rejected link leaves the
saved session available for the workspace page to restore.
Base automatically changed from fix/deployment-redirects to main November 13, 2026 21:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant