From 779906a18c2e13300fe1097e7e66e69c37821aff Mon Sep 17 00:00:00 2001
From: Jade
Date: Fri, 17 Jul 2026 23:22:20 +0800
Subject: [PATCH 1/4] Fix link formatting for Java Fundamentals section
---
.prettierrc | 1 +
src/content/docs/learning-course/stage0/stage-overview.mdx | 7 ++-----
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/.prettierrc b/.prettierrc
index 8556e263..5eb4bbaf 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -14,6 +14,7 @@
{
"files": "*.mdx",
"options": {
+ "singleAttributePerLine": false,
"proseWrap": "preserve"
}
}
diff --git a/src/content/docs/learning-course/stage0/stage-overview.mdx b/src/content/docs/learning-course/stage0/stage-overview.mdx
index 26f515f7..deeed37e 100644
--- a/src/content/docs/learning-course/stage0/stage-overview.mdx
+++ b/src/content/docs/learning-course/stage0/stage-overview.mdx
@@ -17,11 +17,8 @@ This stage will cover the following topics
-
- {' '}
-
- {' '}
- Java Fundamentals{' '}
- {' '}
+ {/* prettier-ignore */}
+ Java Fundamentals
-
{' '}
From a4292bd4af726ef39ffaabce37a3423bf2f3b0ab Mon Sep 17 00:00:00 2001
From: Jade Turner
Date: Sat, 25 Jul 2026 01:05:27 +0800
Subject: [PATCH 2/4] useless
---
.prettierrc | 1 -
1 file changed, 1 deletion(-)
diff --git a/.prettierrc b/.prettierrc
index 5eb4bbaf..8556e263 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -14,7 +14,6 @@
{
"files": "*.mdx",
"options": {
- "singleAttributePerLine": false,
"proseWrap": "preserve"
}
}
From ccb1076edb3832697be93754dfb0563b4f204f17 Mon Sep 17 00:00:00 2001
From: Jade Turner
Date: Sat, 25 Jul 2026 01:15:17 +0800
Subject: [PATCH 3/4] change all links to md format
---
src/content/docs/learning-course/index.mdx | 28 ++++++-------------
.../learning-course/stage0/conditionals.mdx | 9 ++----
.../learning-course/stage0/stage-overview.mdx | 17 ++---------
.../learning-course/stage1/stage-overview.mdx | 4 +--
.../stage1/stage1a/stage-overview.mdx | 2 +-
5 files changed, 18 insertions(+), 42 deletions(-)
diff --git a/src/content/docs/learning-course/index.mdx b/src/content/docs/learning-course/index.mdx
index 43b234f8..b3dac77f 100644
--- a/src/content/docs/learning-course/index.mdx
+++ b/src/content/docs/learning-course/index.mdx
@@ -11,8 +11,8 @@ Welcome to FRCSoftware's learning course! The purpose of this course is to help
The progression of the course moves from learning how to write Java to programming robots of increasing complexity.
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
-or Discord.
+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)
Discord.
-
- {' '}
-
- {' '}
- Required Tools:{' '}
- {' '}
- Download the tools needed for this learning course.{' '}
+ [Required Tools:](/learning-course/getting-started/required-tools/)
+ Download the tools needed for this learning course.
-
- {' '}
-
- {' '}
- VS Code Overview:{' '}
- {' '}
- Learn more about VS Code, the code editor used for this course.
+ [VS Code
+ Overview:](/learning-course/getting-started/vscode-overview/) Learn
+ more about VS Code, the code editor used for this course.
-
- {' '}
-
- {' '}
- Forking and Cloning:{' '}
-
+ [Forking and
+ Cloning:](/learning-course/getting-started/forking-and-cloning/)
Learn how to use git to fork and clone. This is important for
accessing templates that are used throughout the course.
diff --git a/src/content/docs/learning-course/stage0/conditionals.mdx b/src/content/docs/learning-course/stage0/conditionals.mdx
index 55d27aef..2c5ff9d9 100644
--- a/src/content/docs/learning-course/stage0/conditionals.mdx
+++ b/src/content/docs/learning-course/stage0/conditionals.mdx
@@ -23,14 +23,11 @@ This section will cover three types of conditionals which are:
There is also another type of conditional, called switch, but we will not be
covering it in this section because it is not used as frequently in FRC
programming. However, if you want to learn more about the switch statement,
- you can learn more on w3school's page on{' '}
-
- {' '}
- which covers this type of conditional.{' '}
-
+ you can learn more on w3school's page [which covers this type of
+ conditional.](https://www.w3schools.com/java/java_switch.asp)
-Like we mentioned earlier in Java Fundamentals , all programming languages have syntax that needs to be followed.
+Like we mentioned earlier in [Java Fundamentals](/intro-to-java/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 deeed37e..27521b40 100644
--- a/src/content/docs/learning-course/stage0/stage-overview.mdx
+++ b/src/content/docs/learning-course/stage0/stage-overview.mdx
@@ -15,17 +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/)
diff --git a/src/content/docs/learning-course/stage1/stage-overview.mdx b/src/content/docs/learning-course/stage1/stage-overview.mdx
index 118472b0..e4e504aa 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
-- WIP
+- [Stage 1A](../stage-1a/stage-overview)
+- [WIP](#)
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 f6f1fd43..d9c8609c 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
+- [WIP](#)
From 7b0147e9498ffcf1110c5f9da74c89db12254aa8 Mon Sep 17 00:00:00 2001
From: Jade Turner
Date: Sat, 25 Jul 2026 01:22:16 +0800
Subject: [PATCH 4/4] assert in ci
---
.remarkrc.mjs | 2 ++
src/plugins/remark-no-html-links.mjs | 27 +++++++++++++++++++++++++++
2 files changed, 29 insertions(+)
create mode 100644 src/plugins/remark-no-html-links.mjs
diff --git a/.remarkrc.mjs b/.remarkrc.mjs
index 175ab2ff..3864c0be 100644
--- a/.remarkrc.mjs
+++ b/.remarkrc.mjs
@@ -2,6 +2,7 @@ import remarkPresetLintRecommended from 'remark-preset-lint-recommended';
import remarkFrontmatter from 'remark-frontmatter';
import remarkMdx from 'remark-mdx';
import remarkNoInlineCodeFences from './src/plugins/remark-no-inline-code-fences.mjs';
+import remarkNoHtmlLinks from './src/plugins/remark-no-html-links.mjs';
export default {
plugins: [
@@ -9,5 +10,6 @@ export default {
remarkMdx,
remarkPresetLintRecommended,
remarkNoInlineCodeFences,
+ remarkNoHtmlLinks,
],
};
diff --git a/src/plugins/remark-no-html-links.mjs b/src/plugins/remark-no-html-links.mjs
new file mode 100644
index 00000000..f219b3db
--- /dev/null
+++ b/src/plugins/remark-no-html-links.mjs
@@ -0,0 +1,27 @@
+import { visit } from 'unist-util-visit';
+
+/**
+ * Forbid raw HTML/JSX anchor tags (``) in favour of markdown
+ * link syntax (`[text](url)`). Keeps links consistent and portable.
+ */
+export default function remarkNoHtmlLinks() {
+ return (tree, file) => {
+ // MDX parses `` into JSX element nodes; `remark-mdx` never emits raw
+ // `html` nodes, but check that type too for plain-markdown safety.
+ visit(
+ tree,
+ ['mdxJsxTextElement', 'mdxJsxFlowElement', 'html'],
+ (node) => {
+ const isAnchor =
+ node.name === 'a' || /]/i.test(node.value ?? '');
+ if (!isAnchor) return;
+
+ const msg = file.message(
+ 'Use markdown link syntax `[text](url)` instead of an HTML `` tag.',
+ node,
+ );
+ msg.fatal = true;
+ },
+ );
+ };
+}