Add First Steps workshops and sync upstream workshop updates (#4526)

Mirror First Steps workshops in English and five languages. Sync the real-world app track and Foundry modules, preserve legacy lesson URLs with redirects, and update Learning Hub discovery, language switching, and weekly sync provenance for upstream PRs 194 and 195.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
James Montemagno
2026-10-07 09:39:34 +11:00
committed by GitHub
co-authored by Copilot App
parent ff784ad85c
commit ccd6bf0ce1
400 changed files with 19924 additions and 4652 deletions
+10 -3
View File
@@ -11,19 +11,26 @@ const docs = await getCollection("docs");
// Keep each workshop landing page explicit so the Learning Hub can surface tracks
// whose entries live below a nested directory, including translated app tracks.
const WORKSHOP_LANDING_IDS = [
// Normalize the /index suffix because the glob loader may omit it from entry IDs.
const WORKSHOP_LANDING_IDS = new Set([
"learning-hub/cli-for-beginners/index",
"learning-hub/copilot-workshops/index",
"learning-hub/copilot-workshops/app/index",
"learning-hub/copilot-workshops/app/8-foundry-canvas/index",
"learning-hub/copilot-workshops/cli/index",
"learning-hub/copilot-workshops/cloud/index",
"learning-hub/copilot-workshops/vscode/index",
];
"learning-hub/copilot-workshops/first-steps/index",
"learning-hub/copilot-workshops/first-steps/copilot-app/index",
"learning-hub/copilot-workshops/first-steps/copilot-cli/index",
"learning-hub/copilot-workshops/first-steps/vscode/index",
"learning-hub/copilot-workshops/real-world-development/index",
].map(normalizeLearningHubPath));
const articles: LearningHubArticle[] = docs
.filter(
(entry) =>
/^learning-hub\/[^/]+$/.test(entry.id) ||
WORKSHOP_LANDING_IDS.includes(entry.id),
WORKSHOP_LANDING_IDS.has(normalizeLearningHubPath(entry.id)),
)
.filter((entry) => entry.id !== "learning-hub/index")
.map((entry) => ({