All features

A Slack-style <uri|label> is clickable all the way across

Try the real interface

Explore this workspace.

Real Torbie UI · mock sessions
Tab bar
Loading Torbie…
Technical background

The bracketed form Slack and many CLIs emit is one match at a priority above every handler, so the brackets and the label belong to the link instead of to nothing. The URI is still shown in full — collapsing it to the label would mean the renderer showing text the buffer does not hold.

The problem

Slack and a good many CLIs emit <https://example.com|the label>. Tabby's URI handler stops at the pipe, so the URL half was clickable and the brackets and the label belonged to no link at all — measured before the fix, columns 0 and 33..43 of the construct resolved to null.

How it works

The whole bracketed construct is one match, at a priority above every handler, in delimitedLinks.ts. It encloses the bare URI match and takes its cells, so hovering anywhere across the construct — bracket, URI, pipe or label — resolves to the same link.

Try it
  1. Print one: printf '<https://example.com|the label>\n'.
  2. Hover the label. The card names the URL, not the label text.
  3. Hover the opening bracket. Same link — before this, nothing at all.
Details
  • The URI is still shown in full. Collapsing it to the label would mean the renderer showing text the buffer does not hold, which selection, copy, search and reflow all depend on.
  • The delimited match ties with the text-rule tier deliberately, so a rule the user wrote for something inside the label still wins.
What this does not claim
  • The bug the reference fork's commit describes does not exist here. There, | is inside the bare-URI character class, so the opener was handed …/9962|repo#9962. Tabby's URLHandler has no | in any of its classes and already stopped at the pipe. What was missing here was the other half — the brackets and label having no link — so the port is the same feature for a different reason.
Source commits
LinksAdded 2026-09-066 files+585 / −5 lines