diff --git a/.markdownlint.json b/.markdownlint.json index f80433ec..016ca0d1 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,5 +1,6 @@ { "MD033": false, + "MD024": false, "MD013": { "line_length": 100, "tables": false diff --git a/.netlify/state.json b/.netlify/state.json index e995df1c..d5bbba05 100644 --- a/.netlify/state.json +++ b/.netlify/state.json @@ -1,3 +1,3 @@ { - "siteId": "5273a592-7468-452e-a000-9f3e699ecc05" + "siteId": "b5458139-7fea-4422-a3fe-cd2fc7d3b7bb" } diff --git a/astro.config.mjs b/astro.config.mjs index 4342dc69..c2239c93 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,13 +1,12 @@ import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; -// import starlightBlog from "starlight-blog"; // https://astro.build/config export default defineConfig({ integrations: [ - // starlightBlog(), starlight({ title: "Thoth Tech", + favicon: "/favicon.svg", customCss: [ "./src/styles/custom.css", "/src/styles/button-styles.css", @@ -15,6 +14,9 @@ export default defineConfig({ social: { github: "https://github.com/thoth-tech", }, + logo: { + src: "./public/favicon.svg", + }, components: { // MarkdownContent: "starlight-blog/overrides/MarkdownContent.astro", // Sidebar: "starlight-blog/overrides/Sidebar.astro", @@ -25,472 +27,99 @@ export default defineConfig({ label: "Resources", collapsed: true, // Collapsed by default items: [ - { label: "Introduction", - link: "/resources/introduction", - }, - - { - label: "Thoth Tech Technology Stack", - link: "/resources/thoth-tech-technology-stack", - }, - - { - label: "Remote Working Guide", - link: "/resources/remote-working-guide", - }, + { label: "Introduction", link: "/resources/introduction" }, + { label: "Thoth Tech Technology Stack", link: "/resources/thoth-tech-technology-stack" }, + { label: "Remote Working Guide", link: "/resources/remote-working-guide" }, { label: "Onboarding Hub", - collapsed: true, // Collapsed by default - items: [ - { - label: "Thoth Tech Welcome Package", - link: "resources/onboarding-hub/thothtech-onboarding-doc", - }, - { - label: "OnTrack Onboarding Package", - link: "resources/onboarding-hub/ontrack-onboarding-doc", - }, - { - label: "SplashKit Onboarding Package", - link: "resources/onboarding-hub/splashkit-onboarding-doc", - }, - ], + collapsed: true, + autogenerate: { directory: "resources/onboarding-hub" }, }, { label: "Quality Assurance", - collapsed: true, // Collapsed by default - items: [ - { - label: "Quality Assurance Overview", - link: "/resources/quality-assurance/quality-assurance-overview", - }, - { - label: "Git Contributions Guide", - link: "/resources/quality-assurance/git-contributions-guide", - }, - { - label: "Testing and Development", - link: "/resources/quality-assurance/testing-and-dev", - }, - ], - }, - { - label: "Documentation", - collapsed: true, // Collapsed by default - items: [ - { - label: "Documenting for Thoth Tech", - link: "/resources/documentation/documenting-for-thoth-tech", - }, - { - label: "Writing Style Guide", - link: "/resources/documentation/writing-style-guide", - }, - { - label: "Templates", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "resources/Documentation/templates", - }, - }, - ] - }, - { - label: "Frequently Asked Questions (FAQ)", - link: "/resources/faq", + collapsed: true, + autogenerate: { directory: "resources/quality-assurance" }, }, + { label: "Frequently Asked Questions (FAQ)", link: "/resources/faq" }, ], }, { - label: "Teams and Leadership", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "teams-and-leadership", - }, - }, - { - label: "Company Submissions", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "companywidesubmissions", - }, + label: "Teams and Contributions", + collapsed: true, + autogenerate: { directory: "teams-and-contributions" }, }, { label: "Products", - collapsed: true, // Collapsed by default + collapsed: true, items: [ - { - label: "Products", - link: "/products/products", - }, - // { - // label: "Art Gallery", - // collapsed: true, // Collapsed by default - // items: [ - // { - // label: "Get to Know Us", - // link: "/products/art-gallery/example", - // }, - // { - // label: "Projects", - // autogenerate: { - // directory: "products/art-gallery/Projects", - // }, - // // items: [ - // // { - // // label: "Lighthouse", - // // autogenerate: { - // // directory: "products/art-gallery/Projects/Lighthouse", - // // }, - // // }, - // // { - // // label: "Testing Project", - // // autogenerate: { - // // directory: "products/art-gallery/Projects/Testing Project", - // // }, - // // }, - // // ], - // }, - // { - // label: "Documentation", - // autogenerate: { - // directory: "products/art-gallery/Documentation", - // }, - // // items: [ - // // { - // // label: "BackendUpgrades", - // // autogenerate: { - // // directory: "products/art-gallery/Documentation/BackendUpgrades", - // // }, - // // }, - // // { - // // label: "Deployment", - // // autogenerate: { - // // directory: "products/art-gallery/Documentation/Deployment", - // // }, - // // }, - // // { - // // label: "Dockerization", - // // autogenerate: { - // // directory: "products/art-gallery/Documentation/Dockerization", - // // }, - // // }, - // // { - // // label: "Documentation Project", - // // autogenerate: { - // // directory: "products/art-gallery/Documentation/Documentation Project", - // // }, - // // }, - // // { - // // label: "Guidance", - // // autogenerate: { - // // directory: "products/art-gallery/Documentation/Guidance", - // // }, - // // }, - // // ], - // }, - // { - // label: "Issues and Resolutions", - // autogenerate: { - // directory: "products/art-gallery/Issues-and-Resolutions", - // }, - // }, - // ], - // }, - // { - // label: "Company Operations", - // collapsed: true, // Collapsed by default - // items: [ - // { - // label: "Get to Know Us", - // link: "/products/company-operations/example", - // }, - // { - // label: "Projects", - // autogenerate: { - // directory: "products/company-operations/projects", - // }, - // // items: [ - // // { - // // label: "Docusaurus Documentation", - // // autogenerate: { - // // directory: "products/company-operations/projects/docusaurus-documentation", - // // }, - // // }, - // // { - // // label: "Thoth Tech Website", - // // autogenerate: { - // // directory: "products/company-operations/projects/Thoth-Tech-Website", - // // }, - // // }, - // // { - // // label:"Onboarding Tool", - // // autogenerate: { - // // directory: "products/company-operations/projects/onboaring-tool", - // // }, - // // }, - // // ], - // }, - // { - // label: "Documentation", - // autogenerate: { - // directory: "products/company-operations/documentation", - // }, - // }, - // { - // label: "Issues and Resolutions", - // autogenerate: { - // directory: "products/company-operations/issues-and-resolution", - // }, - // }, - // ], - // }, + { label: "Products", link: "/products/products" }, { label: "SplashKit", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "products/splashkit", - }, - // items: [ - // { - // label: "Arcade Machine", - // collapsed: true, // Collapsed by default - // autogenerate: { - // directory: "products/splashkit/Arcade Machine", - // }, - // }, - // { - // label: "Games Development", - // collapsed: true, // Collapsed by default - // autogenerate: { - // directory: "products/splashkit/Games Development", - // }, - // }, - // { - // label: "SplashKit Expansion", - // collapsed: true, // Collapsed by default - // autogenerate: { - // directory: "products/splashkit/SplashKit Expansion", - // }, - // }, - // { - // label: "SplashKit Online", - // collapsed: true, // Collapsed by default - // autogenerate: { - // directory: "products/splashkit/SplashKit Online", - // }, - // }, - // { - // label: "SplashKit Tutorials", - // collapsed: true, // Collapsed by default - // autogenerate: { - // directory: "products/splashkit/SplashKit Tutorials", - // }, - // }, - // { - // label: "SplashKit Website", - // collapsed: true, // Collapsed by default - // autogenerate: { - // directory: "products/splashkit/SplashKit Website", - // }, - // }, - // ], - }, - { - label: "OnTrack", - collapsed: true, // Collapsed by default + collapsed: true, items: [ { - label: "Get to Know Us", - link: "/products/ontrack/example", + label: "Arcade Machine", + collapsed: true, + autogenerate: { directory: "products/splashkit/arcade-machine" }, + }, + { + label: "Games Development", + collapsed: true, + autogenerate: { directory: "products/splashkit/games-development" }, }, { - label: "Projects", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "products/ontrack/Projects", - }, - // items: [ - // { - // label: "Group_Task_Submission", - // autogenerate: { - // directory: "products/ontrack/Projects/Group_Task_Submission", - // }, - // }, - // { - // label: "Numbas", - // autogenerate: { - // directory: "products/ontrack/Projects/Numbas", - // }, - // }, - // { - // label: "Staff Grant Extension", - // autogenerate: { - // directory: "products/ontrack/Projects/Staff Grant Extension", - // }, - // }, - // { - // label: "Task Submission & Redesign", - // autogenerate: { - // directory: "products/ontrack/Projects/Task Submission & Redesign", - // }, - // }, - // { - // label: "Tutor Times", - // autogenerate: { - // directory: "products/ontrack/Projects/Tutor Times", - // }, - // items: [ - // { - // label: "Documentation", - // autogenerate: { - // directory: "products/ontrack/Projects/Tutor Times/Documentation", - // }, - // }, - // { - // label: "UML Diagrams", - // autogenerate: { - // directory: "products/ontrack/Projects/Tutor Times/UML Diagrams", - // }, - // }, - // ] - // }, - // ] + label: "SplashKit Expansion", + collapsed: true, + autogenerate: { directory: "products/splashkit/splashkit-expansion" }, }, { - label: "Documentation", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "products/ontrack/Documentation", - }, - // items: [ - // { - // label: "Deployment", - // autogenerate: { - // directory: "products/ontrack/Documentation/Deployment", - // }, - // items: [ - // { - // label: "Enhanced_Authentication", - // autogenerate: { - // directory: "products/ontrack/Documentation/Deployment/Enhanced_Authentication", - // } - // }, - // { - // label: "Google_Cloud", - // autogenerate: { - // directory: "products/ontrack/Documentation/Deployment/Google_Cloud", - // } - // }, - // ] - // }, - // { - // label: "Documentation", - // autogenerate: { - // directory: "products/ontrack/Documentation/Documentation", - // }, - // }, - // { - // label: "File Submission Enhancements", - // autogenerate: { - // directory: "products/ontrack/Documentation/File Submission Enhancements", - // }, - // }, - // { - // label: "Front-End-Migration", - // autogenerate: { - // directory: "products/ontrack/Documentation/Front-End-Migration", - // }, - // }, - // { - // label: "Incorporate Content Ontrack", - // autogenerate: { - // directory: "products/ontrack/Documentation/Incorporate Content Ontrack", - // }, - // }, - // { - // label: "Jupyter Notebook", - // autogenerate: { - // directory: "products/ontrack/Documentation/Jupyter Notebook", - // }, - // }, - // { - // label: "Multiple Organisations", - // autogenerate: { - // directory: "products/ontrack/Documentation/Multiple Organisations", - // }, - // }, - // { - // label: "Voice Verification", - // autogenerate: { - // directory: "products/ontrack/Documentation/Voice Verification", - // }, - // }, - // ], + label: "SplashKit Online", + collapsed: true, + autogenerate: { directory: "products/splashkit/splashkit-online" }, }, { - label: "Issues-and-resolutions", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "products/ontrack/Issues-and-resolutions", - }, + label: "SplashKit Tutorials", + collapsed: true, + autogenerate: { directory: "products/splashkit/splashkit-tutorials" }, }, { - label: "Ontrack-setup", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "products/ontrack/Ontrack-setup", - }, + label: "SplashKit Website", + collapsed: true, + autogenerate: { directory: "products/splashkit/splashkit-website" }, }, ], }, + { + label: "OnTrack", + collapsed: true, + autogenerate: { directory: "products/ontrack" }, + }, { label: "CourseFlow", - collapsed: true, // Collapsed by default - items: [ - { - label: "Get to Know Us", - link: "/products/courseflow/example", - }, - { - label: "Projects", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "products/courseflow/projects", - }, - // items: [ - // { - // label: "2FA - Documentation", - // autogenerate: { - // directory: "products/courseflow/Projects/2FA - Documentation", - // }, - // }, - // ] - }, - { - label: "Issues and Resolutions", - collapsed: true, // Collapsed by default - autogenerate: { - directory: "products/courseflow/issues-and-resolutions", - }, - }, - ], + collapsed: true, + autogenerate: { directory: "products/courseflow" }, + }, + { + label: "Art Gallery", + collapsed: true, + autogenerate: { directory: "products/art-gallery" }, }, ], }, { label: "Feedback", + collapsed: true, items: [ - { - label: "Feedback Form", - link: "feedback/feedback-form", - }, + { + label: "Feedback Form", + link: "/feedback/feedback-form" + } ], }, ], }), ], - // Process images with sharp: https://docs.astro.build/en/guides/assets/#using-sharp + // Image processing image: { service: { entrypoint: "astro/assets/services/sharp", diff --git a/package-lock.json b/package-lock.json index 7076c08f..59d2c3fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "dependencies": { "@astrojs/netlify": "^3.0.0", - "@astrojs/starlight": "^0.25.5", + "@astrojs/starlight": "^0.28.2", "astro": "^4.13.3", "sharp": "^0.32.3", "starlight": "^0.3.9", @@ -34,9 +34,9 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.2.tgz", - "integrity": "sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.3.tgz", + "integrity": "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==", "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { @@ -138,9 +138,9 @@ } }, "node_modules/@astrojs/starlight": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.25.5.tgz", - "integrity": "sha512-JQsfoqRUX/HBpOW8LWPdiIxcfXZ5HOvi4Dz4Ez61U99hDyX3Ix2Q+pmsek1sH5R1MHWx/wlki2VPEqidtKXyiQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.28.2.tgz", + "integrity": "sha512-Q1/Ujl2EzWX71qwqdt/0KP3wOyX6Rvyzcep/zD3hRCtw/Vi2TReh4Q2wLwz7mnbuYU9H7YvBKYknbkmjC+K/0w==", "license": "MIT", "dependencies": { "@astrojs/mdx": "^3.1.3", @@ -154,6 +154,7 @@ "hast-util-select": "^6.0.2", "hast-util-to-string": "^3.0.0", "hastscript": "^9.0.0", + "i18next": "^23.11.5", "mdast-util-directive": "^3.0.0", "mdast-util-to-markdown": "^2.1.0", "mdast-util-to-string": "^4.0.0", @@ -166,7 +167,7 @@ "vfile": "^6.0.2" }, "peerDependencies": { - "astro": "^4.8.6" + "astro": "^4.14.0" } }, "node_modules/@astrojs/telemetry": { @@ -360,18 +361,18 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -415,12 +416,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.2" + "@babel/types": "^7.25.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -463,6 +464,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", @@ -496,13 +509,13 @@ } }, "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1543,10 +1556,16 @@ "node": ">= 8" } }, - "node_modules/@pagefind/darwin-arm64": { + "node_modules/@oslojs/encoding": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.1.0.tgz", - "integrity": "sha512-SLsXNLtSilGZjvqis8sX42fBWsWAVkcDh1oerxwqbac84HbiwxpxOC2jm8hRwcR0Z55HPZPWO77XeRix/8GwTg==", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.1.1.tgz", + "integrity": "sha512-tZ9tysUmQpFs2EqWG2+E1gc+opDAhSyZSsgKmFzhnWfkK02YHZhvL5XJXEZDqYy3s1FAKhwjTg8XDxneuBlDZQ==", "cpu": [ "arm64" ], @@ -1557,9 +1576,9 @@ ] }, "node_modules/@pagefind/darwin-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.1.0.tgz", - "integrity": "sha512-QjQSE/L5oS1C8N8GdljGaWtjCBMgMtfrPAoiCmINTu9Y9dp0ggAyXvF8K7Qg3VyIMYJ6v8vg2PN7Z3b+AaAqUA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.1.1.tgz", + "integrity": "sha512-ChohLQ39dLwaxQv0jIQB/SavP3TM5K5ENfDTqIdzLkmfs3+JlzSDyQKcJFjTHYcCzQOZVeieeGq8PdqvLJxJxQ==", "cpu": [ "x64" ], @@ -1570,15 +1589,15 @@ ] }, "node_modules/@pagefind/default-ui": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.1.0.tgz", - "integrity": "sha512-+XiAJAK++C64nQcD7s3Prdmd5S92lT05fwjOxm0L1jj80jbL+tmvcqkkFnPpoqhnicIPgcAX/Y5W0HRZnBt35w==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.1.1.tgz", + "integrity": "sha512-ZM0zDatWDnac/VGHhQCiM7UgA4ca8jpjA+VfuTJyHJBaxGqZMQnm4WoTz9E0KFcue1Bh9kxpu7uWFZfwpZZk0A==", "license": "MIT" }, "node_modules/@pagefind/linux-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.1.0.tgz", - "integrity": "sha512-8zjYCa2BtNEL7KnXtysPtBELCyv5DSQ4yHeK/nsEq6w4ToAMTBl0K06khqxdSGgjMSwwrxvLzq3so0LC5Q14dA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.1.1.tgz", + "integrity": "sha512-H5P6wDoCoAbdsWp0Zx0DxnLUrwTGWGLu/VI1rcN2CyFdY2EGSvPQsbGBMrseKRNuIrJDFtxHHHyjZ7UbzaM9EA==", "cpu": [ "arm64" ], @@ -1589,9 +1608,9 @@ ] }, "node_modules/@pagefind/linux-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.1.0.tgz", - "integrity": "sha512-4lsg6VB7A6PWTwaP8oSmXV4O9H0IHX7AlwTDcfyT+YJo/sPXOVjqycD5cdBgqNLfUk8B9bkWcTDCRmJbHrKeCw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.1.1.tgz", + "integrity": "sha512-yJs7tTYbL2MI3HT+ngs9E1BfUbY9M4/YzA0yEM5xBo4Xl8Yu8Qg2xZTOQ1/F6gwvMrjCUFo8EoACs6LRDhtMrQ==", "cpu": [ "x64" ], @@ -1602,9 +1621,9 @@ ] }, "node_modules/@pagefind/windows-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.1.0.tgz", - "integrity": "sha512-OboCM76BcMKT9IoSfZuFhiqMRgTde8x4qDDvKulFmycgiJrlL5WnIqBHJLQxZq+o2KyZpoHF97iwsGAm8c32sQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.1.1.tgz", + "integrity": "sha512-b7/qPqgIl+lMzkQ8fJt51SfguB396xbIIR+VZ3YrL2tLuyifDJ1wL5mEm+ddmHxJ2Fki340paPcDan9en5OmAw==", "cpu": [ "x64" ], @@ -1614,10 +1633,38 @@ "win32" ] }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", - "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", "cpu": [ "arm" ], @@ -1628,9 +1675,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", - "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", "cpu": [ "arm64" ], @@ -1641,9 +1688,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", - "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", "cpu": [ "arm64" ], @@ -1654,9 +1701,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", - "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", "cpu": [ "x64" ], @@ -1667,9 +1714,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", - "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", "cpu": [ "arm" ], @@ -1680,9 +1727,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", - "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", "cpu": [ "arm" ], @@ -1693,9 +1740,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", - "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", "cpu": [ "arm64" ], @@ -1706,9 +1753,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", - "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", "cpu": [ "arm64" ], @@ -1719,9 +1766,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", - "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", "cpu": [ "ppc64" ], @@ -1732,9 +1779,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", - "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", "cpu": [ "riscv64" ], @@ -1745,9 +1792,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", - "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", "cpu": [ "s390x" ], @@ -1758,9 +1805,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", - "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", "cpu": [ "x64" ], @@ -1771,9 +1818,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", - "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", "cpu": [ "x64" ], @@ -1784,9 +1831,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", - "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", "cpu": [ "arm64" ], @@ -1797,9 +1844,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", - "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", "cpu": [ "ia32" ], @@ -1810,9 +1857,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", - "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", "cpu": [ "x64" ], @@ -1823,14 +1870,56 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.12.1.tgz", - "integrity": "sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.21.0.tgz", + "integrity": "sha512-zAPMJdiGuqXpZQ+pWNezQAk5xhzRXBNiECFPcJLtUdsFM3f//G95Z15EHTnHchYycU8kIIysqGgxp8OVSj1SPQ==", + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "1.21.0", + "@shikijs/engine-oniguruma": "1.21.0", + "@shikijs/types": "1.21.0", + "@shikijs/vscode-textmate": "^9.2.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.3" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.21.0.tgz", + "integrity": "sha512-jxQHNtVP17edFW4/0vICqAVLDAxmyV31MQJL4U/Kg+heQALeKYVOWo0sMmEZ18FqBt+9UCdyqGKYE7bLRtk9mg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.21.0", + "@shikijs/vscode-textmate": "^9.2.2", + "oniguruma-to-js": "0.4.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.21.0.tgz", + "integrity": "sha512-AIZ76XocENCrtYzVU7S4GY/HL+tgHGbVU+qhiDyNw1qgCA5OSi4B4+HY4BtAoJSMGuD/L5hfTzoRVbzEm2WTvg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.21.0", + "@shikijs/vscode-textmate": "^9.2.2" + } + }, + "node_modules/@shikijs/types": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.21.0.tgz", + "integrity": "sha512-tzndANDhi5DUndBtpojEq/42+dpUF2wS7wdCDQaFtIXm3Rd1QkrcVgSSRLOvEwexekihOXfbYJINW37g96tJRw==", "license": "MIT", "dependencies": { + "@shikijs/vscode-textmate": "^9.2.2", "@types/hast": "^3.0.4" } }, + "node_modules/@shikijs/vscode-textmate": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz", + "integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==", + "license": "MIT" + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -1897,9 +1986,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "license": "MIT" }, "node_modules/@types/estree-jsx": { @@ -2052,9 +2141,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "license": "MIT", "engines": { "node": ">=12" @@ -2088,12 +2177,12 @@ "license": "Python-2.0" }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">= 0.4" } }, "node_modules/array-iterate": { @@ -2116,43 +2205,42 @@ } }, "node_modules/astro": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.13.3.tgz", - "integrity": "sha512-MyhmM0v5sphiVwxAm5jjKxWeuPZijWPJ8Ajdign9QzEmLWSH8vUYIJWx/dWRQ6vF1I0jXrksoj3wtw5nzXt9nw==", + "version": "4.15.11", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.15.11.tgz", + "integrity": "sha512-uA9fenaRR+j6ksPFsmhM88ttz94a66SET1TZxAJLxctxWkDlgz58BxZYUc1gNlt0azhgzOgh4hP3q9M4YzAmBA==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.10.1", + "@astrojs/compiler": "^2.10.3", "@astrojs/internal-helpers": "0.4.1", "@astrojs/markdown-remark": "5.2.0", "@astrojs/telemetry": "3.1.0", "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/types": "^7.25.6", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.1.2", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", "acorn": "^8.12.1", - "aria-query": "^5.3.0", + "aria-query": "^5.3.2", "axobject-query": "^4.1.0", - "boxen": "7.1.1", + "boxen": "8.0.1", "ci-info": "^4.0.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^0.6.0", "cssesc": "^3.0.0", - "debug": "^4.3.6", + "debug": "^4.3.7", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.0.0", + "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", - "dset": "^3.1.3", + "dset": "^3.1.4", "es-module-lexer": "^1.5.4", "esbuild": "^0.21.5", "estree-walker": "^3.0.3", - "execa": "^8.0.1", "fast-glob": "^3.3.2", + "fastq": "^1.17.1", "flattie": "^1.1.1", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", @@ -2161,27 +2249,32 @@ "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.11", + "magicast": "^0.3.5", + "micromatch": "^4.0.8", "mrmime": "^2.0.0", - "ora": "^8.0.1", + "neotraverse": "^0.6.18", + "ora": "^8.1.0", "p-limit": "^6.1.0", "p-queue": "^8.0.1", - "path-to-regexp": "^6.2.2", "preferred-pm": "^4.0.0", "prompts": "^2.4.2", - "rehype": "^13.0.1", + "rehype": "^13.0.2", "semver": "^7.6.3", - "shiki": "^1.12.1", + "shiki": "^1.21.0", "string-width": "^7.2.0", "strip-ansi": "^7.1.0", - "tsconfck": "^3.1.1", + "tinyexec": "^0.3.0", + "tsconfck": "^3.1.3", "unist-util-visit": "^5.0.0", - "vfile": "^6.0.2", - "vite": "^5.3.5", - "vitefu": "^0.2.5", + "vfile": "^6.0.3", + "vite": "^5.4.8", + "vitefu": "^1.0.2", "which-pm": "^3.0.0", + "xxhash-wasm": "^1.0.2", "yargs-parser": "^21.1.1", "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.2" + "zod-to-json-schema": "^3.23.3", + "zod-to-ts": "^1.2.0" }, "bin": { "astro": "astro.js" @@ -2794,22 +2887,22 @@ "license": "ISC" }, "node_modules/boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2827,29 +2920,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -2919,12 +2989,12 @@ } }, "node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3048,15 +3118,15 @@ } }, "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "license": "MIT", "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3180,20 +3250,6 @@ "node": ">= 0.6" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/css-selector-parser": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", @@ -3223,12 +3279,12 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3307,9 +3363,9 @@ } }, "node_modules/devalue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", - "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", "license": "MIT" }, "node_modules/devlop": { @@ -3354,20 +3410,14 @@ "license": "MIT" }, "node_modules/dset": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", - "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, "node_modules/electron-to-chromium": { "version": "1.5.6", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz", @@ -3375,9 +3425,9 @@ "license": "ISC" }, "node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "license": "MIT" }, "node_modules/end-of-stream": { @@ -3560,29 +3610,6 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -3750,18 +3777,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -4067,16 +4082,15 @@ } }, "node_modules/hast-util-to-html": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.1.tgz", - "integrity": "sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", + "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^9.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", @@ -4242,13 +4256,27 @@ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "license": "BSD-2-Clause" }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" + "node_modules/i18next": { + "version": "23.15.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.15.1.tgz", + "integrity": "sha512-wB4abZ3uK7EWodYisHl/asf8UYEhrI/vj/8aoSsrj/ZDxj4/UXPOa1KvFt1Fq5hkUHquNqwFlDprmjZ8iySgYA==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" } }, "node_modules/ieee754": { @@ -4463,22 +4491,10 @@ "@types/estree": "*" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "license": "MIT", "engines": { "node": ">=18" @@ -4502,12 +4518,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4695,6 +4705,17 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -5099,12 +5120,6 @@ "dev": true, "license": "MIT" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -5863,13 +5878,13 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5912,9 +5927,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/nanoid": { @@ -5941,6 +5956,15 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "license": "MIT" }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/nlcst-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", @@ -5983,33 +6007,6 @@ "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -6032,34 +6029,46 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oniguruma-to-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", + "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "license": "MIT", + "dependencies": { + "regex": "^4.3.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/ora": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", - "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.0.tgz", + "integrity": "sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==", "license": "MIT", "dependencies": { "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", + "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.1", - "string-width": "^7.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", "strip-ansi": "^7.1.0" }, "engines": { @@ -6161,19 +6170,19 @@ } }, "node_modules/pagefind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.1.0.tgz", - "integrity": "sha512-1nmj0/vfYcMxNEQj0YDRp6bTVv9hI7HLdPhK/vBBYlrnwjATndQvHyicj5Y7pUHrpCFZpFnLVQXIF829tpFmaw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.1.1.tgz", + "integrity": "sha512-U2YR0dQN5B2fbIXrLtt/UXNS0yWSSYfePaad1KcBPTi0p+zRtsVjwmoPaMQgTks5DnHNbmDxyJUL5TGaLljK3A==", "license": "MIT", "bin": { "pagefind": "lib/runner/bin.cjs" }, "optionalDependencies": { - "@pagefind/darwin-arm64": "1.1.0", - "@pagefind/darwin-x64": "1.1.0", - "@pagefind/linux-arm64": "1.1.0", - "@pagefind/linux-x64": "1.1.0", - "@pagefind/windows-x64": "1.1.0" + "@pagefind/darwin-arm64": "1.1.1", + "@pagefind/darwin-x64": "1.1.1", + "@pagefind/linux-arm64": "1.1.1", + "@pagefind/linux-x64": "1.1.1", + "@pagefind/windows-x64": "1.1.1" } }, "node_modules/parse-entities": { @@ -6253,21 +6262,6 @@ "node": ">=8" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", - "license": "MIT" - }, "node_modules/periscopic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", @@ -6280,9 +6274,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "license": "ISC" }, "node_modules/picomatch": { @@ -6319,9 +6313,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -6339,8 +6333,8 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -6574,10 +6568,22 @@ "node": ">= 6" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regex": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", + "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", + "license": "MIT" + }, "node_modules/rehype": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz", - "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -6793,51 +6799,21 @@ } }, "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, "node_modules/retext": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", @@ -6910,12 +6886,12 @@ } }, "node_modules/rollup": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", - "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -6925,22 +6901,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.20.0", - "@rollup/rollup-android-arm64": "4.20.0", - "@rollup/rollup-darwin-arm64": "4.20.0", - "@rollup/rollup-darwin-x64": "4.20.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", - "@rollup/rollup-linux-arm-musleabihf": "4.20.0", - "@rollup/rollup-linux-arm64-gnu": "4.20.0", - "@rollup/rollup-linux-arm64-musl": "4.20.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", - "@rollup/rollup-linux-riscv64-gnu": "4.20.0", - "@rollup/rollup-linux-s390x-gnu": "4.20.0", - "@rollup/rollup-linux-x64-gnu": "4.20.0", - "@rollup/rollup-linux-x64-musl": "4.20.0", - "@rollup/rollup-win32-arm64-msvc": "4.20.0", - "@rollup/rollup-win32-ia32-msvc": "4.20.0", - "@rollup/rollup-win32-x64-msvc": "4.20.0", + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", "fsevents": "~2.3.2" } }, @@ -7041,34 +7017,17 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/shiki": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.12.1.tgz", - "integrity": "sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.21.0.tgz", + "integrity": "sha512-apCH5BoWTrmHDPGgg3RF8+HAAbEL/CdbYr8rMw7eIrdhCkZHdVGat5mMNlRtd1erNG01VPMIKHNQ0Pj2HMAiog==", "license": "MIT", "dependencies": { - "@shikijs/core": "1.12.1", + "@shikijs/core": "1.21.0", + "@shikijs/engine-javascript": "1.21.0", + "@shikijs/engine-oniguruma": "1.21.0", + "@shikijs/types": "1.21.0", + "@shikijs/vscode-textmate": "^9.2.2", "@types/hast": "^3.0.4" } }, @@ -7179,9 +7138,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -7330,18 +7289,6 @@ "node": ">=0.10.0" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -7406,6 +7353,12 @@ "b4a": "^1.6.4" } }, + "node_modules/tinyexec": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", + "license": "MIT" + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7448,9 +7401,9 @@ } }, "node_modules/tsconfck": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", + "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" @@ -7487,17 +7440,31 @@ } }, "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12.20" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -7709,13 +7676,12 @@ "license": "MIT" }, "node_modules/vfile": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", - "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, "funding": { @@ -7752,14 +7718,14 @@ } }, "node_modules/vite": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", - "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", + "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.40", - "rollup": "^4.13.0" + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -8217,10 +8183,14 @@ } }, "node_modules/vitefu": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", - "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.2.tgz", + "integrity": "sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==", "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*" + ], "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" }, @@ -8240,21 +8210,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/which-pm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz", @@ -8277,55 +8232,32 @@ } }, "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "license": "MIT", - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "string-width": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -8343,35 +8275,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/xxhash-wasm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.0.2.tgz", + "integrity": "sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==", + "license": "MIT" + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -8409,14 +8324,23 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.23.2", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.2.tgz", - "integrity": "sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==", + "version": "3.23.3", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.3.tgz", + "integrity": "sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==", "license": "ISC", "peerDependencies": { "zod": "^3.23.3" } }, + "node_modules/zod-to-ts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", + "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", + "peerDependencies": { + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 55d220bf..98199b67 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@astrojs/netlify": "^3.0.0", - "@astrojs/starlight": "^0.25.5", + "@astrojs/starlight": "^0.28.2", "astro": "^4.13.3", "sharp": "^0.32.3", "starlight": "^0.3.9", diff --git a/public/Thoth Tech Org Chart_2024T2.png b/public/company-structure/2024-t2-thoth-tech-structure.png similarity index 100% rename from public/Thoth Tech Org Chart_2024T2.png rename to public/company-structure/2024-t2-thoth-tech-structure.png diff --git a/public/favicon-alternative.svg b/public/favicon-alternative.svg new file mode 100644 index 00000000..9d948c42 --- /dev/null +++ b/public/favicon-alternative.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/favicon-small.svg b/public/favicon-small.svg new file mode 100644 index 00000000..b52be39e --- /dev/null +++ b/public/favicon-small.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 00000000..43df1f79 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/content/docs/products/products.mdx b/src/content/docs/products/products.mdx index b8afe197..cbe67ac7 100644 --- a/src/content/docs/products/products.mdx +++ b/src/content/docs/products/products.mdx @@ -8,7 +8,7 @@ import { Card, LinkCard, CardGrid } from "@astrojs/starlight/components";
-### About Us +## SplashKit Overview -SplashKit is a C++ Software Development Kit. It is a beginner-friendly abstraction over SDL and many -other libraries to assist in introductory programming education, and can be used to create 2D games. +As a new contributor to SplashKit, you’ll be working on a versatile and beginner-friendly software +development toolkit focused on simplifying 2D game development and interactive applications. +SplashKit already supports cross-platform development for Windows, macOS, and Linux, allowing +developers to use a single codebase for multiple platforms. -Through this project, this team hopes to allow students to create and publish their own interactive -experiences to share with other students and advance their own creative and professional -capabilities. +This document aims to provide a brief overview of the SplashKit ecosystem and highlight the core +areas where you’ll contribute to SplashKit’s growth. The focus of future growth will be on extending +its functionality, improving existing features, and supporting the developer community through +improved tutorials and documentation. -### Main GitHub Repos +### SplashKit Documentation -Here are our main github repositories: +#### SplashKit.io + + - + + + + +SplashKit.io is the primary public-facing website for the SplashKit community. It contains guides, +tutorials, and comprehensive API documentation. This platform is designed to help users, especially +beginners, learn how to use SplashKit effectively in their projects. As a contributor, your +responsibilities might include writing new guides, updating existing tutorials, and ensuring the API +documentation is clear and up-to-date. + +#### Thoth-Tech Documentation Website + + + + + + + + + +The Thoth-Tech Documentation Website is an internal platform focused on providing detailed +explanations of features and guides targeted at the Thoth-Tech team. It serves as a valuable +resource for team members to reference when contributing to SplashKit or collaborating on projects. +Contributors may need to update or write internal-facing documentation, particularly as new features +or internal tools are developed. + +#### Documentation + + + + + + + + +The documentation repository is a 'miscellaneous' collection where all documents that do not fit +into other repositories are stored. This might include research reports, documentation on incomplete +or experimental features, or other internal records. Contributors might add new documentation here +or help organize and maintain existing records to ensure they are accessible and up-to-date. + +### SplashKit Development + +#### SplashKit Core + + + + + + + + +Contributing to SplashKit Core means working directly on the foundation of the SDK. This involves +core functionalities like rendering, audio management, input handling, and more. As a team member, +you’ll focus on adding new features, fixing bugs, and ensuring the overall performance of the SDK +remains high. + +While the core is primarily built in C++, you’ll be contributing to a codebase that supports +translation into other languages like C#, Python, and Pascal. Although the translation process is +largely automated, maintaining the quality and performance of the core features will be your main +responsibility. Cross-platform development is central to SplashKit, so you'll be handling different +OS nuances as you work on features that need to run smoothly on Windows, macOS, and Linux. + +#### SplashKit Manager (SKM) + + + + + + + +The SplashKit Manager (SKM) is a command-line interface (CLI) and application tool designed to +simplify the development workflow with SplashKit. It automates tasks such as project setup, +dependency management, compilation, and running code across different platforms. Contributions to +SKM will primary be to ensure it stays aligned with updates and new features in SplashKit Core. For +example, you’ll ensure that new dependencies or libraries introduced in the core SDK are correctly +included and managed across all supported platforms. + +Beyond core synchronisation, there may also be opportunities to improve the overall user experience +by streamlining project initialization, refining dependency management, or adding tools that make +the workflow more efficient for developers. However, your primary focus will be ensuring SKM +seamlessly integrates with the evolving features and requirements of the core SplashKit SDK. + +#### SplashKit Translator + + + + + + + +The SplashKit Translator automates the process of translating SplashKit’s core C++ functionality +into other supported languages like C#, Python, and Pascal. Since this process is largely automated +using ERB templating, there’s minimal need for direct contributions here. + +Your focus will remain on maintaining and enhancing the core SDK, as changes there will naturally +propagate through the automated translation process. Ensuring that core features are implemented +cleanly and efficiently in C++ will help maintain consistency across languages. + +#### SplashKit Online + + + + + + + +SplashKit Online is a web-based IDE designed to help beginner programmers quickly start building 2D +games directly in the browser. While it currently supports JavaScript (with experimental C++ +functionality) and leverages WebAssembly (Wasm) to execute SplashKit code, the goal is to expand +this support to include all languages that SplashKit supports: C#, Python, and Pascal. + +As a contributor to SplashKit Online, your primary responsibility will be developing and integrating +full support for these languages, allowing users to write and run code in C#, Python, and Pascal +seamlessly within the browser-based environment. This will involve extending the IDE's functionality +to handle language-specific nuances and ensuring that WebAssembly can execute code from these +languages efficiently. + +Your work will also include improving the user experience, making the platform more intuitive and +accessible for users, and ensuring that the transition between languages is smooth. This could +involve building better language selection interfaces, optimizing performance for different +languages, and adding language-specific tools or debugging features. + +#### Arcade Machines + + + - - - - - + + + +The Arcade Machines on Deakin Campuses use emulationstation, retropie, and a custom SplashKit +application to run games built using the SplashKit SDK. These machines offer students the +opportunity to upload their games and test them in a real-world arcade environment. The machines are +designed to help students see their creations in action on physical hardware, making for a hands-on +experience that bridges the gap between development and arcade-style game deployment. + +#### Game Development + + + + + + + + +The Game Development team is a small, focused group that produces games designed to highlight the +capabilities of SplashKit. These games follow industry-standard design patterns and practices to +ensure they are polished and well-structured. The goal is to showcase what can be achieved using +SplashKit while maintaining professional standards in game design and development. These projects +serve as both a demonstration of SplashKit’s features and an inspiration for developers using the +SDK to build their own games. diff --git a/src/content/docs/products/splashkit/SplashKit Expansion/Documentation/peer-review-guide.mdx b/src/content/docs/products/splashkit/SplashKit Expansion/Documentation/peer-review-guide.mdx new file mode 100644 index 00000000..00699438 --- /dev/null +++ b/src/content/docs/products/splashkit/SplashKit Expansion/Documentation/peer-review-guide.mdx @@ -0,0 +1,122 @@ +--- +title: Peer Review Guide +sidebar: + label: Peer Review Guide + order: 1 +--- + +import { Aside } from "@astrojs/starlight/components"; + +## Introduction + + + +In SplashKit, peer reviews are an essential part of maintaining high-quality code. The Peer-Review +Checklist provided below is required for every pull request and ensures that all contributions meet +a consistent standard across the project. This checklist covers essential aspects like code quality, +functionality, and testing. + +However, we recognize that every feature or task is different, and it’s difficult to capture all +potential review points in a single checklist. That’s why we’ve also included a set of Peer-Review +Prompts. These prompts are not mandatory but serve as a resource to guide the peer-review +discussion. Since peer reviews should always be collaborative, these prompts help ensure that the +review process is conversational and thorough, encouraging reviewers to think critically and explore +areas that may not be immediately obvious. + +Remember, the goal of peer reviews is not only to verify the quality of the code but also to foster +a collaborative environment where we improve together. + + + +### Splashkit Peer-Review Checklist + +```md +## General Information + +- [ ] Type of Change: Clearly indicate the type of change (choose one): + - [ ] Bug fix + - [ ] New feature + - [ ] Breaking change + - [ ] Documentation update + +## Code Quality + +- [ ] Repository: Is this Pull Request is made to the correct repository? (Thoth-Tech NOT SplashKit) +- [ ] Readability: Is the code easy to read and follow? If not are there comments to help understand + the code? +- [ ] Maintainability: Can this code be easily maintained or extended in the future? + +## Functionality + +- [ ] Correctness: Does the code meet the requirements of the task? +- [ ] Impact on Existing Functionality: Has the impact on existing functionality been considered and + tested? + +## Testing + +- [ ] Test Coverage: Are unit tests provided for new or modified code? +- [ ] Test Results: Have all tests passed? + +## Documentation + +- [ ] Documentation: Are both inline and applicable external documentation updated and clear? + +## Pull Request Details + +- [ ] PR Description: Is the problem being solved clearly described? +- [ ] Checklist Completion: Have all relevant checklist items been reviewed and completed? +``` + +### Splashkit Review Prompts + +- **Type of Change**: Does this Pull Request correctly identify the type of change (bug fix, new + feature, breaking change, or documentation update)? Is it aligned with the stated issue or task? + +- **Code Readability**: Is the code structure clean and easy to follow? Could it benefit from + clearer variable names, additional comments, or better organization? Would this code be + understandable for a new developer joining the project? + +- **Maintainability**: How maintainable is the code? Is it modular and easy to extend in the future? + Does it avoid creating technical debt? Is the codebase as simple as possible while still + accomplishing the task? + +- **Code Simplicity**: Are there any overly complex or redundant sections in the code? Could they be + refactored for better simplicity or clarity? Does the code follow established design patterns and + best practices? + +- **Edge Cases**: Does the implementation consider potential edge cases? What could go wrong with + this code in unusual or unexpected scenarios? Are there any cases that haven’t been fully + addressed? + +- **Test Thoroughness**: Are all key scenarios (including edge cases and failure paths) covered by + tests? Could additional tests help ensure the reliability of the code? Has the code been tested + across different environments (e.g., multiple browsers or platforms)? + +- **Backward Compatibility**: Does this change break any existing functionality? If so, has backward + compatibility been handled or documented appropriately? Are there any warnings or notes in the + documentation regarding compatibility? + +- **Performance Considerations**: Could this code have a negative impact on performance? Have any + performance concerns been documented and tested? Could the code be optimized for better efficiency + without sacrificing readability? + +- **Security Concerns**: Could this change introduce security vulnerabilities, especially in terms + of input validation or sensitive data handling? Have security best practices been followed? Does + this code ensure proper user data handling? + +- **Dependencies**: Are the new dependencies truly necessary? Could they create conflicts or issues + down the line, particularly during upgrades or with other libraries in the project? Is there a + simpler way to achieve the same functionality without adding new dependencies? + +- **Documentation**: Is the documentation clear and complete for both internal developers and + external users? Could a new developer understand how to use or modify this feature from the + documentation provided? Does it cover any API or external interface changes? diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/2-Tutorial-Style-Guide.mdx b/src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/2-Tutorial-Style-Guide.mdx deleted file mode 100644 index 6378a1b8..00000000 --- a/src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/2-Tutorial-Style-Guide.mdx +++ /dev/null @@ -1,263 +0,0 @@ ---- -title: Tutorial Style Guide -sidebar: - label: Tutorial Style Guide - order: 2 ---- - -import { Tabs, TabItem } from "@astrojs/starlight/components"; - -## General - -Create tutorial in an `.mdx` file. - -Make sure your tutorials follow the **markdownlint** extension's formatting. - -Correct any yellow squiggly lines. - -## Headings - -Make sure to use the following **title** format: - -```mdx ---- -title: Tutorial Heading ---- -``` - -Then use `## Heading` for the highest heading level. - -Always keep a blank line between headings and other text. - -### Subheadings - -For subheadings that you want to see in the RHS sidebar/panel on splashkit.io, use `### Subheading`. -Subheadings lower than this will not be shown. - -Do not use bolded lines for headings/subheadings. - -## Links - -Do not use any "raw" links. Links must always use the following format: - -```mdx -[Text to show for link](URL link) -``` - -Make sure to link your headings within the same file if these are mentioned, using the following -format: - -```mdx -[Heading text](#link-to-heading) -``` - -## Images - -Always keep a blank line between images and other text. - -Use the following format for all images: - -```mdx -![Alt text](link to image) -``` - -For the **Alt text** part above: Briefly explain what the image is showing. This is important for -accessibility. - -For the **link to image** part above: If you are linking an image resource that you have downloaded, -this will need to be put into an **images** folder in the same place as the tutorial. -For example, with the **skbox.png** image in the images folder here, you would use: - -```mdx -![Image of SplashKit box logo](./images/skbox.png) -``` - -Which would produce: - -![Image of SplashKit box logo](./images/skbox.png) - -## Lists - -Always keep a blank line between lists and other text. - -## Code Blocks - -Use fenced code blocks for any code snippets or terminal commands, to make it easier for the reader -to copy. - -Always include a language with the fenced code blocks. - -### C# Code - -For example, if using C#, you would use the following format: - -````md -```csharp -using static SplashKitSDK.SplashKit; - -OpenWindow("SplashKit!", 800, 600); -ClearScreen(); -RefreshScreen(); -Delay(5000); - -CloseAllWindows(); -``` -```` - -Which would produce: - -```csharp -using static SplashKitSDK.SplashKit; - -OpenWindow("SplashKit!", 800, 600); -ClearScreen(); -RefreshScreen(); -Delay(5000); - -CloseAllWindows(); -``` - -### C++ Code - -For C++, you would use the following format: - -````md -```cpp -#include "splashkit.h" - -int main() -{ - open_window("SplashKit!", 800, 600); - clear_screen(); - refresh_screen(); - delay(5000); - - close_all_windows(); - - return 0; -} -``` -```` - -Which would produce: - -```cpp -#include "splashkit.h" - -int main() -{ - open_window("SplashKit!", 800, 600); - clear_screen(); - refresh_screen(); - delay(5000); - - close_all_windows(); - - return 0; -} -``` - -For any blocks that are not code, you can use `plaintext` for the language. For terminal commands, -use `shell` for the language. - -If your guide is only using 1 language (and not using at least both C# and C++), make sure to -include the language used in the title. - -### Multiple Code Languages - -To show the same code in different languages, you will need to use -[Tabs](https://starlight.astro.build/guides/components/#tabs). - -Make sure to add the following line to your file underneath the title: - -```mdx -import { Tabs, TabItem } from "@astrojs/starlight/components"; - -; -``` - -And then using the examples from above, you would have: - -````md - - - -```csharp -using static SplashKitSDK.SplashKit; - -OpenWindow("SplashKit!", 800, 600); -ClearScreen(); -RefreshScreen(); -Delay(5000); - -CloseAllWindows(); -``` - - - - -```cpp -#include "splashkit.h" - -int main() -{ - open_window("SplashKit!", 800, 600); - clear_screen(); - refresh_screen(); - delay(5000); - - close_all_windows(); - - return 0; -} -``` - - - -```` - -Which would produce the following: - - - - -```csharp -using static SplashKitSDK.SplashKit; - -OpenWindow("SplashKit!", 800, 600); -ClearScreen(); -RefreshScreen(); -Delay(5000); - -CloseAllWindows(); -``` - - - - -```cpp -#include "splashkit.h" - -int main() -{ - open_window("SplashKit!", 800, 600); - clear_screen(); - refresh_screen(); - delay(5000); - - close_all_windows(); - - return 0; -} -``` - - - - -## Callouts (Asides) - -Use callouts (also known as [Asides](https://starlight.astro.build/guides/components/#asides)) to -highlight tips or important notes. - -:::tip[Make the page interesting] These can help to direct the reader to any extra info, and help to -add more colour to your tutorial guide. ::: diff --git a/src/content/docs/products/splashkit/Splashkit Online/0-overview.mdx b/src/content/docs/products/splashkit/Splashkit Online/0-overview.mdx deleted file mode 100644 index e6661dbf..00000000 --- a/src/content/docs/products/splashkit/Splashkit Online/0-overview.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Overview ---- - -import { Card, LinkCard, CardGrid, Icon } from "@astrojs/starlight/components"; - -Placeholder page. diff --git a/src/content/docs/products/splashkit/Arcade Machine/0-overview.mdx b/src/content/docs/products/splashkit/arcade-machine/0-overview.mdx similarity index 100% rename from src/content/docs/products/splashkit/Arcade Machine/0-overview.mdx rename to src/content/docs/products/splashkit/arcade-machine/0-overview.mdx diff --git a/src/content/docs/products/splashkit/Games Development/0-overview.mdx b/src/content/docs/products/splashkit/games-development/0-overview.mdx similarity index 100% rename from src/content/docs/products/splashkit/Games Development/0-overview.mdx rename to src/content/docs/products/splashkit/games-development/0-overview.mdx diff --git a/src/content/docs/products/splashkit/SplashKit Expansion/0-overview.mdx b/src/content/docs/products/splashkit/splashkit-expansion/0-overview.mdx similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Expansion/0-overview.mdx rename to src/content/docs/products/splashkit/splashkit-expansion/0-overview.mdx diff --git a/src/content/docs/products/splashkit/SplashKit Website/0-overview.mdx b/src/content/docs/products/splashkit/splashkit-online/0-overview.mdx similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Website/0-overview.mdx rename to src/content/docs/products/splashkit/splashkit-online/0-overview.mdx diff --git a/src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Classes/ExecutionEnvironment.md b/src/content/docs/products/splashkit/splashkit-online/Code Documentation/Classes/ExecutionEnvironment.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Classes/ExecutionEnvironment.md rename to src/content/docs/products/splashkit/splashkit-online/Code Documentation/Classes/ExecutionEnvironment.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Classes/IDBStoredProject.md b/src/content/docs/products/splashkit/splashkit-online/Code Documentation/Classes/IDBStoredProject.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Classes/IDBStoredProject.md rename to src/content/docs/products/splashkit/splashkit-online/Code Documentation/Classes/IDBStoredProject.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Classes/TreeView.md b/src/content/docs/products/splashkit/splashkit-online/Code Documentation/Classes/TreeView.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Classes/TreeView.md rename to src/content/docs/products/splashkit/splashkit-online/Code Documentation/Classes/TreeView.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Other/FolderStructureOverview.md b/src/content/docs/products/splashkit/splashkit-online/Code Documentation/Other/FolderStructureOverview.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Other/FolderStructureOverview.md rename to src/content/docs/products/splashkit/splashkit-online/Code Documentation/Other/FolderStructureOverview.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Processes/CPPJSBindingGenerationOverview.md b/src/content/docs/products/splashkit/splashkit-online/Code Documentation/Processes/CPPJSBindingGenerationOverview.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Processes/CPPJSBindingGenerationOverview.md rename to src/content/docs/products/splashkit/splashkit-online/Code Documentation/Processes/CPPJSBindingGenerationOverview.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Processes/HowSplashKitOnlineRunsCode.md b/src/content/docs/products/splashkit/splashkit-online/Code Documentation/Processes/HowSplashKitOnlineRunsCode.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Code Documentation/Processes/HowSplashKitOnlineRunsCode.md rename to src/content/docs/products/splashkit/splashkit-online/Code Documentation/Processes/HowSplashKitOnlineRunsCode.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Research and Findings/APISupportTests.md b/src/content/docs/products/splashkit/splashkit-online/Research and Findings/APISupportTests.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Research and Findings/APISupportTests.md rename to src/content/docs/products/splashkit/splashkit-online/Research and Findings/APISupportTests.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Research and Findings/splashkit-online-research-outcome.md b/src/content/docs/products/splashkit/splashkit-online/Research and Findings/splashkit-online-research-outcome.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Research and Findings/splashkit-online-research-outcome.md rename to src/content/docs/products/splashkit/splashkit-online/Research and Findings/splashkit-online-research-outcome.md diff --git a/src/content/docs/products/splashkit/Splashkit Online/Research and Findings/splashkit-online-research-plan.md b/src/content/docs/products/splashkit/splashkit-online/Research and Findings/splashkit-online-research-plan.md similarity index 100% rename from src/content/docs/products/splashkit/Splashkit Online/Research and Findings/splashkit-online-research-plan.md rename to src/content/docs/products/splashkit/splashkit-online/Research and Findings/splashkit-online-research-plan.md diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/2-SplashKitTutorials.md b/src/content/docs/products/splashkit/splashkit-tutorials/2-SplashKitTutorials.md similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Tutorials/2-SplashKitTutorials.md rename to src/content/docs/products/splashkit/splashkit-tutorials/2-SplashKitTutorials.md diff --git a/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/adding-oop.mdx b/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/adding-oop.mdx new file mode 100644 index 00000000..011809a4 --- /dev/null +++ b/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/adding-oop.mdx @@ -0,0 +1,200 @@ +--- +title: Guide to adding OOP to SplashKit tutorials +sidebar: + label: Adding OOP to Guides + order: 4 +--- + +import { Tabs, TabItem } from "@astrojs/starlight/components"; + +## Adding OOP and Top Level C# to Splashkit Tutorials + +One of the current goals of the SplashKit team is to enhance the tutorials by including both +top-level statement and object-oriented (OOP) versions of C# programs. This guide outlines how to +effectively integrate OOP into the existing tutorials, providing both options for users to choose +from. + +### The Full Code Block Structure + +The full code block structure for C++, C# in top level and OOP, and Python is as follows: + +````md + + + +```cpp + +Add C++ code here + +``` + + + + + + +```csharp + +Add top-level statement version of C# code here + +``` + + + + +```csharp + +Add OOP version of C# code here + +``` + + + + + + +```python + +Add Python code here + +``` + + + +```` + +This is the new standard structure for all Splashkit tutorials. The C# code block has been replaced +with a tabs component that contains two tabs, one for top-level statements and one for +object-oriented programming. The C# code block has been replaced with a tabs component that contains +two tabs, one for top-level statements and one for object-oriented programming. + +### Adding OOP to the Splashkit tutorials + +If you are adding OOP to the Splashkit tutorials, you will need to replace the C# section with the +following code block in order to have both top-level statements and object-oriented programming +options: + +````md + + + +```csharp + +Add top-level statement version of C# code here + +``` + + + + +```csharp + +Add OOP version of C# code here + +``` + + + +```` + +## Example + +Once done, the view of the code blocks will remain the same on the Splashkit site. However, once +clicking on the C# tab, the user will be able to see both the top-level statements and +object-oriented programming versions of the code. + + + + +```cpp +#include "splashkit.h" + +int main() +{ + string name; // declare a variable to store the name + string quest; // and another to store a quest + + write("What is your name: "); // prompt the user for input + name = read_line(); // read user input + + // read in another value + write("And what is your quest? "); + quest = read_line(); + + write_line(name + "'s quest is: " + quest); // output quest to the terminal + + return 0; +} +``` + + + + + + + +```csharp +using static SplashKitSDK.SplashKit; + +string name; // declare a variable to store the name +string quest; // and another to store a quest + +Write("What is your name: "); // prompt the user for input +name = ReadLine(); // read user input + +// Read in another value +Write("And what is your quest? "); +quest = ReadLine(); + +WriteLine(name + "'s quest is: " + quest); // output quest to the terminal +``` + + + + +```csharp +using SplashKitSDK; + +namespace ReadingText +{ + public class Program + { + public static void Main() + { + string name; // declare a variable to store the name + string quest; // and another to store a quest + + SplashKit.Write("What is your name: "); // prompt the user for input + name = SplashKit.ReadLine(); // read user input + + // Read in another value + SplashKit.Write("And what is your quest? "); + quest = SplashKit.ReadLine(); + + SplashKit.WriteLine(name + "'s quest is: " + quest); // output quest to the terminal + } + } +} +``` + + + + + + + +```python +from splashkit import * + +write("What is your name: ") # prompt the user for input +name = read_line() # read user input and store in a variable + +# Read in another value +write("And what is your quest? ") +quest = read_line() + +write_line(name + "'s quest is: " + quest) +``` + + + diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/images/skbox.png b/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/images/skbox.png similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/images/skbox.png rename to src/content/docs/products/splashkit/splashkit-tutorials/Documentation/images/skbox.png diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/1-Tutorial-Proposal-Template.md b/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/tutorial-proposal-template.md similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/1-Tutorial-Proposal-Template.md rename to src/content/docs/products/splashkit/splashkit-tutorials/Documentation/tutorial-proposal-template.md diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/3-Tutorial-Reviews.md b/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/tutorial-reviews.md similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Tutorials/Documentation/3-Tutorial-Reviews.md rename to src/content/docs/products/splashkit/splashkit-tutorials/Documentation/tutorial-reviews.md diff --git a/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/tutorial-styling-guide.mdx b/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/tutorial-styling-guide.mdx new file mode 100644 index 00000000..03add92e --- /dev/null +++ b/src/content/docs/products/splashkit/splashkit-tutorials/Documentation/tutorial-styling-guide.mdx @@ -0,0 +1,393 @@ +--- +title: Tutorial Style Guide +sidebar: + label: Tutorial Style Guide + order: 2 +--- + +import { Tabs, TabItem } from "@astrojs/starlight/components"; + +## General + +Create tutorial in an `.mdx` file. + +Make sure your tutorials follow the **markdownlint** extension's formatting. + +Correct any yellow squiggly lines. + +## Headings + +Make sure to use the following **title** format: + +```mdx +--- +title: Tutorial Heading +--- +``` + +Then use `## Heading` for the highest heading level. + +Always keep a blank line between headings and other text. + +### Subheadings + +For subheadings that you want to see in the RHS sidebar/panel on splashkit.io, use `### Subheading`. +Subheadings lower than this will not be shown. + +Do not use bolded lines for headings/subheadings. + +## Links + +Do not use any "raw" links. Links must always use the following format: + +```mdx +[Text to show for link](URL link) +``` + +Make sure to link your headings within the same file if these are mentioned, using the following +format: + +```mdx +[Heading text](#link-to-heading) +``` + +## Images + +Always keep a blank line between images and other text. + +Use the following format for all images: + +```mdx +![Alt text](link to image) +``` + +For the **Alt text** part above: Briefly explain what the image is showing. This is important for +accessibility. + +For the **link to image** part above: If you are linking an image resource that you have downloaded, +this will need to be put into an **images** folder in the same place as the tutorial. +For example, with the **skbox.png** image in the images folder here, you would use: + +```mdx +![Image of SplashKit box logo](./images/skbox.png) +``` + +Which would produce: + +![Image of SplashKit box logo](./images/skbox.png) + +## Lists + +Always keep a blank line between lists and other text. + +## Code Blocks + +Use fenced code blocks for any code snippets or terminal commands, to make it easier for the reader +to copy. + +Always include a language with the fenced code blocks. + +### C++ Code + +For C++, you would use the following format: + +````md +```cpp +#include "splashkit.h" + +int main() +{ + open_window("Window Title... to change", 800, 600); + delay(5000); + close_all_windows(); + return 0; +} +``` +```` + +Which would produce: + +```cpp +#include "splashkit.h" + +int main() +{ + open_window("Window Title... to change", 800, 600); + delay(5000); + close_all_windows(); + return 0; +} +``` + +### C# Code + +For example, if using C#, you would use the following format: + +````md +```csharp +using static SplashKitSDK.SplashKit; + +OpenWindow("Window Title... to change", 800, 600); +Delay(5000); +CloseAllWindows(); +``` +```` + +Which would produce: + +```csharp +using static SplashKitSDK.SplashKit; + +OpenWindow("Window Title... to change", 800, 600); +Delay(5000); +CloseAllWindows(); +``` + +### Python Code + +For Python, you would use the following format: + +````md +```python +from splashkit import * + +open_window("Window Title... to change", 800, 600) +delay(5000) +close_all_windows() +``` +```` + +Which would produce: + +```python +from splashkit import * + +open_window("Window Title... to change", 800, 600) +delay(5000) +close_all_windows() +``` + +For any blocks that are not code, you can use `plaintext` for the language. For terminal commands, +use `shell` for the language. + +If your guide is only using 1 language (and not using at least both C# and C++), make sure to +include the language used in the title. + +### Multiple Code Languages + +To show the same code in different languages, you will need to use +[Tabs](https://starlight.astro.build/guides/components/#tabs). + +Make sure to add the following line to your file underneath the title: + +```mdx +import { Tabs, TabItem } from "@astrojs/starlight/components"; + +; +``` + +And then using the examples from above, you would have: + +````md + + + +```cpp +#include "splashkit.h" + +int main() +{ + string name; // declare a variable to store the name + string quest; // and another to store a quest + + write("What is your name: "); // prompt the user for input + name = read_line(); // read user input + + // read in another value + write("And what is your quest? "); + quest = read_line(); + + write_line(name + "'s quest is: " + quest); // output quest to the terminal + + return 0; +} +``` + + + + + + + +```csharp +using static SplashKitSDK.SplashKit; + +string name; // declare a variable to store the name +string quest; // and another to store a quest + +Write("What is your name: "); // prompt the user for input +name = ReadLine(); // read user input + +// Read in another value +Write("And what is your quest? "); +quest = ReadLine(); + +WriteLine(name + "'s quest is: " + quest); // output quest to the terminal +``` + + + + +```csharp +using SplashKitSDK; + +namespace ReadingText +{ + public class Program + { + public static void Main() + { + string name; // declare a variable to store the name + string quest; // and another to store a quest + + SplashKit.Write("What is your name: "); // prompt the user for input + name = SplashKit.ReadLine(); // read user input + + // Read in another value + SplashKit.Write("And what is your quest? "); + quest = SplashKit.ReadLine(); + + SplashKit.WriteLine(name + "'s quest is: " + quest); // output quest to the terminal + } + } +} +``` + + + + + + + +```python +from splashkit import * + +write("What is your name: ") # prompt the user for input +name = read_line() # read user input and store in a variable + +# Read in another value +write("And what is your quest? ") +quest = read_line() + +write_line(name + "'s quest is: " + quest) +``` + + + +```` + +Which would produce the following: + + + + +```cpp +#include "splashkit.h" + +int main() +{ + string name; // declare a variable to store the name + string quest; // and another to store a quest + + write("What is your name: "); // prompt the user for input + name = read_line(); // read user input + + // read in another value + write("And what is your quest? "); + quest = read_line(); + + write_line(name + "'s quest is: " + quest); // output quest to the terminal + + return 0; +} +``` + + + + + + + +```csharp +using static SplashKitSDK.SplashKit; + +string name; // declare a variable to store the name +string quest; // and another to store a quest + +Write("What is your name: "); // prompt the user for input +name = ReadLine(); // read user input + +// Read in another value +Write("And what is your quest? "); +quest = ReadLine(); + +WriteLine(name + "'s quest is: " + quest); // output quest to the terminal +``` + + + + +```csharp +using SplashKitSDK; + +namespace ReadingText +{ + public class Program + { + public static void Main() + { + string name; // declare a variable to store the name + string quest; // and another to store a quest + + SplashKit.Write("What is your name: "); // prompt the user for input + name = SplashKit.ReadLine(); // read user input + + // Read in another value + SplashKit.Write("And what is your quest? "); + quest = SplashKit.ReadLine(); + + SplashKit.WriteLine(name + "'s quest is: " + quest); // output quest to the terminal + } + } +} +``` + + + + + + + +```python +from splashkit import * + +write("What is your name: ") # prompt the user for input +name = read_line() # read user input and store in a variable + +# Read in another value +write("And what is your quest? ") +quest = read_line() + +write_line(name + "'s quest is: " + quest) +``` + + + + +## Callouts (Asides) + +Use callouts (also known as [Asides](https://starlight.astro.build/guides/components/#asides)) to +highlight tips or important notes. + +:::tip[Make the page interesting] These can help to direct the reader to any extra info, and help to +add more colour to your tutorial guide. ::: diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/05-peer-review.md b/src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/peer-review-guide.md similarity index 99% rename from src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/05-peer-review.md rename to src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/peer-review-guide.md index db5cde12..6003e71f 100644 --- a/src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/05-peer-review.md +++ b/src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/peer-review-guide.md @@ -3,7 +3,7 @@ title: A Guide to Doing Peer Reviews description: A guide on how to do a peer review within the SplashKit tutorials team. sidebar: label: Peer Review Guide - order: 3 + order: 1 --- This guide will help you through the process of performing a peer review for SplashKit tutorials. diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/03-pull-request.md b/src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/pull-request-guide.md similarity index 99% rename from src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/03-pull-request.md rename to src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/pull-request-guide.md index 2d924885..bac71cda 100644 --- a/src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/03-pull-request.md +++ b/src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/pull-request-guide.md @@ -3,7 +3,7 @@ title: How to Create a Pull Request description: This is a step-by-step guide on how to create a pull request for SplashKit tutorials. sidebar: label: Pull Request Guide - order: 1 + order: 3 --- ## How to Create a Pull Request diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/04-pull-request-template.md b/src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/pull-request-template.md similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Tutorials/Onboarding/04-pull-request-template.md rename to src/content/docs/products/splashkit/splashkit-tutorials/Onboarding/pull-request-template.md diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/Tutorial Proposals/basic-vectors-proposal.md b/src/content/docs/products/splashkit/splashkit-tutorials/Tutorial Proposals/basic-vectors-proposal.md similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Tutorials/Tutorial Proposals/basic-vectors-proposal.md rename to src/content/docs/products/splashkit/splashkit-tutorials/Tutorial Proposals/basic-vectors-proposal.md diff --git a/src/content/docs/products/splashkit/splashkit-tutorials/Tutorial Proposals/camera-control-proposal.md b/src/content/docs/products/splashkit/splashkit-tutorials/Tutorial Proposals/camera-control-proposal.md new file mode 100644 index 00000000..85cf0844 --- /dev/null +++ b/src/content/docs/products/splashkit/splashkit-tutorials/Tutorial Proposals/camera-control-proposal.md @@ -0,0 +1,44 @@ +--- +title: Dynamic Camera Control Tutorial Proposal +--- + +## Introduction + +This tutorial will cover how to use the various camera functions in SplashKit to implement dynamic +camera movements in graphical applications. By following this tutorial, readers will learn to create +zoom effects, responsive camera controls, and movements enhancing the interactivity and immersion of +their games or other projects. + +## Tutorial Details + +### Tutorial Structure + +This tutorial will follow an "as-you-go" style. Each section will introduce a specific concept and +demonstrate its practical application with step-by-step code examples. The tutorial will start with +a basic overview of the camera functions, then guide readers through progressively more complex +examples, allowing them to apply what they’ve learned immediately. Visual aids will be used to +illustrate camera movements and effects in real-time. + +### Level of Difficulty + +This tutorial is targeted at intermediate learners who have experience in programming with the +SplashKit library. It is ideal for developers who want to add dynamic camera control to their +graphical applications or games. + +### Functions Covered + +The tutorial will cover the following main SplashKit functions: + +- [MoveCameraBy](https://splashkit.io/api/camera/#move-camera-by-2) +- [SetCameraPosition](https://splashkit.io/api/camera/#set-camera-position) +- [CameraPosition](https://splashkit.io/api/camera/#camera-position) +- [OptionDefaults](https://splashkit.io/api/graphics/#option-defaults) +- [OptionScaleBmp](https://splashkit.io/api/graphics/#option-scale-bmp) +- [DrawBitmap](https://splashkit.io/api/graphics/#draw-bitmap-4) + +## Conclusion + +This tutorial will help readers understand how to manipulate the camera in their SplashKit +applications. By mastering these camera functions, developers can create more engaging and +interactive experiences, such as zoom effects and camera movements. This knowledge will be valuable +for anyone looking to improve the visual dynamics and responsiveness of their game projects. diff --git a/src/content/docs/products/splashkit/SplashKit Tutorials/0-overview.mdx b/src/content/docs/products/splashkit/splashkit-tutorials/overview.mdx similarity index 84% rename from src/content/docs/products/splashkit/SplashKit Tutorials/0-overview.mdx rename to src/content/docs/products/splashkit/splashkit-tutorials/overview.mdx index 6be9d82d..f37c4c2c 100644 --- a/src/content/docs/products/splashkit/SplashKit Tutorials/0-overview.mdx +++ b/src/content/docs/products/splashkit/splashkit-tutorials/overview.mdx @@ -55,18 +55,20 @@ follows: ## Tutorials Information -1. [Tutorial Proposal Template](/products/splashkit/splashkit-tutorials/documentation/1-tutorial-proposal-template) +1. [Tutorial Proposal Template](/products/splashkit/splashkit-tutorials/documentation/tutorial-proposal-template) The template for creating a tutorial proposal. -2. [Tutorial Style Guide](/products/splashkit/splashkit-tutorials/documentation/2-tutorial-style-guide) +2. [Tutorial Style Guide](/products/splashkit/splashkit-tutorials/documentation/tutorial-style-guide) The style guide for creating tutorials. -3. [Tutorial Reviews](/products/splashkit/splashkit-tutorials/documentation/3-tutorial-reviews) The +3. [Tutorial Reviews](/products/splashkit/splashkit-tutorials/documentation/tutorial-reviews) The current tutorials that need to be reviewed. +4. [Adding OOP to Guides](/products/splashkit/splashkit-tutorials/documentation/adding-oop) The + guide on how to add OOP to C# on SplashKit tutorials. ## GitHub Guides for Tutorials Team -1. [How to Create a Pull Reuest](/products/splashkit/splashkit-tutorials/onboarding/03-pull-request) +1. [How to Create a Pull Reuest](/products/splashkit/splashkit-tutorials/onboarding/pull-request-guide) The guide on how to create a pull request for SplashKit tutorials. -2. [Pull Request Template](/products/splashkit/splashkit-tutorials/onboarding/04-pull-request-template) +2. [Pull Request Template](/products/splashkit/splashkit-tutorials/onboarding/pull-request-template) The template for creating a pull request for SplashKit tutorials. -3. [Peer Review Guide](/products/splashkit/splashkit-tutorials/onboarding/05-peer-review) The guide - on how to do a peer review within the SplashKit tutorials team. +3. [Peer Review Guide](/products/splashkit/splashkit-tutorials/onboarding/peer-review-guide) The + guide on how to do a peer review within the SplashKit tutorials team. diff --git a/src/content/docs/products/splashkit/SplashKit Website/games-showcase-template.mdx b/src/content/docs/products/splashkit/splashkit-website/games-showcase-template.mdx similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Website/games-showcase-template.mdx rename to src/content/docs/products/splashkit/splashkit-website/games-showcase-template.mdx diff --git a/src/content/docs/products/splashkit/SplashKit Website/games-showcase.mdx b/src/content/docs/products/splashkit/splashkit-website/games-showcase.mdx similarity index 100% rename from src/content/docs/products/splashkit/SplashKit Website/games-showcase.mdx rename to src/content/docs/products/splashkit/splashkit-website/games-showcase.mdx diff --git a/src/content/docs/products/splashkit/splashkit-website/peer-review-guide.mdx b/src/content/docs/products/splashkit/splashkit-website/peer-review-guide.mdx new file mode 100644 index 00000000..84195bb4 --- /dev/null +++ b/src/content/docs/products/splashkit/splashkit-website/peer-review-guide.mdx @@ -0,0 +1,153 @@ +--- +title: Peer Review Guide +sidebar: + label: Peer Review Guide + order: 2 +--- + +import { Aside } from "@astrojs/starlight/components"; + +## Introduction + + + +In SplashKit, peer reviews are a vital process to ensure code quality, maintainability, and +consistency across the website development project. Every pull request (PR) must follow the +Peer-Review Checklist, which checks for key factors like functionality, code readability, and +documentation. + +Additionally, the Peer-Review Prompts serve as a conversation starter for reviewers, encouraging +collaboration while allowing for a thorough and constructive review process. + + + +### SplashKit Peer-Review Checklist + +The following checklist is required to be completed for every review to ensure high-quality +contributions. + +```plaintext +## General Information + +- [ ] Type of Change: Clearly indicate the type of change (choose one): + - [ ] Bug fix + - [ ] New feature + - [ ] Breaking change + - [ ] Documentation update + +## Code Quality + +- [ ] Repository: Ensure the PR is made to the correct repository. +- [ ] Readability: Is the code easy to read and follow? Are comments included where necessary? +- [ ] Maintainability: Can this code be maintained or extended easily in the future? + +## Functionality + +- [ ] Correctness: Does the code meet the task requirements? +- [ ] Existing Functionality: Has the impact on existing functionality been considered and tested? + +## Testing + +- [ ] Test Coverage: Are unit tests provided for new or modified code? +- [ ] Test Results: Have all tests passed successfully? + +## Documentation + +- [ ] Documentation: Is the inline and external documentation updated and clear? + +## Pull Request Details + +- [ ] PR Description: Is the problem being solved clearly described? +- [ ] Checklist Completion: Have all relevant checklist items been reviewed and completed? +``` + +### SplashKit Peer-Review Prompts + +These prompts can help guide discussions during the review process and ensure that the code meets +high standards. + +- **Type of Change**: Is the PR correctly identifying the type of change (bug fix, new feature, + etc.)? +- **Code Readability**: Is the code well-structured and easy to follow? Could better comments, + names, or organisation improve it? +- **Maintainability**: Is the code modular and easy to maintain? Does it introduce any technical + debt? +- **Code Simplicity**: Are there redundant or overly complex parts of the code that could be + simplified? +- **Edge Cases**: Does the code account for edge cases? What scenarios might cause it to break? +- **Test Thoroughness**: Does the testing cover all edge cases and failure paths? Are there enough + tests to ensure code reliability? +- **Backward Compatibility**: Does the change break any existing functionality? If so, is backward + compatibility handled or documented? +- **Performance Considerations**: Could this code impact performance negatively? Can it be optimised + while maintaining readability? +- **Security Concerns**: Does this change introduce any security risks? Is input validation handled + properly? +- **Dependencies**: Are new dependencies necessary? Could they conflict with existing libraries? + Could this functionality be achieved without new dependencies? +- **Documentation**: Is the documentation clear and thorough enough for new developers to + understand? Does it cover API or external interface changes? + +--- + +## Review Guidelines for Specific File Types + +Different file types require different levels of attention during the review process. Here's what to +look for when reviewing each type of file: + +### `.mdx` Files + +- **Content Accuracy**: Ensure that the content is clear and accurate. Double-check for any errors + in the documentation or guides. +- **Frontmatter**: Ensure the frontmatter (`title`, `description`, etc.) is correctly filled out. +- **Component Usage**: Verify that components such as `LinkCard`, `CardGrid`, or others are being + used appropriately within the `.mdx` files. + +### `.css` Files + +- **Consistency**: Check that the styles align with the **Styling Guide** and maintain a consistent + use of variables (e.g., colours, fonts, spacing). +- **Accessibility**: Review for accessibility considerations, such as whether animations are + disabled for users who prefer reduced motion, and whether contrast ratios meet **WCAG 2.1 AA** + standards. +- **Naming Conventions**: Ensure that CSS class names follow a consistent naming pattern. + +### `.jsx`/`.tsx` Files + +- **Functionality**: Make sure the interactive components (e.g., sliders, forms) work as expected + and meet the requirements of the task. +- **Performance**: Look for unnecessary re-renders or other performance concerns. +- **Code Style**: Ensure the code follows **React/JSX** best practices and any project-specific + linting rules. + +### `.astro` Files + +- **Structure**: Ensure the page or component is well-structured and follows the **Astro standards** + for component and page creation. +- **Reusability**: Look for opportunities to refactor repetitive code into reusable components. + +--- + +## Useful Resources for Reviewers + +- **Starlight Documentation**: [Starlight Docs](https://starlight.astro.build/getting-started/) +- **Astro Documentation**: [Astro Docs](https://docs.astro.build/en/getting-started/) +- **WCAG 2.1 AA Guidelines**: [W3C Accessibility Standards](https://www.w3.org/WAI/WCAG21/quickref/) +- **MDN CSS Documentation**: [MDN CSS Guide](https://developer.mozilla.org/en-US/docs/Web/CSS) +- **React Documentation**: [React Official Docs](https://reactjs.org/docs/getting-started.html) + +--- + +By following these guidelines, you'll ensure that the SplashKit website project maintains high +standards of code quality, performance, and accessibility. Remember, peer reviews are not only about +verifying the code but also about learning and improving together as a team. diff --git a/src/content/docs/products/splashkit/splashkit-website/splashkit-website-overview.mdx b/src/content/docs/products/splashkit/splashkit-website/splashkit-website-overview.mdx new file mode 100644 index 00000000..0ccb7df8 --- /dev/null +++ b/src/content/docs/products/splashkit/splashkit-website/splashkit-website-overview.mdx @@ -0,0 +1,87 @@ +--- +title: SplashKit Website Team Overview +sidebar: + label: Overview + order: 1 +--- + +## **Welcome to the SplashKit Website Development Team!** + +## Introduction + +The SplashKit website is the gateway to empowering learners and developers with the tools they need +as they begin their journey in programming and game development. Having a well-designed, accessible, +and user-friendly website is important for new learners, as it ensures that resources, tutorials, +and documentation are easily accessible to everyone, regardless of their level of experience or any +accessibility challenges they may face. + +As a team, we’re focused on creating a site that reflects the inclusivity and innovation of the +SplashKit SDK, making sure everyone can get the most out of what we offer. + +--- + +## What We're Working Towards + +As part of the SplashKit Website Development Team, you’ll be helping us build, refine, and enhance +the user experience on the site. Some of the broader goals we’re working towards include: + +- **Enhancing the Onboarding Experience**: We aim to simplify the onboarding process for new users + and contributors, making it easy for them to find the resources they need. +- **Fixing and Expanding Accessibility of Tutorials**: We are always improving our tutorials and + guides, ensuring they’re up-to-date and accessible to learners. +- **Showcasing Community Contributions**: We want to highlight the incredible projects created using + SplashKit by building a dedicated showcase section. +- **Upholding Accessibility Standards**: Ensuring our site meets and exceeds accessibility standards + so that it’s usable by everyone, including those with disabilities. +- **Integrating SplashKit Online**: Integrating the SplashKit Online tool will significantly enhance + the accessibility and effectiveness of the SplashKit resources, enabling learners to preview + SplashKit functions directly within the website. + +These goals are collaborative efforts, and your contributions will help turn them into real features +that impact the SplashKit community directly. + +--- + +## What You Can Expect + +By joining the SplashKit Website Development Team, you’ll be stepping into a collaborative, +open-source environment where everyone’s contributions are valued, with your contributions being +experienced by users today. Here’s what you can expect from working with us: + +- **Collaboration and Support**: You’ll work with a team of dedicated contributors who will support + you while you learn how to contribute to an exciting tool. We believe in sharing knowledge and + improving together. +- **Learning Opportunities**: Whether you're new to web development or an experienced contributor, + you'll gain hands-on experience with modern tools like Astro, Starlight, and web frameworks. + You’ll also learn about accessibility best practices, design principles, and performance + optimisation. +- **Creative Freedom**: We encourage creative solutions and welcome new ideas. As a contributor, + you'll have the opportunity to shape the direction of the website, suggest improvements, and see + your work in action. +- **Peer Feedback and Reviews**: You’ll receive valuable feedback on your code through peer reviews, + helping you grow as a developer while maintaining the quality of the website. + +--- + +## What You’ll Gain + +As part of the team, you’ll gain practical experience working on a large-scale, open-source project, +giving you insights into web development, accessibility, and content management. Here’s what else +you can expect: + +- **Experience in Open-Source Development**: By contributing to a real-world project, you'll improve + your coding skills, learn best practices, and collaborate with others, which is a valuable + experience for your personal and professional development. +- **Portfolio Building**: Your work on the SplashKit website will be visible to the public, giving + you tangible examples to include in your portfolio or showcase in job interviews. +- **Contribution to the Community**: You’ll be making a direct impact the learning journey of + stduents (and even more experienced developers) who rely on SplashKit to build their skills and + projects. + +--- + +## Ready to Get Started? + +Check out the support documentation to get familiar with the project structure and how to best +contribute to the team. We’re excited to have you on the team, and we look forward to building +something amazing together! diff --git a/src/content/docs/products/splashkit/splashkit-website/styling-guide.mdx b/src/content/docs/products/splashkit/splashkit-website/styling-guide.mdx new file mode 100644 index 00000000..677b419d --- /dev/null +++ b/src/content/docs/products/splashkit/splashkit-website/styling-guide.mdx @@ -0,0 +1,260 @@ +--- +title: SplashKit Styling Guide +sidebar: + label: SplashKit Styling Guide + order: 4 +--- + +This document outlines the core styling principles for the SplashKit website to ensure consistency, +accessibility, and a cohesive design. + +## Contents + +1. [Colour Palette](#colour-palette) + - [Tools for Colour Palette Generation](#tools-for-colour-palette-generation) +2. [Accessibility Considerations](#accessibility-considerations) + - [WCAG 2.1 AA Compliance](#1-wcag-21-aa-compliance) + - [Disabling Animations and Smooth Transitions](#2-disabling-animations-and-smooth-transitions) + - [Hover Effects and Visual Cues](#3-hover-effects-and-visual-cues) + - [Colour Blindness Accessibility](#4-colour-blindness-accessibility) +3. [Typography](#typography) +4. [Component Styling](#component-styling) + - [Buttons](#buttons) +5. [Image and Asset Management](#image-and-asset-management) +6. [Color Theme Editor](#color-theme-editor) +7. [Current Styling Values](#current-styling-values) +8. [Useful Tools](#useful-tools) +9. [Links](#links) + +--- + +## Colour Palette + +- **Primary Colours**: SplashKit uses a consistent colour palette to maintain a clean, cohesive + design. You are encouraged to use accessible, high-contrast colours that support both branding and + readability. + +### Tools for Colour Palette Generation + +- **Coolors.co**: Use [Coolors.co](https://coolors.co/) to generate and experiment with colour + palettes. This platform supports multiple colour spaces and includes contrast checkers, ensuring + your colour selections meet accessibility standards. + + **Example**: + + ```css + :root { + --primary-colour: ; + --secondary-colour: ; + --accent-colour: ; + --background-colour: ; + } + ``` + +- Adjust these values according to the design requirements, ensuring they meet accessibility + standards like **WCAG 2.1 AA**. + +--- + +## Accessibility Considerations + +Accessibility is a key concern, and we need to ensure that our design is inclusive and easy to +navigate for all users, including those with visual impairments. + +### 1. **WCAG 2.1 AA Compliance** + +- When designing for accessibility, ensure that colour contrast meets the **Web Content + Accessibility Guidelines (WCAG) 2.1 AA** standards. These include: + - A contrast ratio of at least **4.5:1** between text and background for normal text. + - A contrast ratio of at least **3:1** for larger text (18pt and above). +- Use tools like the **Color Theme Editor**, **Coolors.co contrast checker**, and the **Pilestone + Color Blindness Simulator** to verify your designs are accessible for all users. + +### 2. **Disabling Animations and Smooth Transitions** + +- Users should have the option to disable animations and transitions to avoid distracting or + overwhelming effects. + + **CSS Example**: + + ```css + @media (prefers-reduced-motion: reduce) { + * { + animation: none !important; + transition: none !important; + } + } + ``` + + To learn more about this feature, visit the + [@media (prefers-reduced-motion) documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion). + +### 3. **Hover Effects and Visual Cues** + +- Ensure that elements that change on hover, such as buttons or links, are clearly identifiable as + interactive elements. A subtle colour change on hover is a good way to indicate that the element + is clickable. + + **Example**: + + ```css + a { + color: var(--primary-colour); + } + + a:hover { + color: var(--accent-colour); + } + ``` + +### 4. **Colour Blindness Accessibility** + +- Use tools like the + [Pilestone Color Blindness Simulator](https://pilestone.com/pages/color-blindness-simulator-1) to + test how different users experience colours. This tool is particularly useful for ensuring that + users with various forms of colour blindness can comfortably navigate the site. + + Ensure that contrast ratios are sufficient to make text legible for all users, particularly those + with colour vision deficiencies. + +--- + +## Typography + +### Font + +Use a modern, readable font to maintain consistency across the website. + +- Default fonts like `Arial`, `Roboto`, or `Gaegu` can be used for headers and body text. +- Follow the existing import patterns for fonts: + + ```css + @import url("https://use.typekit.net/vzr3ole.css"); + @import url("https://fonts.googleapis.com/css?family=Gaegu&display=swap"); + ``` + +### Font Sizes + +- Headings: Use larger font sizes for hierarchy and structure. +- Body text: Minimum 16px for readability. +- Example: + + ```css + h1 { + font-size: 2.5rem; + font-weight: bold; + } + + p { + font-size: 1rem; + } + ``` + +If needed, you can adjust these values in `custom.css` to fit specific design elements. + +--- + +## Component Styling + +### Buttons + +Buttons should use consistent styles across the website to ensure a cohesive look. + +- **Primary Button**: **Example**: + + ```css + .button-primary { + background-colour: var(--primary-colour); + colour: white; + padding: 10px 20px; + border-radius: 5px; + cursor: pointer; + border: none; + } + + .button-primary:hover { + background-colour: var(--accent-colour); + } + ``` + +If you're contributing, please review the existing styles in `custom.css` for similar elements and +ensure your additions follow the same structure. + +--- + +## Image and Asset Management + +- **GIFs**: General-purpose gifs should be stored in `public/gifs/`. If a gif is used in a usage + example (tutorials, documentation), store it in `public/usage-examples-images-gifs/`. +- **Static Images**: Images associated with tutorials or content should be stored alongside the + `.mdx` files they relate to. +- **Config Files**: Any configuration files generated from scripts (e.g., `games-config.json`) + should be placed in the `public/` folder for easy access. + +--- + +## Color Theme Editor + +The +[Starlight Color Theme Editor](https://starlight.astro.build/guides/css-and-tailwind/#:~:text=items%20in%20navigation.-,Color%20theme%20editor,-Use%20the%20sliders) +is an excellent tool for previewing and adjusting colour values for various design elements across +the website. It allows you to tweak background, text, and accent colours in real-time, providing +instant feedback on how those changes will affect the overall design. + +### How to Use + +- Use the sliders in the editor to adjust different colour variables, which are immediately + reflected in the preview. +- Once you're satisfied with your selections, you can copy the colour values and apply them to the + `custom.css` or directly into your `.astro` components. +- This tool is particularly helpful when used in conjunction with **Coolors.co** for creating + palettes or the **Pilestone Color Blindness Simulator** to ensure accessibility. + +--- + +## Current Styling Values + +Here are the current values being used in the `custom.css` file for the SplashKit website: + +```css +@import url("https://use.typekit.net/vzr3ole.css"); +@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"); +@import url("https://fonts.googleapis.com/css?family=Gaegu&display=swap"); + +/* Dark mode colours. */ +:root { + --purple-hsl: 255, 60%, 60%; + --overlay-blurple: hsla(var(--purple-hsl), 0.2); +} + +/* Light mode colours. */ +:root[data-theme="light"] { + --purple-hsl: 255, 85%, 65%; + --sl-hue-accent: 350; + --sl-color-accent: #3d50f5; +} +``` + +Please review these values when making any changes to ensure consistency. + +--- + +## Useful Tools + +- **Coolors.co**: Use this platform to experiment with colour palettes and ensure your choices are + accessible. +- **Pilestone Color Blindness Simulator**: Test colour choices for accessibility to users with + colour vision deficiencies. +- **WCAG 2.1 AA Standards**: Use these standards as the baseline to ensure that the site is + accessible to all users, particularly with respect to contrast ratios between text and background. + +--- + +## Links + +Here are some helpful resources for styling and accessibility: + +- [Coolors.co Contrast Checker](https://coolors.co/contrast-checker) +- [Pilestone Color Blindness Simulator](https://pilestone.com/pages/color-blindness-simulator-1) +- [@media (prefers-reduced-motion) Documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion) +- [WCAG 2.1 AA Guidelines](https://www.w3.org/WAI/WCAG21/quickref/) diff --git a/src/content/docs/products/splashkit/splashkit-website/web-dev-files.mdx b/src/content/docs/products/splashkit/splashkit-website/web-dev-files.mdx new file mode 100644 index 00000000..41d74f86 --- /dev/null +++ b/src/content/docs/products/splashkit/splashkit-website/web-dev-files.mdx @@ -0,0 +1,327 @@ +--- +title: Key Website Development Files +sidebar: + label: Key Web Development Files + order: 3 +--- + +This document will help you understand the core files involved in the SplashKit website development +process. It provides guidance on which files to update when contributing and how to handle different +file types in peer reviews. This is not an exhaustive list, however should direct you to the key +files and file types when contributing. + +## Contents + +1. [Key Files to Update](#key-files-to-update) + - [package.json and package-lock.json](#packagejson-and-package-lockjson) + - [astro.config.mjs](#astroconfigmjs) +2. [Core Development Files](#core-development-files) + - [.astro Files](#astro-files) + - [.jsx and .tsx Files](#jsx-and-tsx-files) + - [CSS Files](#css-files) +3. [Image and Asset Management](#image-and-asset-management) + - [Asset Directories](#asset-directories) +4. [.mdx Files](#mdx-files) +5. [Peer Reviews: What to Look For](#peer-reviews-what-to-look-for) + - [.mdx Files](#mdx-files-1) + - [CSS Files](#css-files-1) + - [.jsx and .tsx Files](#jsxtsx-files) + - [.astro Files](#astro-files-1) + +--- + +## Key Files to Update + +### `package.json` and `package-lock.json` + +- **Purpose**: `package.json` defines the project’s dependencies, metadata, and scripts, while + `package-lock.json` locks the versions of the dependencies to ensure consistency across different + environments. + +- **Installing Dependencies**: + When you run `npm install `, the new package is added to the `package.json` under the + `dependencies` or `devDependencies` section. It also updates `package-lock.json` to lock the + specific versions of the installed dependencies. + + **Example**: + + ```shell + npm install react + ``` + + This will add `react` to `package.json` under dependencies: + + ```json + { + "dependencies": { + "react": "^17.0.2" + } + } + ``` + + It will also update `package-lock.json` to include detailed version information for `react` and + any transitive dependencies to ensure consistency across environments. + +In most cases, you won’t need to manually edit `package.json` or `package-lock.json`. If you want to +remove a dependency, it’s best to use: + +```shell +npm uninstall +``` + +This will automatically remove the package from both `package.json` and `package-lock.json`. By +doing this, the project stays clean and free of unused dependencies. + +### `astro.config.mjs` + +**Purpose**: This config file defines the core settings for the Astro project, such as integrations, +site metadata, and base URLs. + +**Updates**: You may need to modify this file when adding integrations (e.g., Google Analytics) or +updating site-wide settings such as title, description, or site configuration. Below are some +specific examples: + +#### Site Metadata + +- **Why Update?**: You may want to change the global title, description, or other metadata for + search engine optimisation and branding purposes. +- **Example**: + + ```js + export default { + site: "https://example.com", + base: "/", + markdownOptions: { + rehypePlugins: [], + }, + build: { + format: "directory", + }, + }; + ``` + + Update `site` or `base` when the site’s URL changes or if you want to modify markdown handling + (affecting headings, tables, etc.). + +#### Integrations + +- **Why Update?**: If you’re adding design frameworks like TailwindCSS or optimising images through + Astro. +- **Example**: Integrating TailwindCSS for utility-first styling. + + ```js + import tailwind from "@astrojs/tailwind"; + + export default { + integrations: [tailwind()], + }; + ``` + + This allows you to quickly apply Tailwind's design utilities across your project. + +#### Customising Vite + +- **Why Update?**: When you need to customise the build pipeline to handle assets (images, fonts) + more efficiently. +- **Example**: Adjust Vite settings to optimise or transform images. + + ```js + export default { + vite: { + build: { + assetsInlineLimit: 4096, // in bytes + }, + }, + }; + ``` + + This controls when assets are inlined versus being loaded separately, which impacts performance + and design choices. + +#### Page Transitions and Animations + +- **Why Update?**: If you're adding smooth page transitions or animations between pages to improve + UX. +- **Example**: Adding an integration for animations using Astro Motion. + + ```js + import motion from "astro-motion"; + + export default { + integrations: [motion()], + }; + ``` + + This adds visual flair and smoother transitions between pages. + +#### Enabling SCSS or PostCSS + +- **Why Update?**: If you need to support SCSS for custom styling workflows. +- **Example**: Enabling SCSS in Astro. + + ```js + import { sass } from "@astrojs/sass"; + + export default { + integrations: [sass()], + }; + ``` + + This allows you to use SCSS for modular and efficient styling. + +--- + +## Core Development Files + +### `.astro` Files + +- **Purpose**: `.astro` files define the structure of pages and components. They are commonly used + for building both static and dynamic website content. + +- **What to update**: Add or modify pages in `src/pages/` or components in `src/components/`. + +- **Scenario**: You need to update the sidebar to include a new section in the website's navigation. + +- **How to update**: Modify the existing `Sidebar.astro` component to add a new navigation link + pointing to the new section. + + ```astro + + ``` + +- **Explanation**: In this example, a new `
  • ` element with the link to `/new-section` is added to + the sidebar's navigation, allowing users to navigate to the newly created page. +- **When to update**: Edit `.astro` files when changing page layouts, adding components, or + modifying the site’s structure. \*/} + +--- + +### `.jsx` and `.tsx` Files + +- **Purpose**: Handles interactivity and dynamic content through React components. + +- **What to update**: If adding or editing interactive elements like carousels, forms, or sliders, + modify these files. They’re typically located in `src/components/react/`. + +--- + +### `.css` Files + +- **Purpose**: CSS files manage the website's styles, such as layout, typography, colour palettes, + and spacing. Common styles are defined in files like `src/styles/custom.css`, which holds the + custom styles for the website. + +- **What to update**: You can modify styles in files like `custom.css` or create new + component-specific styles depending on the changes being made to the design or layout. + +#### Example 1: Adjusting the colour palette in `custom.css` + +- **Scenario**: You need to update the website’s colour scheme to match a new brand identity. +- **How to update**: Modify CSS variables in `custom.css` to reflect the new colours. + + ```css + :root { + --primary-colour: #3498db; + --secondary-colour: #2ecc71; + --accent-colour: #e74c3c; + --background-colour: #f4f4f4; + } + ``` + +#### Example 2: Adding custom styles for a specific component + +- **Scenario**: You want to add specific styles for a newly created `Button.astro` component. +- **How to update**: Add styles to `custom.css` for the `button` class or ID specific to the + component. + + ```css + .button-primary { + background-colour: var(--primary-colour); + colour: white; + padding: 10px 20px; + border-radius: 5px; + border: none; + cursor: pointer; + } + ``` + +- **When to update**: Modify CSS files when making changes to the overall design (e.g., colour + palette, typography) or when specific components need unique styles. + +--- + +## Image and Asset Management + +### Asset Directories + +- **Purpose**: The asset directories store static files such as images, gifs, and config files. + Proper organisation ensures that assets are easy to find and use in the project. + +- **Directory Structure**: + + - **GIFs**: Store all general-purpose gifs in `public/gifs/`, regardless of content. However, if + the gif is used as part of a usage example (such as in a tutorial or documentation), store it in + `public/usage-examples-images-gifs/`. + - **Config Files**: Any configuration files that are generated from scripts (e.g., + `games-config.json`) should be placed directly in the `public/` folder. This ensures they are + accessible for any part of the project that needs them. + + - **Static Images**: Other static assets, such as images associated with tutorials, should be + stored in the same folder as the corresponding `.mdx` file. This keeps the related assets + organised with the content they belong to. + +- **Example**: + + - A gif demonstrating a tutorial should be placed in `public/usage-examples-images-gifs/`. + - An image used in a physics tutorial stored in `src/content/docs/guides/physics/images` should + sit alongside the tutorial file in that same folder. + +--- + +## `.mdx` Files + +- **Purpose**: Markdown files with embedded components for creating content pages. + +- **What to update**: + - Add new content in `src/content/docs/`. + - Ensure correct frontmatter is used (`title`, `description`, `category`). + +--- + +## Peer Reviews: What to Look For + +When performing peer reviews, here’s what you should check for in various files: + +### `.mdx` Files + +- **Content Accuracy**: Ensure the information is correct and well-organised. +- **Frontmatter**: Check that the frontmatter is complete (e.g., `title`, `description`). +- **Component Usage**: Ensure embedded components are used properly (e.g., `LinkCard` or + `CardGrid`). + +### `.css` Files + +- **Consistency**: Ensure that styles follow the project’s styling conventions (e.g., consistent use + of variables for colours, fonts, and spacing). +- **Naming Conventions**: Ensure class names follow a consistent naming pattern. + +### `.jsx`/`.tsx` Files + +- **Functionality**: Ensure that the component works as expected. +- **Performance**: Look for unnecessary re-renders or inefficiencies in React component updates. +- **Code Style**: Ensure it follows SplashKit's linting rules. + +### `.astro` Files + +- **Structure**: Ensure the page/component is well-structured and follows best practices. +- **Reusability**: Consider whether code could be refactored into reusable components. + +--- diff --git a/src/content/docs/resources/Documentation/templates/bug-report-template.md b/src/content/docs/resources/Documentation/templates/bug-report-template.md deleted file mode 100644 index 6d4a0ba9..00000000 --- a/src/content/docs/resources/Documentation/templates/bug-report-template.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Bug Report Template -sidebar: - label: Bug Report Template ---- - -## Bug Report Template - -### Name of the bug - -Provide a descriptive name of the bug. - -### Steps to reproduce - -List all steps to reproduce the bug. - -### Expected result - -Describe the correct result expected. - -### Actual result - -Describe the current erroneous result. - -### A screenshot, GIF, or video - -Include something to show the bug in action. - -### Helpful logs - -Include any logs that show the error. - -_Based on template from_ -[_Programming Foundations: Software Testing/QA_](https://www.linkedin.com/learning/programming-foundations-software-testing-qa/create-a-test-strategy?autoSkip=true&autoplay=true&contextUrn=urn%3Ali%3AlyndaLearningPath%3A57f7e27c3dd559e018dfe994&resume=false&u=2104084) -_with Meaghan Lewis on LinkedIn Learning_ diff --git a/src/content/docs/resources/Documentation/templates/pr-template.md b/src/content/docs/resources/Documentation/templates/pr-template.md deleted file mode 100644 index 4a4fc213..00000000 --- a/src/content/docs/resources/Documentation/templates/pr-template.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Pull Request Template -sidebar: - label: Pull Request Template ---- - -## Any italic text should be deleted from the final Pull Request text, including this line - -## Description - -_Please include a summary of the change and which issue is fixed. Please also include relevant -motivation and context. List any dependencies that are required for this change._ - -Fixes # (issue) - -## Type of change - -_Please delete options that are not relevant._ - -- [ ] Bug fix (non-breaking change which fixes an issue) -- [ ] New feature (non-breaking change which adds functionality) -- [ ] Breaking change (fix or feature that would cause existing functionality to not work as - expected) -- [ ] This change requires a documentation update - -## How Has This Been Tested? - -_Please describe the tests that you ran to verify your changes. Provide instructions so we can -reproduce. Please also list any relevant details for your test configuration_ - -## Testing Checklist - -- [ ] Tested in latest Chrome -- [ ] Tested in latest Safari -- [ ] Tested in latest Firefox - -## Checklist - -- [ ] My code follows the style guidelines of this project -- [ ] I have performed a self-review of my own code -- [ ] I have commented my code in hard-to-understand areas -- [ ] I have made corresponding changes to the documentation -- [ ] My changes generate no new warnings -- [ ] I have requested a review from NAMES HERE on the Pull Request diff --git a/src/content/docs/resources/Documentation/templates/srs-template.md b/src/content/docs/resources/Documentation/templates/srs-template.md deleted file mode 100644 index 76269ead..00000000 --- a/src/content/docs/resources/Documentation/templates/srs-template.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Software Requirement Specification (SRS) Document Template -sidebar: - label: Software Requirement Specification (SRS) Document Template ---- - -## 1. Introduction - -### 1.1 Purpose - -### 1.2 Intended Audience - -### 1.3 Intended Use - -### 1.4 Scope - -### 1.5 Definitions and Acronyms - -## Overall Description - -### 2.1 User Needs - -### 2.2 Assumptions and Dependencies - -## System Features and Requirements - -### 3.1 Functional Requirements - -### 3.2 External Interface Requirements - -### 3.3 System Features - -### 3.4 Nonfunctional Requirements diff --git a/src/content/docs/resources/Documentation/templates/test-plan-template.md b/src/content/docs/resources/Documentation/templates/test-plan-template.md deleted file mode 100644 index df45fbc8..00000000 --- a/src/content/docs/resources/Documentation/templates/test-plan-template.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Test Plan Template -sidebar: - label: Test Plan Template ---- - -## Test Plan Template - -### **TEST CASES** - -| # | Scenario | Input | Expected Result | Actual Result | Automated? | -| --- | -------- | ----- | --------------- | ------------- | ---------- | -| | | | | | (Y/N) | -| | | | | | | diff --git a/src/content/docs/resources/Documentation/templates/test-strategy-template.md b/src/content/docs/resources/Documentation/templates/test-strategy-template.md deleted file mode 100644 index ba71e57d..00000000 --- a/src/content/docs/resources/Documentation/templates/test-strategy-template.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Test Strategy (Sample) -sidebar: - label: Test Strategy (Sample) ---- - -## **Introduction** - -A high-level summary of the project - -### **Example** - -This strategy outlines what quality provides to the project, what type of testing is done, and how -testing is carried out. The aim is to ensure quality in all phases of the development lifecycle to -deliver a great experience for our users. - -## **References** - -Relevant links and helpful information about the project and its tech stack - -### **Examples** - -- GitHubproject: \ -- Jasmine is used as a unit testing framework - [https://jasmine.github.io/](https://jasmine.github.io/) -- Cypress is used for end-to-end testing [https://www.cypress.io/](https://www.cypress.io/) -- Karma is used for testing automation - [https://karma-runner.github.io/latest/index.html](https://karma-runner.github.io/latest/index.html) -- App is built using Node.js: [http://nodejs.org/](http://nodejs.org/) - -## QA Deliverables\*\* - -What artifacts QA will provide to the team (eg, Test Strategy, Sample Test Plan, Bug reports) - -### \*\*Examples - -- Test plans for each feature -- Issues reported for bugs, enhancements, usability suggestions -- Release process document - -## Test Management - -What resources are used to carry out testing in terms of tooling, environments, supported platforms -and versions, and test data - -### Examples - -- Jenkins is used to build test versions of the application off of master and PRs -- VMs are used to test the applications in Windows -- Test runs are input in Testpad to make it clear what scenarios were tested and if those scenarios - pass or fail -- Supported operating systems are Windows 7 and 10 and Mac -- Test data will include user accounts - -## Scope of Testing - -What types of tests exist for this project? - -### Examples - Scope of Testing - -- There are unit tests, 80% coverage, written in Jasmine -- Written during development—by developers -- Automated UI tests for high-level workflows - -_Based on template from_ -[_Programming Foundations: Software Testing/QA_](https://www.linkedin.com/learning/programming-foundations-software-testing-qa/create-a-test-strategy?autoSkip=true&autoplay=true&contextUrn=urn%3Ali%3AlyndaLearningPath%3A57f7e27c3dd559e018dfe994&resume=false&u=2104084) -_with Meaghan Lewis on LinkedIn Learning_ diff --git a/src/content/docs/resources/Documentation/documenting-for-thoth-tech.md b/src/content/docs/resources/documenting-for-thoth-tech.md similarity index 100% rename from src/content/docs/resources/Documentation/documenting-for-thoth-tech.md rename to src/content/docs/resources/documenting-for-thoth-tech.md diff --git a/src/content/docs/resources/onboarding-hub/splashkit-onboarding-doc.md b/src/content/docs/resources/onboarding-hub/splashkit-onboarding-doc.md deleted file mode 100644 index f1dcbd17..00000000 --- a/src/content/docs/resources/onboarding-hub/splashkit-onboarding-doc.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: SplashKit Onboarding Guide ---- - -Placeholder diff --git a/src/content/docs/resources/onboarding-hub/splashkit-onboarding-doc.mdx b/src/content/docs/resources/onboarding-hub/splashkit-onboarding-doc.mdx new file mode 100644 index 00000000..5eef9f84 --- /dev/null +++ b/src/content/docs/resources/onboarding-hub/splashkit-onboarding-doc.mdx @@ -0,0 +1,85 @@ +--- +title: SplashKit Onboarding Guide +--- + +import { Steps, LinkCard, CardGrid } from "@astrojs/starlight/components"; + +## Contributing to SplashKit + +Contributing to SplashKit is a great way to help improve a powerful, beginner-friendly game +development toolkit while gaining experience in open-source development. Whether you’re interested +in adding new features, fixing bugs, improving documentation, or helping with testing, we welcome +all kinds of contributions! + +### Trimester Workflow + +{/* prettier-ignore */} + + 1. **Explore SplashKit**: Begin by exploring the various SplashKit resources on this website. See + below for links. Familiarize yourself with the structure and functionality of each project and its + repositories and contribution guides. + 2. **Choose Tasks**: Work with the team or your mentor to identify tasks you can complete. These + may range from feature development and bug fixes to documentation improvements. + 3. **Fork the Repository**: When contributing, be sure to fork from the Thoth-Tech repo, not the + upstream SplashKit repo. This ensures changes are first reviewed and integrated internally before + being merged upstream. + 4. **Follow the Contribution Guide**: If a repository has its own contribution guide, usually in + a CONTRIBUTING.md file, then this guide should be followed. These will provide specific + guidelines to setup environments to work on particular projects. If you are unsure, reach out + to fellow team members and your mentor for further guidance. + 5. **Make Changes**: Begin working on your chosen task. Be sure to follow the repository's + guidelines and document your work clearly. + 6. **Submit a Pull Request (PR)**: Use the provided PR template (if available) to submit your + work. Clearly explain your changes, and explain the context and reasoning behind your changes. + Ensure your code is well-tested and documented. + 7. **Peer Review**: All contributions are subject to peer review. This is an opportunity to + collaborate with other developers, improve the quality of your code, and ensure that it adheres + to project standards. Peer reviews will involve a list of tasks that you are expected to review, + but they are also expected to be in the form of a discussion which aims to produce the best changes + possible. + 8. **Mentor Review**: After peer review, your mentor will review the changes for final + approval before they are merged. + 9. **Merging**: Contributions are typically merged upstream at the end of a development trimester, + ensuring the stability and quality of the SplashKit project. + + +## Important Resources + + + + + + + + + + + diff --git a/src/content/docs/resources/Documentation/writing-style-guide.md b/src/content/docs/resources/writing-style-guide.md similarity index 100% rename from src/content/docs/resources/Documentation/writing-style-guide.md rename to src/content/docs/resources/writing-style-guide.md diff --git a/src/content/docs/companywidesubmissions/2023 Trimester 2/Company Structure and Objectives T2 2023.md b/src/content/docs/teams-and-contributions/2023 Trimester 2/Company Structure and Objectives T2 2023.md similarity index 100% rename from src/content/docs/companywidesubmissions/2023 Trimester 2/Company Structure and Objectives T2 2023.md rename to src/content/docs/teams-and-contributions/2023 Trimester 2/Company Structure and Objectives T2 2023.md diff --git a/src/content/docs/teams-and-leadership/2023 Trimester 2/leadership-t2-2023.md b/src/content/docs/teams-and-contributions/2023 Trimester 2/leadership-t2-2023.md similarity index 100% rename from src/content/docs/teams-and-leadership/2023 Trimester 2/leadership-t2-2023.md rename to src/content/docs/teams-and-contributions/2023 Trimester 2/leadership-t2-2023.md diff --git a/src/content/docs/teams-and-leadership/2023 Trimester 2/organizational-structure-t2-2023.md b/src/content/docs/teams-and-contributions/2023 Trimester 2/organizational-structure-t2-2023.md similarity index 100% rename from src/content/docs/teams-and-leadership/2023 Trimester 2/organizational-structure-t2-2023.md rename to src/content/docs/teams-and-contributions/2023 Trimester 2/organizational-structure-t2-2023.md diff --git a/src/content/docs/teams-and-leadership/2023 Trimester 2/team-members-t2-2023.md b/src/content/docs/teams-and-contributions/2023 Trimester 2/team-members-t2-2023.md similarity index 100% rename from src/content/docs/teams-and-leadership/2023 Trimester 2/team-members-t2-2023.md rename to src/content/docs/teams-and-contributions/2023 Trimester 2/team-members-t2-2023.md diff --git a/src/content/docs/companywidesubmissions/2023 Trimester 3/Contributing Effectively in T3 2023.md b/src/content/docs/teams-and-contributions/2023 Trimester 3/Contributing Effectively in T3 2023.md similarity index 100% rename from src/content/docs/companywidesubmissions/2023 Trimester 3/Contributing Effectively in T3 2023.md rename to src/content/docs/teams-and-contributions/2023 Trimester 3/Contributing Effectively in T3 2023.md diff --git a/src/content/docs/companywidesubmissions/2023 Trimester 3/company-progress-report.md b/src/content/docs/teams-and-contributions/2023 Trimester 3/company-progress-report.md similarity index 100% rename from src/content/docs/companywidesubmissions/2023 Trimester 3/company-progress-report.md rename to src/content/docs/teams-and-contributions/2023 Trimester 3/company-progress-report.md diff --git a/src/content/docs/companywidesubmissions/2023 Trimester 3/company-structure-and-objectives-for-2023-TRIMESTER-3.md b/src/content/docs/teams-and-contributions/2023 Trimester 3/company-structure-and-objectives-for-2023-TRIMESTER-3.md similarity index 100% rename from src/content/docs/companywidesubmissions/2023 Trimester 3/company-structure-and-objectives-for-2023-TRIMESTER-3.md rename to src/content/docs/teams-and-contributions/2023 Trimester 3/company-structure-and-objectives-for-2023-TRIMESTER-3.md diff --git a/src/content/docs/teams-and-leadership/2023 Trimester 3/organizational-structure-t3-2023.md b/src/content/docs/teams-and-contributions/2023 Trimester 3/organizational-structure-t3-2023.md similarity index 100% rename from src/content/docs/teams-and-leadership/2023 Trimester 3/organizational-structure-t3-2023.md rename to src/content/docs/teams-and-contributions/2023 Trimester 3/organizational-structure-t3-2023.md diff --git a/src/content/docs/companywidesubmissions/2024 Trimester 1/Contributing Effectively in T1 2024.md b/src/content/docs/teams-and-contributions/2024 Trimester 1/Contributing Effectively in T1 2024.md similarity index 100% rename from src/content/docs/companywidesubmissions/2024 Trimester 1/Contributing Effectively in T1 2024.md rename to src/content/docs/teams-and-contributions/2024 Trimester 1/Contributing Effectively in T1 2024.md diff --git a/src/content/docs/teams-and-leadership/2024 Trimester 1/leadership-t1-2024.md b/src/content/docs/teams-and-contributions/2024 Trimester 1/leadership-t1-2024.md similarity index 100% rename from src/content/docs/teams-and-leadership/2024 Trimester 1/leadership-t1-2024.md rename to src/content/docs/teams-and-contributions/2024 Trimester 1/leadership-t1-2024.md diff --git a/src/content/docs/teams-and-leadership/2024 Trimester 1/team-members-t1-2024.md b/src/content/docs/teams-and-contributions/2024 Trimester 1/team-members-t1-2024.md similarity index 100% rename from src/content/docs/teams-and-leadership/2024 Trimester 1/team-members-t1-2024.md rename to src/content/docs/teams-and-contributions/2024 Trimester 1/team-members-t1-2024.md diff --git a/src/content/docs/teams-and-contributions/2024 Trimester 2/company-report.md b/src/content/docs/teams-and-contributions/2024 Trimester 2/company-report.md new file mode 100644 index 00000000..582918ab --- /dev/null +++ b/src/content/docs/teams-and-contributions/2024 Trimester 2/company-report.md @@ -0,0 +1,1239 @@ +--- +title: Thoth Tech – Company Handover Report 2024 TRIMESTER 2 +description: 11.2P Task, T2 2024 +--- + +## Table of Contents + +[1. Executive Summary](#executive-summary) + +[2. Showcase Video](#showcase-video) + +[3. Leadership Team](#leadership-team) + +> [3.1 Company Board](#company-board) +> [3.2 Product Mentors](#product-mentors) +> [3.3 Student Leaders](#student-leads) +> [3.4 Leadership Responsibilties](#leadership-responsibilities) + +[4. Company Structure](#company-structure) + +[5. Project 1: OnTrack](#project-1-ontrack) + +> [5.1 Project Overview](#project-overview) +> [5.2 User Manual](#user-manual) +> [5.3 Completed Deliverables](#completed-deliverables) +> [5.4 Roadmap](#roadmap) +> [5.5 Open Issues](#open-issues) +> [5.6 Lessons Learned](#lessons-learned) +> [5.7 Product Development Life Cycle](#product-development-life-cycle) +> +> > [5.7.1 New Tasks](#new-tasks) +> > [5.7.2 Definition of Done](#definition-of-done) +> > [5.7.3 Task Review](#task-review) +> > [5.7.4 Testing](#testing) +> > [5.7.5 Branching Strategy](#branching-strategy) +> > [5.8 Product Architecture](#product-architecture) +> > [5.8.1 Tech Stack](#tech-stack) +> > [5.9 Source Code](#source-code) +> > [5.10 Login Credentials](#login-credentials) + +[6. Project 2: SplashKit](#project-2-splashkit) + +> [6.1 Project Overview](#project-overview-1) +> [6.2 User Manual](#user-manual-1) +> [6.3 Completed Deliverables](#completed-deliverables-1) +> [6.4 Roadmap](#roadmap-1) +> [6.5 Open Issues](#open-issues-1) +> [6.6 Product Development Life Cycle](#product-development-life-cycle-1) +> +> > [6.6.1 New Tasks](#new-tasks-1) +> > [6.6.2 Definition of Done](#definition-of-done-1) +> > [6.6.3 Task Review](#task-review-1) +> > [6.6.4 Testing](#testing-1) +> > [6.6.5 Branching Strategy](#branching-strategy-1) +> > [6.7 Product Architecture](#product-architecture-1) +> > [6.8 Source Code](#source-code-1) + +## Executive Summary + +Thoth Tech is an education-focused technology company located in Melbourne, Australia. Thoth Tech’s +mission is to build, operate, and deploy tools that enhance education outcomes by empowering +students, connecting them with tutors, and facilitating personalised learning experiences. + +We value excellence and collaboration. We strive to deliver all our products in exceptional quality, +making sure it is sustainable in the long run. We continuously meet this goal while empowering our +people through established frameworks and a safe and supportive learning environment. + +In Trimester 2, 2024, Thoth Tech ran its two main products: OnTrack, and SplashKit. This report will +outline the company structure, projects, and accomplishments for this trimester. + +## Showcase Video + +This video summarises the accomplishments made at Thoth Tech for Trimester 2, 2024: +[Thoth Tech Company Showcase Video](https://deakin.au.panopto.com/Panopto/Pages/Viewer.aspx?id=b69ee4c8-1567-41bc-95be-b1fa001266ad) + +## Leadership Team + +### Company Board + +- Andrew Cain - Director, Product Owner (OnTrack & SplashKit) + +### Product Mentors + +- Satika Jayawardena (OnTrack) +- Nebula Alam (OnTrack) +- Tien Pham (SplashKit) +- Olivia McKeon (SplashKit) +- Sean Boettger (SplashKit) + +### Student Leads + +- Jake Mansfield – Senior Leader (OnTrack) +- Jack Carroll – Senior Leader (OnTrack) +- Atharv Bhandare – Junior Leader (OnTrack) +- Bruce Wang – Senior Leader (OnTrack) +- Ivan Justin – Junior Leader (OnTrack) +- Eliya Geerlings – Junior Leader (OnTrack) +- Jonathan Tynan – Senior Leader (SplashKit) +- Oscar Harris – Senior Leader (SplashKit) +- Hayley Hughes – Senior Leader (SplashKit) +- Shaun Ratcliff – Junior Leader (SplashKit) +- Brianna Laird – Junior Leader (SplashKit) + +### Leadership Responsibilities + +The following are the key responsibilities of the company student leadership team throughout the +trimester: + +1. Company presentation in the first junior lecture – Introduce the company, its projects, and + required skill sets for potential junior students + + - Student leads must prepare and organise a PowerPoint presentation representing each of their + projects during Week 0 + +2. Host first company-wide meeting and onboard students – Provide a more specific overview of + company and project goals, meeting schedules, and expectations for the trimester + + - Team building sessions may also be organised to build rapport across teams + +3. Weekly company leadership team meeting – Report on project progress and concerns to company + stakeholders + + - Date and time to be decided by members in the first week according to availability + +4. Complete company tasks: progress, handover, and showcase reports and videos + - These reports must be submitted by 1 senior and 1 junior on behalf of the company and + appropriate communications must be made on Teams + +All past company reports, showcase videos, and relevant assets can be found here: +[Company Documents & Videos](https://deakin365.sharepoint.com/sites/ThothTech2) & +[Thoth Tech Documentation Website](https://thoth-tech.netlify.app) + +## Company Structure + +![Org chart](https://raw.githubusercontent.com/thoth-tech/ThothTech-Documentation-Website/refs/heads/main/public/company-structure/2024-t2-thoth-tech-structure.png) + +## Project 1: OnTrack + +### Project Overview + +OnTrack, also known as Doubtfire, is an innovative Learning Management System (LMS) tailored for +skill-based course delivery. This platform facilitates the connection between tutors and students, +primarily at Deakin University and other global institutions. The overarching goal of OnTrack is to +enhance the educational experience by providing a structured, efficient, and interactive learning +environment. This system aims to improve student engagement, learning outcomes, and the overall +teaching and learning process, benefiting both students and educational staff. + +### User Manual + +Tutorial videos on setting up your local development environment: + +- [T3 2023 Setup demo](https://deakin365.sharepoint.com/:v:/s/ThothTech2/ESrgw0W_21pLn7kqS86WoJgBG71EPo7VPSp8AXt151JC2g?e=AZyu7I) + by Satika Jayawardena + +- [T2 2023 Setup demo](https://video.deakin.edu.au/media/t/1_6degiyrj) by Daniel Maddern + +- [T1 2024 Common setup error solutions](https://teams.microsoft.com/l/message/19:bd20175d09414f079490a2403f7fca74@thread.tacv2/1711021331051) + by Satika Jayawardena + +Contributing Guides: + +- [Doubtfire-deploy repository](https://github.com/thoth-tech/doubtfire-deploy/blob/development/CONTRIBUTING.md) + +- [OnTrack documentation](https://github.com/thoth-tech/documentation/tree/main/docs/OnTrack) + +- [Thoth Tech Documentation Website](https://main--strong-fairy-c1bde1.netlify.app/products/ontrack/example/) + +### Completed Deliverables + +This trimester, the following key deliverables were completed: + +- Bug Fixes and Urgent Enhancements + + - Chat Markdown Rendering Bug: Successfully fixed an issue where markdown was not rendering + properly in chat, enhancing the user experience for students and staff. + - Documentation Enhancements: Completed and merged documentation updates for both general and + specific API pages. This includes contributions from team members on various entities such as + requirement sets and course entities, directly supporting the goal of comprehensive + documentation for OnTrack's evolving features. + +- Frontend Enhancements and Component Migrations: Several components have been successfully migrated + to Angular 17 and TypeScript, including the comments-modal, group set manager, and + unit-ilo-edit-modal. Additionally, enhancements were made to PDF handling and user interface + elements like the grade-task-modal and grade-icon components, contributing to the ongoing frontend + migration and user interface improvement objectives. + + - Ongoing Frontend Migration: The migration of legacy CoffeeScript components to + TypeScript/Angular continues, with files such as timeout.coffee and grade-task-modal.coffee + currently under peer review. This aligns with our aim to complete at least 10% of the existing + frontend migration backlog this trimester. + - Overlay Component Creation: Developed a new overlay component to provide additional information + about units to users, enhancing the user interface and experience. This feature is currently + under review. + +- CourseFlow: + + - CourseMap Base Page Development: Developed the base page for CourseMap, laying the groundwork + for further enhancements and integrations planned for the CourseFlow component. + - Backend Requirements Implementation: Completed backend requirements for several critical + entities, including the requirement set, course, and course map unit entities. These efforts are + part of the overarching aim to enhance CourseFlow functionality and ensure robust backend + support for new and existing features. + - CourseFlow Enhancements: Several enhancements are under review, including adding authentication + to endpoints and integrating new UI elements. These efforts are part of the continued + development of the CourseFlow API and its related functionalities. + +- JPLAG - jplag software plagiarism has been implemented as a containerised batch process. Frontend + and backend additions have been made to allow plagiarism report downloads. +- Dev Container Image Downsizing - LaTex and MariaDB have been moved into their own containers; + reducing rebuild time of the main container significantly +- Nginx - an nginx container has been created to utilise reverse proxying, allowing localhost:4200 + and localhost:3000 to be accessed at localhost/ and localhost/api + +- Ongoing and Pending Tasks: + - Group Set Manager Migration: The migration of the group set manager component to the latest + framework is in progress. + - Unit Group Set Editor Migration: The migration of the unit-group-set-editor.coffee file + continues to move forward, aligning with our frontend migration goals. + - Tasks in Peer Review: Detailed documentation and API operations for units and task definitions, + along with the migration of several legacy components, are currently under peer review. This + work supports the ongoing documentation efforts and frontend migration initiatives. + +#### List Of All Complete Deliverables + +| Name | Task Name | Task Attachment | +| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Amos Saji | Migration: group set manager |
    | +| Amrith Jayadeep | Migration: group set selector |
    | +| Anirudh Nellippilli Joshi | Documentation: grade-task-modal component review | | +| Anirudh Nellippilli Joshi | migrate file-uploader.coffee |
    | +| Anirudh Nellippilli Joshi | Migration: group set selector |
    | +| Anirudh Nellippilli Joshi | Migration: group set manager |
    | +| Anirudh Nellippilli Joshi | Migration: csv-result-modal.coffee |
    | +| Anirudh Nellippilli Joshi | Onboarding Juniors Guidence | | +| Atharv Sandip Bhandare | Migration: comments-modal |

    | +| Atharv Sandip Bhandare | Write documentation for JPLAG |
    | +| Atharv Sandip Bhandare | Migration: Component task-ilo-alignment-modal.coffee | | +| Atharv Sandip Bhandare | Add user UI does not allow user creation |
    | +| Atharv Sandip Bhandare | Migration: unit-staff-editor.coffee |
    | +| Atharv Sandip Bhandare | JPLAG UI documentation | | +| Bruce Wang | Migration: comments-modal |

    | +| Bruce Wang | Documentation: grade-task-modal component review | | +| Bruce Wang | migrate file-uploader.coffee |
    | +| Bruce Wang | Migration: grade-icon.coffee | | +| Bruce Wang | Migrate analytics.coffee | | +| Bruce Wang | Migrate viewer.coffee | | +| Bruce Wang | Migration: timeout.coffee |
    | +| Bruce Wang | Migration: unauthorised.coffee | | +| Bruce Wang | Migration: unit-staff-editor.coffee |
    | +| Bruce Wang | Migration: csv-result-modal.coffee |
    | +| Bruce Wang | Onboarding Juniors Guidence | | +| Eliya Geerlings | Migration: comments-modal |

    | +| Eliya Geerlings | Autoload PDFs on page 2 when viewing student submissions | | +| Eliya Geerlings | Fix jupyter notebook latex rake test | | +| Eliya Geerlings | Fix up existing confirmation-modal migration | | +| Eliya Geerlings | Latex docker downsizing: Creation of feasibility document | | +| Eliya Geerlings | Latex docker downsizing: Implementation |
    | +| Eliya Geerlings | Persistent PDF zoom levels when selecting between different task submissions | | +| Eliya Geerlings | Migration: unit-staff-editor.coffee |
    | +| Ivan Justin | Latex docker downsizing: Creation of feasibility document | | +| Ivan Justin | Chat markdown not rendering properly bug | | +| Ivan Justin | Migration: Unit-ilo-edit-modal.coffee |
    | +| Jack Shinners Carroll | Write documentation for JPLAG |
    | +| Jack Shinners Carroll | Documentation: grade-task-modal component review | | +| Jack Shinners Carroll | Latex docker downsizing: Creation of feasibility document | | +| Jack Shinners Carroll | Latex docker downsizing: Implementation |
    | +| Jack Shinners Carroll | Migrate analytics.coffee | | +| Jack Shinners Carroll | Migration: unit-staff-editor.coffee |
    | +| Jack Shinners Carroll | Add JPLAG frontend | | +| Jack Shinners Carroll | Alter JPLAG api code | | +| Jack Shinners Carroll | Create JPLAG Container | | +| Jack Shinners Carroll | JPLAG UI documentation | | +| Jake Mansfield | Document the below API pages in detail within the website - set 5 | | +| Jake Mansfield | Implement the backend requirements for the course entity. | | +| Jake Mansfield | Implement the backend requirements for the course map entity. | | +| Jake Mansfield | Implement the backend requirements for the course map unit entity. | | +| Jake Mansfield | Implement the backend requirements for the requirement set entity. | | +| Jake Mansfield | Implement the backend requirements for the specialization entity. | | +| Jake Mansfield | Add detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation website | | +| Jake Mansfield | Add Authentication to the Courseflow endpoints | | +| Jake Mansfield | Add button to Courseflow main component | | +| Jake Mansfield | Created coursemap base page | | +| Jake Mansfield | Add detailed operations for units API (task_definitions) on Ontrack documentation website | | +| Jake Mansfield | Add detailed operations for units API (group set - group ID) on Ontrack documentation website | | +| Jake Mansfield | Add detailed operations for units API (group set - group csv) on Ontrack documentation website | | +| Jake Mansfield | Add detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation website | | +| Jake Mansfield | Document the operations units API - Tutorial Streams | | +| Jake Mansfield | Ensure Unit Definition model satisfies all requirements (Phase 2) | | +| Jake Mansfield | Create appropriate testing files for the Unit Definition entity (Phase 1) | | +| Jake Mansfield | Create dummy data for a specific course for the front end to use (Phase 3) | | +| Jake Mansfield | Implement the backend requirements for the Unit Definition entity (phase 1) | | +| Jake Mansfield | Make a Plan for Courseflow for T2 | | +| Jake Mansfield | Migrate analytics.coffee | | +| Jake Mansfield | Migrate the existing Unit table to be compatible with Unit Definition (Phase 4) | | +| Jake Mansfield | Migration: timeout.coffee |
    | +| Jake Mansfield | Courseflow Documentation Requirement Analysis | | +| Jake Mansfield | Onboarding Juniors Guidence | | +| Minu Nediyapalackal Sunil | Document the below API pages in detail within the website - set 5 | | +| Minu Nediyapalackal Sunil | Add detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation website | | +| Minu Nediyapalackal Sunil | Add detailed operations for units API (task_definitions) on Ontrack documentation website | | +| Minu Nediyapalackal Sunil | Create diagram of coursemap page | | +| Minu Nediyapalackal Sunil | Add detailed operations for units API (group set - group ID) on Ontrack documentation website | | +| Minu Nediyapalackal Sunil | Add detailed operations for units API (group set - group csv) on Ontrack documentation website | | +| Minu Nediyapalackal Sunil | Add detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation website | | +| Minu Nediyapalackal Sunil | Document the operations units API - Tutorial Streams | | +| Minu Nediyapalackal Sunil | Pull the API docs from last trimester into the new folder structure | | +| Minu Nediyapalackal Sunil | Courseflow Documentation Requirement Analysis | | +| Muhammad Danial | Migration: Component task-ilo-alignment-modal.coffee | | +| Sam Rolfe | Implement the backend requirements for the course entity. | | +| Sam Rolfe | Implement the backend requirements for the course map entity. | | +| Sam Rolfe | Implement the backend requirements for the course map unit entity. | | +| Sam Rolfe | Implement the backend requirements for the requirement set entity. | | +| Sam Rolfe | Implement the backend requirements for the specialization entity. | | +| Sam Rolfe | Add Authentication to the Courseflow endpoints | | +| Sam Rolfe | Add button to Courseflow main component | | +| Sam Rolfe | Created coursemap base page | | +| Sam Rolfe | Create a list of tasks for CourseMap FE | | +| Sam Rolfe | Create diagram of coursemap page | | +| Sam Rolfe | Ensure Unit Definition model satisfies all requirements (Phase 2) | | +| Sam Rolfe | Migration: grade-icon.coffee | | +| Sam Rolfe | Add ability to add elective units to the unit pool (phase 2) | | +| Sam Rolfe | Create appropriate testing files for the Unit Definition entity (Phase 1) | | +| Sam Rolfe | Create dummy data for a specific course for the front end to use (Phase 3) | | +| Sam Rolfe | Create services and models for courseflow back end components. | | +| Sam Rolfe | Implement the backend requirements for the Unit Definition entity (phase 1) | | +| Sam Rolfe | Migrate the existing Unit table to be compatible with Unit Definition (Phase 4) | | +| Sam Rolfe | Populate remaining units container with relevant units from course (phase 2) | | +| Sam Rolfe | Courseflow Documentation Requirement Analysis | | +| Shen Tian | Add button to Courseflow main component | | +| Shen Tian | Created coursemap base page | | +| Shen Tian | Create services and models for courseflow back end components. | | +| Shen Tian | Migrate analytics.coffee | | +| Shen Tian | Migration: timeout.coffee |
    | +| Shen Tian | Populate remaining units container with relevant units from course (phase 2) | | +| Shyama Chandrashekaran Pillai | Document the below API pages in detail within the website - set 5 | | +| Shyama Chandrashekaran Pillai | Add detailed operations for units API (task_definitions -tii_group_attachments ) on Ontrack documentation website | | +| Shyama Chandrashekaran Pillai | Add detailed operations for units API (task_definitions) on Ontrack documentation website | | +| Shyama Chandrashekaran Pillai | Add detailed operations for units API (group set - group ID) on Ontrack documentation website | | +| Shyama Chandrashekaran Pillai | Add detailed operations for units API (group set - group csv) on Ontrack documentation website | | +| Shyama Chandrashekaran Pillai | Add detailed operations for units API (task_definitions - task_assessment_resources ) on Ontrack documentation website | | +| Shyama Chandrashekaran Pillai | Document the operations units API - Tutorial Streams | | +| Shyama Chandrashekaran Pillai | Pull the API docs from last trimester into the new folder structure | | +| Thuy Tien Hoa | migrate file-uploader.coffee |
    | +| Thuy Tien Hoa | Migration: Component task-ilo-alignment-modal.coffee | | +| Thuy Tien Hoa | Migration: grade-icon.coffee | | +| Thuy Tien Hoa | Add ability to add elective units to the unit pool (phase 2) | | +| Thuy Tien Hoa | Migrate viewer.coffee | | + +### Roadmap + +The following are areas of OnTrack students may choose to work on in Trimester 3, 2024: + +- Frontend Migrations – Angular.js and CoffeeScript to Angular and TypeScript +- Urgent Enhancements, Improvements, and Bugs +- Documentation Website – Enhance and add missing endpoint documentation +- Peer reviews for previous pull requests and contributions +- Features in development: + - Tutor Feedback Enhancement – feedback_api will require further development to support + "criterion" or options + - CourseFlow – remaining backend entities and frontend + - Incorporate Multiple Organizations on Single OnTrack Server + - Authentication Module + - Tutor Times + - Incorporate Content in OnTrack + - Staff Grant Extensions + - Panopto Video Integration + +### Open Issues + +These are some of the common challenges we have faced in Trimester 2, 2024 and may continue to face +in the future: + +1. Knowledge gap in using Git and GitHub – Team members are required to upskill in Git before + starting on their assigned tasks as this is the primary tool used within the team to manage code + and contributions. The Git and GitHub training website and demo videos attached in this document + are some of the great resources available in capstone for this purpose. + +2. Unsatisfactory pull request reviews – Reviews must not be made through generational AI tools or + just indicate how many commits have been made and what has changed. Instead, it must evaluate the + syntax, logic, and output of the code. Please refer to section Task Review for more details and + this past review for an example of a correct pull request review. + +### Lessons Learned + +This trimester, the traditional weekly Help Hub sessions, typically held on Thursdays and led by +senior team members, experienced a noticeable decrease in attendance. + +To adapt, student leads focused on driving engagement and addressing queries through the OnTrack +public Teams channel, encouraging team members to share their experiences and solutions. + +While this approach has been effective for accommodating team members' diverse schedules, we +recommend exploring new ways to host Help Hub sessions alongside asynchronous Teams posts. Offering +multiple formats for assistance could provide additional opportunities for leadership development. + +Future student leads may consider using polls or forms to determine the most suitable time for +sessions based on team availability. Additionally, offering a variety of session formats could help +not only resolve existing problems but also guide team members in making contributions to specific +areas. + +### Product Development Life Cycle + +We continue to use Agile methodologies to deliver updates and new features for OnTrack. + +Our approach includes 2-week sprints focused on completing tasks, and weekly stand-up meetings to +assess progress, share updates, discuss roadblocks, and assign new tasks via Teams Planner cards. + +#### New Tasks + +New tasks are assigned by the project mentor during the weekly stand-up meetings. Once you are +assigned a task, be sure to assign yourself to the corresponding Teams Planner card and attach your +draft or completed pull request when you begin work. + +If you have an idea for a new feature or enhancement, schedule a meeting with the project mentor to +discuss it. Upon approval, create a new card or backlog column in Teams Planner to track the task. +If the feature is large, start researching the benefits and challenges, and create a Spike document, +which can be committed to the documentation repository. Spike templates are available in the +documentation repository. + +#### Definition of Done + +A task is considered complete once it has been fully tested, functions as expected, and is +documented in a well-organized pull request. + +The task must also undergo peer review and be approved by your mentor. Ensure that the corresponding +Teams Planner card is updated, and keep in communication with your reviewer and mentor until your +contribution is merged into the upstream doubtfire-lms repository. + +#### Task Review + +Each pull request requires a mandatory peer review before a mentor review. After creating the pull +request, contact a teammate to review it. + +Tag them as the reviewer in both the Teams Planner card and the GitHub pull request. As a reviewer, +ensure that you test the code by pulling the changes locally and reviewing the syntax, logic, and +output. + +If any changes are needed, update the contribution and notify the reviewer. Once the updates are +made, the pull request will be automatically updated. + +After the peer review is complete, notify the mentor for their review. Once approved, you can submit +the pull request to the upstream repository for the final review. + +#### Testing + +For frontend changes, test the functionality in the browser or run specification tests as needed. +For backend changes, use browser interactions or tools like Postman to test functionality. +Additionally, GitHub CI Actions will run tests automatically when changes are pushed. + +In the pull request template, include detailed instructions on how others can test your changes. +Always provide before-and-after screenshots to show the outcome of your modifications. + +#### Branching Strategy + +When starting a new contribution, fork all three thoth-tech repositories (deploy, web, and API) to +your GitHub profile. + +Create a new branch from the development branch of the relevant repository. For example, for +frontend migrations, you would create a branch from the doubtfire-web development branch. + +Follow the Branch Prefixes and Commit Message Format in the Contributing Guide when naming branches +and creating commits. + +### Product Architecture + +OnTrack is built using four main components: + +1. Frontend Client: Responsible for user interactions. +2. Backend API: Handles requests and serves data. +3. Database: Stores application data. +4. Deployment Infrastructure: Ensures that OnTrack is properly deployed and maintained + +#### Tech Stack + +- Frontend: Currently being migrated from AngularJS and CoffeeScript to Angular 17 and TypeScript. + The stack also includes HTML, SCSS, and Tailwind CSS. +- Backend: Built on Ruby on Rails with the Grape Framework. It uses MariaDB as the database engine. + Docker is used for deployment and local development. + +### Source Code + +The following are the relevant GitHub repositories to this project: + +1. Deployment - +2. Frontend - +3. Backend - +4. OnTrack Documentation Website - +5. Documentation (OnTrack feature documentation, frontend migration component reviews, etc.) - + +6. Templates (Spikes, component reviews) - + +7. CourseFlow documentation - + + Note: Any pull requests must first be made to the thoth-tech forks of the repositories, not the + upstream doubtfire-lms ones. + +### Login Credentials + +Refer to the Working with Dev Containers section of the +[Contributing Guide](https://github.com/thoth-tech/doubtfire-deploy/blob/main/CONTRIBUTING.md) for +authentication credentials for locally deployed OnTrack. + +### Showcase Video + +The videos in this folder summarise our accomplishments this trimester in OnTrack: + +- [Showcase Videos](https://deakin365.sharepoint.com/:f:/r/sites/ThothTech2/Shared%20Documents/General/Company%20Documents%20%26%20Videos/2024%20T2/Showcase%20Video?csf=1&web=1&e=ezMp06) + +## Project 2: SplashKit + +### Project Overview + +SplashKit is a user-friendly programming framework designed for creating 2D games, primarily to help +students learn introductory programming through game development. The framework is mainly written in +C++, but it supports multiple languages, including C#, Python, Pascal, and JavaScript. + +### Projects + +#### Arcade Machines + +The university has acquired four arcade machines equipped with Raspberry Pi 3B+ units, designed to +showcase games developed with SplashKit. The short-term goal is to prepare these platforms for +students to display their SplashKit creations. The medium-term goal is to streamline the process for +first-year students to easily upload and test their games. + +#### Game Development + +The Game Development team is dedicated to creating and enhancing games that run on the arcade +machines. Their mission is to demonstrate SplashKit’s capabilities and inspire students by +showcasing what can be achieved with the framework. + +#### SplashKit Website + +Powered by the Starlight framework, the revamped SplashKit website aims to offer an enriched and +user-friendly experience for developers and learners. It will host existing tutorials and guides, +providing a central hub for exploring and learning about SplashKit. + +#### SplashKit Tutorials + +The SplashKit Website will feature tutorials aimed at helping students learn and explore SplashKit’s +functionality. The focus is on developing smaller, high-quality tutorials across C++, C#, and +Python, rather than extensive series. + +#### SplashKit Expansion + +The Expansion team is responsible for maintaining and enhancing the SplashKit core. This includes +bug fixes, feature improvements, and refining installation and usage workflows through package +creation and addressing installation issues. + +#### SplashKit Online + +SplashKit Online is developing a web-based IDE that allows students to write and run code directly +in their browsers. Initially launched as a prototype in 2023, the 2024 goal is to mature this tool +into a comprehensive product, including C# support and an embeddable version for the SplashKit +website. + +### User Manual + +#### Arcade Machines + +- [Brief development environment setup instructions](https://github.com/thoth-tech/arcade-machine) +- [Machine Operations Guide]() + +#### SplashKit Website + +- [Development environment setup instructions](https://github.com/thoth-tech/splashkit.io-starlight/blob/main/CONTRIBUTE.md) + +#### SplashKit Tutorials + +- [Tutorial Information Hub](https://thoth-tech.netlify.app/products/splashkit/splashkit-tutorials/0-overview/) +- [Development environment setup instructions](https://github.com/thoth-tech/splashkit.io-starlight/blob/main/CONTRIBUTE.md) + +#### SplashKit Expansion + +- [Repository setup instructions](https://github.com/thoth-tech/splashkit-core/blob/develop/CONTRIBUTING.md) + +#### Game Development + +- [Game Development Student Onboarding Guide](https://github.com/thoth-tech/arcade-games/blob/main/advanced-game-design-team/Student%20Onboarding%20Guide.md) +- [Guide to Contribute a Game to the Arcade Machine](https://github.com/thoth-tech/arcade-games/blob/main/README.md) + +#### SplashKit Online + +- [Development environement setup instructions](https://github.com/thoth-tech/SplashkitOnline?tab=readme-ov-file#installation) +- [General developer documentation](https://thoth-tech.netlify.app/products/splashkit/splashkit-online/code-documentation/other/folderstructureoverview/) + +### Completed Deliverables + +This trimester, the following deliverables were completed: + +#### Arcade Machine + +- Arcade Machine Improvements + - Developed a test menu for the arcade machine + - Added additional controls to the arcade menu + - Defined the process for uploading games to the arcade machine + - Fixed broken links in Arcade Build documentation + - Developed Game Packaging tool, [flipper](https://github.com/thoth-tech/flipper) + +#### SplashKit Expansion + +- General Improvements + - Fixed bugs relating to vectors, random number generation, moving sprites and replacing text. + - Renamed 'label' parameter to fix Pascal support + - Investigate and identified missing functionality from SwinGame + - Tested Python compatibility + - Implemented insertion of XML comments into SplashKit.cs during translation process +- New Features + - Completed development of Remote GPIO Control methods + - Created Circle-Triangle Collision detection methods + - Created base64 image decoding function + - Created SplashKit Splashscreen function + - Added unit tests for networking, utility functions, bitmaps, sound effects, and music. + +#### SplashKit Website + +- Website Improvements + - Begun development of an 'Onboarding Hub' + - Resolved issues with SplashKit.io dev Container + - Fixed the guides index page and updated broken links + - Improved Troubleshooting section + - Added game showcase page and improved website styling + - Reviewed, updated and validated key policies and FAQs + - Fixed API table formatting + - Updated tab logo + - Improved site styling + +#### SplashKit Tutorials + +- New Tutorials + - Developed 2D Vectors tutorial series covering topics such as vector magnitude, collisions and + gravity +- Tutorial Updates + - Created documentation detailing tutorial review process + - Developed Onboarding process for the tutorial team + - Added Object-Oriented Programming concepts to SplashKit tutorials + - Added C# Code Blocks to Tutorials + - "Introduction to JSON", "Writing JSON Data", "Reading JSON Data", guides + - "Styling User Interfaces" guide + - "Understanding Double Buffering" guide + - Add Python Code Blocks to Tutorials + - "Using Mouse Inputs" guide +- Created various usage examples + - `fill_triangle`, `fill_circle`, `create_sprite`, `draw_sprite`,`clear_screen` and more +- Completed various tutorial reviews + - "Getting started with servers" guide + - "How to make a RESTful API call" guide + - "SplashKit Camera" guide + - "Using Mouse Inputs" guide + +#### SplashKit Online + +- Automated installation of pre-built files +- Interface Improvements + - Fixed scrollbar jumping to top when switching code files + - Implemented message to prompt user for action to enable audio + - Added Interface Minification option + +#### Game Development + +- Game Development Improvements + - Developed Onboarding guide for the Game Development team + - Addressed issue that compiled .exe files are platform-specific. + - Fixed gameplay issues in Below the Surface and Venture Adventure + - Created programming plan for the Bee Game project, outlining core mechanics and class structures + +#### List Of All Complete Deliverables + +| Name | Task Name | Task Attachment | +| :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Brianna Laird | Fix Broken Dev Container | | +| Brianna Laird | Update and Re-organise Trouble Shooting Section | | +| Brianna Laird | Add Python code blocks to "Using Mouse Inputs" guide | | +| Brianna Laird | Add Tutorial Review Documentation | | +| Brianna Laird | Splashkit tutorial - Documentation Update | | +| Brianna Laird | Validate/Update Processes, Policies and FAQs | | +| Brianna Laird | Adding OOP To Splashkit Tutorials | | +| Brianna Laird | Fixing Tutorial Side Guide | | +| Brianna Laird | Update Usage Examples to add Python code | | +| Brianna Laird | Create Code Usage Examples for: "fill_triangle_on_bitmap" function | | +| Brianna Laird | Review "Routing with Servers" guide |
    | +| Brianna Laird | Create Code Usage Examples for CreateSprite | | +| Brianna Laird | Create Code Usage Examples for Draw sprite | | +| Brianna Laird | Create Code Usage Examples for Free sprite | | +| Brianna Laird | Create Code Usage example for:"clear_screen" function | | +| Brianna Laird | Dec to Hex Usage Example | | +| Brianna Laird | Hex to Dec Usage Example | | +| Brianna Laird | IPv4 to Decimal Usage Example | | +| Brianna Laird | IPv4 to Hex Usage Example | | +| Brianna Laird | Introduction to JSON Tutorial - C# Language Update | | +| Brianna Laird | Review "Getting Started with Servers" guide |
    | +| Brianna Laird | Review "How to make a RESTful API call" guide |
    | +| Brianna Laird | Review "Splashkit Camera" Guide |
    | +| Brianna Laird | Review "Useful Utilities" guide |
    | +| Brianna Laird | Review: "Using Mouse Inputs" guide |
    | +| Brianna Laird | Fix issue with ipv4_to_str function | | +| Brianna Laird | Add python code blocks to the Introduction to JSON in SplashKit | | +| Brianna Laird | Splashkit Camera Tutorial - C# Language Update | | +| Brianna Laird | Using Splashkit Audio Tutorial - C# Language Update | | +| Darren Marchiano Sunandar | Fix typo in vector magnitude squared documentation | | +| Darren Marchiano Sunandar | Identify missing functionality from SwinGame | | +| Darren Marchiano Sunandar | Create a python pip package | | +| Darren Marchiano Sunandar | Arcade Machine Splashkit splash screen on startup | | +| Darren Marchiano Sunandar | Fix bug in replace_all | | +| Darren Marchiano Sunandar | Test python version | | +| Darren Marchiano Sunandar | Translator: Generate C# documentation comments from HeaderDoc | | +| Ethan Mark Holley | Fix scrollbar jumping to top when switching code files | | +| Ethan Mark Holley | Interface Minification Option | | +| Ethan Mark Holley | Show message to user requesting them to click into the Execution Environment iFrame to get audio working | | +| Ethan Mark Holley | Add Network Unit Tests | | +| Ethan Mark Holley | Arcade Menu - Add additional controls | | +| Ethan Mark Holley | Develop Test Menu for Arcade Machine | | +| Hangyu Li | Create Code Usage Examples for: "fill_circle" function | | +| Hangyu Li | Create Code Usage Examples for: "fill_ellipse" function | | +| Hangyu Li | Create Code Usage Examples for: "fill_rectangle" function | | +| Hangyu Li | Create Code Usage example for:"clear_screen" function | | +| Hangyu Li | Dec to Hex Usage Example | | +| Hangyu Li | Hex to Dec Usage Example | | +| Hangyu Li | Review "Splashkit Camera" Guide |
    | +| Hangyu Li | Write Line INTEGER - Usage Example for Terminal | | +| Hangyu Li | Writing JSON data Tutorial - C# Language Update | | +| Hangyu Li | Review "Reading Text" Guide |
    | +| Hangyu Li | Update Splashkit Sprite tutorial | | +| Hayley Rose Hughes | Define process for copying games to Arcade Machine | | +| Hayley Rose Hughes | Fix typo in vector magnitude squared documentation | | +| Hayley Rose Hughes | Initial implementation of remote GPIO control | | +| Hayley Rose Hughes | Investigate bug in move_sprite_to | | +| Hayley Rose Hughes | Fix bug in closest_point_on_lines | | +| Hayley Rose Hughes | Create a python pip package | | +| Hayley Rose Hughes | Add unit tests for utility functions | | +| Hayley Rose Hughes | Arcade Machine Splashkit splash screen on startup | | +| Hayley Rose Hughes | Circle-Triangle Collision Detection Methods | | +| Hayley Rose Hughes | Fix broken links in Arcade Build Doco | | +| Hayley Rose Hughes | Fix bugs in rnd | | +| Hayley Rose Hughes | Fix issue with ipv4_to_str function | | +| Hayley Rose Hughes | Rename 'label' Parameter | | +| Hayley Rose Hughes | Translator: Generate C# documentation comments from HeaderDoc | | +| Hayley Rose Hughes | Updated Arcade Build Doco | | +| Hayley Rose Hughes | Rebuild the "Game Packaging" to work with remote repos | | +| Jake Andrew Oxley | Identify missing functionality from SwinGame | | +| Jake Andrew Oxley | SplashKit Tutorial - 2D Vectors | | +| Jessica Balsillie | Automate installation of pre-built files | | +| Jessica Balsillie | Fix scrollbar jumping to top when switching code files | | +| Jonathan James Tynan | Define process for copying games to Arcade Machine | | +| Jonathan James Tynan | Initial implementation of remote GPIO control | | +| Jonathan James Tynan | Tutorial Proposal - 2D Vectors | | +| Jonathan James Tynan | Validate/Update Processes, Policies and FAQs | | +| Jonathan James Tynan | Add bitmap, sound effect and music unit tests | | +| Jonathan James Tynan | Automate installation of pre-built files | | +| Jonathan James Tynan | Fix bug in closest_point_on_lines | | +| Jonathan James Tynan | Identify missing functionality from SwinGame | | +| Jonathan James Tynan | Fix guides index page | | +| Jonathan James Tynan | Exit Handling Research for SplashKit | | +| Jonathan James Tynan | Fix Splashkit Translator Docker Container | | +| Jonathan James Tynan | GPIO Extension Research for Raspberry Pi 5 and Linux SBCs | | +| Jonathan James Tynan | Add showcase page | | +| Jonathan James Tynan | Update Broken Splashkit.io Links | | +| Jonathan James Tynan | Add unit tests for utility functions | | +| Jonathan James Tynan | Base64 Splashkit image decoding function | | +| Jonathan James Tynan | Circle-Triangle Collision Detection Methods | | +| Jonathan James Tynan | Fix broken links in Arcade Build Doco | | +| Jonathan James Tynan | Fix bug in replace_all | | +| Jonathan James Tynan | Fix bugs in rnd | | +| Jonathan James Tynan | Fix issue with ipv4_to_str function | | +| Jonathan James Tynan | Rename 'label' Parameter | | +| Jonathan James Tynan | Test python version | | +| Jonathan James Tynan | Translator: Generate C# documentation comments from HeaderDoc | | +| Jonathan James Tynan | Updated Arcade Build Doco | | +| Jonathan James Tynan | Onboarding Hub - Add SplashKit Information | | +| Jonathan James Tynan | Rebuild the "Game Packaging" to work with remote repos | | +| Ka Chun Lam | Create raycasted point collision artifact | | +| Ka Chun Lam | Project B- Tutorial on Applying the Observer Pattern | | +| Ka Chun Lam | Project Bee - Debug rectangle/circle for the 'raindrops' | | +| Ka Chun Lam | Project Bee - Put red dot in the middle of projectiles |
    | +| Ka Chun Lam | Project Bee - Refactor code base to exhibit patterns (observer, mediator, strategy/visitor), and rename variables to be objects in the game itself (instead of subject/observer) | | +| Ka Chun Lam | Project Bee - Replace crate image with raindrop, replace projectile image with pollen | | +| Ka Chun Lam | Project Bee - create collision with Observer pattern | | +| Ka Chun Lam | Project Bee - create player class | | +| Ka Chun Lam | Project Bee - programming plan | | +| Ka Chun Lam | Project Bee- Tutorial combining design patterns | | +| Ka Chun Lam | Project Bee- apply Gravity | | +| Ka Chun Lam | ProjectB - Create Health, Timer, Start game, End game function | | +| Ka Chun Lam | ProjectB- Fix Segmentation Fault and Update Observer Notification | | +| Ka Chun Lam | ProjectB- Observer Pattern | | +| Ka Chun Lam | ProjectB-Bullet Factory Functionality | | +| Ka Chun Lam | project Bee - Obstacle class |
    | +| Ka Chun Lam | Create 1-2 page condensed, high level implementation pattern guide for rapid onboarding | | +| Ka Chun Lam | project Bee - create programming plan | | +| Ka Chun Lam | Create artifact demoing discrete grid based approach to light marching | | +| Ka Chun Lam | Venture Adventure - fix level numbering scheme | | +| Kartik Kaushik | Create Code Usage Examples for CreateSprite | | +| Kartik Kaushik | Create Code Usage Examples for Draw sprite | | +| Kartik Kaushik | Create Code Usage Examples for Free sprite | | +| Kartik Kaushik | Create Code Usage Examples for sprite set position | | +| Kartik Kaushik | Create Code Usage Examples for sprite set velocity | | +| Kartik Kaushik | Create Code Usage Examples for sprite set x | | +| Kartik Kaushik | Create Code Usage Examples for sprite set y | | +| Kartik Kaushik | Github Guide | | +| Kartik Kaushik | Styling Using Interfaces Tutorial - C# Language Update | | +| Kartik Kaushik | Understanding Double Buffering Tutorial - C# Language Update | | +| Kartik Kaushik | Writing JSON data Tutorial - C# Language Update | | +| Mark Heath | Arcade game repo - fix outstanding merge conflicts |











    | +| Mark Heath | Below The Surface - Mario Level Broken | | +| Mark Heath | Create raycasted point collision artifact | | +| Mark Heath | Project Bee - programming plan | | +| Mark Heath | All games - locally-compiled exe(s) are platform-specific | | +| Mark Heath | Below The Surface - level 9 (FIGHT) has a collision issue next to the exit | | +| Mark Heath | Create 1-2 page condensed, high level implementation pattern guide for rapid onboarding | | +| Mark Heath | Misc games - fix merge conflicts from T1 PRs | | +| Mark Heath | Venture Adventure - fix bundle files | | +| Mark Heath | Venture Adventure - fix level music | | +| Mark Heath | Venture Adventure - remove outdated credit | | +| Mark Heath | Venture Adventure - small refactor |



    | +| Mark Heath | project Bee - create programming plan | | +| Mark Heath | Create artifact demoing discrete grid based approach to light marching | | +| Mark Heath | Venture Adventure - fix level numbering scheme | | +| Matthew James Harding | Fix typo in vector magnitude squared documentation | | +| Matthew James Harding | Investigate bug in move_sprite_to | | +| Matthew James Harding | Add bitmap, sound effect and music unit tests | | +| Matthew James Harding | Fix bug in closest_point_on_lines | | +| Matthew James Harding | Interface Minification Option | | +| Matthew James Harding | Show message to user requesting them to click into the Execution Environment iFrame to get audio working | | +| Matthew James Harding | Add Network Unit Tests | | +| Matthew James Harding | Add unit tests for utility functions | | +| Matthew James Harding | Arcade Menu - Add additional controls | | +| Matthew James Harding | Base64 Splashkit image decoding function | | +| Matthew James Harding | Circle-Triangle Collision Detection Methods | | +| Matthew James Harding | Develop Test Menu for Arcade Machine | | +| Matthew James Harding | Fix bug in replace_all | | +| Matthew James Harding | Fix bugs in rnd | | +| Mounika Angadipeta | Add C# code blocks to the 3 JSON guides | | +| Mounika Angadipeta | Add Python code blocks to "Using Mouse Inputs" guide | | +| Mounika Angadipeta | Tutorial Proposal - 2D Vectors | | +| Mounika Angadipeta | Create Code Usage Examples for: "fill_triangle_on_bitmap" function | | +| Mounika Angadipeta | Introduction to JSON Tutorial - C# Language Update | | +| Mounika Angadipeta | Reading JSON data Tutorial - C# Language Update | | +| Mounika Angadipeta | Review "Introduction to JSON" guide |
    | +| Mounika Angadipeta | Review: "Using Mouse Inputs" guide |
    | +| Mounika Angadipeta | Add python code blocks to the Introduction to JSON in SplashKit | | +| Mounika Angadipeta | Splashkit Camera Tutorial - C# Language Update | | +| Mounika Angadipeta | Using Mouse Inputs Tutorial - C# Language Update | | +| Mounika Angadipeta | Using Splashkit Audio Tutorial - C# Language Update | | +| Nidhisha Pahade | SplashKit Website Onboarding Hub / Website Overhaul | | +| Nidhisha Pahade | Create Code Usage Examples for CreateSprite | | +| Nidhisha Pahade | Github Guide | | +| Nidhisha Pahade | Review "Getting Started with Servers" guide |
    | +| Nidhisha Pahade | Review "Useful Utilities" guide |
    | +| Nidhisha Pahade | Styling Using Interfaces Tutorial - C# Language Update | | +| Nidhisha Pahade | Understanding Double Buffering Tutorial - C# Language Update | | +| Nidhisha Pahade | Creating User Interfaces Tutorial - C# Language Update | | +| Nidhisha Pahade | Creating User Interfaces Tutorial - Python Language Update | | +| Nidhisha Pahade | Drawing using Procedures Tutorial - C# Language Update | | +| Nidhisha Pahade | Layouts in User Interfaces Tutorial - Python Language Update | | +| Nidhisha Pahade | Layouts in user interfaces Tutorial - C# Language Update | | +| Nidhisha Pahade | Styling User Interfaces Tutorial - Python Language Update | | +| Nidhisha Pahade | Using Animations Tutorial - C# Language Update | | +| Oliver Exell-Bruce | Fix API Page Parameter Table Formatting | | +| Oliver Exell-Bruce | Fix guides index page | | +| Oliver Exell-Bruce | Website Styling | | +| Oliver Exell-Bruce | Add showcase page | | +| Oliver Exell-Bruce | Review "Getting Started with Servers" guide |
    | +| Oliver Exell-Bruce | Review "Useful Utilities" guide |
    | +| Oliver Exell-Bruce | SplashKit Tutorial - 2D Vectors | | +| Oliver Exell-Bruce | Styling Using Interfaces Tutorial - C# Language Update | | +| Oliver Exell-Bruce | Understanding Double Buffering Tutorial - C# Language Update | | +| Oliver Exell-Bruce | Creating User Interfaces Tutorial - C# Language Update | | +| Oliver Exell-Bruce | Creating User Interfaces Tutorial - Python Language Update | | +| Oliver Exell-Bruce | Drawing using Procedures Tutorial - C# Language Update | | +| Oliver Exell-Bruce | Layouts in User Interfaces Tutorial - Python Language Update | | +| Oliver Exell-Bruce | Layouts in user interfaces Tutorial - C# Language Update | | +| Oliver Exell-Bruce | Styling User Interfaces Tutorial - Python Language Update | | +| Oliver Exell-Bruce | Using Animations Tutorial - C# Language Update | | +| Oscar Harris | Create raycasted point collision artifact | | +| Oscar Harris | Create 1-2 page condensed, high level implementation pattern guide for rapid onboarding | | +| Oscar Harris | Create artifact demoing discrete grid based approach to light marching | | +| Sana Noureen | Update Tab Logo | | +| Sana Noureen | Website Styling | | +| Sana Noureen | Dec to Hex Usage Example | | +| Sana Noureen | Documentation Site Styling | | +| Sana Noureen | Write Line INTEGER - Usage Example for Terminal | | +| Sharvani Kandala | Create Code Usage Examples for: "fill_triangle" function | | +| Sharvani Kandala | Tutorial Proposal- Camera control functions | | +| Sharvani Kandala | Create Code Usage Examples for: "fill_ellipse" function | | +| Sharvani Kandala | Create Code Usage Examples for: "fill_rectangle" function | | +| Sharvani Kandala | Create Code Usage Examples for: "fill_triangle_on_bitmap" function | | +| Sharvani Kandala | Create Code Usage Examples for Draw sprite | | +| Sharvani Kandala | Create Code Usage example for:"clear_screen" function | | +| Sharvani Kandala | IPv4 to Decimal Usage Example | | +| Sharvani Kandala | IPv4 to Hex Usage Example | | +| Sharvani Kandala | Review "How to make a RESTful API call" guide |
    | +| Sharvani Kandala | Dynamic Camera Control Tutorial | | +| Shaun Ratcliff | Add C# code blocks to the 3 JSON guides | | +| Shaun Ratcliff | Splashkit tutorial - Documentation Update | | +| Shaun Ratcliff | Tutorial Proposal - 2D Vectors | | +| Shaun Ratcliff | Validate/Update Processes, Policies and FAQs | | +| Shaun Ratcliff | Fix API Page Parameter Table Formatting | | +| Shaun Ratcliff | Fix guides index page | | +| Shaun Ratcliff | Website Styling | | +| Shaun Ratcliff | Instructions for How To Add Game to Showcase Page | | +| Shaun Ratcliff | SplashKit Website Onboarding Hub / Website Overhaul | | +| Shaun Ratcliff | Add showcase page | | +| Shaun Ratcliff | Create Code Usage example for:"clear_screen" function | | +| Shaun Ratcliff | Documentation Site Styling | | +| Shaun Ratcliff | Reading JSON data Tutorial - C# Language Update | | +| Shaun Ratcliff | Review "Introduction to JSON" guide |
    | +| Shaun Ratcliff | SplashKit Tutorial - 2D Vectors | | +| Shaun Ratcliff | Update Broken Splashkit.io Links | | +| Shaun Ratcliff | Write Line INTEGER - Usage Example for Terminal | | +| Shaun Ratcliff | Dynamic Camera Control Tutorial | | +| Shaun Ratcliff | Onboarding Hub - Add SplashKit Information | | +| Simon Zhu | Below The Surface - level 9 (FIGHT) has a collision issue next to the exit | | +| Thomas James Shanahan | All games - locally-compiled exe(s) are platform-specific | | +| Thomas James Shanahan | Below The Surface - level 9 (FIGHT) has a collision issue next to the exit | | +| Thomas James Shanahan | project Bee - create programming plan | | +| Thomas James Shanahan | Venture Adventure - fix level numbering scheme | | +| Will Saunders | Define process for copying games to Arcade Machine | | +| Will Saunders | Initial implementation of remote GPIO control | | +| Will Saunders | Investigate bug in move_sprite_to | | +| Will Saunders | Add bitmap, sound effect and music unit tests | | +| Will Saunders | Interface Minification Option | | +| Will Saunders | Show message to user requesting them to click into the Execution Environment iFrame to get audio working | | +| Will Saunders | Add Network Unit Tests | | +| Will Saunders | Arcade Machine Splashkit splash screen on startup | | +| Will Saunders | Arcade Menu - Add additional controls | | +| Will Saunders | Base64 Splashkit image decoding function | | +| Will Saunders | Develop Test Menu for Arcade Machine | | +| Will Saunders | Fix broken links in Arcade Build Doco | | +| Will Saunders | Rename 'label' Parameter | | +| Will Saunders | Test python version | | +| Will Saunders | Updated Arcade Build Doco | | +| Will Saunders | Update Splashkit Sprite tutorial | | +| Yuyang Yang | Add C# code blocks to the 3 JSON guides | | +| Yuyang Yang | Add Python code blocks to "Using Mouse Inputs" guide | | +| Yuyang Yang | Graphical Application - Graphical operation management | | +| Yuyang Yang | Introduction to JSON Tutorial - C# Language Update | | +| Yuyang Yang | Reading JSON data Tutorial - C# Language Update | | +| Yuyang Yang | Review "How to make a RESTful API call" guide |
    | +| Yuyang Yang | Review "Introduction to JSON" guide |
    | +| Yuyang Yang | Review "Splashkit Camera" Guide |
    | +| Yuyang Yang | Review: "Using Mouse Inputs" guide |
    | +| Yuyang Yang | Writing JSON data Tutorial - C# Language Update | | +| Yuyang Yang | Review "Reading Text" Guide |
    | +| Yuyang Yang | Splashkit Camera Tutorial - C# Language Update | | +| Yuyang Yang | Using Mouse Inputs Tutorial - C# Language Update | | + +### Roadmap + +#### Arcade Machine + +- Consolidate documentation in one place or repository +- Add additional modes to the Arcade Machine software + - Kiosk Mode: Show only published games, ideal for events + - Normal Mode: Display both published and test games +- Implement Voting System: Integrate a voting system to give significance to the star ranking + currently available on the machines +- Correct the C# compatibility for ARM, as .NET currently does not run correctly in the emulated PI + environment used for C++ games +- Implement versioning for compiled games to manage updates effectively +- Continue development of [flipper](https://github.com/thoth-tech/flipper) Game Packaging Tool + +#### SplashKit.io Website + +- SplashKit.io Improvements + - Improve API Reference + - Continue to add usage examples for SplashKit API + - Integrate live demo's to provide interactive examples + - Add mechanism for the user to globally switch between programming languages in the API + reference + - Produce concise videos to support the documentation + - Enhance documentation with more interactive and user-friendly documentation elements + - Contributor Resources + - Develop resources to support community contributions + - Including detailed guides, best practices and an interactive forum +- Thoth Tech Documentation Website + - Improve Onboarding Hub + - Continue to expand and refine the Onboarding hub + - Create relevant guides, checklists and tutorials for all stages of the project documentation + and development lifecycle + - Develop detailed Onboarding paths to guide new students + - Implement a comprehensive upskilling section, containing curated learning materials + +#### SplashKit Tutorials + +- Continue Reviewing Current Tutorials: + - Compile and Run Tutorial Code: Ensure all example code works correctly, fixing any issues (e.g., + SplashKit Camera). Ensure they all use top level statements for C#, and include C++ and python + code. + - Proof-read Content: Verify that the wording is clear and comprehensible. + - Add Python Code Tabs: Include Python code examples in any tutorials currently missing them. +- Expand and Update Tutorials: + - Plan and develop new tutorials to cover the full range of SplashKit functionality. + - Develop a wide range of tutorials that cover all aspects of game development using SplashKit, + including advanced game mechanics, AI, physics, and more + - Continuously update existing tutorials to reflect changes in SplashKit. + - Develop advanced tutorials to cover more complex topics and advanced functionalities of + SplashKit. +- Interactive Tutorial Platform + - Develop an interactive platform where users can follow tutorials and write code directly within + their browser, with real-time feedback and code execution +- Create Introductory Level Games: + - Write short, introductory-level games using procedural C++/C#, with accompanying tutorials aimed + at SIT102 level beginner skills. + - Link to content on Programmers Guide to promote the use of pre-existing material. +- Create SplashKit Online IDE Tutorial: + - Develop a tutorial series on creating a game using the SplashKit Online IDE. +- Community Engagement and Feedback: + - Establish a system for receiving and incorporating feedback from the community to continuously + improve tutorials. + - Encourage contributions from the community and maintain a high standard for tutorial + submissions. + +#### SplashKit Expansion + +- Finish development of dev containers for SplashKit Core. + [See here](https://github.com/thoth-tech/documentation/tree/main/docs/Splashkit/DevEnviroment/Windows_DevContainer) + for more details. +- Deployment Packages: + - Brew Package: Finalise and fix existing Brew packages to ensure smooth installation and usage. +- Test and Fix SplashKit Functionality: + - Identify and resolve bugs in SplashKit functionality + - Investigate bug regarding drawing text to second window. See + [Issue #177](https://github.com/splashkit/splashkit-core/issues/177) for more information. + - Investigate and implement Pascal compilation fix. See + [Issue #151](https://github.com/splashkit/splashkit-core/issues/151) and relevant Planner card + for more information. + - Fix handling of negative enums in SplashKit Translator (this should be done; see Planner card + for status) +- Port SwinGame Functions to SplashKit: + - Review and port missing functions from SwinGames into SplashKit. +- Investigate MinGW Compatibility + - There have been issues with using SplashKit in MinGW, this needs to be investigated. +- Improve Raspberry Pi Functionality: + - Improve GPIO Error Handling (this should be done; see Planner card for status) + - Implement support for the Raspberry Pi 5, as current support only extends to Raspberry Pi 4B+. +- Further Integration Testing + - Conduct detailed testing and bug fixing of SplashKit functionality. + - Ensure both procedural and OOP versions of each function are thoroughly tested and reliable. +- Comprehensive Testing and Bug Fixing: + - Develop a comprehensive automated test suite to regularly test SplashKit functionality and + quickly identify and resolve new bugs. This ensures the framework remains stable and reliable as + new features are added and updates are made. + - Implement unit tests for functions without them + - Add tests for translator targets C#, Python and Pascal. + - Alternatively, investigate the difficulty of creating a translator module to automatically + translate the existing C++ tests into the translator target languages + +#### SplashKit Online + +- Embed Lite Version into SplashKit Website: + - Develop and implement a "lite" version of SplashKit Online for embedding in the SplashKit + website to demonstrate code snippets and showcase functionalities. + - Focus on interface changes to integrate seamlessly with the website. + - Improve loading times and caching to ensure smooth performance. +- Improve Project Management + - Project Handling: Add functionality for users to create, load, save, and delete projects within + the browser, managing multiple projects with unique names. + - Version Control: Integrate version control to track changes and revert to previous states as + needed. + - Export Project Builds: Enable exporting project builds as executables for C++ projects or single + HTML files for JavaScript projects for better portability and sharing. +- Improve SplashKit Online Interface: + - Code Editing and REPL Functionality: Implement auto-complete for variable parameters, add + breakpoints, and create variable watch windows to improve coding and debugging. +- Extended Language Support: + - C# Support: Continue to explore and add support for C# to broaden language options. + - Python Support: Investigate and add support for Python to accommodate additional user needs. +- Advanced Project Features: + - Integrated Code Snippets: Develop functionality for users to save and reuse code snippets within + their projects. + - Collaborative Features: Consider implementing collaborative features for simultaneous project + work among multiple users. + +#### Game Development + +- Establish Standardised Implementation Patterns: + - Enforce decoupling of data/functionality and decoupling of state/render patterns. + - Develop a prescribed implementation pattern to ensure consistency and quality across projects. +- Develop a "10 Minute Game": + - Collaboratively plan and execute the development of a simple game (e.g., idle game, tower + defence, survivor.io-like). + - Ensure core game mechanics are implemented in the first sprint. + - Focus the latter half of the trimester on improving visual representation, adding "juice," and + implementing variations of core game elements (e.g., enemies, powerups, weapons). + - This approach ensures that core functionality is completed within a single trimester, with + additional features developed against a standardised interface that integrates with the core + game types. +- Iterate on Prescribed Patterns: + - Adjust and refine the implementation pattern based on student feedback and experiences. +- Generate Development Artifacts: + - Create documentation covering the implementation of discrete game systems (e.g., terrain + generation systems using IDW/random walk/noise, 2D light marching, threaded state update and + render patterns). +- Improve Documentation: + - Existing games often lack adequate documentation. Good documentation can significantly increase + onboarding speed for new contributors. + - For completed games, create UML diagrams, overviews of gameplay mechanics, and guides for + creating levels in each game’s format. + - Address the discoverability of existing documentation and resources. Update README files to + reflect the current focus of work and ensure existing documentation is easy to find. +- Complete Core Functionality of Incomplete Games: + - Focus on finishing significant core functionalities in games that are currently incomplete + (e.g., Sky Surge, Single Combat). +- Extend Gameplay and Functionality of Completed Games: + - Enhance and expand the gameplay and features of games that are already completed, ensuring they + continue to engage and challenge players. + +### Open Issues + +The SplashKit team has faced several challenges over Trimester 2, 2024. These are detailed below: + +- Lack of Communication Between Project Groups + - While individual communication channels, threads, and chats exist for each project, there is a + notable absence of overarching organisation. The lack of regular meetings between teams or with + the entire company has led to confusion, poor coordination, and duplicated efforts. In some + cases, tasks were reassigned or duplicated by different team members without clear + communication, causing disruptions in workflow. This decentralised communication structure has + hindered collaboration across projects and created barriers to progress. +- Insufficient Onboarding Information and Lack of Codebase Exploration + - A recurring issue was the lack of exploration of the existing codebase by team members, both in + terms of finished and unfinished work. As a result, students often replicated previous efforts + instead of building on them, such as recreating Git contribution guides or developer environment + setup guides unnecessarily. This issue stems from insufficient documentation practices and a + lack of familiarity with existing resources, causing inefficiencies and wasted effort. +- Team Members Performing Duplicate Work + - The combination of communication gaps and poor documentation has directly led to duplicated + work. Without a clear mechanism to track or share ongoing progress across teams, individuals + have inadvertently recreated work completed by others. This redundancy has slowed down + development and caused unnecessary strain on resources. + +A possible solution to these issues would be the implementation of regular cross-team meetings and +company-wide updates. These would provide a clearer understanding of each team’s progress, +facilitate better collaboration, and reduce duplicated efforts. Additionally, enhancing overall +documentation and establishing more robust processes for tracking work across projects would help +ensure that past work is utilised effectively moving forward. + +### Product Development Life Cycle + +#### New Tasks + +In SplashKit it is up to individuals to assign themselves to cards – generally speaking, it is fine +to assign oneself to any card unless otherwise noted. New cards are created by discussing the +problem with mentors, either during stand-ups or directly – if approved, the mentor will create the +card and you can assign yourself to it. + +#### Definition of Done + +A task is only considered fully done once it has been completed, submitted as a pull request, and +reviewed by two other students who approve it (see below). Once a mentor reviews it, it may be +considered fully complete, or potentially moved back to doing if unsatisfactory. + +#### Task Review + +Two mandatory peer reviews must be completed before the mentor review. Once the pull request is +made, contact a teammate for a review and upon agreement, tag this teammate under the Teams Planner +card and GitHub pull request as the reviewer. Make sure to review and test the code syntax, logic, +and output through pulling the changes unto your local machine if you are the reviewer. If the +reviewer requests any changes, update the contribution, and notify the reviewer. Once the changes +are committed and pushed, it will automatically update the pull request; thus, there is no need to +make another pull request. +[Watch this tutorial video by Satika Jayawardena](https://deakin365.sharepoint.com/:v:/r/sites/ThothTech2/Shared%20Documents/OnTrack/Demo%20videos/pull-request-demo.mov?csf=1&web=1&e=a6p1gg&nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJTdHJlYW1XZWJBcHAiLCJyZWZlcnJhbFZpZXciOiJTaGFyZURpYWxvZy1MaW5rIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXcifX0%3D) +from the OnTrack team on creating and reviewing someone else’s pull request. + +Once the peer review is complete and your contribution was deemed correct by your teammate, the pull +request may be moved into the Mentor Review column – in time, a mentor will review the work, and if +it is deemed satisfactory it will be considered complete and moved into the current sprint’s +Complete column. + +#### Testing + +Testing strategies depend on the project – please see each project’s onboarding information for more +details. + +#### Branching Strategy + +Refer to the Branch Prefixes and Commit Message Format sections of the +[Git Contributions Guide](https://thoth-tech.netlify.app/resources/quality-assurance/git-contributions-guide/) +for guidelines on creating Git branches and commits for contributions. + +### Product Architecture + +#### SplashKit.io Website + +The SplashKit.io website is the primary portal for developers and learners, offering a modern, +responsive interface built with Starlight (Astro), React, SolidJS, Tailwind CSS, Node.js, and +Docker. It provides users with access to API documentation, installation guides, and tutorials, +making it essential for anyone looking to learn or expand their knowledge of SplashKit. This website +supports external developers, especially beginners, in using SplashKit for 2D game development and +interactive applications. + +#### SplashKit SDK + +The SplashKit SDK is a versatile toolkit designed to simplify 2D game development and interactive +application creation. It is primarily built using C++, SDL, and OpenGL, and is managed through CMake +and Clang/LLVM. The SDK supports cross-platform development on Windows, macOS, Linux, and Raspberry +Pi, allowing developers to create applications that run on multiple platforms using a single +codebase. Additionally, the SDK includes automated translation into C#, Python, and Pascal. + +#### SplashKit Online + +SplashKit Online is a web-based Integrated Development Environment (IDE) that enables users to +write, compile, and run SplashKit projects directly in their browsers. It supports JavaScript and +experimental C++ through WebAssembly (WASM) via Emscripten. The platform uses Node/NPM for +dependency management and test server operation. SplashKit Online aims to make it easy for +developers, particularly beginners, to get started with SplashKit without needing to install any +software. + +#### Arcade Machine + +The SplashKit-powered arcade machines, developed in collaboration with Deakin University, run on +Raspberry Pi using emulationstation and retropie. These machines allow students and developers to +upload and test games developed with SplashKit in a real-world arcade setting. The machines offer a +hands-on experience where games can be played and evaluated using physical arcade hardware. + +#### Game Development + +The Game Development team produces games that showcase SplashKit's capabilities. These games are +typically built using C++ or C# and adhere to industry-standard game design practices. The games +serve as examples of what can be achieved using SplashKit, demonstrating various features of the +SDK, including graphics, input handling, and audio management. + +### Source Code + +- [Github Account](https://github.com/thoth-tech) +- Arcade Machine + - [arcade-machine](https://github.com/thoth-tech/arcade-machine) + - [arcade-machine-startup](https://github.com/thoth-tech/arcade-machine-startup) + - [ArcadeMenu](https://github.com/thoth-tech/ArcadeMenu) + - [flipper](https://github.com/thoth-tech/flipper) +- SplashKit Expansion + - [splashkit-core](https://github.com/thoth-tech/splashkit-core), + [skm](https://github.com/thoth-tech/skm) +- [SplashKit Website](https://github.com/thoth-tech/splashkit.io-starlight) +- [Games Development](https://github.com/thoth-tech/arcade-games) +- [SplashKit Online](https://github.com/thoth-tech/splashkitonline) + +### Showcase Video + +The videos in the following folder summarise our efforts this trimester in SplashKit: + +- [Showcase Videos](https://deakin365.sharepoint.com/:f:/r/sites/ThothTech2/Shared%20Documents/General/Company%20Documents%20%26%20Videos/2024%20T2/Showcase%20Video?csf=1&web=1&e=ezMp06) diff --git a/src/content/docs/teams-and-leadership/2024 Trimester 2/leadership-t2-2024.md b/src/content/docs/teams-and-contributions/2024 Trimester 2/leadership-t2-2024.md similarity index 100% rename from src/content/docs/teams-and-leadership/2024 Trimester 2/leadership-t2-2024.md rename to src/content/docs/teams-and-contributions/2024 Trimester 2/leadership-t2-2024.md diff --git a/src/content/docs/teams-and-leadership/2024 Trimester 2/organizational-structure-t2-2024.md b/src/content/docs/teams-and-contributions/2024 Trimester 2/organizational-structure-t2-2024.md similarity index 100% rename from src/content/docs/teams-and-leadership/2024 Trimester 2/organizational-structure-t2-2024.md rename to src/content/docs/teams-and-contributions/2024 Trimester 2/organizational-structure-t2-2024.md diff --git a/src/content/docs/teams-and-leadership/2024 Trimester 2/team-members-t2-2024.md b/src/content/docs/teams-and-contributions/2024 Trimester 2/team-members-t2-2024.md similarity index 100% rename from src/content/docs/teams-and-leadership/2024 Trimester 2/team-members-t2-2024.md rename to src/content/docs/teams-and-contributions/2024 Trimester 2/team-members-t2-2024.md