Skip to content

Broken links in Gitpod VS Code browser IDE hover widget #16494

Open
@jankeromnes

Description

@jankeromnes

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:
Screenshot 2023-02-21 at 12 20 56

However, when you click on them in Gitpod VS Code browser, the opened window shows an error that is due to a malformed query:
Screenshot 2023-02-21 at 12 53 24

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:
Screenshot 2023-02-21 at 12 19 23

Steps to reproduce

  1. Open https://gitpod.io/#https://github.com/autometrics-dev/autometrics-rs
  2. Search for an occurrence of the #[autometrics macro in the code
  3. Hover over the symbol name that is just below this macro -- this will open a hover widget with some links in it
  4. 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. 💭

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions