From b126b68ea983abb6b56975c6ba5961137c0394c8 Mon Sep 17 00:00:00 2001 From: Stamen Stoychev Date: Fri, 22 May 2026 12:08:50 +0300 Subject: [PATCH 1/2] fix(astro): changing remark md links to respect trailingslash rules --- src/integration.ts | 1 + src/plugins/remark-md-links.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/integration.ts b/src/integration.ts index ce9ba38cb5..019d2d464e 100644 --- a/src/integration.ts +++ b/src/integration.ts @@ -553,6 +553,7 @@ export function createDocsSite(options: CreateDocsSiteOptions = {} as CreateDocs } process.env.DOCS_BUILD_MODE = mode; process.env.DOCS_BASE = base ? base.replace(/\/$/, '') : ''; + process.env.DOCS_TRAILING_SLASH = (astroExtra.trailingSlash as string) ?? 'ignore'; if (!process.env.DOCS_ENV) { process.env.DOCS_ENV = mode; } diff --git a/src/plugins/remark-md-links.ts b/src/plugins/remark-md-links.ts index 8fe567d3f9..d77ac87522 100644 --- a/src/plugins/remark-md-links.ts +++ b/src/plugins/remark-md-links.ts @@ -36,7 +36,9 @@ function rewriteMdLink(url: string, filePath: string, docsDir: string): string { const slug = rel.endsWith('.md') ? rel.slice(0, -3) : rel; const docsBase = (process.env.DOCS_BASE ?? '').replace(/\/$/, ''); - return docsBase + '/' + slug.toLowerCase() + '/' + suffix; + const trailingSlash = process.env.DOCS_TRAILING_SLASH ?? 'ignore'; + const trail = trailingSlash === 'never' ? '' : '/'; + return docsBase + '/' + slug.toLowerCase() + trail + suffix; } /** Remark plugin that rewrites relative .md links, prepends DOCS_BASE, and fixes relative image paths. */ From 0d2c2289dca207e480bb2566457f8a7bf9d1bcb9 Mon Sep 17 00:00:00 2001 From: Stamen Stoychev Date: Fri, 22 May 2026 14:57:47 +0300 Subject: [PATCH 2/2] chore(*): adding some commentary for links to appease copilot --- src/plugins/remark-md-links.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/remark-md-links.ts b/src/plugins/remark-md-links.ts index d77ac87522..378900eb50 100644 --- a/src/plugins/remark-md-links.ts +++ b/src/plugins/remark-md-links.ts @@ -2,10 +2,15 @@ * Remark plugin: rewrite relative .md links to Astro-compatible URLs. * * Transforms `[label](./some-page.md)` or `[label](../folder/page.md#section)` - * into root-relative URLs like `/products/.../some-page/` (with DOCS_BASE prepended). + * into root-relative URLs like `/products/.../some-page` (with DOCS_BASE prepended). * * Also prepends DOCS_BASE to bare root-relative internal links (e.g. `/grids/grid/...`) * that are already absolute but missing the site base path. + * + * Respects trailing slash preference via DOCS_TRAILING_SLASH env var, which can be 'always', 'never', or 'ignore'. + * By default both Angular and Xplat astro docs use trailing slash 'never'. + * + * Non-relative links (starting with http://, https://, /, #, or mailto:) and non-.md links are left unchanged. */ import { visit } from 'unist-util-visit';