diff --git a/lib/jf2-to-as2.js b/lib/jf2-to-as2.js index 4168644..d5d402b 100644 --- a/lib/jf2-to-as2.js +++ b/lib/jf2-to-as2.js @@ -32,7 +32,12 @@ function linkifyUrls(html) { if (!html) return html; return html.replace( /(?])(https?:\/\/[^\s<"]+)/g, - '$1', + (_, url) => { + // Strip trailing punctuation that is almost never part of a URL + // e.g. "See https://example.com." → link to https://example.com + const clean = url.replace(/[.,;:!?)\]'"]+$/, ""); + return `${clean}`; + }, ); } diff --git a/lib/mastodon/routes/statuses.js b/lib/mastodon/routes/statuses.js index a074e72..7d39aa4 100644 --- a/lib/mastodon/routes/statuses.js +++ b/lib/mastodon/routes/statuses.js @@ -1066,7 +1066,11 @@ function processStatusContent(content, rawText) { // Linkify bare URLs (http/https) html = html.replace( /(https?:\/\/[^\s<>"')\]]+)/g, - '$1', + (_, url) => { + // Strip trailing punctuation that is almost never part of a URL + const clean = url.replace(/[.,;:!?]+$/, ""); + return `${clean}`; + }, ); // Convert @user@domain mentions to profile links