gitpod-io / gitpod-io/gitpod

Broken links in Gitpod VS Code browser IDE hover widget

Open
#16,494 2 comments 0 reactions 1 assignee View on GitHub

@jeanp413 is already working on this.

Since Mar 21, 2023.

editor: code (browser) meta: never-stale team: IDE type: bug
Dominant language
TypeScript
Stars
13.8k
Forks
1.4k
Avg merge
17h 58m
Merged PRs (30d)
5

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:
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. 💭

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.