From 303c7992dff5b4d9447a43d5b2b8bb0e5dbafd44 Mon Sep 17 00:00:00 2001 From: Dickson Mwendia <64727760+Dickson-Mwendia@users.noreply.github.com> Date: Tue, 19 May 2026 15:31:13 +0300 Subject: [PATCH 1/4] Fix linkchecker by remapping root-relative links to learn.microsoft.com Add --remap flag to lychee args so root-relative links (e.g. /entra/...) are rewritten to https://learn.microsoft.com/... and validated against the live site instead of failing as unresolvable local paths. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/linkvalidator.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linkvalidator.yml b/.github/workflows/linkvalidator.yml index a14a430..9a1abc5 100644 --- a/.github/workflows/linkvalidator.yml +++ b/.github/workflows/linkvalidator.yml @@ -22,7 +22,7 @@ jobs: env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} with: - args: --accept=200,429,403,502,503 --verbose --no-progress './**/*.md' + args: --accept=200,429,403,502,503 --verbose --no-progress --remap '/(.+) https://learn.microsoft.com/$1' './**/*.md' fail: true - name: Create Issue From File From 857a404706aed7497ee6843650a13f456798dbe6 Mon Sep 17 00:00:00 2001 From: Dickson Mwendia <64727760+Dickson-Mwendia@users.noreply.github.com> Date: Tue, 19 May 2026 15:39:59 +0300 Subject: [PATCH 2/4] Anchor remap regex to only match root-relative links The unanchored regex '/(.+)' was matching '/' inside absolute URLs (https://, file:///), producing mangled double-protocol URLs like 'https://https//learn.microsoft.com//github.com/...'. Adding '^' ensures only root-relative links (/entra/...) are remapped to learn.microsoft.com. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/linkvalidator.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linkvalidator.yml b/.github/workflows/linkvalidator.yml index 9a1abc5..722a8ae 100644 --- a/.github/workflows/linkvalidator.yml +++ b/.github/workflows/linkvalidator.yml @@ -22,7 +22,7 @@ jobs: env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} with: - args: --accept=200,429,403,502,503 --verbose --no-progress --remap '/(.+) https://learn.microsoft.com/$1' './**/*.md' + args: --accept=200,429,403,502,503 --verbose --no-progress --remap '^/(.+) https://learn.microsoft.com/$1' './**/*.md' fail: true - name: Create Issue From File From 22d860ca5231bd0416c6cc83c15094eb22db3cd1 Mon Sep 17 00:00:00 2001 From: Dickson Mwendia <64727760+Dickson-Mwendia@users.noreply.github.com> Date: Tue, 19 May 2026 15:43:53 +0300 Subject: [PATCH 3/4] Use sed pre-processing instead of --remap for root-relative links Replace the lychee --remap flag with a sed pre-processing step (matching the approach used in MSAL Java) that rewrites root-relative markdown links like [text](/path) to [text](https://learn.microsoft.com/path) before lychee runs. The --remap regex approach couldn't intercept root-relative links before lychee's own root-relative resolver rejected them. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .github/workflows/linkvalidator.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linkvalidator.yml b/.github/workflows/linkvalidator.yml index 722a8ae..cc2da6e 100644 --- a/.github/workflows/linkvalidator.yml +++ b/.github/workflows/linkvalidator.yml @@ -16,13 +16,19 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Resolve root-relative links for checking + run: | + # Convert root-relative markdown links like [text](/path) to [text](https://learn.microsoft.com/path) + # so lychee can validate them. This only modifies the CI checkout copy. + find . -name '*.md' -exec sed -i -E 's|\]\(/|\](https://learn.microsoft.com/|g' {} + + - name: Link Checker id: lychee uses: lycheeverse/lychee-action@master env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} with: - args: --accept=200,429,403,502,503 --verbose --no-progress --remap '^/(.+) https://learn.microsoft.com/$1' './**/*.md' + args: --accept=200,429,403,502,503 --verbose --no-progress './**/*.md' fail: true - name: Create Issue From File From 948746819daa2387b8a2239ae87ab0abbca3f056 Mon Sep 17 00:00:00 2001 From: Dickson Mwendia <64727760+Dickson-Mwendia@users.noreply.github.com> Date: Tue, 19 May 2026 15:48:06 +0300 Subject: [PATCH 4/4] Fix empty URL in migrate.md Link 'official APIs' to the acquiring-tokens doc, which documents the standard MSAL Python token acquisition methods that the migrate page contrasts with. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- msal-python-conceptual/advanced/migrate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/msal-python-conceptual/advanced/migrate.md b/msal-python-conceptual/advanced/migrate.md index 3c00fe3..337c6c1 100644 --- a/msal-python-conceptual/advanced/migrate.md +++ b/msal-python-conceptual/advanced/migrate.md @@ -25,7 +25,7 @@ and then when a new RT comes back, MSAL will store it in the usual way. As this method is intended for scenarios that are not typical, it is NOT readily accessible with the official API surface. You will have to call it via an internal helper `app.client`, and its naming convention is also slightly different than those other -[official APIs](). +[official APIs](../getting-started/acquiring-tokens.md). ```python from msal import PublicClientApplication