Description
Bug description
When using a tool like https://github.com/autometrics-dev/autometrics-rs in Gitpod (VS Code browser), which adds localhost
links with a specific query parameter to hover messages in the IDE, we can observe that clicking on these links doesn't work in VS Code browser.
Here is an IDE hover message with a few links (to localhost:9090
) in it:
However, when you click on them in Gitpod VS Code browser, the opened window shows an error that is due to a malformed query:
If we look at the differences between the URL before Gitpod's rewrite (i.e. http://localhost:9090/...
) and after Gitpod's rewrite (i.e. https://9090-<workspace_ID>.<cluster>.gitpod.io/...
), we can observe several suspicious changes in the URL's query parameter:
Steps to reproduce
- Open https://gitpod.io/#https://github.com/autometrics-dev/autometrics-rs
- Search for an occurrence of the
#[autometrics
macro in the code - Hover over the symbol name that is just below this macro -- this will open a hover widget with some links in it
- Click on
Request Rate
(the first link)
Workspace affected
No response
Expected behavior
This should work equally well in VS Code browser and VS Code desktop.
But instead, it fails in Gitpod's VS Code browser.
Example repository
https://github.com/autometrics-dev/autometrics-rs
Anything else?
As you can see in the diff screenshot above, Gitpod's URL rewriter seems to be escaping or unescaping various characters in the link's query parameter:
- escapes the first
%20
into%2520
- unescapes
%5F
into_
- unescapes
%2C
into,
- unescapes
%28
into(
- (and a few others)
Question: Why does Gitpod seem to change anything about the query parameter? I would assume that it only needs to change the protocol + hostname + port, and leave the rest of URLs 100% unchanged. 💭