From b55c783b9c58778cdefed86de44fccd9ffccc56e Mon Sep 17 00:00:00 2001 From: aradhyacp Date: Sun, 24 May 2026 22:23:11 +0530 Subject: [PATCH 1/5] fix(gchat): collapse redundant mailto and tel autolinks --- packages/adapter-gchat/src/markdown.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/adapter-gchat/src/markdown.ts b/packages/adapter-gchat/src/markdown.ts index efd114ba..9d50a121 100644 --- a/packages/adapter-gchat/src/markdown.ts +++ b/packages/adapter-gchat/src/markdown.ts @@ -113,6 +113,17 @@ export class GoogleChatFormatConverter extends BaseFormatConverter { if (linkText === node.url) { return node.url; } + // Collapse redundant mailto:/tel: autolinks when the visible + const collapsibleSchemes = ["mailto:", "tel:"]; + for (const scheme of collapsibleSchemes) { + if (!node.url.startsWith(scheme)) { + continue; + } + const bareValue = node.url.slice(scheme.length); + if (bareValue === linkText) { + return bareValue; + } + } return `<${node.url}|${linkText}>`; } From bd2a94eb62870b18f2055f707e71792b64607d97 Mon Sep 17 00:00:00 2001 From: aradhyacp Date: Mon, 25 May 2026 15:45:56 +0530 Subject: [PATCH 2/5] fix(gchat): add tests for mailto autolinks and http links handling --- packages/adapter-gchat/src/markdown.test.ts | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/adapter-gchat/src/markdown.test.ts b/packages/adapter-gchat/src/markdown.test.ts index 4f3d5c24..3d45df2e 100644 --- a/packages/adapter-gchat/src/markdown.test.ts +++ b/packages/adapter-gchat/src/markdown.test.ts @@ -49,6 +49,40 @@ describe("GoogleChatFormatConverter", () => { expect(result).toContain(""); }); + it("collapses mailto autolink for plain email text", () => { + const ast = converter.toAst("hello@example.com"); + + const result = converter.fromAst(ast); + + expect(result).toBe("hello@example.com"); + }); + + it("preserves custom label for mailto links", () => { + const ast = converter.toAst("[contact](mailto:hello@example.com)"); + + const result = converter.fromAst(ast); + + expect(result).toBe(""); + }); + + it("formats http links correctly", () => { + const input = "https://example.com"; + + const ast = converter.toAst(input); + const output = converter.fromAst(ast); + + expect(output).toBe("https://example.com"); + }); + + it("keeps phone numbers as plain text", () => { + const input = "+1555123456"; + + const ast = converter.toAst(input); + const output = converter.fromAst(ast); + + expect(output).toBe("+1555123456"); + }); + it("should handle blockquotes", () => { const ast = converter.toAst("> quoted text"); const result = converter.fromAst(ast); From b8f5181fc3ed0cf6c854c9ef5988a8dc133cc22f Mon Sep 17 00:00:00 2001 From: aradhyacp Date: Mon, 25 May 2026 15:50:15 +0530 Subject: [PATCH 3/5] chore: add changeset for gchat autolink fix --- .changeset/sour-pans-stop.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/sour-pans-stop.md diff --git a/.changeset/sour-pans-stop.md b/.changeset/sour-pans-stop.md new file mode 100644 index 00000000..f588156e --- /dev/null +++ b/.changeset/sour-pans-stop.md @@ -0,0 +1,6 @@ +--- +"@chat-adapter/gchat": patch +--- + +- Fix redundant mailto link rendering in Google Chat adapter +- Google Chat adapter was emitting redundant `` tokens when rendering autolinked email addresses. This change collapses `mailto:` URLs when the visible text equals the email address, ensuring cleaner output consistent with plain text rendering in Google Chat. From a2bbb62568e2a4f12440d8eac8dacecaa71a3dfb Mon Sep 17 00:00:00 2001 From: aradhyacp Date: Mon, 25 May 2026 15:51:23 +0530 Subject: [PATCH 4/5] fix(gchat): remove redundant whitespace in mailto autolink test --- packages/adapter-gchat/src/markdown.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/adapter-gchat/src/markdown.test.ts b/packages/adapter-gchat/src/markdown.test.ts index 3d45df2e..5523b39a 100644 --- a/packages/adapter-gchat/src/markdown.test.ts +++ b/packages/adapter-gchat/src/markdown.test.ts @@ -51,9 +51,9 @@ describe("GoogleChatFormatConverter", () => { it("collapses mailto autolink for plain email text", () => { const ast = converter.toAst("hello@example.com"); - + const result = converter.fromAst(ast); - + expect(result).toBe("hello@example.com"); }); From f7636f5a21001a802679eb08d32968f439f2d9b2 Mon Sep 17 00:00:00 2001 From: dancer Date: Thu, 28 May 2026 04:12:28 +0100 Subject: [PATCH 5/5] test(gchat): cover tel autolinks --- packages/adapter-gchat/src/markdown.test.ts | 8 ++++++++ packages/adapter-gchat/src/markdown.ts | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/adapter-gchat/src/markdown.test.ts b/packages/adapter-gchat/src/markdown.test.ts index 5523b39a..9cb745a2 100644 --- a/packages/adapter-gchat/src/markdown.test.ts +++ b/packages/adapter-gchat/src/markdown.test.ts @@ -83,6 +83,14 @@ describe("GoogleChatFormatConverter", () => { expect(output).toBe("+1555123456"); }); + it("collapses tel autolink for plain phone text", () => { + const ast = converter.toAst("[+1555123456](tel:+1555123456)"); + + const result = converter.fromAst(ast); + + expect(result).toBe("+1555123456"); + }); + it("should handle blockquotes", () => { const ast = converter.toAst("> quoted text"); const result = converter.fromAst(ast); diff --git a/packages/adapter-gchat/src/markdown.ts b/packages/adapter-gchat/src/markdown.ts index 9d50a121..194374b5 100644 --- a/packages/adapter-gchat/src/markdown.ts +++ b/packages/adapter-gchat/src/markdown.ts @@ -113,7 +113,6 @@ export class GoogleChatFormatConverter extends BaseFormatConverter { if (linkText === node.url) { return node.url; } - // Collapse redundant mailto:/tel: autolinks when the visible const collapsibleSchemes = ["mailto:", "tel:"]; for (const scheme of collapsibleSchemes) { if (!node.url.startsWith(scheme)) {