From 1d7b01a9437b69d7afb2c726bbdef39f2e52907e Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 00:17:39 -0700 Subject: [PATCH 01/18] init --- package.json | 6 +- scripts/generate-glossary.ts | 69 +++++++++ src/content/docs/resources/glossary.mdx | 181 +++++++++++++++++++++--- src/data/glossary.ts | 26 ++++ 4 files changed, 262 insertions(+), 20 deletions(-) create mode 100644 scripts/generate-glossary.ts diff --git a/package.json b/package.json index 6d5319a..566d581 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,11 @@ "build": "astro build", "preview": "astro preview", "astro": "astro", - "lint": "pnpm lint:eslint && pnpm lint:md && pnpm lint:regions && pnpm typecheck", + "generate:glossary": "tsx scripts/generate-glossary.ts", + "lint:glossary": "tsx scripts/generate-glossary.ts --check", + "prebuild": "tsx scripts/generate-glossary.ts", + "predev": "tsx scripts/generate-glossary.ts", + "lint": "pnpm lint:eslint && pnpm lint:md && pnpm lint:regions && pnpm lint:glossary && pnpm typecheck", "lint:eslint": "eslint .", "lint:md": "remark src/content/docs --ext mdx --frail", "lint:regions": "tsx scripts/validate-regions.ts", diff --git a/scripts/generate-glossary.ts b/scripts/generate-glossary.ts new file mode 100644 index 0000000..80d2e84 --- /dev/null +++ b/scripts/generate-glossary.ts @@ -0,0 +1,69 @@ +import { execSync } from 'child_process'; +import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs'; +import { join, resolve } from 'path'; +import { fileURLToPath } from 'url'; +import { glossaryTerms } from '../src/data/glossary'; + +const ROOT = fileURLToPath(new URL('..', import.meta.url)); +const OUTPUT = resolve(ROOT, 'src/content/docs/resources/glossary.mdx'); +const CHECK = process.argv.includes('--check'); + +const sorted = [...glossaryTerms].sort((a, b) => + a.term.toLowerCase().localeCompare(b.term.toLowerCase()), +); + +const frontmatter = [ + '---', + 'title: Welcome to the Glossary', + 'description: A compiled list of words and definitions to help you understand FRC programming terminology.', + '---', +]; + +const body = [ + '{/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */}', + '', + '## Why this exists.', + '', + 'We know it can be hard learning each and every term thrown around in FRC programming, so we have compiled a list of words and definitions to aid you throughout your learning.', + '', + '## Terms', + '', +]; + +for (const { term, definition } of sorted) { + body.push(`**${term}**`); + body.push(''); + body.push(`: ${definition}`); + body.push(''); +} + +const content = [...frontmatter, '', ...body].join('\n'); + +function formatFile(filePath: string) { + execSync(`pnpm prettier --write "${filePath}"`, { + cwd: ROOT, + stdio: 'pipe', + }); +} + +if (CHECK) { + const existing = readFileSync(OUTPUT, 'utf-8'); + const tmpDir = mkdtempSync( + join(ROOT, 'src', 'content', 'docs', 'glossary-'), + ); + const tmpFile = join(tmpDir, 'glossary.mdx'); + writeFileSync(tmpFile, content); + formatFile(tmpFile); + const formatted = readFileSync(tmpFile, 'utf-8'); + rmSync(tmpDir, { recursive: true }); + if (formatted !== existing) { + console.error( + 'src/content/docs/resources/glossary.mdx is out of date.\n' + + 'Run `pnpm generate:glossary` to regenerate it.', + ); + process.exit(1); + } +} else { + writeFileSync(OUTPUT, content); + formatFile(OUTPUT); +} diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index 412746b..ee607a8 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -3,53 +3,196 @@ title: Welcome to the Glossary description: A compiled list of words and definitions to help you understand FRC programming terminology. --- +{/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */} + ## Why this exists. We know it can be hard learning each and every term thrown around in FRC programming, so we have compiled a list of words and definitions to aid you throughout your learning. ## Terms -**PDH** +**3DP** -: Power Distribution Hub. +: Abbreviation for 3D printed or 3D printing -**SparkMAX** +**4Bar** -: Motor controller for REV motors. +: A type of linkage characterized by its 4 pivot points -**Main Breaker** +**Backlash** -: Switch for the robot. +: 'Slop' in a power transmission system; can wiggle back and forth without engaging the whole system -**PWM** +**Bellypan** -: Pulse Width Modulation cable. +: Plate for mounting electronics on the underside of your drivebase -**RIO** +**Billet** -: RoboRIO, brain of the robot. +: Component machined down from a solid block of material -**Blinkn** +**Blinkin** -: LED controller for REV. +: LED controller for REV -**Radio** +**Brainpan** + +: Flipped electronics bellypan + +**C-C** + +: "Center to Center" distance + +**Cantilever** + +: Horizontal element that's supported by one side only + +**COG** + +: Center of Gravity, also referred to as COM (Center of Mass) + +**COTS** + +: Commercial Off the Shelf - Parts you can buy from a vendor + +**Deadaxle** + +: A type of axle setup where the axle is fixed in place and/or is not transferring the torque of the system through it + +**DP** + +: Diametral pitch - The number of teeth per inch of the pitch circle + +**Gusset** + +: Reinforcement plate, usually made of aluminum, used to strengthen connections between two tubes -: Device that helps the robot communicate with the driver station. +**Hardstop** + +: A physical limit designed to prevent a mechanism or component from moving beyond a certain point **Limit Switch** -: Type of sensor that acts as a soft limit when physically or magnetically hit. +: Type of sensor that acts as a soft limit when physically or magnetically hit -**Throughbore Encoder** +**Liveaxle** -: An encoder that allows shafts to pass through its center to record position. +: A type of axle setup where the main torque transfer is through the axle **Magnetic Encoder** -: An encoder that uses magnetic fields to measure position or motion. +: An encoder that uses magnetic fields to measure position or motion + +**Main Breaker** + +: Switch for the robot + +**MCM** + +: McMaster Carr + +**OTB** + +: "Over the Bumper" - A style of intake where you lift the piece over the bumper + +**Packaging** + +: The way in which you fit parts of your robot together in a space + +**Parametric** + +: Designed in a way that uses relationships between steps to maintain design intent + +**PC** + +: Abbreviation for polycarbonate + +**PDH** + +: Power Distribution Hub + +**Poly** + +: Abbreviation for polycarbonate + +**PWM** + +: Pulse Width Modulation cable + +**Radio** + +: Device that helps the robot communicate with the driver station + +**Redux** + +: Redux Robotics **Repository** : A storage location for software packages, often used in version control systems like Git. -Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking. +Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking + +**REV** + +: REV Robotics + +**RIO** + +: roboRIO - The brain of the robot + +**Shear** + +: When forces are applied parallel to the plane of a material, causing breaking of fasteners due to excessive force and stress + +**Softstop** + +: A software-based limit or control mechanism that restricts the movement of a mechanism or component to prevent it from exceeding certain parameters + +**SparkMAX** + +: Motor controller for REV motors + +**Stripping** + +: Process of removing threads or bolt heads, often due to excessive force or wear + +**Tapping** + +: The process of creating threads in a hole using a tap tool + +**Throughbore Encoder** + +: An encoder that allows shafts to pass through its center to record position + +**Torque** + +: Force that produces rotational movement + +**TTB** + +: The Thrifty Bot + +**Tube-Nut** + +: Also known as a "Star Nut" - Provides an easy way to put a thread in end of a hollow tube allowing you to bolt the tube to another part + +**turnbuckle** + +: A threaded part that goes in between chain links to tension the chain + +**UTB** + +: "Under the Bumper" - A style of intake where you move the piece under the bumper + +**V4B** + +: "Virtual 4 Bar" - Where a second degree of freedom is directly geared off a previous degree of freedom instead of being moved independently or by a linkage + +**WCP** + +: West Coast Products + +**Zombie-Axle** + +: Typically used on pivots - A zombie axle spins with the mechanism, but is transferring little to no torque through it. +Commonly used to put an encoder on the pivot point diff --git a/src/data/glossary.ts b/src/data/glossary.ts index bc16752..12451fe 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -159,6 +159,32 @@ export const glossaryTerms: GlossaryTerm[] = [ definition: 'Device that helps the robot communicate with the driver station', }, + { + term: 'Main Breaker', + definition: 'Switch for the robot', + }, + { + term: 'Limit Switch', + definition: + 'Type of sensor that acts as a soft limit when physically or magnetically hit', + }, + { + term: 'Throughbore Encoder', + definition: + 'An encoder that allows shafts to pass through its center to record position', + }, + { + term: 'Magnetic Encoder', + definition: + 'An encoder that uses magnetic fields to measure position or motion', + }, + + // Software + { + term: 'Repository', + definition: + 'A storage location for software packages, often used in version control systems like Git. Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking', + }, // Manufacturing & Materials { From 76bf616a1e7a55dd4d0fe1960f2cc8c05ba45065 Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 22:06:50 -0700 Subject: [PATCH 02/18] remove highlighting from glossary page --- src/plugins/remark-glossary.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/remark-glossary.ts b/src/plugins/remark-glossary.ts index d47722e..d63b9c4 100644 --- a/src/plugins/remark-glossary.ts +++ b/src/plugins/remark-glossary.ts @@ -1,5 +1,6 @@ import { visit } from 'unist-util-visit'; import type { Root, Text } from 'mdast'; +import type { VFile } from 'vfile'; import { glossaryTerms } from '../data/glossary'; const sortedTerms = [...glossaryTerms].sort( @@ -21,7 +22,9 @@ function escapeRegex(str: string): string { } export function remarkGlossary() { - return (tree: Root) => { + return (tree: Root, file: VFile) => { + if (file.path?.endsWith('glossary.mdx')) return; + visit(tree, 'text', (node: Text, index, parent) => { if (!parent || index === undefined) return; From e16e11ac01e702bac08c730cc8f25f3a60e1517d Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 22:08:31 -0700 Subject: [PATCH 03/18] cut what it is --- scripts/generate-glossary.ts | 5 ----- src/content/docs/resources/glossary.mdx | 5 ----- 2 files changed, 10 deletions(-) diff --git a/scripts/generate-glossary.ts b/scripts/generate-glossary.ts index 80d2e84..7531cc1 100644 --- a/scripts/generate-glossary.ts +++ b/scripts/generate-glossary.ts @@ -15,17 +15,12 @@ const sorted = [...glossaryTerms].sort((a, b) => const frontmatter = [ '---', 'title: Welcome to the Glossary', - 'description: A compiled list of words and definitions to help you understand FRC programming terminology.', '---', ]; const body = [ '{/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */}', '', - '## Why this exists.', - '', - 'We know it can be hard learning each and every term thrown around in FRC programming, so we have compiled a list of words and definitions to aid you throughout your learning.', - '', '## Terms', '', ]; diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index ee607a8..9e22960 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -1,14 +1,9 @@ --- title: Welcome to the Glossary -description: A compiled list of words and definitions to help you understand FRC programming terminology. --- {/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */} -## Why this exists. - -We know it can be hard learning each and every term thrown around in FRC programming, so we have compiled a list of words and definitions to aid you throughout your learning. - ## Terms **3DP** From e681fe37fb0934b7da2aa98c99909d72d127cc64 Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 22:37:57 -0700 Subject: [PATCH 04/18] cull glossary --- src/data/glossary.ts | 187 +------------------------------------------ 1 file changed, 3 insertions(+), 184 deletions(-) diff --git a/src/data/glossary.ts b/src/data/glossary.ts index 12451fe..6b5129c 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -17,121 +17,6 @@ export interface GlossaryTerm { } export const glossaryTerms: GlossaryTerm[] = [ - // Vendors - { - term: 'WCP', - definition: 'West Coast Products', - }, - { - term: 'REV', - definition: 'REV Robotics', - }, - { - term: 'TTB', - definition: 'The Thrifty Bot', - }, - { - term: 'Redux', - definition: 'Redux Robotics', - }, - { - term: 'MCM', - definition: 'McMaster Carr', - }, - - // Intake styles - { - term: 'OTB', - definition: - '"Over the Bumper" - A style of intake where you lift the piece over the bumper', - }, - { - term: 'UTB', - definition: - '"Under the Bumper" - A style of intake where you move the piece under the bumper', - }, - - // Parts & Components - { - term: 'COTS', - definition: - 'Commercial Off the Shelf - Parts you can buy from a vendor', - }, - { - term: 'V4B', - definition: - '"Virtual 4 Bar" - Where a second degree of freedom is directly geared off a previous degree of freedom instead of being moved independently or by a linkage', - }, - { - term: 'C-C', - definition: '"Center to Center" distance', - }, - { - term: 'turnbuckle', - definition: - 'A threaded part that goes in between chain links to tension the chain', - }, - { - term: '4Bar', - definition: 'A type of linkage characterized by its 4 pivot points', - }, - { - term: 'Tube-Nut', - definition: - 'Also known as a "Star Nut" - Provides an easy way to put a thread in end of a hollow tube allowing you to bolt the tube to another part', - }, - { - term: 'Gusset', - definition: - 'Reinforcement plate, usually made of aluminum, used to strengthen connections between two tubes', - }, - - // Physics & Engineering concepts - { - term: 'COG', - definition: - 'Center of Gravity, also referred to as COM (Center of Mass)', - }, - { - term: 'Cantilever', - definition: "Horizontal element that's supported by one side only", - }, - { - term: 'Shear', - definition: - 'When forces are applied parallel to the plane of a material, causing breaking of fasteners due to excessive force and stress', - }, - { - term: 'Torque', - definition: 'Force that produces rotational movement', - }, - { - term: 'DP', - definition: - 'Diametral pitch - The number of teeth per inch of the pitch circle', - }, - { - term: 'Backlash', - definition: - "'Slop' in a power transmission system; can wiggle back and forth without engaging the whole system", - }, - - // Axle types - { - term: 'Deadaxle', - definition: - 'A type of axle setup where the axle is fixed in place and/or is not transferring the torque of the system through it', - }, - { - term: 'Liveaxle', - definition: - 'A type of axle setup where the main torque transfer is through the axle', - }, - { - term: 'Zombie-Axle', - definition: - 'Typically used on pivots - A zombie axle spins with the mechanism, but is transferring little to no torque through it. Commonly used to put an encoder on the pivot point', - }, // Electronics { @@ -147,18 +32,13 @@ export const glossaryTerms: GlossaryTerm[] = [ definition: 'Pulse Width Modulation cable', }, { - term: 'RIO', - definition: 'roboRIO - The brain of the robot', + term: 'SystemCore', + definition: 'SystemCore - The brain of the robot', }, { term: 'Blinkin', definition: 'LED controller for REV', }, - { - term: 'Radio', - definition: - 'Device that helps the robot communicate with the driver station', - }, { term: 'Main Breaker', definition: 'Switch for the robot', @@ -184,68 +64,7 @@ export const glossaryTerms: GlossaryTerm[] = [ term: 'Repository', definition: 'A storage location for software packages, often used in version control systems like Git. Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking', - }, - - // Manufacturing & Materials - { - term: '3DP', - definition: 'Abbreviation for 3D printed or 3D printing', - }, - { - term: 'Poly', - definition: 'Abbreviation for polycarbonate', - }, - { - term: 'PC', - definition: 'Abbreviation for polycarbonate', - }, - { - term: 'Stripping', - definition: - 'Process of removing threads or bolt heads, often due to excessive force or wear', - }, - { - term: 'Tapping', - definition: - 'The process of creating threads in a hole using a tap tool', - }, - { - term: 'Billet', - definition: 'Component machined down from a solid block of material', - }, - - // Robot structure - { - term: 'Brainpan', - definition: 'Flipped electronics bellypan', - }, - { - term: 'Bellypan', - definition: - 'Plate for mounting electronics on the underside of your drivebase', - }, - { - term: 'Hardstop', - definition: - 'A physical limit designed to prevent a mechanism or component from moving beyond a certain point', - }, - { - term: 'Softstop', - definition: - 'A software-based limit or control mechanism that restricts the movement of a mechanism or component to prevent it from exceeding certain parameters', - }, - - // Design concepts - { - term: 'Packaging', - definition: - 'The way in which you fit parts of your robot together in a space', - }, - { - term: 'Parametric', - definition: - 'Designed in a way that uses relationships between steps to maintain design intent', - }, + } ]; /** From 032f5a8aa36d14d8356e07ff03e285765bc70234 Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 22:47:46 -0700 Subject: [PATCH 05/18] format --- package.json | 2 +- scripts/generate-glossary.ts | 6 +----- src/data/glossary.ts | 3 +-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 566d581..6993cd5 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "generate:glossary": "tsx scripts/generate-glossary.ts", "lint:glossary": "tsx scripts/generate-glossary.ts --check", "prebuild": "tsx scripts/generate-glossary.ts", - "predev": "tsx scripts/generate-glossary.ts", + "predev": "tsx scripts/generate-glossary.ts", "lint": "pnpm lint:eslint && pnpm lint:md && pnpm lint:regions && pnpm lint:glossary && pnpm typecheck", "lint:eslint": "eslint .", "lint:md": "remark src/content/docs --ext mdx --frail", diff --git a/scripts/generate-glossary.ts b/scripts/generate-glossary.ts index 7531cc1..26b1790 100644 --- a/scripts/generate-glossary.ts +++ b/scripts/generate-glossary.ts @@ -12,11 +12,7 @@ const sorted = [...glossaryTerms].sort((a, b) => a.term.toLowerCase().localeCompare(b.term.toLowerCase()), ); -const frontmatter = [ - '---', - 'title: Welcome to the Glossary', - '---', -]; +const frontmatter = ['---', 'title: Welcome to the Glossary', '---']; const body = [ '{/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */}', diff --git a/src/data/glossary.ts b/src/data/glossary.ts index 6b5129c..e4ed46a 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -17,7 +17,6 @@ export interface GlossaryTerm { } export const glossaryTerms: GlossaryTerm[] = [ - // Electronics { term: 'PDH', @@ -64,7 +63,7 @@ export const glossaryTerms: GlossaryTerm[] = [ term: 'Repository', definition: 'A storage location for software packages, often used in version control systems like Git. Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking', - } + }, ]; /** From ba79e5436921db3349082e7727030fbec44c5b3c Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 22:55:18 -0700 Subject: [PATCH 06/18] oh noes, forgot to regen. CI works tho --- src/content/docs/resources/glossary.mdx | 149 +----------------------- 1 file changed, 2 insertions(+), 147 deletions(-) diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index 9e22960..5930d95 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -6,74 +6,14 @@ title: Welcome to the Glossary ## Terms -**3DP** - -: Abbreviation for 3D printed or 3D printing - -**4Bar** - -: A type of linkage characterized by its 4 pivot points - -**Backlash** - -: 'Slop' in a power transmission system; can wiggle back and forth without engaging the whole system - -**Bellypan** - -: Plate for mounting electronics on the underside of your drivebase - -**Billet** - -: Component machined down from a solid block of material - **Blinkin** : LED controller for REV -**Brainpan** - -: Flipped electronics bellypan - -**C-C** - -: "Center to Center" distance - -**Cantilever** - -: Horizontal element that's supported by one side only - -**COG** - -: Center of Gravity, also referred to as COM (Center of Mass) - -**COTS** - -: Commercial Off the Shelf - Parts you can buy from a vendor - -**Deadaxle** - -: A type of axle setup where the axle is fixed in place and/or is not transferring the torque of the system through it - -**DP** - -: Diametral pitch - The number of teeth per inch of the pitch circle - -**Gusset** - -: Reinforcement plate, usually made of aluminum, used to strengthen connections between two tubes - -**Hardstop** - -: A physical limit designed to prevent a mechanism or component from moving beyond a certain point - **Limit Switch** : Type of sensor that acts as a soft limit when physically or magnetically hit -**Liveaxle** - -: A type of axle setup where the main torque transfer is through the axle - **Magnetic Encoder** : An encoder that uses magnetic fields to measure position or motion @@ -82,112 +22,27 @@ title: Welcome to the Glossary : Switch for the robot -**MCM** - -: McMaster Carr - -**OTB** - -: "Over the Bumper" - A style of intake where you lift the piece over the bumper - -**Packaging** - -: The way in which you fit parts of your robot together in a space - -**Parametric** - -: Designed in a way that uses relationships between steps to maintain design intent - -**PC** - -: Abbreviation for polycarbonate - **PDH** : Power Distribution Hub -**Poly** - -: Abbreviation for polycarbonate - **PWM** : Pulse Width Modulation cable -**Radio** - -: Device that helps the robot communicate with the driver station - -**Redux** - -: Redux Robotics - **Repository** : A storage location for software packages, often used in version control systems like Git. Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking -**REV** - -: REV Robotics - -**RIO** - -: roboRIO - The brain of the robot - -**Shear** - -: When forces are applied parallel to the plane of a material, causing breaking of fasteners due to excessive force and stress - -**Softstop** - -: A software-based limit or control mechanism that restricts the movement of a mechanism or component to prevent it from exceeding certain parameters - **SparkMAX** : Motor controller for REV motors -**Stripping** +**SystemCore** -: Process of removing threads or bolt heads, often due to excessive force or wear - -**Tapping** - -: The process of creating threads in a hole using a tap tool +: SystemCore - The brain of the robot **Throughbore Encoder** : An encoder that allows shafts to pass through its center to record position - -**Torque** - -: Force that produces rotational movement - -**TTB** - -: The Thrifty Bot - -**Tube-Nut** - -: Also known as a "Star Nut" - Provides an easy way to put a thread in end of a hollow tube allowing you to bolt the tube to another part - -**turnbuckle** - -: A threaded part that goes in between chain links to tension the chain - -**UTB** - -: "Under the Bumper" - A style of intake where you move the piece under the bumper - -**V4B** - -: "Virtual 4 Bar" - Where a second degree of freedom is directly geared off a previous degree of freedom instead of being moved independently or by a linkage - -**WCP** - -: West Coast Products - -**Zombie-Axle** - -: Typically used on pivots - A zombie axle spins with the mechanism, but is transferring little to no torque through it. -Commonly used to put an encoder on the pivot point From dba5cbb8e6d696c58e5dc1c3c7ccd2ce5257aa4d Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 23:02:04 -0700 Subject: [PATCH 07/18] remove browser tooltips --- src/plugins/remark-glossary.ts | 2 +- src/styles/global.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/remark-glossary.ts b/src/plugins/remark-glossary.ts index d63b9c4..804732d 100644 --- a/src/plugins/remark-glossary.ts +++ b/src/plugins/remark-glossary.ts @@ -66,7 +66,7 @@ export function remarkGlossary() { newNodes.push({ type: 'html', - value: `${escapeHtml(matchedTerm)}`, + value: `${escapeHtml(matchedTerm)}`, }); lastIndex = matchEnd; diff --git a/src/styles/global.css b/src/styles/global.css index d5cfaed..51912f1 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -302,7 +302,7 @@ abbr.glossary-term:hover { } abbr.glossary-term::after { - content: attr(title); + content: attr(data-tooltip); position: absolute; bottom: 100%; left: 50%; From bd018f69b0efaa6d9467a24e4f087efeb35f0d40 Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 23:02:23 -0700 Subject: [PATCH 08/18] remove colon --- scripts/generate-glossary.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate-glossary.ts b/scripts/generate-glossary.ts index 26b1790..88ff7d6 100644 --- a/scripts/generate-glossary.ts +++ b/scripts/generate-glossary.ts @@ -24,7 +24,7 @@ const body = [ for (const { term, definition } of sorted) { body.push(`**${term}**`); body.push(''); - body.push(`: ${definition}`); + body.push(`${definition}`); body.push(''); } From c72368fbc02f34f8409381c85b0c408788b02bd0 Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 23:03:25 -0700 Subject: [PATCH 09/18] regen --- src/content/docs/resources/glossary.mdx | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index 5930d95..507eee5 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -8,41 +8,41 @@ title: Welcome to the Glossary **Blinkin** -: LED controller for REV +LED controller for REV **Limit Switch** -: Type of sensor that acts as a soft limit when physically or magnetically hit +Type of sensor that acts as a soft limit when physically or magnetically hit **Magnetic Encoder** -: An encoder that uses magnetic fields to measure position or motion +An encoder that uses magnetic fields to measure position or motion **Main Breaker** -: Switch for the robot +Switch for the robot **PDH** -: Power Distribution Hub +Power Distribution Hub **PWM** -: Pulse Width Modulation cable +Pulse Width Modulation cable **Repository** -: A storage location for software packages, often used in version control systems like Git. +A storage location for software packages, often used in version control systems like Git. Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking **SparkMAX** -: Motor controller for REV motors +Motor controller for REV motors **SystemCore** -: SystemCore - The brain of the robot +SystemCore - The brain of the robot **Throughbore Encoder** -: An encoder that allows shafts to pass through its center to record position +An encoder that allows shafts to pass through its center to record position From af24724d241f06543fbdcea96f5582bf58b5ad49 Mon Sep 17 00:00:00 2001 From: Sam Freund Date: Wed, 1 Jul 2026 23:15:32 -0700 Subject: [PATCH 10/18] Apply suggestions from code review Co-authored-by: Andrew Haselton <13470989+roboteer5291@users.noreply.github.com> --- scripts/generate-glossary.ts | 3 +-- src/data/glossary.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/generate-glossary.ts b/scripts/generate-glossary.ts index 88ff7d6..9dacca1 100644 --- a/scripts/generate-glossary.ts +++ b/scripts/generate-glossary.ts @@ -12,12 +12,11 @@ const sorted = [...glossaryTerms].sort((a, b) => a.term.toLowerCase().localeCompare(b.term.toLowerCase()), ); -const frontmatter = ['---', 'title: Welcome to the Glossary', '---']; +const frontmatter = ['---', 'title: Glossary', '---']; const body = [ '{/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */}', '', - '## Terms', '', ]; diff --git a/src/data/glossary.ts b/src/data/glossary.ts index e4ed46a..e1cadf4 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -23,7 +23,7 @@ export const glossaryTerms: GlossaryTerm[] = [ definition: 'Power Distribution Hub', }, { - term: 'SparkMAX', + term: 'Spark MAX', definition: 'Motor controller for REV motors', }, { From 82c2ecec5d6fa53465aef1b996d312dc1cad4fed Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 23:28:16 -0700 Subject: [PATCH 11/18] rewrite glossary --- src/content/docs/resources/glossary.mdx | 15 ++++++++++----- src/data/glossary.ts | 18 +++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index 507eee5..c18d0df 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -10,17 +10,22 @@ title: Welcome to the Glossary LED controller for REV +**CAN** + +Controller Area Network: yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC. + **Limit Switch** -Type of sensor that acts as a soft limit when physically or magnetically hit +Type of sensor that triggers when physically or magnetically hit. +Can be used to trigger actions on a rising or falling edge **Magnetic Encoder** -An encoder that uses magnetic fields to measure position or motion +An encoder that uses a receiver and a magnet to measure position and motion **Main Breaker** -Switch for the robot +Power switch for the robot **PDH** @@ -28,7 +33,7 @@ Power Distribution Hub **PWM** -Pulse Width Modulation cable +Pulse Width Modulation: three-wire cable used to communicate with motor controllers and sensors, needs to connect back to MRC **Repository** @@ -41,7 +46,7 @@ Motor controller for REV motors **SystemCore** -SystemCore - The brain of the robot +Main Robot Controller (MRC), contains a CM5 chip and has CAN and USB inputs. **Throughbore Encoder** diff --git a/src/data/glossary.ts b/src/data/glossary.ts index e1cadf4..57a1f40 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -27,12 +27,16 @@ export const glossaryTerms: GlossaryTerm[] = [ definition: 'Motor controller for REV motors', }, { - term: 'PWM', - definition: 'Pulse Width Modulation cable', + term: 'SystemCore', + definition: 'Main Robot Controller (MRC), contains a CM5 chip and has CAN and USB inputs.', }, { - term: 'SystemCore', - definition: 'SystemCore - The brain of the robot', + term: 'CAN', + definition: 'Controller Area Network: yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC.' + }, + { + term: 'PWM', + definition: 'Pulse Width Modulation: three-wire cable used to communicate with motor controllers and sensors, needs to connect back to MRC', }, { term: 'Blinkin', @@ -40,12 +44,12 @@ export const glossaryTerms: GlossaryTerm[] = [ }, { term: 'Main Breaker', - definition: 'Switch for the robot', + definition: 'Power switch for the robot', }, { term: 'Limit Switch', definition: - 'Type of sensor that acts as a soft limit when physically or magnetically hit', + 'Type of sensor that triggers when physically or magnetically hit. Can be used to trigger actions on a rising or falling edge', }, { term: 'Throughbore Encoder', @@ -55,7 +59,7 @@ export const glossaryTerms: GlossaryTerm[] = [ { term: 'Magnetic Encoder', definition: - 'An encoder that uses magnetic fields to measure position or motion', + 'An encoder that uses a receiver and a magnet to measure position and motion', }, // Software From 5bc1acf1b4d9eb5563b70b153f5f1aa48a2546a4 Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 23:29:02 -0700 Subject: [PATCH 12/18] format --- src/data/glossary.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/data/glossary.ts b/src/data/glossary.ts index 57a1f40..b0d1475 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -28,15 +28,18 @@ export const glossaryTerms: GlossaryTerm[] = [ }, { term: 'SystemCore', - definition: 'Main Robot Controller (MRC), contains a CM5 chip and has CAN and USB inputs.', + definition: + 'Main Robot Controller (MRC), contains a CM5 chip and has CAN and USB inputs.', }, { term: 'CAN', - definition: 'Controller Area Network: yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC.' + definition: + 'Controller Area Network: yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC.', }, { term: 'PWM', - definition: 'Pulse Width Modulation: three-wire cable used to communicate with motor controllers and sensors, needs to connect back to MRC', + definition: + 'Pulse Width Modulation: three-wire cable used to communicate with motor controllers and sensors, needs to connect back to MRC', }, { term: 'Blinkin', From 39b1da1ad97de8d02b248f08ad0105570da497d3 Mon Sep 17 00:00:00 2001 From: samfreund Date: Wed, 1 Jul 2026 23:31:04 -0700 Subject: [PATCH 13/18] regen (again) --- src/content/docs/resources/glossary.mdx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index c18d0df..e508b39 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -1,11 +1,9 @@ --- -title: Welcome to the Glossary +title: Glossary --- {/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */} -## Terms - **Blinkin** LED controller for REV @@ -40,7 +38,7 @@ Pulse Width Modulation: three-wire cable used to communicate with motor controll A storage location for software packages, often used in version control systems like Git. Repositories are just folders that contain files and subfolders, and they can be hosted on platforms like GitHub to facilitate collaboration and version tracking -**SparkMAX** +**Spark MAX** Motor controller for REV motors From 50fd1529cb2a35b35b4e414cce95ee8e261ad969 Mon Sep 17 00:00:00 2001 From: samfreund Date: Sun, 5 Jul 2026 18:47:22 -0700 Subject: [PATCH 14/18] address some comments --- src/data/glossary.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/data/glossary.ts b/src/data/glossary.ts index b0d1475..1163e70 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -4,6 +4,8 @@ * Add terms here to automatically highlight them across the site * with a dotted underline and hover tooltip. * + * Definitions should not have a period at the end + * * Format: * { * term: "TERM", // The word/abbreviation to match (case-insensitive) @@ -26,24 +28,24 @@ export const glossaryTerms: GlossaryTerm[] = [ term: 'Spark MAX', definition: 'Motor controller for REV motors', }, + { + term: 'Talon FX', + definition: 'Motor controller for CTRE motors', + }, { term: 'SystemCore', definition: - 'Main Robot Controller (MRC), contains a CM5 chip and has CAN and USB inputs.', + 'Mobile Robot Controller (MRC), main processor for robot code containing various IO', }, { term: 'CAN', definition: - 'Controller Area Network: yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC.', + 'Controller Area Network: typically yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC', }, { term: 'PWM', definition: - 'Pulse Width Modulation: three-wire cable used to communicate with motor controllers and sensors, needs to connect back to MRC', - }, - { - term: 'Blinkin', - definition: 'LED controller for REV', + 'Pulse Width Modulation: A communication spec used to communicate with motor controllers and sensors, needs to connect back to the MRC', }, { term: 'Main Breaker', @@ -52,12 +54,12 @@ export const glossaryTerms: GlossaryTerm[] = [ { term: 'Limit Switch', definition: - 'Type of sensor that triggers when physically or magnetically hit. Can be used to trigger actions on a rising or falling edge', + 'Type of sensor that triggers when physically or magnetically hit. Can be used to trigger actions on a rising or falling edge, or check state of a mechanism', }, { term: 'Throughbore Encoder', definition: - 'An encoder that allows shafts to pass through its center to record position', + 'An encoder that allows shafts to pass through its center to record angular position', }, { term: 'Magnetic Encoder', From 9386fa2e5c504d9a752a72d3da2ac1bb6220a953 Mon Sep 17 00:00:00 2001 From: samfreund Date: Sun, 5 Jul 2026 19:38:25 -0700 Subject: [PATCH 15/18] regen glossary --- src/content/docs/resources/glossary.mdx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index e508b39..a735021 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -4,18 +4,14 @@ title: Glossary {/* This file is auto-generated by scripts/generate-glossary.ts. Do not edit directly. */} -**Blinkin** - -LED controller for REV - **CAN** -Controller Area Network: yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC. +Controller Area Network: typically yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC **Limit Switch** Type of sensor that triggers when physically or magnetically hit. -Can be used to trigger actions on a rising or falling edge +Can be used to trigger actions on a rising or falling edge, or check state of a mechanism **Magnetic Encoder** @@ -31,7 +27,7 @@ Power Distribution Hub **PWM** -Pulse Width Modulation: three-wire cable used to communicate with motor controllers and sensors, needs to connect back to MRC +Pulse Width Modulation: A communication spec used to communicate with motor controllers and sensors, needs to connect back to the MRC **Repository** @@ -44,8 +40,12 @@ Motor controller for REV motors **SystemCore** -Main Robot Controller (MRC), contains a CM5 chip and has CAN and USB inputs. +Mobile Robot Controller (MRC), main processor for robot code containing various IO + +**Talon FX** + +Motor controller for CTRE motors **Throughbore Encoder** -An encoder that allows shafts to pass through its center to record position +An encoder that allows shafts to pass through its center to record angular position From 63cc9094b4df4f0f0671e72bbc77e371e572da20 Mon Sep 17 00:00:00 2001 From: samfreund Date: Sun, 5 Jul 2026 20:19:04 -0700 Subject: [PATCH 16/18] more rewording --- src/data/glossary.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/data/glossary.ts b/src/data/glossary.ts index 1163e70..3a3f686 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -35,17 +35,17 @@ export const glossaryTerms: GlossaryTerm[] = [ { term: 'SystemCore', definition: - 'Mobile Robot Controller (MRC), main processor for robot code containing various IO', + 'Main processor for robot code, contains various IO', }, { term: 'CAN', definition: - 'Controller Area Network: typically yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC', + 'Controller Area Network: typically yellow and green cable used to communicate with motor controllers and sensors, can be run in various topographies instead of each cable needing to connect to SystemCore', }, { term: 'PWM', definition: - 'Pulse Width Modulation: A communication spec used to communicate with motor controllers and sensors, needs to connect back to the MRC', + 'Pulse Width Modulation: A communication spec used to communicate with motor controllers and sensors, needs to connect back to SystemCore', }, { term: 'Main Breaker', From 637a30662d54b39d8ff20d638e382d3c9ef3ac95 Mon Sep 17 00:00:00 2001 From: samfreund Date: Sun, 5 Jul 2026 20:19:46 -0700 Subject: [PATCH 17/18] dammit --- src/content/docs/resources/glossary.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/docs/resources/glossary.mdx b/src/content/docs/resources/glossary.mdx index a735021..1082c96 100644 --- a/src/content/docs/resources/glossary.mdx +++ b/src/content/docs/resources/glossary.mdx @@ -6,7 +6,7 @@ title: Glossary **CAN** -Controller Area Network: typically yellow and green cable used to communicate with motor controllers and sensors, can be run in a loop instead of each cable needing to connect to the MRC +Controller Area Network: typically yellow and green cable used to communicate with motor controllers and sensors, can be run in various topographies instead of each cable needing to connect to SystemCore **Limit Switch** @@ -27,7 +27,7 @@ Power Distribution Hub **PWM** -Pulse Width Modulation: A communication spec used to communicate with motor controllers and sensors, needs to connect back to the MRC +Pulse Width Modulation: A communication spec used to communicate with motor controllers and sensors, needs to connect back to SystemCore **Repository** @@ -40,7 +40,7 @@ Motor controller for REV motors **SystemCore** -Mobile Robot Controller (MRC), main processor for robot code containing various IO +Main processor for robot code, contains various IO **Talon FX** From e32188108627f461ab9bd3d643cfad4d17e3f6ae Mon Sep 17 00:00:00 2001 From: samfreund Date: Sun, 5 Jul 2026 21:38:15 -0700 Subject: [PATCH 18/18] format --- src/data/glossary.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/data/glossary.ts b/src/data/glossary.ts index 3a3f686..f05fcc9 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -34,8 +34,7 @@ export const glossaryTerms: GlossaryTerm[] = [ }, { term: 'SystemCore', - definition: - 'Main processor for robot code, contains various IO', + definition: 'Main processor for robot code, contains various IO', }, { term: 'CAN',