diff --git a/lint-staged.config.mjs b/lint-staged.config.mjs index 1b56c8b9..c75f993b 100644 --- a/lint-staged.config.mjs +++ b/lint-staged.config.mjs @@ -1,6 +1,8 @@ /** @type {import('lint-staged').Configuration} */ export default { '**/*': (files) => `prettier --write --ignore-unknown ${files.join(' ')}`, + '{src,public}/**/*.{png,jpg,jpeg,webp}': (images) => + `node scripts/images.lint.js ${images.join(' ')}`, '**/*.{astro,ts,mjs,js}': (files) => `eslint --fix ${files.join(' ')}`, 'src/content/**/*.{md,mdx}': (files) => [ `pnpm remark ${files.join(' ')} --ext mdx --frail --no-stdout --quiet`, diff --git a/public/learning-course/getting-started/website-feature-guide/slide1.png b/public/learning-course/getting-started/website-feature-guide/slide1.png deleted file mode 100644 index a16d7601..00000000 Binary files a/public/learning-course/getting-started/website-feature-guide/slide1.png and /dev/null differ diff --git a/public/learning-course/getting-started/website-feature-guide/slide1.webp b/public/learning-course/getting-started/website-feature-guide/slide1.webp new file mode 100644 index 00000000..91b30504 Binary files /dev/null and b/public/learning-course/getting-started/website-feature-guide/slide1.webp differ diff --git a/public/learning-course/getting-started/website-feature-guide/slide2.png b/public/learning-course/getting-started/website-feature-guide/slide2.png deleted file mode 100644 index fcefff53..00000000 Binary files a/public/learning-course/getting-started/website-feature-guide/slide2.png and /dev/null differ diff --git a/public/learning-course/getting-started/website-feature-guide/slide2.webp b/public/learning-course/getting-started/website-feature-guide/slide2.webp new file mode 100644 index 00000000..869bdbed Binary files /dev/null and b/public/learning-course/getting-started/website-feature-guide/slide2.webp differ diff --git a/public/learning-course/stage0/conditionals/else.png b/public/learning-course/stage0/conditionals/else.png deleted file mode 100644 index 4541bf16..00000000 Binary files a/public/learning-course/stage0/conditionals/else.png and /dev/null differ diff --git a/public/learning-course/stage0/conditionals/else.webp b/public/learning-course/stage0/conditionals/else.webp new file mode 100644 index 00000000..8927b166 Binary files /dev/null and b/public/learning-course/stage0/conditionals/else.webp differ diff --git a/public/learning-course/stage0/conditionals/ifstatement.png b/public/learning-course/stage0/conditionals/ifstatement.png deleted file mode 100644 index d69581df..00000000 Binary files a/public/learning-course/stage0/conditionals/ifstatement.png and /dev/null differ diff --git a/public/learning-course/stage0/conditionals/ifstatement.webp b/public/learning-course/stage0/conditionals/ifstatement.webp new file mode 100644 index 00000000..86cfa5cf Binary files /dev/null and b/public/learning-course/stage0/conditionals/ifstatement.webp differ diff --git a/public/learning-course/stage0/java-fundamentals/ErrorExample1.png b/public/learning-course/stage0/java-fundamentals/ErrorExample1.png deleted file mode 100644 index 631a5223..00000000 Binary files a/public/learning-course/stage0/java-fundamentals/ErrorExample1.png and /dev/null differ diff --git a/public/learning-course/stage0/java-fundamentals/ErrorExample1.webp b/public/learning-course/stage0/java-fundamentals/ErrorExample1.webp new file mode 100644 index 00000000..30418575 Binary files /dev/null and b/public/learning-course/stage0/java-fundamentals/ErrorExample1.webp differ diff --git a/public/learning-course/stage0/java-fundamentals/ErrorExample2.png b/public/learning-course/stage0/java-fundamentals/ErrorExample2.png deleted file mode 100644 index 67d8072b..00000000 Binary files a/public/learning-course/stage0/java-fundamentals/ErrorExample2.png and /dev/null differ diff --git a/public/learning-course/stage0/java-fundamentals/ErrorExample2.webp b/public/learning-course/stage0/java-fundamentals/ErrorExample2.webp new file mode 100644 index 00000000..a695488a Binary files /dev/null and b/public/learning-course/stage0/java-fundamentals/ErrorExample2.webp differ diff --git a/public/learning-course/stage1/stage1b/2910-robot.png b/public/learning-course/stage1/stage1b/2910-robot.png deleted file mode 100644 index 921907c0..00000000 Binary files a/public/learning-course/stage1/stage1b/2910-robot.png and /dev/null differ diff --git a/public/learning-course/stage1/stage1b/2910-robot.webp b/public/learning-course/stage1/stage1b/2910-robot.webp new file mode 100644 index 00000000..469df147 Binary files /dev/null and b/public/learning-course/stage1/stage1b/2910-robot.webp differ diff --git a/public/learning-course/stage1/stage1b/human-flow-diagram.png b/public/learning-course/stage1/stage1b/human-flow-diagram.png deleted file mode 100644 index 9990a9e6..00000000 Binary files a/public/learning-course/stage1/stage1b/human-flow-diagram.png and /dev/null differ diff --git a/public/learning-course/stage1/stage1b/human-flow-diagram.webp b/public/learning-course/stage1/stage1b/human-flow-diagram.webp new file mode 100644 index 00000000..3a6b6be9 Binary files /dev/null and b/public/learning-course/stage1/stage1b/human-flow-diagram.webp differ diff --git a/public/learning-course/stage1/stage1b/robot-flow-diagram.png b/public/learning-course/stage1/stage1b/robot-flow-diagram.png deleted file mode 100644 index 07e14564..00000000 Binary files a/public/learning-course/stage1/stage1b/robot-flow-diagram.png and /dev/null differ diff --git a/public/learning-course/stage1/stage1b/robot-flow-diagram.webp b/public/learning-course/stage1/stage1b/robot-flow-diagram.webp new file mode 100644 index 00000000..ce65fda9 Binary files /dev/null and b/public/learning-course/stage1/stage1b/robot-flow-diagram.webp differ diff --git a/scripts/images.lint.js b/scripts/images.lint.js new file mode 100644 index 00000000..daea4021 --- /dev/null +++ b/scripts/images.lint.js @@ -0,0 +1,24 @@ +import { styleText } from 'node:util'; +import sharp from 'sharp'; + +const [, , ...images] = process.argv; + +/** @type {string[]} */ +const offending = []; + +for (const image of images) { + if (!image.endsWith('.webp')) { + offending.push(image); + continue; + } + const meta = await sharp(image).metadata(); + if (meta.format !== 'webp') { + offending.push(image); + } +} +if (offending.length >= 1) { + process.stderr.write( + `${styleText('red', '✖')} All images should be in WebP format. See contribution guidelines for more info. Offending files: \n - ${offending.map((img) => img.replace(process.cwd() + '/', '')).join('\n - ')}\n`, + ); + process.exit(1); +} diff --git a/src/content/docs/learning-course/getting-started/website-feature-guide.mdx b/src/content/docs/learning-course/getting-started/website-feature-guide.mdx index 8a6597c6..527180eb 100644 --- a/src/content/docs/learning-course/getting-started/website-feature-guide.mdx +++ b/src/content/docs/learning-course/getting-started/website-feature-guide.mdx @@ -55,9 +55,9 @@ Examples for different concepts are shown in an "Example" box like this one. ### Slideshows -![Slide 1](/learning-course/getting-started/website-feature-guide/slide1.png) Navigate the slideshows by pressing the arrows on the sides. +![Slide 1](/learning-course/getting-started/website-feature-guide/slide1.webp) Navigate the slideshows by pressing the arrows on the sides. -![Slide 2](/learning-course/getting-started/website-feature-guide/slide2.png) The dots below the caption indicate the slide you're on. +![Slide 2](/learning-course/getting-started/website-feature-guide/slide2.webp) The dots below the caption indicate the slide you're on. They can also be clicked to navigate to slides. diff --git a/src/content/docs/learning-course/stage0/conditionals.mdx b/src/content/docs/learning-course/stage0/conditionals.mdx index 53177479..9688c0bd 100644 --- a/src/content/docs/learning-course/stage0/conditionals.mdx +++ b/src/content/docs/learning-course/stage0/conditionals.mdx @@ -64,7 +64,7 @@ If `condition` is false, the code inside the `if` block will be skipped. This is also described in the flowchart below @@ -104,7 +104,7 @@ If the `if` statement's condition is `false`, the `if` block will be skipped, an This is also described in the flowchart below diff --git a/src/content/docs/learning-course/stage0/java-fundamentals.mdx b/src/content/docs/learning-course/stage0/java-fundamentals.mdx index dfdef996..84a85353 100644 --- a/src/content/docs/learning-course/stage0/java-fundamentals.mdx +++ b/src/content/docs/learning-course/stage0/java-fundamentals.mdx @@ -22,9 +22,9 @@ Error messages will not tell you exactly what's wrong with your code. If you’re unsure on what the error message means, you can look it up to get additional context. -![Slide 1](/learning-course/stage0/java-fundamentals/ErrorExample1.png) An example of a syntax error (note the squiggly line) +![Slide 1](/learning-course/stage0/java-fundamentals/ErrorExample1.webp) An example of a syntax error (note the squiggly line) -![Slide 2](/learning-course/stage0/java-fundamentals/ErrorExample2.png) An example of a syntax error popup +![Slide 2](/learning-course/stage0/java-fundamentals/ErrorExample2.webp) An example of a syntax error popup diff --git a/src/content/docs/learning-course/stage1/stage1b/command-based-overview.mdx b/src/content/docs/learning-course/stage1/stage1b/command-based-overview.mdx index 820eff38..6c75ad3d 100644 --- a/src/content/docs/learning-course/stage1/stage1b/command-based-overview.mdx +++ b/src/content/docs/learning-course/stage1/stage1b/command-based-overview.mdx @@ -19,7 +19,7 @@ When your alarm clock rings, you turn it off, then tumble out of bed. When your belly rumbles, you walk to the fridge, then get a snack. When the clock strikes 8 AM, you open the front door to leave for school. - + Notice how none of these actions had a predefined order; rather, they were a reaction to certain kinds of stimuli. @@ -31,7 +31,7 @@ Command-based programming models robot behavior in a similar way. For instance, a command-based robot might have the following structure: - + Here, everything on the left is a `Trigger`, while everything on the right is a `Command`.