From 7321b3c2dbf0e36ea488a807c8a2804336ca559f Mon Sep 17 00:00:00 2001 From: YuanHanzhong <57024493+YuanHanzhong@users.noreply.github.com> Date: Mon, 18 May 2026 20:01:52 -0700 Subject: [PATCH] fix(tui): keep x status citation fallbacks link-like --- ui-tui/src/__tests__/externalLink.test.ts | 6 ++++++ ui-tui/src/lib/externalLink.ts | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/ui-tui/src/__tests__/externalLink.test.ts b/ui-tui/src/__tests__/externalLink.test.ts index 31be5e83af..5bd9757c2c 100644 --- a/ui-tui/src/__tests__/externalLink.test.ts +++ b/ui-tui/src/__tests__/externalLink.test.ts @@ -30,6 +30,12 @@ describe('external link helpers', () => { ).toBe('From Fajardo Icacos Island Full Day Catamaran Trip') }) + it('keeps x.com status fallbacks link-like instead of generic Status labels', () => { + expect(urlSlugTitleLabel('https://x.com/grok/status/2056065022749479209')).toBe( + 'x.com/grok/status/2056065022749479209' + ) + }) + it('normalizes scheme-less links', () => { expect(normalizeExternalUrl(' expedia.com/things-to-do/puerto-rico-el-yunque ')).toBe( 'https://expedia.com/things-to-do/puerto-rico-el-yunque' diff --git a/ui-tui/src/lib/externalLink.ts b/ui-tui/src/lib/externalLink.ts index 04721bfa3f..8125048360 100644 --- a/ui-tui/src/lib/externalLink.ts +++ b/ui-tui/src/lib/externalLink.ts @@ -21,6 +21,8 @@ const DOMAIN_RE = /^(?:www\.)?[a-z0-9](?:[a-z0-9-]*\.)+[a-z]{2,}(?::\d+)?(?:[/?# const SKIP_PROTO_RE = /^(?:file|data|mailto|javascript|blob|chrome|about|hermes):/i const LOCAL_HOSTNAME_RE = /^(?:localhost|localhost\.localdomain)$/i const LOCAL_HOST_SUFFIXES = ['.corp', '.home', '.internal', '.lan', '.local', '.localdomain'] +const STATUS_PERMALINK_HOST_RE = /^(?:mobile\.)?(?:x|twitter)\.com$/i +const STATUS_PERMALINK_PATH_RE = /^\/[^/]+\/status\/\d+\/?$/i const HTML_ENTITIES: Record = { '#39': "'", @@ -101,6 +103,10 @@ function cleanSlug(segment: string): string { export function urlSlugTitleLabel(value: string): string { const url = parseUrl(value) + if (url && STATUS_PERMALINK_HOST_RE.test(url.hostname) && STATUS_PERMALINK_PATH_RE.test(url.pathname)) { + return hostPathLabel(value) + } + for (const segment of url?.pathname.split('/').filter(Boolean).reverse() ?? []) { const cleaned = cleanSlug(segment)