diff --git a/.husky/pre-commit b/.husky/pre-commit index 0ad376d..6c60fd7 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1 @@ -npm run check +pnpm run check diff --git a/.vscode/launch.json b/.vscode/launch.json index 7535767..95bd7d9 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,6 +10,12 @@ "name": "Docs development server (Astro)", "request": "launch", "type": "node-terminal" - } + }, + { + "command": "./node_modules/.bin/astro check --watch", + "name": "Watch Astro checks", + "request": "launch", + "type": "node-terminal" + } ] } diff --git a/astro.config.mts b/astro.config.mts index 5b2f875..6e482d6 100644 --- a/astro.config.mts +++ b/astro.config.mts @@ -2,7 +2,9 @@ import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; import starlightHeadingBadgesPlugin from 'starlight-heading-badges'; -import { BASE_GITHUB_URL, MARKETPLACE_URL } from './consts/links'; +import starlightSidebarTopicsPlugin from 'starlight-sidebar-topics'; + +import { BASE_GITHUB_ORG, MARKETPLACE_URL } from './consts/links'; // typescript aliasing doesn't work here for some reason (it does in the mdx pages tho) /** @todo https://starlight.astro.build/resources/plugins/#plugins */ @@ -12,30 +14,125 @@ export default defineConfig({ base: '/docs', integrations: [ starlight({ - plugins: [starlightHeadingBadgesPlugin()], + plugins: [starlightHeadingBadgesPlugin(), starlightSidebarTopicsPlugin([ // todo: Should API & web be in a separate section? + { + label: 'Base Extension', + link: '/client/', + icon: 'laptop', + items: [ + { + label: 'Guides', + autogenerate: { + directory: 'client/guides', + collapsed: true + } + }, + { + label: 'Reference', + autogenerate: { + directory: 'client/reference', + collapsed: true + } + }, + { + label: "MCP", + autogenerate: { + directory: "client/mcp", + collapsed: true + } + } + ] + }, + { + label: 'Server Extension', + link: '/server/', + badge: { text: 'Coming later!', variant: 'danger' }, + icon: 'vscode', + items: [ + { + label: 'Guides', + autogenerate: { + directory: 'server/guides', + collapsed: true + } + }, + { + label: 'Reference', + autogenerate: { + directory: 'server/reference', + collapsed: true + } + } + ] + }, + { + label: 'Container Presets', + link: '/images/', + icon: 'seti:docker', + items: [ + { + label: 'Python', + autogenerate: { + directory: 'images/python', + collapsed: true + } + }, + { + label: 'JavaScript', + autogenerate: { + directory: 'images/javascript', + collapsed: true + } + } + ] + }, + { + label: 'Meta', + link: '/meta/', + badge: { text: 'Contributors' }, + icon: 'list-format', + items: [ + 'meta/assets', + { + label: 'Contributors', + autogenerate: { + directory: 'meta/contributors', + collapsed: true + } + } + ], + }, + { + label: 'Unit tests', + icon: 'approve-check-circle', + badge: { text: 'External', variant: 'note' }, + link: 'https://vsc-neuropilot.github.io/unit-tests' + } + ], + )], favicon: '/heart-pink.svg', customCss: [ './src/styles/icons.css', './src/styles/starlight.css' ], head: [ - /*{ + { tag: 'link', attrs: { rel: 'icon', href: '/docs/heart-pink.svg' } - }*/ + } ], title: 'NeuroPilot Docs', editLink: { - baseUrl: BASE_GITHUB_URL + '/edit/master/docs' + baseUrl: BASE_GITHUB_ORG + '/docs/edit/master/' }, lastUpdated: true, + pagination: false, logo: { - dark: './src/assets/evilpilot.svg', - light: './src/assets/neuropilot.svg', - alt: 'NeuroPilot and EvilPilot icons' + src: './public/heart-xaendril.png', + alt: 'v2 NeuroPilot logo' }, social: [ { @@ -45,63 +142,8 @@ export default defineConfig({ }, { icon: 'github', - label: 'NeuroPilot GitHub', - href: BASE_GITHUB_URL, - }, - ], - sidebar: [ - { - label: 'Guides', - items: [ - { - label: 'Setup NeuroPilot', - badge: { text: 'Start here!', variant: 'tip' }, - slug: 'guides/setup', - }, - { - label: 'Pilot modes', - slug: 'guides/pilot', - }, - { - label: 'Sandboxing', - badge: { text: 'WIP', variant: 'caution' }, - slug: 'guides/sandboxing' - } - ], - }, - { - label: 'Reference', - items: [ - { - label: 'Features', - autogenerate: { - directory: 'reference/features', - collapsed: true - } - }, - { label: 'Safety', slug: 'reference/safety', badge: { text: 'Important', variant: 'danger' } }, - { label: 'Commands', slug: 'reference/commands' }, - { label: 'Context', slug: 'reference/auto-context', badge: { text: 'Stub', variant: 'caution' } }, - { label: 'Cookies', slug: 'reference/cookies', badge: { text: 'Stub', variant: 'caution' } }, - { label: 'Cursor', slug: 'reference/cursor', badge: { text: 'Conditional', variant: 'success' } }, - { label: 'Permissions', slug: 'reference/permissions', badge: { text: 'Important', variant: 'danger' } }, - { label: 'RCE', slug: 'reference/rce', badge: { text: 'Core', variant: 'note' } }, - { label: 'Settings', slug: 'reference/settings' }, - { label: 'Dependencies', slug: 'reference/dependencies' }, - ], - }, - { - label: 'NeuroPilot Assets', - badge: { text: 'Meta', variant: 'note' }, - slug: 'assets' - }, - { - label: 'Contributors', - badge: { text: 'Meta', variant: 'note' }, - autogenerate: { - directory: 'contributors', - collapsed: true - } + label: 'VSC-NeuroPilot organization', + href: BASE_GITHUB_ORG } ], components: { diff --git a/consts/links.ts b/consts/links.ts index 5a873f9..7c4ddd8 100644 --- a/consts/links.ts +++ b/consts/links.ts @@ -1,4 +1,4 @@ -export const BASE_GITHUB_URL: string = "https://github.com/VSC-NeuroPilot/neuropilot" +export const BASE_GITHUB_ORG: string = "https://github.com/VSC-NeuroPilot" type MarketplaceLinks = "page" | "direct" export const MARKETPLACE_URL = (type: MarketplaceLinks) => { if (type === "page") { @@ -7,4 +7,5 @@ export const MARKETPLACE_URL = (type: MarketplaceLinks) => { return "vscode:extension/Pasu4.neuropilot" } else return "/" -} \ No newline at end of file +} +export const SHOWCASE_IGNORES: string[] = ["actions-user", "dependabot[bot]", "Copilot"] \ No newline at end of file diff --git a/package.json b/package.json index 573e7b3..1fd1d72 100644 --- a/package.json +++ b/package.json @@ -13,14 +13,17 @@ "compile": "astro build", "preview": "astro preview", "check": "astro check", - "astro": "astro" + "astro": "astro", + "postinstall": "astro sync" }, "dependencies": { "@astrojs/starlight": "~0.35.2", "astro": "~5.13.4", "sharp": "~0.32.5", "starlight-contributor-list": "~0.3.0", - "starlight-heading-badges": "~0.6.0" + "starlight-heading-badges": "~0.6.0", + "starlight-showcases": "~0.3.0", + "starlight-sidebar-topics": "~0.6.0" }, "devDependencies": { "@astrojs/check": "~0.9.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06eb498..8e0677a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,19 +10,25 @@ importers: dependencies: '@astrojs/starlight': specifier: ~0.35.2 - version: 0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + version: 0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) astro: specifier: ~5.13.4 - version: 5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) + version: 5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) sharp: specifier: ~0.32.5 version: 0.32.6 starlight-contributor-list: specifier: ~0.3.0 - version: 0.3.0(@astrojs/starlight@0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))) + version: 0.3.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))) starlight-heading-badges: specifier: ~0.6.0 - version: 0.6.0(@astrojs/starlight@0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))) + version: 0.6.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))) + starlight-showcases: + specifier: ~0.3.0 + version: 0.3.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)))(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + starlight-sidebar-topics: + specifier: ~0.6.0 + version: 0.6.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))) devDependencies: '@astrojs/check': specifier: ~0.9.4 @@ -43,6 +49,19 @@ packages: resolution: {integrity: sha512-yIiLM5ziBmg86i4TlXpBdcIygJHvh/GgPJyAiFOckO9H4y9cQDM8eIcJCUQ4Mum0NEVui/OjhEut2R08xw0vlQ==} engines: {node: '>=14'} + '@astro-community/astro-embed-twitter@0.5.8': + resolution: {integrity: sha512-O2ptQPw+DfipukK8czjJcTcyVgDsrs3OmrHbc3YmWRglaUTOpSTImzPo076POyNBSWjLaRKloul81DFiAMNjTA==} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + + '@astro-community/astro-embed-utils@0.1.3': + resolution: {integrity: sha512-eiMO+vfCdE9GtW6qE7X5Xl6YCKZDCoXJEWqRofQcoC3GHjqN2/WhJlnaxNVRq3demSO03UNtho57Em5p7o7AOA==} + + '@astro-community/astro-embed-youtube@0.5.6': + resolution: {integrity: sha512-/mRfCl/eTBUz0kmjD1psOy0qoDDBorVp0QumUacjFcIkBullYtbeFQ2ZGZ+3N/tA6cR/OIyzr2QA4dQXlY6USg==} + peerDependencies: + astro: ^2.0.0 || ^3.0.0-beta || ^4.0.0-beta || ^5.0.0-beta + '@astrojs/check@0.9.4': resolution: {integrity: sha512-IOheHwCtpUfvogHHsvu0AbeRZEnjJg3MopdLddkJE70mULItS/Vh37BHcI00mcOJcH1vhD3odbpvWokpxam7xA==} hasBin: true @@ -822,8 +841,8 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.13.4: - resolution: {integrity: sha512-Mgq5GYy3EHtastGXqdnh1UPuN++8NmJSluAspA5hu33O7YRs/em/L03cUfRXtc60l5yx5BfYJsjF2MFMlcWlzw==} + astro@5.13.5: + resolution: {integrity: sha512-XmBzkl13XU97+n/QiOM5uXQdAVe0yKt5gO+Wlgc8dHRwHR499qhMQ5sMFckLJweUINLzcNGjP3F5nG4wV8a2XA==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -1015,6 +1034,9 @@ packages: crossws@0.3.5: resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-selector-parser@3.1.3: resolution: {integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==} @@ -1022,11 +1044,18 @@ packages: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} + engines: {node: '>= 6'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -1088,6 +1117,19 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -1104,6 +1146,10 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + entities@6.0.1: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} @@ -1413,6 +1459,9 @@ packages: html-whitespace-sensitive-tag-names@3.0.1: resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} @@ -1546,6 +1595,12 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + linkedom@0.14.26: + resolution: {integrity: sha512-mK6TrydfFA7phrnp+1j57ycBwFI5bGSW6YXlw9acHoqF+mP/y+FooEYYyniOt5Ot57FSKB3iwmnuQ1UUyNLm5A==} + + lite-youtube-embed@0.3.3: + resolution: {integrity: sha512-gFfVVnj6NRjxVfJKo3qoLtpi0v5mn3AcR4eKD45wrxQuxzveFJUb+7Cr6uV6n+DjO8X3p0UzPPquhGt0H/y+NA==} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2179,6 +2234,18 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.32.0' + starlight-showcases@0.3.0: + resolution: {integrity: sha512-jxKVE5IM0TZgRIni4YK1oKDh6C9pBh94oj2pKuhzg2/Cg1wjCrWy39U3i1bXkh6rL+Ly+ypQBPH3AD9cP6TLXA==} + engines: {node: '>=18'} + peerDependencies: + '@astrojs/starlight': '>=0.30.0' + + starlight-sidebar-topics@0.6.0: + resolution: {integrity: sha512-ysmOR7zaHYKtk18/mpW4MbEMDioR/ZBsisu9bdQrq0v9BlHWpW7gAdWlqFWO9zdv1P7l0Mo1WKd0wJ0UtqOVEQ==} + engines: {node: '>=18'} + peerDependencies: + '@astrojs/starlight': '>=0.32.0' + stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -2306,6 +2373,9 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + uhyphen@0.2.0: + resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} + ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} @@ -2695,6 +2765,20 @@ snapshots: - encoding - supports-color + '@astro-community/astro-embed-twitter@0.5.8(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))': + dependencies: + '@astro-community/astro-embed-utils': 0.1.3 + astro: 5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) + + '@astro-community/astro-embed-utils@0.1.3': + dependencies: + linkedom: 0.14.26 + + '@astro-community/astro-embed-youtube@0.5.6(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))': + dependencies: + astro: 5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) + lite-youtube-embed: 0.3.3 + '@astrojs/check@0.9.4(typescript@5.8.3)': dependencies: '@astrojs/language-server': 2.15.4(typescript@5.8.3) @@ -2759,12 +2843,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.4(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))': + '@astrojs/mdx@4.3.4(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))': dependencies: '@astrojs/markdown-remark': 6.3.6 '@mdx-js/mdx': 3.1.0(acorn@8.15.0) acorn: 8.15.0 - astro: 5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) + astro: 5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -2788,17 +2872,17 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight@0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))': + '@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))': dependencies: '@astrojs/markdown-remark': 6.3.6 - '@astrojs/mdx': 4.3.4(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + '@astrojs/mdx': 4.3.4(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) '@astrojs/sitemap': 3.5.0 '@pagefind/default-ui': 1.3.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) - astro-expressive-code: 0.41.3(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + astro: 5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) + astro-expressive-code: 0.41.3(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -3477,12 +3561,12 @@ snapshots: transitivePeerDependencies: - supports-color - astro-expressive-code@0.41.3(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)): + astro-expressive-code@0.41.3(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)): dependencies: - astro: 5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) + astro: 5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1) rehype-expressive-code: 0.41.3 - astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1): + astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1): dependencies: '@astrojs/compiler': 2.12.2 '@astrojs/internal-helpers': 0.7.2 @@ -3757,6 +3841,14 @@ snapshots: dependencies: uncrypto: 0.1.3 + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + css-selector-parser@3.1.3: {} css-tree@3.1.0: @@ -3764,8 +3856,12 @@ snapshots: mdn-data: 2.12.2 source-map-js: 1.2.1 + css-what@6.2.2: {} + cssesc@3.0.0: {} + cssom@0.5.0: {} + debug@4.4.1: dependencies: ms: 2.1.3 @@ -3808,6 +3904,24 @@ snapshots: dlv@1.1.3: {} + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dset@3.1.4: {} emmet@2.4.11: @@ -3823,6 +3937,8 @@ snapshots: dependencies: once: 1.4.0 + entities@4.5.0: {} + entities@6.0.1: {} es-module-lexer@1.7.0: {} @@ -4328,6 +4444,13 @@ snapshots: html-whitespace-sensitive-tag-names@3.0.1: {} + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + http-cache-semantics@4.2.0: {} i18next@23.16.8: @@ -4428,6 +4551,16 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + linkedom@0.14.26: + dependencies: + css-select: 5.2.2 + cssom: 0.5.0 + html-escaper: 3.0.3 + htmlparser2: 8.0.2 + uhyphen: 0.2.0 + + lite-youtube-embed@0.3.3: {} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -5461,24 +5594,37 @@ snapshots: space-separated-tokens@2.0.2: {} - starlight-contributor-list@0.3.0(@astrojs/starlight@0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))): + starlight-contributor-list@0.3.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))): dependencies: '@11ty/eleventy-fetch': 4.0.1 - '@astrojs/starlight': 0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + '@astrojs/starlight': 0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) transitivePeerDependencies: - encoding - supports-color - starlight-heading-badges@0.6.0(@astrojs/starlight@0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))): + starlight-heading-badges@0.6.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))): dependencies: '@astrojs/markdown-remark': 6.3.6 - '@astrojs/starlight': 0.35.2(astro@5.13.4(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + '@astrojs/starlight': 0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) github-slugger: 2.0.0 mdast-util-directive: 3.1.0 unist-util-visit: 5.0.0 transitivePeerDependencies: - supports-color + starlight-showcases@0.3.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)))(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)): + dependencies: + '@astro-community/astro-embed-twitter': 0.5.8(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + '@astro-community/astro-embed-youtube': 0.5.6(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + '@astrojs/starlight': 0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + transitivePeerDependencies: + - astro + + starlight-sidebar-topics@0.6.0(@astrojs/starlight@0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1))): + dependencies: + '@astrojs/starlight': 0.35.2(astro@5.13.5(@types/node@24.3.0)(rollup@4.46.2)(typescript@5.8.3)(yaml@2.8.1)) + picomatch: 4.0.3 + stream-replace-string@2.0.0: {} streamx@2.22.1: @@ -5617,6 +5763,8 @@ snapshots: ufo@1.6.1: {} + uhyphen@0.2.0: {} + ultrahtml@1.6.0: {} uncrypto@0.1.3: {} diff --git a/public/guides/VirtualBox-Host-Only-Adapter.png b/public/guides/VirtualBox-Host-Only-Adapter.png deleted file mode 100644 index 9ddb1eb..0000000 Binary files a/public/guides/VirtualBox-Host-Only-Adapter.png and /dev/null differ diff --git a/src/assets/docker-mark-blue.svg b/src/assets/docker-mark-blue.svg new file mode 100644 index 0000000..eba6cc4 --- /dev/null +++ b/src/assets/docker-mark-blue.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/github-mark.svg b/src/assets/github-mark.svg new file mode 100644 index 0000000..37fa923 --- /dev/null +++ b/src/assets/github-mark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/docker-mark-blue.svg b/src/assets/icons/docker-mark-blue.svg new file mode 100644 index 0000000..eba6cc4 --- /dev/null +++ b/src/assets/icons/docker-mark-blue.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/github-mark.svg b/src/assets/icons/github-mark.svg new file mode 100644 index 0000000..37fa923 --- /dev/null +++ b/src/assets/icons/github-mark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/Footer.astro b/src/components/Footer.astro index 95214c3..30097a1 100644 --- a/src/components/Footer.astro +++ b/src/components/Footer.astro @@ -3,13 +3,75 @@ import Default from '@astrojs/starlight/components/Footer.astro'; import { Icon } from '@astrojs/starlight/components'; // Import version info -import { docsVersion, docsNext } from '../utils/version'; +import { clientVersion, docsNext } from '@/utils/version'; +import { BASE_GITHUB_ORG } from '@consts/links'; + +// Gets the current path +const currentPath = Astro.url.pathname; +let currentTopic: string | null; +if (currentPath !== import.meta.env.BASE_URL + "/") { + const path = currentPath.substring(5).split("/")[1]; // for some reason splitting by "/" adds an empty string between each non-empty string item, so we're grabbing the second item, not the first + switch (path) { + case "client": + currentTopic = "ui" + break; + case "meta": + currentTopic = "meta" + break; + case "images": + currentTopic = "containers" + break; + case "server": + currentTopic = "workspace" + break; + default: + currentTopic = null + break; + } +} else { + currentTopic = "" +} + +// Logic needs to be placed such that we can case switch the path of the request and change the footer's text accordingly +// Otherwise it would make no sense if, for example, the server version's topic has the footer displaying the client version +// For now we can get away without it since we really only have the client-side code public, though I would like to test this using the meta topic ---