[Bug?]: Zero-width-space character creeping into terminal links, leading to 404 pages
Author: king8fisherCreated Jan 20, 2025Updated Apr 21, 2025
Labelsbug/needs-info
What's not working?
terminal-link is still struggling with the old bug from 2022: https://github.com/sindresorhus/terminal-link/issues/18
Some terminals, including Windows VSCode built-in are not recognized as supporting terminal links, as a result, a fallback version is printed instead with the link surrounded by ( ) and the link itself having invisible characters.
Similar issues/PRs:
- https://github.com/redwoodjs/redwood/issues/8224
- https://github.com/redwoodjs/redwood/pull/8226 - partial solution, not touching other links throughout the code, by providing a fallback function which is also a duplication of the same links.
Possible solutions:
- Switch away from
terminal-link. I made a quick drop-in replacement, https://www.npmjs.com/package/termi-link that can be tried if desired. - Provide fallbacks for every single usage of
terminalLink.
How do we reproduce the bug?
Run a redwood upgrade script. For instance, after upgrading to Redwood 8.4.4, I'm getting the following link:
❖ GitHub Release notes (https://github.com/redwoodjs/redwood/releases%E2%80%8B)(those characters are actually invisible in the terminal)
Clicking the link to the releases page in the error message takes me to a 404 page due to the URL being malformed, containing a %E2%80%8B character in the end (standing for a zero-width space Unicode character).
What's your environment? (If it applies)
System:
OS: Windows 11 10.0.22631
Binaries:
Node: 22.11.0 - ~\AppData\Local\Temp\\\xfs-7a25e855\node.CMD
Yarn: 4.4.0 - ~\AppData\Local\Temp\\\xfs-7a25e855\yarn.CMD
Browsers:
Edge: Chromium (127.0.2651.74)
npmPackages:
@redwoodjs/cli-storybook-vite: 8.4.4 => 8.4.4
@redwoodjs/core: 8.4.4 => 8.4.4
@redwoodjs/project-config: 8.4.4 => 8.4.4
redwood.toml:
[web]
title = "Redwood App"
port = 8983
apiUrl = "/.redwood/functions" # You can customize graphql and dbauth urls individually too: see https://redwoodjs.com/docs/app-configuration-redwood-toml#api-paths
includeEnvironmentVariables = [
# Add any ENV vars that should be available to the web side to this array
# See https://redwoodjs.com/docs/environment-variables#web
]
[api]
port = 8982
[browser]
open = true
[notifications]
versionUpdates = ["latest"]Are you interested in working on this?
- I'm interested in working on this
Source: redwoodjs/graphql