From db9349e9760b3d5bfe1510e6a264e965cf710578 Mon Sep 17 00:00:00 2001 From: Sam Freund Date: Fri, 24 Jul 2026 11:58:25 -0700 Subject: [PATCH 1/2] init Signed-off-by: Sam Freund --- astro.config.mjs | 2 + package.json | 1 + pnpm-lock.yaml | 69 +++++++++++++++++++ src/content/docs/learning-course/index.mdx | 2 +- .../learning-course/stage0/conditionals.mdx | 2 +- .../learning-course/stage0/stage-overview.mdx | 6 +- .../learning-course/stage1/stage-overview.mdx | 4 +- .../stage1/stage1a/stage-overview.mdx | 2 +- src/content/docs/test-content-figure.mdx | 2 +- 9 files changed, 81 insertions(+), 9 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index f6a16bf1..ac00065e 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,5 +1,6 @@ import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; +import starlightLinksValidator from 'starlight-links-validator'; import remarkGlossary from './src/plugins/remark-glossary'; import remarkCenter from './src/plugins/remark-center'; import remarkFigure from './src/plugins/remark-figure'; @@ -69,6 +70,7 @@ export default defineConfig({ tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 3 }, // Sidebar configuration is now managed in src/config/sidebarConfig.ts // This allows different sidebars per top-level navigation section + plugins: [starlightLinksValidator()], }), ], }); diff --git a/package.json b/package.json index bc6ee85a..340beddc 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "remark-lint-no-dead-urls": "^2.0.1", "remark-mdx": "^3.1.1", "remark-preset-lint-recommended": "^7.0.1", + "starlight-links-validator": "^0.20.0", "tsx": "^4.22.4", "typescript": "^6.0.3", "typescript-eslint": "^8.61.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87ba03c8..fd4b6316 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,6 +78,9 @@ importers: remark-preset-lint-recommended: specifier: ^7.0.1 version: 7.0.1 + starlight-links-validator: + specifier: ^0.20.0 + version: 0.20.1(@astrojs/starlight@0.39.2(astro@6.3.7(@types/node@24.12.4)(rollup@4.59.0)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@6.3.7(@types/node@24.12.4)(rollup@4.59.0)(tsx@4.22.4)(yaml@2.9.0)) tsx: specifier: ^4.22.4 version: 4.22.4 @@ -1068,6 +1071,9 @@ packages: '@types/node@24.12.4': resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==} + '@types/picomatch@4.0.3': + resolution: {integrity: sha512-iG0T6+nYJ9FAPmx9SsUlnwcq1ZVRuCXcVEvWnntoPlrOpwtSTKNDC9uVAxTsC3PUvJ+99n4RpAcNgBbHX3JSnQ==} + '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -1853,6 +1859,10 @@ packages: h3@1.15.11: resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + hast-util-embedded@3.0.0: resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} @@ -2007,6 +2017,10 @@ packages: iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-absolute-url@5.0.0: + resolution: {integrity: sha512-sdJyNpBnQHuVnBunfzjAecOhZr2+A30ywfFvu3EnxtKLUWfwGgyWUmqHbGZiU6vTfHpCPm5GvLe4BAvlU9n8VQ==} + engines: {node: '>=20'} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -3142,6 +3156,13 @@ packages: spdx-license-ids@3.0.23: resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + starlight-links-validator@0.20.1: + resolution: {integrity: sha512-bPfX9tlvkLcygIwo4nszOf7TOj1iqfZEpUss5oxRlaa3/mt7zGBHANSkanVMd0FK6VQa2oUD9MjH1DszykkwPA==} + engines: {node: '>=22.12.0'} + peerDependencies: + '@astrojs/starlight': '>=0.38.0' + astro: '>=6.0.0' + stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -3199,10 +3220,18 @@ packages: resolution: {integrity: sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==} engines: {node: '>=14.16'} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} engines: {node: '>=12'} + supports-hyperlinks@4.5.0: + resolution: {integrity: sha512-ZW2OvfeCXrNTbLakPUzjQG922EeGCOteFSVoek5DKStTh898wf7zgtuFlzQN8HfZCxC3Eh02yJVrRW51hADf+w==} + engines: {node: '>=20'} + svgo@4.0.1: resolution: {integrity: sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==} engines: {node: '>=16'} @@ -3212,6 +3241,10 @@ packages: resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} engines: {node: ^14.18.0 || >=16.0.0} + terminal-link@5.0.0: + resolution: {integrity: sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==} + engines: {node: '>=20'} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -4630,6 +4663,8 @@ snapshots: dependencies: undici-types: 7.16.0 + '@types/picomatch@4.0.3': {} + '@types/sax@1.2.7': dependencies: '@types/node': 24.12.4 @@ -5629,6 +5664,8 @@ snapshots: ufo: 1.6.3 uncrypto: 0.1.3 + has-flag@5.0.1: {} + hast-util-embedded@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -5904,6 +5941,8 @@ snapshots: iron-webcrypto@1.2.1: {} + is-absolute-url@5.0.0: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -7782,6 +7821,24 @@ snapshots: spdx-license-ids@3.0.23: {} + starlight-links-validator@0.20.1(@astrojs/starlight@0.39.2(astro@6.3.7(@types/node@24.12.4)(rollup@4.59.0)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3))(astro@6.3.7(@types/node@24.12.4)(rollup@4.59.0)(tsx@4.22.4)(yaml@2.9.0)): + dependencies: + '@astrojs/starlight': 0.39.2(astro@6.3.7(@types/node@24.12.4)(rollup@4.59.0)(tsx@4.22.4)(yaml@2.9.0))(typescript@6.0.3) + '@types/picomatch': 4.0.3 + astro: 6.3.7(@types/node@24.12.4)(rollup@4.59.0)(tsx@4.22.4)(yaml@2.9.0) + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-has-property: 3.0.0 + is-absolute-url: 5.0.0 + kleur: 4.1.5 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-to-string: 4.0.0 + picomatch: 4.0.4 + terminal-link: 5.0.0 + unist-util-visit: 5.1.0 + transitivePeerDependencies: + - supports-color + stream-replace-string@2.0.0: {} string-argv@0.3.2: {} @@ -7854,8 +7911,15 @@ snapshots: function-timeout: 0.1.1 time-span: 5.1.0 + supports-color@10.2.2: {} + supports-color@9.4.0: {} + supports-hyperlinks@4.5.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + svgo@4.0.1: dependencies: commander: 11.1.0 @@ -7870,6 +7934,11 @@ snapshots: dependencies: '@pkgr/core': 0.3.6 + terminal-link@5.0.0: + dependencies: + ansi-escapes: 7.3.0 + supports-hyperlinks: 4.5.0 + text-table@0.2.0: {} time-span@5.1.0: diff --git a/src/content/docs/learning-course/index.mdx b/src/content/docs/learning-course/index.mdx index b3dac77f..cf7c398d 100644 --- a/src/content/docs/learning-course/index.mdx +++ b/src/content/docs/learning-course/index.mdx @@ -12,7 +12,7 @@ The progression of the course moves from learning how to write Java to programmi We start individual mechanisms of robots, using the FRC Kitbot, then move to more complex robots. Software in FRC is always changing! If you want to give feedback or have comments, feel free to do so through our [Github](https://github.com/frcsoftware/frcsoftware.org) -or [Discord.](discord.gg/uUugPrPZFs) +or [Discord.](https://discord.gg/uUugPrPZFs) -Like we mentioned earlier in [Java Fundamentals](/intro-to-java/java-fundamentals/), all programming languages have syntax that needs to be followed. +Like we mentioned earlier in [Java Fundamentals](/learning-course/stage0/java-fundamentals/), all programming languages have syntax that needs to be followed. One part of syntax is keywords. As a reminder, a keyword is a reserved word that the compiler uses to run the code. In Java, we use the following keywords for conditionals: `if`, `else if`, `else` diff --git a/src/content/docs/learning-course/stage0/stage-overview.mdx b/src/content/docs/learning-course/stage0/stage-overview.mdx index 27521b40..5ecab2a6 100644 --- a/src/content/docs/learning-course/stage0/stage-overview.mdx +++ b/src/content/docs/learning-course/stage0/stage-overview.mdx @@ -15,6 +15,6 @@ This will help ensure that you don’t miss any important information. This stage will cover the following topics -- [Java Fundamentals](\learning-course\intro-to-java\java-fundamentals) -- [Operators](\learning-course\stage0\operators/) -- [Conditionals](\learning-course\stage0\conditionals/) +- [Java Fundamentals](/learning-course/stage0/java-fundamentals/) +- [Operators](/learning-course/stage0/operators/) +- [Conditionals](/learning-course/stage0/conditionals/) diff --git a/src/content/docs/learning-course/stage1/stage-overview.mdx b/src/content/docs/learning-course/stage1/stage-overview.mdx index e4e504aa..30edaf44 100644 --- a/src/content/docs/learning-course/stage1/stage-overview.mdx +++ b/src/content/docs/learning-course/stage1/stage-overview.mdx @@ -20,5 +20,5 @@ Feel free to play around with the robot and control it in sim once you've finish This stage is composed of the following sub-stages: -- [Stage 1A](../stage-1a/stage-overview) -- [WIP](#) +- [Stage 1A](/learning-course/stage1/stage1a/stage-overview/) +- [Stage 1B](/learning-course/stage1/stage1b/stage-overview/) diff --git a/src/content/docs/learning-course/stage1/stage1a/stage-overview.mdx b/src/content/docs/learning-course/stage1/stage1a/stage-overview.mdx index d9c8609c..516030ca 100644 --- a/src/content/docs/learning-course/stage1/stage1a/stage-overview.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/stage-overview.mdx @@ -115,4 +115,4 @@ And that's all you need to know to get started! The rest of Stage 1A will cover This stage will cover the following topics: -- [WIP](#) +- [Stage 1A Commands](/learning-course/stage1/stage1b/command-based-overview/) diff --git a/src/content/docs/test-content-figure.mdx b/src/content/docs/test-content-figure.mdx index 24121037..6b8e5ce4 100644 --- a/src/content/docs/test-content-figure.mdx +++ b/src/content/docs/test-content-figure.mdx @@ -165,6 +165,6 @@ YouTube video with default border -Learn more about document setup in the [best practices](/best-practices/) section +Learn more about document setup in the [best practices](/best-practices/overview/) section From 7da2548a7c515c9b63d1cf0a12a022dab6241c8d Mon Sep 17 00:00:00 2001 From: Sam Freund Date: Fri, 24 Jul 2026 14:58:36 -0700 Subject: [PATCH 2/2] fix discord redir Signed-off-by: Sam Freund --- src/content/docs/contribution/index.mdx | 2 +- src/content/docs/learning-course/index.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/contribution/index.mdx b/src/content/docs/contribution/index.mdx index ebe2acbc..187ff305 100644 --- a/src/content/docs/contribution/index.mdx +++ b/src/content/docs/contribution/index.mdx @@ -14,6 +14,6 @@ The current focus is on getting stages 0, 1, and 2 complete and setting up the w This is a great time to get involved with this project and have an impact. - + Join our development Discord diff --git a/src/content/docs/learning-course/index.mdx b/src/content/docs/learning-course/index.mdx index cf7c398d..deb95772 100644 --- a/src/content/docs/learning-course/index.mdx +++ b/src/content/docs/learning-course/index.mdx @@ -12,7 +12,7 @@ The progression of the course moves from learning how to write Java to programmi We start individual mechanisms of robots, using the FRC Kitbot, then move to more complex robots. Software in FRC is always changing! If you want to give feedback or have comments, feel free to do so through our [Github](https://github.com/frcsoftware/frcsoftware.org) -or [Discord.](https://discord.gg/uUugPrPZFs) +or [Discord.](https://discord.com/invite/uUugPrPZFs)