a0dcf76177
\S+ was greedily consuming trailing punctuation (. ! , ;) into the URL match, causing new URL() to mutate clean ASCII URLs — e.g. "see https://example.com." became "see https://example.com./". Fix: strip trailing sentence punctuation before parsing, extract and replace only the hostname (not href) to avoid adding trailing slashes to bare origins, and restore the stripped tail afterward.