diff --git a/.github/workflows/agentic-auto-upgrade.yml b/.github/workflows/agentic-auto-upgrade.yml index 7035101ee35..e169cea32b6 100644 --- a/.github/workflows/agentic-auto-upgrade.yml +++ b/.github/workflows/agentic-auto-upgrade.yml @@ -34,7 +34,7 @@ name: Agentic Auto-Upgrade on: schedule: - - cron: "21 3 * * 5" # Weekly (auto-upgrade) + - cron: "11 4 * * 6" # Weekly (auto-upgrade) workflow_dispatch: permissions: diff --git a/docs/scripts/sync-workshop-content.js b/docs/scripts/sync-workshop-content.js index add807f5115..c958ef2642e 100644 --- a/docs/scripts/sync-workshop-content.js +++ b/docs/scripts/sync-workshop-content.js @@ -73,14 +73,19 @@ function loadLocalWorkshopEntries(sourceDir) { } function stripMarkdown(value) { - return String(value) + let str = String(value) .replace(/!\[([^\]]*)\]\([^)]+\)/gu, '$1') .replace(/\[([^\]]+)\]\([^)]+\)/gu, '$1') .replace(/`([^`]+)`/gu, '$1') .replace(/\*\*([^*]+)\*\*/gu, '$1') - .replace(/_([^_]+)_/gu, '$1') - .replace(/<[^>]+>/gu, '') - .trim(); + .replace(/_([^_]+)_/gu, '$1'); + let prev; + let iterations = 0; + do { + prev = str; + str = str.replace(/<[^>]+>/gu, ''); + } while (str !== prev && ++iterations < 20); + return str.trim(); } function extractTitle(body, fallbackId) { diff --git a/docs/src/lib/workshop/routes.ts b/docs/src/lib/workshop/routes.ts index 17f92172d8b..e81c2e6f226 100644 --- a/docs/src/lib/workshop/routes.ts +++ b/docs/src/lib/workshop/routes.ts @@ -36,14 +36,19 @@ function normalizeStepId(fileName: string) { } function stripMarkdown(value: string) { - return String(value) + let str = String(value) .replace(/!\[([^\]]*)\]\([^)]+\)/gu, '$1') .replace(/\[([^\]]+)\]\([^)]+\)/gu, '$1') .replace(/`([^`]+)`/gu, '$1') .replace(/\*\*([^*]+)\*\*/gu, '$1') - .replace(/_([^_]+)_/gu, '$1') - .replace(/<[^>]+>/gu, '') - .trim(); + .replace(/_([^_]+)_/gu, '$1'); + let prev; + let iterations = 0; + do { + prev = str; + str = str.replace(/<[^>]+>/gu, ''); + } while (str !== prev && ++iterations < 20); + return str.trim(); } function parseCurriculumRows(readmeBody: string): CurriculumRow[] {