From 14645e9d6ce5657ff0803ef430a5a32446d30133 Mon Sep 17 00:00:00 2001 From: Lleyton Gray Date: Wed, 25 Feb 2026 22:44:16 -0800 Subject: [PATCH 01/15] migrate fumadocs repo into branch --- .github/dependabot.yml | 11 - .gitignore | 37 +- .prettierignore | 1 - .prettierrc.js | 4 - .vscode/extensions.json | 8 - .vscode/launch.json | 11 - .vscode/settings.json | 4 - README.md | 53 +- app/(home)/layout.tsx | 6 + app/(home)/page.tsx | 125 + app/api/search/route.ts | 9 + app/docs/[[...slug]]/page.tsx | 60 + app/docs/layout.tsx | 11 + app/global.css | 3 + app/layout.tsx | 17 + app/llms-full.txt/route.ts | 10 + app/og/docs/[...slug]/route.tsx | 34 + astro.config.mjs | 17 - bun.lock | 1128 ++-- components/provider.tsx | 8 + components/search.tsx | 46 + components/split.tsx | 59 + .../docs/about}/43-upgrades.mdx | 13 +- .../docs/about}/diff-fedora.mdx | 43 +- .../release => content/docs/about}/errata.mdx | 19 +- .../docs/about/index.mdx | 63 +- content/docs/about/meta.json | 6 + .../docs/anywhere/completed}/chromebook.mdx | 97 +- .../docs/anywhere/completed}/rpi.mdx | 67 +- .../docs/anywhere/completed}/surface.mdx | 5 - content/docs/anywhere/completed/wsl.mdx | 7 + .../anywhere/in-progress}/applesilicon.mdx | 11 +- .../docs/anywhere/in-progress}/xr.mdx | 26 +- .../docs/anywhere/index.mdx | 45 +- content/docs/anywhere/meta.json | 6 + .../docs/anywhere/planned}/android.mdx | 9 +- .../docs/anywhere/planned}/riscv.mdx | 7 +- .../docs/anywhere/planned/servers.mdx | 11 +- .../docs/anywhere/wishlist}/ott.mdx | 7 +- .../docs/anywhere/wishlist}/tegra.mdx | 9 +- .../docs/anywhere/wishlist}/thin.mdx | 7 +- .../docs}/community/codeofconduct.mdx | 3 - .../contributing/contributorguide.mdx | 22 +- .../docs/community}/contributing/hacking.mdx | 17 +- .../community}/contributing/mirroring.mdx | 4 - .../docs/community/index.mdx | 17 +- content/docs/community/meta.json | 6 + .../docs/get-started}/bioskeys.mdx | 8 +- .../docs/get-started/index.mdx | 55 +- .../docs/get-started}/installation.mdx | 33 +- content/docs/get-started/meta.json | 6 + .../post-installation}/broadcom-realtek.mdx | 9 +- .../get-started/post-installation/codecs.mdx | 54 +- .../get-started/post-installation}/nvidia.mdx | 21 +- .../post-installation/systemd-boot.mdx | 32 +- content/docs/get-started/requirements.mdx | 50 + .../docs/get-started}/wsl.mdx | 33 +- .../en => content/docs}/linux/devicefiles.mdx | 17 +- .../hi => content/docs}/linux/filesystem.mdx | 47 +- .../docs/linux/index.mdx | 22 +- content/docs/linux/meta.json | 6 + .../hi => content/docs}/linux/permissions.mdx | 2 - .../docs}/linux/securityprivacy.mdx | 9 +- .../docs/hi => content/docs}/linux/shell.mdx | 31 +- .../hi => content/docs}/linux/software.mdx | 76 +- .../docs/hi => content/docs}/linux/ssh.mdx | 240 +- .../en => content/docs}/usage/eduroam.mdx | 6 +- content/docs/usage/gaming.mdx | 128 + .../docs/hi => content/docs}/usage/hop.mdx | 27 +- content/docs/usage/index.mdx | 9 + .../docs}/usage/keyboard-cfg.mdx | 28 +- .../docs/en => content/docs}/usage/l10n.mdx | 71 +- content/docs/usage/meta.json | 6 + .../docs/hi => content/docs}/usage/umcli.mdx | 11 +- .../chromebook/chromebook.mdx | 2 - .../chromebook/getting.mdx | 7 +- docs-staging/chromebook/postinstall.mdx | 7 + .../chromebook/preparing.mdx | 9 +- .../chromebook/terminology.mdx | 2 - docs-staging/fido-keys.mdx | 71 + lib/layout.shared.tsx | 9 + lib/source.ts | 36 + mdx-components.tsx | 9 + next.config.mjs | 15 + package.json | 53 +- pnpm-lock.yaml | 4604 +++++++++++++++++ postcss.config.mjs | 5 + public/CNAME | 1 - public/assets/moonshot/moonshot.png | Bin 0 -> 113954 bytes public/assets/steam/compat.png | Bin 0 -> 83488 bytes public/assets/steam/menu.png | Bin 0 -> 28535 bytes public/assets/steam/selector.png | Bin 0 -> 62898 bytes public/favicon.ico | Bin 15086 -> 0 bytes public/make-scrollable-code-focusable.js | 3 - public/og-image.png | Bin 354234 -> 0 bytes source.config.ts | 22 + src/components/Docs/Alert.astro | 74 - src/components/Footer/Footer.astro | 19 - src/components/HeadCommon.astro | 38 - src/components/HeadSEO.astro | 50 - src/components/Header/Header.astro | 195 - src/components/Header/LanguageSelect.css | 47 - src/components/Header/LanguageSelect.tsx | 48 - src/components/Header/SidebarToggle.tsx | 43 - src/components/Header/SkipToContent.astro | 28 - src/components/Header/UltramarineLogo.astro | 45 - src/components/LeftSidebar/LeftSidebar.astro | 135 - src/components/PageContent/PageContent.astro | 51 - src/components/RightSidebar/MoreMenu.astro | 76 - .../RightSidebar/RightSidebar.astro | 34 - .../RightSidebar/TableOfContents.tsx | 98 - .../RightSidebar/ThemeToggleButton.css | 40 - .../RightSidebar/ThemeToggleButton.tsx | 82 - src/consts.ts | 185 - src/content/config.ts | 20 - src/content/docs/de/development/anda.md | 20 - .../development/developing-for-ultramarine.md | 67 - src/content/docs/de/development/ux-guide.md | 35 - .../docs/de/installation/getting-started.mdx | 83 - .../docs/de/installation/installation.mdx | 133 - .../docs/de/installation/postinstall.md | 38 - src/content/docs/de/linux/filesystem.mdx | 64 - src/content/docs/de/linux/overview.mdx | 57 - src/content/docs/de/linux/permissions.md | 26 - src/content/docs/de/linux/shell.mdx | 152 - src/content/docs/de/linux/software.md | 94 - src/content/docs/de/release/errata.mdx | 84 - src/content/docs/de/welcome.mdx | 27 - src/content/docs/en/anywhere/enterprise.mdx | 25 - src/content/docs/en/anywhere/steamdeck.mdx | 13 - src/content/docs/en/anywhere/surface.mdx | 60 - src/content/docs/en/anywhere/tegra.mdx | 67 - src/content/docs/en/chromebook/armbeta.mdx | 67 - src/content/docs/en/chromebook/chromebook.mdx | 16 - .../docs/en/chromebook/postinstall.mdx | 10 - .../docs/en/community/codeofconduct.mdx | 119 - src/content/docs/en/community/community.mdx | 47 - src/content/docs/en/contributing/hacking.mdx | 71 - .../docs/en/contributing/mirroring.mdx | 81 - src/content/docs/en/linux/filesystem.mdx | 87 - src/content/docs/en/linux/permissions.mdx | 30 - src/content/docs/en/linux/securityprivacy.mdx | 46 - src/content/docs/en/linux/shell.mdx | 202 - src/content/docs/en/linux/software.mdx | 91 - src/content/docs/en/linux/ssh.mdx | 123 - src/content/docs/en/release/41-upgrades.mdx | 57 - src/content/docs/en/release/42-upgrades.mdx | 46 - .../en/release/upgrade-to-ultramarine-40.mdx | 36 - src/content/docs/en/setup/bioskeys.mdx | 50 - .../docs/en/setup/broadcom-realtek.mdx | 30 - src/content/docs/en/setup/post-advanced.mdx | 97 - src/content/docs/en/setup/postinstall.mdx | 161 - src/content/docs/en/setup/readymade.mdx | 16 - src/content/docs/en/setup/requirements.mdx | 42 - src/content/docs/en/usage/gaming.mdx | 132 - src/content/docs/en/usage/hop.mdx | 45 - src/content/docs/en/usage/keyboard-cfg.mdx | 60 - src/content/docs/en/usage/um40-dnf5.mdx | 56 - src/content/docs/en/usage/umcli.mdx | 52 - src/content/docs/hi/anywhere/android.mdx | 17 - src/content/docs/hi/anywhere/anywhere.mdx | 57 - src/content/docs/hi/anywhere/applesilicon.mdx | 17 - src/content/docs/hi/anywhere/chromebook.mdx | 160 - src/content/docs/hi/anywhere/ott.mdx | 15 - src/content/docs/hi/anywhere/riscv.mdx | 13 - src/content/docs/hi/anywhere/rpi.mdx | 111 - src/content/docs/hi/anywhere/steamdeck.mdx | 13 - src/content/docs/hi/anywhere/thin.mdx | 21 - src/content/docs/hi/anywhere/wsl.mdx | 169 - src/content/docs/hi/anywhere/xr.mdx | 36 - src/content/docs/hi/chromebook/armbeta.mdx | 67 - src/content/docs/hi/chromebook/getting.mdx | 81 - .../docs/hi/chromebook/postinstall.mdx | 10 - src/content/docs/hi/chromebook/preparing.mdx | 70 - .../docs/hi/chromebook/terminology.mdx | 116 - .../docs/hi/contributing/contributorguide.mdx | 99 - src/content/docs/hi/contributing/hacking.mdx | 71 - src/content/docs/hi/linux/devicefiles.mdx | 154 - src/content/docs/hi/linux/overview.mdx | 62 - src/content/docs/hi/release/41-upgrades.mdx | 57 - src/content/docs/hi/release/42-upgrades.mdx | 46 - src/content/docs/hi/release/diff-fedora.mdx | 82 - src/content/docs/hi/release/errata.mdx | 175 - .../hi/release/upgrade-to-ultramarine-40.mdx | 36 - .../docs/hi/setup/broadcom-realtek.mdx | 30 - src/content/docs/hi/setup/getting.mdx | 119 - src/content/docs/hi/setup/installation.mdx | 92 - src/content/docs/hi/setup/nvidia.mdx | 37 - src/content/docs/hi/setup/post-advanced.mdx | 97 - src/content/docs/hi/setup/postinstall.mdx | 161 - src/content/docs/hi/setup/readymade.mdx | 16 - src/content/docs/hi/setup/requirements.mdx | 42 - src/content/docs/hi/usage/eduroam.mdx | 38 - src/content/docs/hi/usage/gaming.mdx | 132 - src/content/docs/hi/usage/l10n.mdx | 321 -- src/content/docs/hi/usage/um40-dnf5.mdx | 56 - src/content/docs/hi/welcome.mdx | 204 - src/content/docs/zh_hant/anywhere/android.mdx | 17 - .../docs/zh_hant/anywhere/applesilicon.mdx | 17 - .../docs/zh_hant/anywhere/chromebook.mdx | 132 - .../docs/zh_hant/anywhere/enterprise.mdx | 25 - src/content/docs/zh_hant/anywhere/ott.mdx | 15 - src/content/docs/zh_hant/anywhere/riscv.mdx | 13 - src/content/docs/zh_hant/anywhere/rpi.mdx | 70 - .../docs/zh_hant/anywhere/steamdeck.mdx | 13 - src/content/docs/zh_hant/anywhere/thin.mdx | 21 - src/content/docs/zh_hant/anywhere/xr.mdx | 13 - .../docs/zh_hant/chromebook/armbeta.mdx | 75 - .../docs/zh_hant/chromebook/chromebook.mdx | 16 - .../docs/zh_hant/chromebook/getting.mdx | 81 - .../docs/zh_hant/chromebook/postinstall.mdx | 10 - .../docs/zh_hant/chromebook/preparing.mdx | 70 - .../docs/zh_hant/chromebook/terminology.mdx | 116 - .../docs/zh_hant/community/codeofconduct.mdx | 117 - .../docs/zh_hant/community/community.mdx | 41 - .../zh_hant/contributing/contributorguide.mdx | 96 - .../developing-for-ultramarine.mdx | 68 - .../docs/zh_hant/development/ux-guide.mdx | 12 - .../docs/zh_hant/hardware/anywhere.mdx | 40 - .../docs/zh_hant/hardware/bioskeys.mdx | 32 - src/content/docs/zh_hant/hardware/nvidia.mdx | 33 - .../docs/zh_hant/hardware/requirements.mdx | 38 - src/content/docs/zh_hant/hardware/surface.mdx | 43 - .../docs/zh_hant/installation/getting.mdx | 116 - .../zh_hant/installation/installation.mdx | 116 - .../docs/zh_hant/installation/readymade.mdx | 16 - src/content/docs/zh_hant/installation/rpi.mdx | 83 - .../docs/zh_hant/linux/devicefiles.mdx | 154 - src/content/docs/zh_hant/linux/filesystem.mdx | 93 - src/content/docs/zh_hant/linux/overview.mdx | 60 - .../docs/zh_hant/linux/permissions.mdx | 30 - .../docs/zh_hant/linux/securityprivacy.mdx | 44 - src/content/docs/zh_hant/linux/shell.mdx | 202 - src/content/docs/zh_hant/linux/software.mdx | 99 - src/content/docs/zh_hant/release/errata.mdx | 104 - .../release/upgrade-to-ultramarine-40.mdx | 36 - src/content/docs/zh_hant/usage/gaming.mdx | 84 - src/content/docs/zh_hant/usage/l10n.mdx | 313 -- src/content/docs/zh_hant/usage/um40-dnf5.mdx | 56 - src/content/docs/zh_hant/welcome.mdx | 161 - src/env.d.ts | 10 - src/languages.ts | 10 - src/layouts/MainLayout.astro | 177 - src/pages/[...slug].astro | 22 - src/pages/index.astro | 3 - src/styles/index.css | 493 -- src/styles/theme.css | 115 - tsconfig.json | 34 +- 248 files changed, 6445 insertions(+), 12814 deletions(-) delete mode 100644 .github/dependabot.yml delete mode 100644 .prettierignore delete mode 100644 .prettierrc.js delete mode 100644 .vscode/extensions.json delete mode 100644 .vscode/launch.json delete mode 100644 .vscode/settings.json create mode 100644 app/(home)/layout.tsx create mode 100644 app/(home)/page.tsx create mode 100644 app/api/search/route.ts create mode 100644 app/docs/[[...slug]]/page.tsx create mode 100644 app/docs/layout.tsx create mode 100644 app/global.css create mode 100644 app/layout.tsx create mode 100644 app/llms-full.txt/route.ts create mode 100644 app/og/docs/[...slug]/route.tsx delete mode 100644 astro.config.mjs create mode 100644 components/provider.tsx create mode 100644 components/search.tsx create mode 100644 components/split.tsx rename {src/content/docs/en/release => content/docs/about}/43-upgrades.mdx (69%) rename {src/content/docs/en/release => content/docs/about}/diff-fedora.mdx (72%) rename {src/content/docs/en/release => content/docs/about}/errata.mdx (88%) rename src/content/docs/en/welcome.mdx => content/docs/about/index.mdx (85%) create mode 100644 content/docs/about/meta.json rename {src/content/docs/en/anywhere => content/docs/anywhere/completed}/chromebook.mdx (77%) rename {src/content/docs/en/anywhere => content/docs/anywhere/completed}/rpi.mdx (61%) rename {src/content/docs/hi/anywhere => content/docs/anywhere/completed}/surface.mdx (97%) create mode 100644 content/docs/anywhere/completed/wsl.mdx rename {src/content/docs/en/anywhere => content/docs/anywhere/in-progress}/applesilicon.mdx (51%) rename {src/content/docs/en/anywhere => content/docs/anywhere/in-progress}/xr.mdx (78%) rename src/content/docs/en/anywhere/anywhere.mdx => content/docs/anywhere/index.mdx (50%) create mode 100644 content/docs/anywhere/meta.json rename {src/content/docs/en/anywhere => content/docs/anywhere/planned}/android.mdx (68%) rename {src/content/docs/en/anywhere => content/docs/anywhere/planned}/riscv.mdx (79%) rename src/content/docs/hi/anywhere/enterprise.mdx => content/docs/anywhere/planned/servers.mdx (65%) rename {src/content/docs/en/anywhere => content/docs/anywhere/wishlist}/ott.mdx (84%) rename {src/content/docs/hi/anywhere => content/docs/anywhere/wishlist}/tegra.mdx (96%) rename {src/content/docs/en/anywhere => content/docs/anywhere/wishlist}/thin.mdx (81%) rename {src/content/docs/hi => content/docs}/community/codeofconduct.mdx (97%) rename {src/content/docs/en => content/docs/community}/contributing/contributorguide.mdx (87%) rename {src/content/docs/zh_hant => content/docs/community}/contributing/hacking.mdx (84%) rename {src/content/docs/hi => content/docs/community}/contributing/mirroring.mdx (96%) rename src/content/docs/hi/community/community.mdx => content/docs/community/index.mdx (78%) create mode 100644 content/docs/community/meta.json rename {src/content/docs/hi/setup => content/docs/get-started}/bioskeys.mdx (96%) rename src/content/docs/en/setup/getting.mdx => content/docs/get-started/index.mdx (71%) rename {src/content/docs/en/setup => content/docs/get-started}/installation.mdx (95%) create mode 100644 content/docs/get-started/meta.json rename {src/content/docs/zh_hant/hardware => content/docs/get-started/post-installation}/broadcom-realtek.mdx (69%) rename src/content/docs/zh_hant/installation/postinstall.mdx => content/docs/get-started/post-installation/codecs.mdx (56%) rename {src/content/docs/en/setup => content/docs/get-started/post-installation}/nvidia.mdx (57%) rename src/content/docs/zh_hant/installation/post-advanced.mdx => content/docs/get-started/post-installation/systemd-boot.mdx (78%) create mode 100644 content/docs/get-started/requirements.mdx rename {src/content/docs/en/anywhere => content/docs/get-started}/wsl.mdx (85%) rename {src/content/docs/en => content/docs}/linux/devicefiles.mdx (94%) rename {src/content/docs/hi => content/docs}/linux/filesystem.mdx (73%) rename src/content/docs/en/linux/overview.mdx => content/docs/linux/index.mdx (83%) create mode 100644 content/docs/linux/meta.json rename {src/content/docs/hi => content/docs}/linux/permissions.mdx (91%) rename {src/content/docs/hi => content/docs}/linux/securityprivacy.mdx (88%) rename {src/content/docs/hi => content/docs}/linux/shell.mdx (93%) rename {src/content/docs/hi => content/docs}/linux/software.mdx (57%) rename {src/content/docs/hi => content/docs}/linux/ssh.mdx (92%) rename {src/content/docs/en => content/docs}/usage/eduroam.mdx (91%) create mode 100644 content/docs/usage/gaming.mdx rename {src/content/docs/hi => content/docs}/usage/hop.mdx (56%) create mode 100644 content/docs/usage/index.mdx rename {src/content/docs/hi => content/docs}/usage/keyboard-cfg.mdx (51%) rename {src/content/docs/en => content/docs}/usage/l10n.mdx (87%) create mode 100644 content/docs/usage/meta.json rename {src/content/docs/hi => content/docs}/usage/umcli.mdx (89%) rename {src/content/docs/hi => docs-staging}/chromebook/chromebook.mdx (83%) rename {src/content/docs/en => docs-staging}/chromebook/getting.mdx (94%) create mode 100644 docs-staging/chromebook/postinstall.mdx rename {src/content/docs/en => docs-staging}/chromebook/preparing.mdx (94%) rename {src/content/docs/en => docs-staging}/chromebook/terminology.mdx (98%) create mode 100644 docs-staging/fido-keys.mdx create mode 100644 lib/layout.shared.tsx create mode 100644 lib/source.ts create mode 100644 mdx-components.tsx create mode 100644 next.config.mjs create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.mjs delete mode 100644 public/CNAME create mode 100644 public/assets/moonshot/moonshot.png create mode 100644 public/assets/steam/compat.png create mode 100644 public/assets/steam/menu.png create mode 100644 public/assets/steam/selector.png delete mode 100644 public/favicon.ico delete mode 100644 public/make-scrollable-code-focusable.js delete mode 100644 public/og-image.png create mode 100644 source.config.ts delete mode 100644 src/components/Docs/Alert.astro delete mode 100644 src/components/Footer/Footer.astro delete mode 100644 src/components/HeadCommon.astro delete mode 100644 src/components/HeadSEO.astro delete mode 100644 src/components/Header/Header.astro delete mode 100644 src/components/Header/LanguageSelect.css delete mode 100644 src/components/Header/LanguageSelect.tsx delete mode 100644 src/components/Header/SidebarToggle.tsx delete mode 100644 src/components/Header/SkipToContent.astro delete mode 100644 src/components/Header/UltramarineLogo.astro delete mode 100644 src/components/LeftSidebar/LeftSidebar.astro delete mode 100644 src/components/PageContent/PageContent.astro delete mode 100644 src/components/RightSidebar/MoreMenu.astro delete mode 100644 src/components/RightSidebar/RightSidebar.astro delete mode 100644 src/components/RightSidebar/TableOfContents.tsx delete mode 100644 src/components/RightSidebar/ThemeToggleButton.css delete mode 100644 src/components/RightSidebar/ThemeToggleButton.tsx delete mode 100644 src/consts.ts delete mode 100644 src/content/config.ts delete mode 100644 src/content/docs/de/development/anda.md delete mode 100644 src/content/docs/de/development/developing-for-ultramarine.md delete mode 100644 src/content/docs/de/development/ux-guide.md delete mode 100644 src/content/docs/de/installation/getting-started.mdx delete mode 100644 src/content/docs/de/installation/installation.mdx delete mode 100644 src/content/docs/de/installation/postinstall.md delete mode 100644 src/content/docs/de/linux/filesystem.mdx delete mode 100644 src/content/docs/de/linux/overview.mdx delete mode 100644 src/content/docs/de/linux/permissions.md delete mode 100644 src/content/docs/de/linux/shell.mdx delete mode 100644 src/content/docs/de/linux/software.md delete mode 100644 src/content/docs/de/release/errata.mdx delete mode 100644 src/content/docs/de/welcome.mdx delete mode 100644 src/content/docs/en/anywhere/enterprise.mdx delete mode 100644 src/content/docs/en/anywhere/steamdeck.mdx delete mode 100644 src/content/docs/en/anywhere/surface.mdx delete mode 100644 src/content/docs/en/anywhere/tegra.mdx delete mode 100644 src/content/docs/en/chromebook/armbeta.mdx delete mode 100644 src/content/docs/en/chromebook/chromebook.mdx delete mode 100644 src/content/docs/en/chromebook/postinstall.mdx delete mode 100644 src/content/docs/en/community/codeofconduct.mdx delete mode 100644 src/content/docs/en/community/community.mdx delete mode 100644 src/content/docs/en/contributing/hacking.mdx delete mode 100644 src/content/docs/en/contributing/mirroring.mdx delete mode 100644 src/content/docs/en/linux/filesystem.mdx delete mode 100644 src/content/docs/en/linux/permissions.mdx delete mode 100644 src/content/docs/en/linux/securityprivacy.mdx delete mode 100644 src/content/docs/en/linux/shell.mdx delete mode 100644 src/content/docs/en/linux/software.mdx delete mode 100644 src/content/docs/en/linux/ssh.mdx delete mode 100644 src/content/docs/en/release/41-upgrades.mdx delete mode 100644 src/content/docs/en/release/42-upgrades.mdx delete mode 100644 src/content/docs/en/release/upgrade-to-ultramarine-40.mdx delete mode 100644 src/content/docs/en/setup/bioskeys.mdx delete mode 100644 src/content/docs/en/setup/broadcom-realtek.mdx delete mode 100644 src/content/docs/en/setup/post-advanced.mdx delete mode 100644 src/content/docs/en/setup/postinstall.mdx delete mode 100644 src/content/docs/en/setup/readymade.mdx delete mode 100644 src/content/docs/en/setup/requirements.mdx delete mode 100644 src/content/docs/en/usage/gaming.mdx delete mode 100644 src/content/docs/en/usage/hop.mdx delete mode 100644 src/content/docs/en/usage/keyboard-cfg.mdx delete mode 100644 src/content/docs/en/usage/um40-dnf5.mdx delete mode 100644 src/content/docs/en/usage/umcli.mdx delete mode 100644 src/content/docs/hi/anywhere/android.mdx delete mode 100644 src/content/docs/hi/anywhere/anywhere.mdx delete mode 100644 src/content/docs/hi/anywhere/applesilicon.mdx delete mode 100644 src/content/docs/hi/anywhere/chromebook.mdx delete mode 100644 src/content/docs/hi/anywhere/ott.mdx delete mode 100644 src/content/docs/hi/anywhere/riscv.mdx delete mode 100644 src/content/docs/hi/anywhere/rpi.mdx delete mode 100644 src/content/docs/hi/anywhere/steamdeck.mdx delete mode 100644 src/content/docs/hi/anywhere/thin.mdx delete mode 100644 src/content/docs/hi/anywhere/wsl.mdx delete mode 100644 src/content/docs/hi/anywhere/xr.mdx delete mode 100644 src/content/docs/hi/chromebook/armbeta.mdx delete mode 100644 src/content/docs/hi/chromebook/getting.mdx delete mode 100644 src/content/docs/hi/chromebook/postinstall.mdx delete mode 100644 src/content/docs/hi/chromebook/preparing.mdx delete mode 100644 src/content/docs/hi/chromebook/terminology.mdx delete mode 100644 src/content/docs/hi/contributing/contributorguide.mdx delete mode 100644 src/content/docs/hi/contributing/hacking.mdx delete mode 100644 src/content/docs/hi/linux/devicefiles.mdx delete mode 100644 src/content/docs/hi/linux/overview.mdx delete mode 100644 src/content/docs/hi/release/41-upgrades.mdx delete mode 100644 src/content/docs/hi/release/42-upgrades.mdx delete mode 100644 src/content/docs/hi/release/diff-fedora.mdx delete mode 100644 src/content/docs/hi/release/errata.mdx delete mode 100644 src/content/docs/hi/release/upgrade-to-ultramarine-40.mdx delete mode 100644 src/content/docs/hi/setup/broadcom-realtek.mdx delete mode 100644 src/content/docs/hi/setup/getting.mdx delete mode 100644 src/content/docs/hi/setup/installation.mdx delete mode 100644 src/content/docs/hi/setup/nvidia.mdx delete mode 100644 src/content/docs/hi/setup/post-advanced.mdx delete mode 100644 src/content/docs/hi/setup/postinstall.mdx delete mode 100644 src/content/docs/hi/setup/readymade.mdx delete mode 100644 src/content/docs/hi/setup/requirements.mdx delete mode 100644 src/content/docs/hi/usage/eduroam.mdx delete mode 100644 src/content/docs/hi/usage/gaming.mdx delete mode 100644 src/content/docs/hi/usage/l10n.mdx delete mode 100644 src/content/docs/hi/usage/um40-dnf5.mdx delete mode 100644 src/content/docs/hi/welcome.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/android.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/applesilicon.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/chromebook.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/enterprise.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/ott.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/riscv.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/rpi.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/steamdeck.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/thin.mdx delete mode 100644 src/content/docs/zh_hant/anywhere/xr.mdx delete mode 100644 src/content/docs/zh_hant/chromebook/armbeta.mdx delete mode 100644 src/content/docs/zh_hant/chromebook/chromebook.mdx delete mode 100644 src/content/docs/zh_hant/chromebook/getting.mdx delete mode 100644 src/content/docs/zh_hant/chromebook/postinstall.mdx delete mode 100644 src/content/docs/zh_hant/chromebook/preparing.mdx delete mode 100644 src/content/docs/zh_hant/chromebook/terminology.mdx delete mode 100644 src/content/docs/zh_hant/community/codeofconduct.mdx delete mode 100644 src/content/docs/zh_hant/community/community.mdx delete mode 100644 src/content/docs/zh_hant/contributing/contributorguide.mdx delete mode 100644 src/content/docs/zh_hant/development/developing-for-ultramarine.mdx delete mode 100644 src/content/docs/zh_hant/development/ux-guide.mdx delete mode 100644 src/content/docs/zh_hant/hardware/anywhere.mdx delete mode 100644 src/content/docs/zh_hant/hardware/bioskeys.mdx delete mode 100644 src/content/docs/zh_hant/hardware/nvidia.mdx delete mode 100644 src/content/docs/zh_hant/hardware/requirements.mdx delete mode 100644 src/content/docs/zh_hant/hardware/surface.mdx delete mode 100644 src/content/docs/zh_hant/installation/getting.mdx delete mode 100644 src/content/docs/zh_hant/installation/installation.mdx delete mode 100644 src/content/docs/zh_hant/installation/readymade.mdx delete mode 100644 src/content/docs/zh_hant/installation/rpi.mdx delete mode 100644 src/content/docs/zh_hant/linux/devicefiles.mdx delete mode 100644 src/content/docs/zh_hant/linux/filesystem.mdx delete mode 100644 src/content/docs/zh_hant/linux/overview.mdx delete mode 100644 src/content/docs/zh_hant/linux/permissions.mdx delete mode 100644 src/content/docs/zh_hant/linux/securityprivacy.mdx delete mode 100644 src/content/docs/zh_hant/linux/shell.mdx delete mode 100644 src/content/docs/zh_hant/linux/software.mdx delete mode 100644 src/content/docs/zh_hant/release/errata.mdx delete mode 100644 src/content/docs/zh_hant/release/upgrade-to-ultramarine-40.mdx delete mode 100644 src/content/docs/zh_hant/usage/gaming.mdx delete mode 100644 src/content/docs/zh_hant/usage/l10n.mdx delete mode 100644 src/content/docs/zh_hant/usage/um40-dnf5.mdx delete mode 100644 src/content/docs/zh_hant/welcome.mdx delete mode 100644 src/env.d.ts delete mode 100644 src/languages.ts delete mode 100644 src/layouts/MainLayout.astro delete mode 100644 src/pages/[...slug].astro delete mode 100644 src/pages/index.astro delete mode 100644 src/styles/index.css delete mode 100644 src/styles/theme.css diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index c7be0775..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,11 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - -version: 2 -updates: - - package-ecosystem: "bun" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "weekly" diff --git a/.gitignore b/.gitignore index e5bc5793..9e429e49 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,26 @@ -# build output -dist/ -# generated types -.astro/ +# deps +/node_modules -# dependencies -node_modules/ +# generated content +.source -# logs +# test & build +/coverage +/.next/ +/out/ +/build +*.tsbuildinfo + +# misc +.DS_Store +*.pem +/.pnp +.pnp.js npm-debug.log* yarn-debug.log* yarn-error.log* -pnpm-debug.log* - - -# environment variables -.env -.env.production - -# macOS-specific files -.DS_Store -bun.lockb +# others +.env*.local +.vercel +next-env.d.ts \ No newline at end of file diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index bd5535a6..00000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -pnpm-lock.yaml diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 38ce14b4..00000000 --- a/.prettierrc.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import("prettier").Config} */ -export default { - plugins: ["prettier-plugin-astro"], -}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 22f3924a..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "recommendations": [ - "astro-build.astro-vscode", - "esbenp.prettier-vscode", - "unifiedjs.vscode-mdx" - ], - "unwantedRecommendations": [] -} diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index d6422097..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "command": "./node_modules/.bin/astro dev", - "name": "Development server", - "request": "launch", - "type": "node-terminal" - } - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 9bf4d12b..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true -} diff --git a/README.md b/README.md index db51983b..978b2b0e 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,47 @@ -# Ultramarine Linux Wiki +# wiki -Welcome to the source repository behind the [Ultramarine Wiki]! We welcome any contributions and -you may freely send pull requests to this repository if you would like to modify any of the -content here! +This is a Next.js application generated with +[Create Fumadocs](https://github.com/fuma-nama/fumadocs). -## Translations +It is a Next.js app with [Static Export](https://nextjs.org/docs/app/guides/static-exports) configured. -If you'd like to translate for a new language: +Run development server: -1. Go to `src/consts.ts` to add a new language into `KNOWN_LANGUAGES` -2. Copy everything from `src/content/docs/en` to `src/content/docs/`[^1] -3. Add pages into `SIDEBAR` in `src/consts.ts` -4. Start translating! +```bash +npm run dev +# or +pnpm dev +# or +yarn dev +``` -[^1]: We encourage you to use a generic language code without limiting the region. +Open http://localhost:3000 with your browser to see the result. -[Ultramarine Wiki]: https://wiki.ultramarine-linux.org +## Explore + +In the project, you can see: + +- `lib/source.ts`: Code for content source adapter, [`loader()`](https://fumadocs.dev/docs/headless/source-api) provides the interface to access your content. +- `lib/layout.shared.tsx`: Shared options for layouts, optional but preferred to keep. + +| Route | Description | +| ------------------------- | ------------------------------------------------------ | +| `app/(home)` | The route group for your landing page and other pages. | +| `app/docs` | The documentation layout and pages. | +| `app/api/search/route.ts` | The Route Handler for search. | + +### Fumadocs MDX + +A `source.config.ts` config file has been included, you can customise different options like frontmatter schema. + +Read the [Introduction](https://fumadocs.dev/docs/mdx) for further details. + +## Learn More + +To learn more about Next.js and Fumadocs, take a look at the following +resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js + features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. +- [Fumadocs](https://fumadocs.dev) - learn about Fumadocs diff --git a/app/(home)/layout.tsx b/app/(home)/layout.tsx new file mode 100644 index 00000000..77379fac --- /dev/null +++ b/app/(home)/layout.tsx @@ -0,0 +1,6 @@ +import { HomeLayout } from 'fumadocs-ui/layouts/home'; +import { baseOptions } from '@/lib/layout.shared'; + +export default function Layout({ children }: LayoutProps<'/'>) { + return {children}; +} diff --git a/app/(home)/page.tsx b/app/(home)/page.tsx new file mode 100644 index 00000000..241f2c97 --- /dev/null +++ b/app/(home)/page.tsx @@ -0,0 +1,125 @@ +import { Card, Cards } from "fumadocs-ui/components/card"; +import { source } from "@/lib/source"; +import { icons as lucideIcons } from "lucide-react"; +import { createElement } from "react"; + +const START = [ + { + title: "Get Started", + href: "/docs/get-started", + slug: "get-started", + icon: "sailboat", + }, + { + title: "Using Ultramarine", + href: "/docs/usage", + slug: "usage", + icon: "sailboat", + }, +] as const; + +const LEARN = [ + { + title: "Anywhere", + href: "/docs/anywhere", + slug: "anywhere", + icon: "microchip", + }, + { + title: "Join the Community", + href: "/docs/community", + slug: "community", + icon: "message-circle-heart", + }, + { + title: "Linux Concepts", + href: "/docs/linux", + slug: "linux", + icon: "graduation-cap", + }, + { + title: "About Ultramarine", + href: "/docs/about", + slug: "about", + icon: "graduation-cap", + }, +] as const; + +function getIcon(iconName: string | undefined): React.ReactNode | undefined { + if (!iconName) return undefined; + if (iconName in lucideIcons) { + return createElement(lucideIcons[iconName as keyof typeof lucideIcons]); + } + return undefined; +} + +export default function HomePage() { + const start = START.map((section) => ({ + ...section, + description: source.getPage([section.slug])?.data.description ?? "", + icon: getIcon(section.icon), + })); + const learn = LEARN.map((section) => ({ + ...section, + description: source.getPage([section.slug])?.data.description ?? "", + icon: getIcon(section.icon), + })); + + return ( +
+
+

Welcome to the Ultramarine Wiki!

+

+
+ +
+

Get Started and Settled

+ + {start.map((section) => ( + + ))} + +
+ +
+

Learn More

+ + {learn.map((section) => ( + + ))} + +
+ +
+

Community

+

+ Stuck? Have a question? Join our{" "} + Discord community. Our + community is friendly and always willing to help. +

+
+ +
+

Contributing

+

+ This site is libre software and contributions are welcome. Check out + the{" "} + GitHub repository{" "} + for more information. +

+
+
+ ); +} diff --git a/app/api/search/route.ts b/app/api/search/route.ts new file mode 100644 index 00000000..aaaff7ff --- /dev/null +++ b/app/api/search/route.ts @@ -0,0 +1,9 @@ +import { source } from '@/lib/source'; +import { createFromSource } from 'fumadocs-core/search/server'; + +export const revalidate = false; + +export const { staticGET: GET } = createFromSource(source, { + // https://docs.orama.com/docs/orama-js/supported-languages + language: 'english', +}); diff --git a/app/docs/[[...slug]]/page.tsx b/app/docs/[[...slug]]/page.tsx new file mode 100644 index 00000000..7e9ccb5f --- /dev/null +++ b/app/docs/[[...slug]]/page.tsx @@ -0,0 +1,60 @@ +import { getPageImage, source } from "@/lib/source"; +import { + DocsBody, + DocsDescription, + DocsPage, + DocsTitle, +} from "fumadocs-ui/layouts/docs/page"; +import { notFound } from "next/navigation"; +import { getMDXComponents } from "@/mdx-components"; +import type { Metadata } from "next"; +import { createRelativeLink } from "fumadocs-ui/mdx"; + +export default async function Page(props: PageProps<"/[...slug]">) { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + const MDX = page.data.body; + + return ( + + {page.data.title} + {page.data.description} + + + + + ); +} + +export async function generateStaticParams() { + return source.generateParams(); +} + +export async function generateMetadata( + props: PageProps<"/[...slug]">, +): Promise { + const params = await props.params; + const page = source.getPage(params.slug); + if (!page) notFound(); + + return { + title: page.data.title, + description: page.data.description, + openGraph: { + images: getPageImage(page).url, + }, + }; +} diff --git a/app/docs/layout.tsx b/app/docs/layout.tsx new file mode 100644 index 00000000..a373143b --- /dev/null +++ b/app/docs/layout.tsx @@ -0,0 +1,11 @@ +import { source } from '@/lib/source'; +import { DocsLayout } from 'fumadocs-ui/layouts/docs'; +import { baseOptions } from '@/lib/layout.shared'; + +export default function Layout({ children }: LayoutProps<'/docs'>) { + return ( + + {children} + + ); +} diff --git a/app/global.css b/app/global.css new file mode 100644 index 00000000..dbcc721d --- /dev/null +++ b/app/global.css @@ -0,0 +1,3 @@ +@import "tailwindcss"; +@import "fumadocs-ui/css/neutral.css"; +@import "fumadocs-ui/css/preset.css"; diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 00000000..fffc0a58 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,17 @@ +import { Inter } from 'next/font/google'; +import { Provider } from '@/components/provider'; +import './global.css'; + +const inter = Inter({ + subsets: ['latin'], +}); + +export default function Layout({ children }: LayoutProps<'/'>) { + return ( + + + {children} + + + ); +} diff --git a/app/llms-full.txt/route.ts b/app/llms-full.txt/route.ts new file mode 100644 index 00000000..d494d2cb --- /dev/null +++ b/app/llms-full.txt/route.ts @@ -0,0 +1,10 @@ +import { getLLMText, source } from '@/lib/source'; + +export const revalidate = false; + +export async function GET() { + const scan = source.getPages().map(getLLMText); + const scanned = await Promise.all(scan); + + return new Response(scanned.join('\n\n')); +} diff --git a/app/og/docs/[...slug]/route.tsx b/app/og/docs/[...slug]/route.tsx new file mode 100644 index 00000000..21739c78 --- /dev/null +++ b/app/og/docs/[...slug]/route.tsx @@ -0,0 +1,34 @@ +import { getPageImage, source } from "@/lib/source"; +import { notFound } from "next/navigation"; +import { ImageResponse } from "next/og"; +import { generate as DefaultImage } from "fumadocs-ui/og"; + +export const revalidate = false; + +export async function GET( + _req: Request, + { params }: RouteContext<"/og/docs/[...slug]">, +) { + const { slug } = await params; + const page = source.getPage(slug.slice(0, -1)); + if (!page) notFound(); + + return new ImageResponse( + , + { + width: 1200, + height: 630, + }, + ); +} + +export function generateStaticParams() { + return source.getPages().map((page) => ({ + lang: page.locale, + slug: getPageImage(page).segments, + })); +} diff --git a/astro.config.mjs b/astro.config.mjs deleted file mode 100644 index fe6857cb..00000000 --- a/astro.config.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import { defineConfig } from "astro/config"; -import preact from "@astrojs/preact"; -import icon from "astro-icon"; - -// https://astro.build/config -import mdx from "@astrojs/mdx"; - -// https://astro.build/config -export default defineConfig({ - site: "https://wiki.ultramarine-linux.org", - integrations: [ - // Enable Preact to support Preact JSX components. - preact(), - icon(), - mdx(), - ], -}); diff --git a/bun.lock b/bun.lock index 9f97ab9b..0e93aed7 100644 --- a/bun.lock +++ b/bun.lock @@ -1,358 +1,304 @@ { "lockfileVersion": 1, - "configVersion": 1, + "configVersion": 0, "workspaces": { "": { - "name": "@example/docs", + "name": "wiki", "dependencies": { - "@algolia/client-search": "^5.49.0", - "@astrojs/mdx": "^2.0.5", - "@astrojs/preact": "^4.1.3", - "@astrojs/react": "^4.4.2", - "@docsearch/css": "^4.5.3", - "@docsearch/react": "^3.5.2", - "@iconify-json/bi": "^1.1.23", - "@iconify-json/lucide": "^1.2.92", - "@types/node": "^25.0.10", - "@types/react": "^18.2.48", - "@types/react-dom": "^18.2.18", - "astro": "^4.2.1", - "astro-icon": "^1.0.2", - "preact": "^10.19.3", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "@orama/orama": "^3.1.18", + "fumadocs-core": "16.5.4", + "fumadocs-mdx": "14.2.7", + "fumadocs-ui": "16.5.4", + "lucide-react": "^0.563.0", + "next": "16.1.6", + "react": "^19.2.4", + "react-dom": "^19.2.4", }, "devDependencies": { - "html-escaper": "^3.0.3", - "prettier": "^3.2.4", - "prettier-plugin-astro": "^0.14.1", + "@tailwindcss/postcss": "^4.1.18", + "@types/mdx": "^2.0.13", + "@types/node": "^25.2.3", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "postcss": "^8.5.6", + "serve": "^14.2.5", + "tailwindcss": "^4.1.18", + "typescript": "^5.9.3", }, }, }, "packages": { - "@algolia/abtesting": ["@algolia/abtesting@1.13.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-Zrqam12iorp3FjiKMXSTpedGYznZ3hTEOAr2oCxI8tbF8bS1kQHClyDYNq/eV0ewMNLyFkgZVWjaS+8spsOYiQ=="], + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@algolia/autocomplete-core": ["@algolia/autocomplete-core@1.17.9", "", { "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", "@algolia/autocomplete-shared": "1.17.9" } }, "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ=="], - - "@algolia/autocomplete-plugin-algolia-insights": ["@algolia/autocomplete-plugin-algolia-insights@1.17.9", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ=="], - - "@algolia/autocomplete-preset-algolia": ["@algolia/autocomplete-preset-algolia@1.17.9", "", { "dependencies": { "@algolia/autocomplete-shared": "1.17.9" }, "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ=="], - - "@algolia/autocomplete-shared": ["@algolia/autocomplete-shared@1.17.9", "", { "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" } }, "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ=="], - - "@algolia/client-abtesting": ["@algolia/client-abtesting@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-aOpsdlgS9xTEvz47+nXmw8m0NtUiQbvGWNuSEb7fA46iPL5FxOmOUZkh8PREBJpZ0/H8fclSc7BMJCVr+Dn72w=="], - - "@algolia/client-analytics": ["@algolia/client-analytics@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-EcF4w7IvIk1sowrO7Pdy4Ako7x/S8+nuCgdk6En+u5jsaNQM4rTT09zjBPA+WQphXkA2mLrsMwge96rf6i7Mow=="], - - "@algolia/client-common": ["@algolia/client-common@5.49.0", "", {}, "sha512-BDmVDtpDvymfLE5YQ2cPnfWJUVTDJqwpJa03Fsb7yJFJmbeKsUOGsnRkYsTbdzf0FfcvyvBB5zdcbrAIL249bg=="], - - "@algolia/client-insights": ["@algolia/client-insights@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-Ci+cn/FDIsDxSKMRBEiyKrqybblbk8xugo6ujDN1GSTv9RIZxwxqZYuHfdLnLEwLlX7GB8pqVyqrUSlRnR+sJA=="], - - "@algolia/client-personalization": ["@algolia/client-personalization@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-gsLnHPZmWcX0T3IigkDL2imCNtsQ7dR5xfnwiFsb+uTHCuYQt+IwSNjsd8tok6HLGLzZrliSaXtB5mfGBtYZvQ=="], - - "@algolia/client-query-suggestions": ["@algolia/client-query-suggestions@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-PDOw0s8WSlR2fWFjPQldEpmm/gAoUgLigvC3k/jCSi/DzigdGX6RdC0Gh1RR1P8Cbk5KOWYDuL3TNzdYwkfDyA=="], - - "@algolia/client-search": ["@algolia/client-search@5.49.0", "", { "dependencies": { "@algolia/client-common": "5.49.0", "@algolia/requester-browser-xhr": "5.49.0", "@algolia/requester-fetch": "5.49.0", "@algolia/requester-node-http": "5.49.0" } }, "sha512-uGv2P3lcviuaZy8ZOAyN60cZdhOVyjXwaDC27a1qdp3Pb5Azn+lLSJwkHU4TNRpphHmIei9HZuUxwQroujdPjw=="], - - "@algolia/ingestion": ["@algolia/ingestion@1.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-WvwwXp5+LqIGISK3zHRApLT1xkuEk320/EGeD7uYy+K8WwDd5OjXnhjuXRhYr1685KnkvWkq1rQ/ihCJjOfHpQ=="], - - "@algolia/monitoring": ["@algolia/monitoring@1.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-j2EUFKAlzM0TE4GRfkDE3IDfkVeJdcbBANWzK16Tb3RHz87WuDfQ9oeEW6XiRE1/bEkq2xf4MvZesvSeQrZRDA=="], - - "@algolia/recommend": ["@algolia/recommend@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-+kTSE4aQ1ARj2feXyN+DMq0CIDHJwZw1kpxIunedkmpWUg8k3TzFwWsMCzJVkF2nu1UcFbl7xsIURz3Q3XwOXA=="], - - "@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.49.0", "", { "dependencies": { "@algolia/client-common": "5.49.0" } }, "sha512-BaZ6NTI9VdSbDcsMucdKhTuFFxv6B+3dAZZBozX12fKopYsELh7dBLfZwm8evDCIicmNjIjobi4VNnNshrCSuw=="], - - "@algolia/requester-fetch": ["@algolia/requester-fetch@5.49.0", "", { "dependencies": { "@algolia/client-common": "5.49.0" } }, "sha512-2nxISxS5xO5DLAj6QzMImgJv6CqpZhJVkhcTFULESR/k4IpbkJTEHmViVTxw9MlrU8B5GfwHevFd7vKL3a7MXQ=="], - - "@algolia/requester-node-http": ["@algolia/requester-node-http@5.49.0", "", { "dependencies": { "@algolia/client-common": "5.49.0" } }, "sha512-S/B94C6piEUXGpN3y5ysmNKMEqdfNVAXYY+FxivEAV5IGJjbEuLZfT8zPPZUWGw9vh6lgP80Hye2G5aVBNIa8Q=="], - - "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], - - "@antfu/utils": ["@antfu/utils@8.1.1", "", {}, "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ=="], - - "@astrojs/compiler": ["@astrojs/compiler@2.13.0", "", {}, "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw=="], - - "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.4.1", "", {}, "sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g=="], - - "@astrojs/markdown-remark": ["@astrojs/markdown-remark@5.1.0", "", { "dependencies": { "@astrojs/prism": "^3.1.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.0", "hast-util-to-text": "^4.0.0", "import-meta-resolve": "^4.0.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.0", "remark-gfm": "^4.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "remark-smartypants": "^2.0.0", "shiki": "^1.1.2", "unified": "^11.0.4", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.0", "vfile": "^6.0.1" } }, "sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ=="], - - "@astrojs/mdx": ["@astrojs/mdx@2.3.1", "", { "dependencies": { "@astrojs/markdown-remark": "5.1.0", "@mdx-js/mdx": "^3.0.0", "acorn": "^8.11.2", "es-module-lexer": "^1.4.1", "estree-util-visit": "^2.0.0", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "hast-util-to-html": "^9.0.0", "kleur": "^4.1.4", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.0", "remark-smartypants": "^2.0.0", "source-map": "^0.7.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.1" }, "peerDependencies": { "astro": "^4.0.0" } }, "sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ=="], - - "@astrojs/preact": ["@astrojs/preact@4.1.3", "", { "dependencies": { "@preact/preset-vite": "^2.10.2", "@preact/signals": "^2.3.1", "preact-render-to-string": "^6.6.1", "vite": "^6.4.1" }, "peerDependencies": { "preact": "^10.6.5" } }, "sha512-Ph416wbgyumkmYr7erZ83l/d+LXdZethlHRRCbgoKEn8wo3Rkq13shKFp0QYXYSDYxVaA6UBdkdimeowy/lMLQ=="], - - "@astrojs/prism": ["@astrojs/prism@3.1.0", "", { "dependencies": { "prismjs": "^1.29.0" } }, "sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw=="], - - "@astrojs/react": ["@astrojs/react@4.4.2", "", { "dependencies": { "@vitejs/plugin-react": "^4.7.0", "ultrahtml": "^1.6.0", "vite": "^6.4.1" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", "react": "^17.0.2 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ=="], + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], - "@astrojs/telemetry": ["@astrojs/telemetry@3.1.0", "", { "dependencies": { "ci-info": "^4.0.0", "debug": "^4.3.4", "dlv": "^1.1.3", "dset": "^3.1.3", "is-docker": "^3.0.0", "is-wsl": "^3.0.0", "which-pm-runs": "^1.1.0" } }, "sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], - "@babel/code-frame": ["@babel/code-frame@7.28.6", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="], - "@babel/compat-data": ["@babel/compat-data@7.28.6", "", {}, "sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="], - "@babel/core": ["@babel/core@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="], - "@babel/generator": ["@babel/generator@7.28.6", "", { "dependencies": { "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="], - "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="], - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.28.6", "", { "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="], - "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="], - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.28.6", "", { "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.6", "", { "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="], - "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.28.6", "", {}, "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="], - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="], - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="], - "@babel/helpers": ["@babel/helpers@7.28.6", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="], - "@babel/parser": ["@babel/parser@7.28.6", "", { "dependencies": { "@babel/types": "^7.28.6" }, "bin": "./bin/babel-parser.js" }, "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="], - "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.28.6", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="], - "@babel/plugin-transform-react-jsx": ["@babel/plugin-transform-react-jsx@7.28.6", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-module-imports": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/plugin-syntax-jsx": "^7.28.6", "@babel/types": "^7.28.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="], - "@babel/plugin-transform-react-jsx-development": ["@babel/plugin-transform-react-jsx-development@7.27.1", "", { "dependencies": { "@babel/plugin-transform-react-jsx": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="], - "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="], - "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="], - "@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="], - "@babel/traverse": ["@babel/traverse@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/types": "^7.28.6", "debug": "^4.3.1" } }, "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="], - "@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="], - "@docsearch/css": ["@docsearch/css@4.5.3", "", {}, "sha512-kUpHaxn0AgI3LQfyzTYkNUuaFY4uEz/Ym9/N/FvyDE+PzSgZsCyDH9jE49B6N6f1eLCm9Yp64J9wENd6vypdxA=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="], - "@docsearch/react": ["@docsearch/react@3.9.0", "", { "dependencies": { "@algolia/autocomplete-core": "1.17.9", "@algolia/autocomplete-preset-algolia": "1.17.9", "@docsearch/css": "3.9.0", "algoliasearch": "^5.14.2" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", "react": ">= 16.8.0 < 20.0.0", "react-dom": ">= 16.8.0 < 20.0.0", "search-insights": ">= 1 < 3" }, "optionalPeers": ["@types/react", "react", "react-dom", "search-insights"] }, "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], - "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], + "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.21.5", "", { "os": "android", "cpu": "arm" }, "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg=="], + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.21.5", "", { "os": "android", "cpu": "arm64" }, "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A=="], + "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.21.5", "", { "os": "android", "cpu": "x64" }, "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA=="], + "@formatjs/fast-memoize": ["@formatjs/fast-memoize@3.1.0", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.21.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ=="], + "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.8.1", "", { "dependencies": { "@formatjs/fast-memoize": "3.1.0", "tslib": "^2.8.1" } }, "sha512-xwEuwQFdtSq1UKtQnyTZWC+eHdv7Uygoa+H2k/9uzBVQjDyp9r20LNDNKedWXll7FssT3GRHvqsdJGYSUWqYFA=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.21.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw=="], + "@fumadocs/tailwind": ["@fumadocs/tailwind@0.0.2", "", { "dependencies": { "postcss-selector-parser": "^7.1.1" }, "peerDependencies": { "tailwindcss": "^4.0.0" }, "optionalPeers": ["tailwindcss"] }, "sha512-4JrTJLRDKKdFF3gy07rAsakqGr17/0cJE042B1icCmMRrPA4a38cjR1qd4EqUiDJ+fzM0wgVN9QYiqds3HB2rg=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.21.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g=="], + "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.21.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.21.5", "", { "os": "linux", "cpu": "arm" }, "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA=="], + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.21.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q=="], + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.21.5", "", { "os": "linux", "cpu": "ia32" }, "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg=="], + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg=="], + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg=="], + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.21.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w=="], + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.21.5", "", { "os": "linux", "cpu": "none" }, "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA=="], + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.21.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A=="], + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.21.5", "", { "os": "linux", "cpu": "x64" }, "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ=="], + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.21.5", "", { "os": "none", "cpu": "x64" }, "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg=="], + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.21.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow=="], + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.21.5", "", { "os": "sunos", "cpu": "x64" }, "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg=="], + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.21.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A=="], + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.21.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA=="], + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.21.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw=="], + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], - "@iconify-json/bi": ["@iconify-json/bi@1.2.7", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-IPz8WNxmLkH1I9msl+0Q4OnmjjvP4uU0Z61a4i4sqonB6vKSbMGUWuGn8/YuuszlReVj8rf+3gNv5JU8Xoljyg=="], + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], - "@iconify-json/lucide": ["@iconify-json/lucide@1.2.92", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-+ghJelYoO/cfR6Kl/SKRJJZ+lONUUanC7w94Lh8gOZaSK92RBmLE+mojYrcVrLqjLnJO5KkryQxRcg3dLFPZww=="], + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], - "@iconify/tools": ["@iconify/tools@4.2.0", "", { "dependencies": { "@iconify/types": "^2.0.0", "@iconify/utils": "^2.3.0", "cheerio": "^1.1.2", "domhandler": "^5.0.3", "extract-zip": "^2.0.1", "local-pkg": "^1.1.2", "pathe": "^2.0.3", "svgo": "^3.3.2", "tar": "^7.5.2" } }, "sha512-WRxPva/ipxYkqZd1+CkEAQmd86dQmrwH0vwK89gmp2Kh2WyyVw57XbPng0NehP3x4V1LzLsXUneP1uMfTMZmUA=="], + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], - "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], - "@iconify/utils": ["@iconify/utils@2.3.0", "", { "dependencies": { "@antfu/install-pkg": "^1.0.0", "@antfu/utils": "^8.1.0", "@iconify/types": "^2.0.0", "debug": "^4.4.0", "globals": "^15.14.0", "kolorist": "^1.8.0", "local-pkg": "^1.0.0", "mlly": "^1.7.4" } }, "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA=="], + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], - - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], + "@next/env": ["@next/env@16.1.6", "", {}, "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ=="], - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.1.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw=="], - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.1.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ=="], - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.1.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw=="], - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.1.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ=="], - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.1.6", "", { "os": "linux", "cpu": "x64" }, "sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ=="], - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.1.6", "", { "os": "linux", "cpu": "x64" }, "sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg=="], - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.1.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw=="], - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.1.6", "", { "os": "win32", "cpu": "x64" }, "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A=="], - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], + "@orama/orama": ["@orama/orama@3.1.18", "", {}, "sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA=="], - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], + "@radix-ui/number": ["@radix-ui/number@1.1.1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="], - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], - "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA=="], - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], - "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="], - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], - "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], - "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="], + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], - "@preact/preset-vite": ["@preact/preset-vite@2.10.3", "", { "dependencies": { "@babel/plugin-transform-react-jsx": "^7.27.1", "@babel/plugin-transform-react-jsx-development": "^7.27.1", "@prefresh/vite": "^2.4.11", "@rollup/pluginutils": "^5.0.0", "babel-plugin-transform-hook-names": "^1.0.2", "debug": "^4.4.3", "picocolors": "^1.1.1", "vite-prerender-plugin": "^0.5.8" }, "peerDependencies": { "@babel/core": "7.x", "vite": "2.x || 3.x || 4.x || 5.x || 6.x || 7.x" } }, "sha512-1SiS+vFItpkNdBs7q585PSAIln0wBeBdcpJYbzPs1qipsb/FssnkUioNXuRsb8ZnU8YEQHr+3v8+/mzWSnTQmg=="], + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], - "@preact/signals": ["@preact/signals@2.8.0", "", { "dependencies": { "@preact/signals-core": "^1.13.0" }, "peerDependencies": { "preact": ">= 10.25.0 || >=11.0.0-0" } }, "sha512-lcILM82mei8s/53n2M6uZlrDHLlgLld8Squ0PVSUL5Ae1M45uEstWfHm+wcDqp2U5I/ZYrBvCY65udFyTo5OZw=="], + "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w=="], - "@preact/signals-core": ["@preact/signals-core@1.13.0", "", {}, "sha512-slT6XeTCAbdql61GVLlGU4x7XHI7kCZV5Um5uhE4zLX4ApgiiXc0UYFvVOKq06xcovzp7p+61l68oPi563ARKg=="], + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="], - "@prefresh/babel-plugin": ["@prefresh/babel-plugin@0.5.2", "", {}, "sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA=="], + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], - "@prefresh/core": ["@prefresh/core@1.5.9", "", { "peerDependencies": { "preact": "^10.0.0 || ^11.0.0-0" } }, "sha512-IKBKCPaz34OFVC+adiQ2qaTF5qdztO2/4ZPf4KsRTgjKosWqxVXmEbxCiUydYZRY8GVie+DQlKzQr9gt6HQ+EQ=="], + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], - "@prefresh/utils": ["@prefresh/utils@1.2.1", "", {}, "sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw=="], + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], - "@prefresh/vite": ["@prefresh/vite@2.4.11", "", { "dependencies": { "@babel/core": "^7.22.1", "@prefresh/babel-plugin": "0.5.2", "@prefresh/core": "^1.5.0", "@prefresh/utils": "^1.2.0", "@rollup/pluginutils": "^4.2.1" }, "peerDependencies": { "preact": "^10.4.0 || ^11.0.0-0", "vite": ">=2.0.0" } }, "sha512-/XjURQqdRiCG3NpMmWqE9kJwrg9IchIOWHzulCfqg2sRe/8oQ1g5De7xrk9lbqPIQLn7ntBkKdqWXIj4E9YXyg=="], + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], - "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], + "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.10", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.56.0", "", { "os": "android", "cpu": "arm" }, "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw=="], + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.56.0", "", { "os": "android", "cpu": "arm64" }, "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q=="], + "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.13", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.56.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w=="], + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.56.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g=="], + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.56.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ=="], + "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.56.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg=="], + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.56.0", "", { "os": "linux", "cpu": "arm" }, "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A=="], + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.56.0", "", { "os": "linux", "cpu": "arm" }, "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw=="], + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.56.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ=="], + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.56.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA=="], + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.56.0", "", { "os": "linux", "cpu": "none" }, "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg=="], + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="], - "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.56.0", "", { "os": "linux", "cpu": "none" }, "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA=="], + "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.56.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw=="], + "@shikijs/core": ["@shikijs/core@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA=="], - "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.56.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg=="], + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.56.0", "", { "os": "linux", "cpu": "none" }, "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew=="], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.56.0", "", { "os": "linux", "cpu": "none" }, "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ=="], + "@shikijs/langs": ["@shikijs/langs@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.56.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ=="], + "@shikijs/rehype": ["@shikijs/rehype@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0", "@types/hast": "^3.0.4", "hast-util-to-string": "^3.0.1", "shiki": "3.22.0", "unified": "^11.0.5", "unist-util-visit": "^5.1.0" } }, "sha512-69b2VPc6XBy/VmAJlpBU5By+bJSBdE2nvgRCZXav7zujbrjXuT0F60DIrjKuutjPqNufuizE+E8tIZr2Yn8Z+g=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.56.0", "", { "os": "linux", "cpu": "x64" }, "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw=="], + "@shikijs/themes": ["@shikijs/themes@3.22.0", "", { "dependencies": { "@shikijs/types": "3.22.0" } }, "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.56.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA=="], + "@shikijs/transformers": ["@shikijs/transformers@3.22.0", "", { "dependencies": { "@shikijs/core": "3.22.0", "@shikijs/types": "3.22.0" } }, "sha512-E7eRV7mwDBjueLF6852n2oYeJYxBq3NSsDk+uyruYAXONv4U8holGmIrT+mPRJQ1J1SNOH6L8G19KRzmBawrFw=="], - "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.56.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA=="], + "@shikijs/types": ["@shikijs/types@3.22.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.56.0", "", { "os": "none", "cpu": "arm64" }, "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ=="], + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.56.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing=="], + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.56.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg=="], + "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.56.0", "", { "os": "win32", "cpu": "x64" }, "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ=="], + "@tailwindcss/node": ["@tailwindcss/node@4.1.18", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "enhanced-resolve": "^5.18.3", "jiti": "^2.6.1", "lightningcss": "1.30.2", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.1.18" } }, "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.56.0", "", { "os": "win32", "cpu": "x64" }, "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g=="], + "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.18", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.18", "@tailwindcss/oxide-darwin-arm64": "4.1.18", "@tailwindcss/oxide-darwin-x64": "4.1.18", "@tailwindcss/oxide-freebsd-x64": "4.1.18", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", "@tailwindcss/oxide-linux-x64-musl": "4.1.18", "@tailwindcss/oxide-wasm32-wasi": "4.1.18", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" } }, "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A=="], - "@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], + "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.1.18", "", { "os": "android", "cpu": "arm64" }, "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q=="], - "@shikijs/engine-javascript": ["@shikijs/engine-javascript@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "oniguruma-to-es": "^2.2.0" } }, "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A=="], + "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.1.18", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A=="], - "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1" } }, "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA=="], + "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.1.18", "", { "os": "darwin", "cpu": "x64" }, "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw=="], - "@shikijs/langs": ["@shikijs/langs@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ=="], + "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.1.18", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA=="], - "@shikijs/themes": ["@shikijs/themes@1.29.2", "", { "dependencies": { "@shikijs/types": "1.29.2" } }, "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g=="], + "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18", "", { "os": "linux", "cpu": "arm" }, "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA=="], - "@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], + "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.1.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw=="], - "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], + "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.1.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg=="], - "@trysound/sax": ["@trysound/sax@0.2.0", "", {}, "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="], + "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.1.18", "", { "os": "linux", "cpu": "x64" }, "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g=="], - "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], + "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.1.18", "", { "os": "linux", "cpu": "x64" }, "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ=="], - "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], + "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.1.18", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.0", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.4.0" }, "cpu": "none" }, "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA=="], - "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], + "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.1.18", "", { "os": "win32", "cpu": "arm64" }, "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA=="], - "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], + "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.18", "", { "os": "win32", "cpu": "x64" }, "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q=="], - "@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="], + "@tailwindcss/postcss": ["@tailwindcss/postcss@4.1.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.1.18", "@tailwindcss/oxide": "4.1.18", "postcss": "^8.4.41", "tailwindcss": "4.1.18" } }, "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g=="], "@types/debug": ["@types/debug@4.1.12", "", { "dependencies": { "@types/ms": "*" } }, "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ=="], @@ -368,29 +314,23 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/nlcst": ["@types/nlcst@1.0.4", "", { "dependencies": { "@types/unist": "^2" } }, "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg=="], - - "@types/node": ["@types/node@25.0.10", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg=="], - - "@types/prop-types": ["@types/prop-types@15.7.15", "", {}, "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw=="], + "@types/node": ["@types/node@25.2.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ=="], - "@types/react": ["@types/react@18.3.27", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" } }, "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w=="], + "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="], - "@types/react-dom": ["@types/react-dom@18.3.7", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ=="], + "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], - "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], + "@zeit/schemas": ["@zeit/schemas@2.36.0", "", {}, "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg=="], "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "algoliasearch": ["algoliasearch@5.47.0", "", { "dependencies": { "@algolia/abtesting": "1.13.0", "@algolia/client-abtesting": "5.47.0", "@algolia/client-analytics": "5.47.0", "@algolia/client-common": "5.47.0", "@algolia/client-insights": "5.47.0", "@algolia/client-personalization": "5.47.0", "@algolia/client-query-suggestions": "5.47.0", "@algolia/client-search": "5.47.0", "@algolia/ingestion": "1.47.0", "@algolia/monitoring": "1.47.0", "@algolia/recommend": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-AGtz2U7zOV4DlsuYV84tLp2tBbA7RPtLA44jbVH4TTpDcc1dIWmULjHSsunlhscbzDydnjuFlNhflR3nV4VJaQ=="], + "ajv": ["ajv@8.12.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA=="], "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], @@ -398,45 +338,37 @@ "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + "arch": ["arch@2.2.0", "", {}, "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ=="], - "array-iterate": ["array-iterate@2.0.1", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="], - - "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], - "astro": ["astro@4.16.19", "", { "dependencies": { "@astrojs/compiler": "^2.10.3", "@astrojs/internal-helpers": "0.4.1", "@astrojs/markdown-remark": "5.3.0", "@astrojs/telemetry": "3.1.0", "@babel/core": "^7.26.0", "@babel/plugin-transform-react-jsx": "^7.25.9", "@babel/types": "^7.26.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.3", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", "acorn": "^8.14.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.1.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^0.7.2", "cssesc": "^3.0.0", "debug": "^4.3.7", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.5.4", "esbuild": "^0.21.5", "estree-walker": "^3.0.3", "fast-glob": "^3.3.2", "flattie": "^1.1.1", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "html-escaper": "^3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.14", "magicast": "^0.3.5", "micromatch": "^4.0.8", "mrmime": "^2.0.0", "neotraverse": "^0.6.18", "ora": "^8.1.1", "p-limit": "^6.1.0", "p-queue": "^8.0.1", "preferred-pm": "^4.0.0", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.6.3", "shiki": "^1.23.1", "tinyexec": "^0.3.1", "tsconfck": "^3.1.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3", "vite": "^5.4.11", "vitefu": "^1.0.4", "which-pm": "^3.0.0", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "zod": "^3.23.8", "zod-to-json-schema": "^3.23.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-baeSswPC5ZYvhGDoj25L2FuzKRWMgx105FetOPQVJFMCAp0o08OonYC7AhwsFdhvp7GapqjnC1Fe3lKb2lupYw=="], - - "astro-icon": ["astro-icon@1.1.5", "", { "dependencies": { "@iconify/tools": "^4.0.5", "@iconify/types": "^2.0.0", "@iconify/utils": "^2.1.30" } }, "sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw=="], + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], + "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - "babel-plugin-transform-hook-names": ["babel-plugin-transform-hook-names@1.0.2", "", { "peerDependencies": { "@babel/core": "^7.12.10" } }, "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw=="], + "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - "base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="], - - "baseline-browser-mapping": ["baseline-browser-mapping@2.9.18", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-e23vBV1ZLfjb9apvfPk4rHVu2ry6RIr2Wfs+O324okSidrX7pTAnEJPCh/O5BtRlr7QtZI7ktOP3vsqr7Z5XoA=="], + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.9.15", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg=="], - "boxen": ["boxen@8.0.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="], + "boxen": ["boxen@7.0.0", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.0", "chalk": "^5.0.1", "cli-boxes": "^3.0.0", "string-width": "^5.1.2", "type-fest": "^2.13.0", "widest-line": "^4.0.1", "wrap-ansi": "^8.0.1" } }, "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg=="], - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], - "buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], + "camelcase": ["camelcase@7.0.1", "", {}, "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw=="], - "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], - - "caniuse-lite": ["caniuse-lite@1.0.30001766", "", {}, "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA=="], + "caniuse-lite": ["caniuse-lite@1.0.30001765", "", {}, "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "chalk": ["chalk@5.0.1", "", {}, "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w=="], + + "chalk-template": ["chalk-template@0.4.0", "", { "dependencies": { "chalk": "^4.1.2" } }, "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg=="], "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], @@ -446,110 +378,70 @@ "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], - "cheerio": ["cheerio@1.2.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "encoding-sniffer": "^0.2.1", "htmlparser2": "^10.1.0", "parse5": "^7.3.0", "parse5-htmlparser2-tree-adapter": "^7.1.0", "parse5-parser-stream": "^7.1.2", "undici": "^7.19.0", "whatwg-mimetype": "^4.0.0" } }, "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg=="], - - "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], + "chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - - "ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], + "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], - "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], + "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], - "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], + "clipboardy": ["clipboardy@3.0.0", "", { "dependencies": { "arch": "^2.2.0", "execa": "^5.1.1", "is-wsl": "^2.2.0" } }, "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], - "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - "commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], - - "common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], + "compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="], - "confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], + "compression": ["compression@1.8.1", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w=="], - "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + "compute-scroll-into-view": ["compute-scroll-into-view@3.1.1", "", {}, "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw=="], - "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], + "content-disposition": ["content-disposition@0.5.2", "", {}, "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA=="], - "css-tree": ["css-tree@2.3.1", "", { "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" } }, "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="], - - "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], - "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], - "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], + "deep-extend": ["deep-extend@0.6.0", "", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="], + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], - "deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="], - - "devalue": ["devalue@5.6.2", "", {}, "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg=="], + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], - "diff": ["diff@5.2.2", "", {}, "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A=="], - - "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], - - "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], - - "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], - - "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], - - "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], - - "dset": ["dset@3.1.4", "", {}, "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA=="], + "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - "electron-to-chromium": ["electron-to-chromium@1.5.278", "", {}, "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw=="], + "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], - - "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], - - "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="], - - "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], - - "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - - "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], + "enhanced-resolve": ["enhanced-resolve@5.18.4", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q=="], "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "esbuild": ["esbuild@0.21.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.21.5", "@esbuild/android-arm": "0.21.5", "@esbuild/android-arm64": "0.21.5", "@esbuild/android-x64": "0.21.5", "@esbuild/darwin-arm64": "0.21.5", "@esbuild/darwin-x64": "0.21.5", "@esbuild/freebsd-arm64": "0.21.5", "@esbuild/freebsd-x64": "0.21.5", "@esbuild/linux-arm": "0.21.5", "@esbuild/linux-arm64": "0.21.5", "@esbuild/linux-ia32": "0.21.5", "@esbuild/linux-loong64": "0.21.5", "@esbuild/linux-mips64el": "0.21.5", "@esbuild/linux-ppc64": "0.21.5", "@esbuild/linux-riscv64": "0.21.5", "@esbuild/linux-s390x": "0.21.5", "@esbuild/linux-x64": "0.21.5", "@esbuild/netbsd-x64": "0.21.5", "@esbuild/openbsd-x64": "0.21.5", "@esbuild/sunos-x64": "0.21.5", "@esbuild/win32-arm64": "0.21.5", "@esbuild/win32-ia32": "0.21.5", "@esbuild/win32-x64": "0.21.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw=="], - - "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + "esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], - "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], @@ -560,65 +452,37 @@ "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], + "estree-util-value-to-estree": ["estree-util-value-to-estree@3.5.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ=="], + "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], - "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], - - "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], + "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], - "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], - - "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], - - "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - - "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], - - "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - - "find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "framer-motion": ["framer-motion@12.34.0", "", { "dependencies": { "motion-dom": "^12.34.0", "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-+/H49owhzkzQyxtn7nZeF4kdH++I2FWrESQ184Zbcw5cEqNHYkE5yxWxcTLSj5lNx3NWdbIRy5FHqUvetD8FWg=="], - "find-up-simple": ["find-up-simple@1.0.1", "", {}, "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ=="], + "fumadocs-core": ["fumadocs-core@16.5.4", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.8.1", "@orama/orama": "^3.1.18", "@shikijs/rehype": "^3.22.0", "@shikijs/transformers": "^3.22.0", "estree-util-value-to-estree": "^3.5.0", "github-slugger": "^2.0.0", "hast-util-to-estree": "^3.1.3", "hast-util-to-jsx-runtime": "^2.3.6", "image-size": "^2.0.2", "mdast-util-mdx": "^3.0.0", "mdast-util-to-markdown": "^2.1.2", "negotiator": "^1.0.0", "npm-to-yarn": "^3.0.1", "path-to-regexp": "^8.3.0", "remark": "^15.0.1", "remark-gfm": "^4.0.1", "remark-rehype": "^11.1.2", "scroll-into-view-if-needed": "^3.1.0", "shiki": "^3.22.0", "tinyglobby": "^0.2.15", "unified": "^11.0.5", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3" }, "peerDependencies": { "@mdx-js/mdx": "*", "@mixedbread/sdk": "^0.46.0", "@orama/core": "1.x.x", "@oramacloud/client": "2.x.x", "@tanstack/react-router": "1.x.x", "@types/estree-jsx": "*", "@types/hast": "*", "@types/mdast": "*", "@types/react": "*", "algoliasearch": "5.x.x", "lucide-react": "*", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0", "react-router": "7.x.x", "waku": "^0.26.0 || ^0.27.0 || ^1.0.0", "zod": "4.x.x" }, "optionalPeers": ["@mdx-js/mdx", "@mixedbread/sdk", "@orama/core", "@oramacloud/client", "@tanstack/react-router", "@types/estree-jsx", "@types/hast", "@types/mdast", "@types/react", "algoliasearch", "lucide-react", "next", "react", "react-dom", "react-router", "waku", "zod"] }, "sha512-CUqyl1YMTzj6JbzduVqAza5rp3zRO2idwu7HoYTkB3Gpibyph1uwOMVGwFt3ra8hENpQCXQAfPMUGcjyba9MCg=="], - "find-yarn-workspace-root2": ["find-yarn-workspace-root2@1.2.16", "", { "dependencies": { "micromatch": "^4.0.2", "pkg-dir": "^4.2.0" } }, "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA=="], + "fumadocs-mdx": ["fumadocs-mdx@14.2.7", "", { "dependencies": { "@mdx-js/mdx": "^3.1.1", "@standard-schema/spec": "^1.1.0", "chokidar": "^5.0.0", "esbuild": "^0.27.3", "estree-util-value-to-estree": "^3.5.0", "js-yaml": "^4.1.1", "mdast-util-to-markdown": "^2.1.2", "picocolors": "^1.1.1", "picomatch": "^4.0.3", "remark-mdx": "^3.1.1", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3", "zod": "^4.3.6" }, "peerDependencies": { "@fumadocs/mdx-remote": "^1.4.0", "@types/mdast": "*", "@types/mdx": "*", "@types/react": "*", "fumadocs-core": "^15.0.0 || ^16.0.0", "mdast-util-directive": "*", "mdast-util-mdx-jsx": "*", "next": "^15.3.0 || ^16.0.0", "react": "*", "vite": "6.x.x || 7.x.x" }, "optionalPeers": ["@fumadocs/mdx-remote", "@types/mdast", "@types/mdx", "@types/react", "mdast-util-directive", "mdast-util-mdx-jsx", "next", "react", "vite"], "bin": { "fumadocs-mdx": "dist/bin.js" } }, "sha512-Q2W79F7wpwhq4HoYPw9GnMpf5ZmpdU7YzZND7EWwwOiWddfyzPh6EH/z7MFhhdhsTqRh9/kwwsu9XslWDRRPsg=="], - "flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="], + "fumadocs-ui": ["fumadocs-ui@16.5.4", "", { "dependencies": { "@fumadocs/tailwind": "0.0.2", "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-direction": "^1.1.1", "@radix-ui/react-navigation-menu": "^1.2.14", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-presence": "^1.1.5", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-tabs": "^1.1.13", "class-variance-authority": "^0.7.1", "lucide-react": "^0.563.0", "motion": "^12.33.0", "next-themes": "^0.4.6", "react-medium-image-zoom": "^5.4.0", "react-remove-scroll": "^2.7.2", "scroll-into-view-if-needed": "^3.1.0", "tailwind-merge": "^3.4.0" }, "peerDependencies": { "@types/react": "*", "fumadocs-core": "16.5.4", "next": "16.x.x", "react": "^19.2.0", "react-dom": "^19.2.0" }, "optionalPeers": ["@types/react", "next"] }, "sha512-HGKBgjViQTd1Df/ZcDTELnZ5haAbkGR16Yy5oJkUKKqdNJ5fpEBCLn/f9nbxjBIfvtayPtUd7+1jNIjvBZu/1A=="], - "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], - - "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], - - "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], + "get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], - "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="], - - "hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="], - - "hast-util-from-parse5": ["hast-util-from-parse5@8.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="], - - "hast-util-is-element": ["hast-util-is-element@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="], - - "hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="], - - "hast-util-raw": ["hast-util-raw@9.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="], + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], @@ -626,27 +490,17 @@ "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], - "hast-util-to-parse5": ["hast-util-to-parse5@8.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA=="], - - "hast-util-to-text": ["hast-util-to-text@4.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "hast-util-is-element": "^3.0.0", "unist-util-find-after": "^5.0.0" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="], + "hast-util-to-string": ["hast-util-to-string@3.0.1", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A=="], "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], - "hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], - - "he": ["he@1.2.0", "", { "bin": { "he": "bin/he" } }, "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="], - - "html-escaper": ["html-escaper@3.0.3", "", {}, "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="], - "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], - "htmlparser2": ["htmlparser2@10.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.2", "entities": "^7.0.1" } }, "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ=="], + "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], - "http-cache-semantics": ["http-cache-semantics@4.2.0", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="], + "image-size": ["image-size@2.0.2", "", { "bin": { "image-size": "bin/image-size.js" } }, "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w=="], - "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], - - "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], + "ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], @@ -654,74 +508,64 @@ "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], - "is-arrayish": ["is-arrayish@0.3.4", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="], - - "is-buffer": ["is-buffer@2.0.5", "", {}, "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="], - "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], - "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + "is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], - "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + "is-port-reachable": ["is-port-reachable@4.0.0", "", {}, "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig=="], - "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], - "is-interactive": ["is-interactive@2.0.0", "", {}, "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ=="], + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], - "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], + "lightningcss": ["lightningcss@1.30.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.30.2", "lightningcss-darwin-arm64": "1.30.2", "lightningcss-darwin-x64": "1.30.2", "lightningcss-freebsd-x64": "1.30.2", "lightningcss-linux-arm-gnueabihf": "1.30.2", "lightningcss-linux-arm64-gnu": "1.30.2", "lightningcss-linux-arm64-musl": "1.30.2", "lightningcss-linux-x64-gnu": "1.30.2", "lightningcss-linux-x64-musl": "1.30.2", "lightningcss-win32-arm64-msvc": "1.30.2", "lightningcss-win32-x64-msvc": "1.30.2" } }, "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ=="], - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.30.2", "", { "os": "android", "cpu": "arm64" }, "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A=="], - "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA=="], - "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ=="], - "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA=="], - "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.2", "", { "os": "linux", "cpu": "arm" }, "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA=="], - "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A=="], - "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA=="], - "load-yaml-file": ["load-yaml-file@0.2.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.13.0", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w=="], - "local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA=="], - "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ=="], - "log-symbols": ["log-symbols@6.0.0", "", { "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" } }, "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw=="], + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="], "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], - "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - - "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + "lucide-react": ["lucide-react@0.563.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA=="], "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="], - "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], - "mdast-util-definitions": ["mdast-util-definitions@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ=="], - "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA=="], @@ -754,9 +598,7 @@ "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], - "mdn-data": ["mdn-data@2.0.30", "", {}, "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="], - - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], @@ -828,107 +670,81 @@ "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], - - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], - "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], + "mime-types": ["mime-types@2.1.18", "", { "dependencies": { "mime-db": "~1.33.0" } }, "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ=="], - "mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="], + "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], - "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - - "neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="], - - "nlcst-to-string": ["nlcst-to-string@3.1.1", "", { "dependencies": { "@types/nlcst": "^1.0.0" } }, "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw=="], + "motion": ["motion@12.34.0", "", { "dependencies": { "framer-motion": "^12.34.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-01Sfa/zgsD/di8zA/uFW5Eb7/SPXoGyUfy+uMRMW5Spa8j0z/UbfQewAYvPMYFCXRlyD6e5aLHh76TxeeJD+RA=="], - "node-html-parser": ["node-html-parser@6.1.13", "", { "dependencies": { "css-select": "^5.1.0", "he": "1.2.0" } }, "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg=="], + "motion-dom": ["motion-dom@12.34.0", "", { "dependencies": { "motion-utils": "^12.29.2" } }, "sha512-Lql3NuEcScRDxTAO6GgUsRHBZOWI/3fnMlkMcH5NftzcN37zJta+bpbMAV9px4Nj057TuvRooMK7QrzMCgtz6Q=="], - "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], + "motion-utils": ["motion-utils@12.29.2", "", {}, "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A=="], - "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + "ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + "next": ["next@16.1.6", "", { "dependencies": { "@next/env": "16.1.6", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.6", "@next/swc-darwin-x64": "16.1.6", "@next/swc-linux-arm64-gnu": "16.1.6", "@next/swc-linux-arm64-musl": "16.1.6", "@next/swc-linux-x64-gnu": "16.1.6", "@next/swc-linux-x64-musl": "16.1.6", "@next/swc-win32-arm64-msvc": "16.1.6", "@next/swc-win32-x64-msvc": "16.1.6", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw=="], - "ora": ["ora@8.2.0", "", { "dependencies": { "chalk": "^5.3.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.2", "string-width": "^7.2.0", "strip-ansi": "^7.1.0" } }, "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw=="], + "next-themes": ["next-themes@0.4.6", "", { "peerDependencies": { "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA=="], - "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], + "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], - "p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "npm-to-yarn": ["npm-to-yarn@3.0.1", "", {}, "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A=="], - "p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="], + "on-headers": ["on-headers@1.1.0", "", {}, "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A=="], - "p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="], + "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], + "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], - "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], + "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], - "parse-latin": ["parse-latin@5.0.1", "", { "dependencies": { "nlcst-to-string": "^3.0.0", "unist-util-modify-children": "^3.0.0", "unist-util-visit-children": "^2.0.0" } }, "sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg=="], - - "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], + "path-is-inside": ["path-is-inside@1.0.2", "", {}, "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w=="], - "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="], - - "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - - "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - - "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], + "path-to-regexp": ["path-to-regexp@8.3.0", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], - - "pkg-dir": ["pkg-dir@4.2.0", "", { "dependencies": { "find-up": "^4.0.0" } }, "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ=="], - - "pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], - "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], - "preact": ["preact@10.28.2", "", {}, "sha512-lbteaWGzGHdlIuiJ0l2Jq454m6kcpI1zNje6d8MlGAFlYvP2GO4ibnat7P74Esfz4sPTdM6UxtTwh/d3pwM9JA=="], - - "preact-render-to-string": ["preact-render-to-string@6.6.5", "", { "peerDependencies": { "preact": ">=10 || >= 11.0.0-0" } }, "sha512-O6MHzYNIKYaiSX3bOw0gGZfEbOmlIDtDfWwN1JJdc/T3ihzRT6tGGSEWE088dWrEDGa1u7101q+6fzQnO9XCPA=="], + "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], - "preferred-pm": ["preferred-pm@4.1.1", "", { "dependencies": { "find-up-simple": "^1.0.0", "find-yarn-workspace-root2": "1.2.16", "which-pm": "^3.0.1" } }, "sha512-rU+ZAv1Ur9jAUZtGPebQVQPzdGhNzaEiQ7VL9+cjsAWPHFYOccNXPNiev1CCDSOg/2j7UujM7ojNhpkuILEVNQ=="], + "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], - "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "prettier-plugin-astro": ["prettier-plugin-astro@0.14.1", "", { "dependencies": { "@astrojs/compiler": "^2.9.1", "prettier": "^3.0.0", "sass-formatter": "^0.7.6" } }, "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw=="], + "range-parser": ["range-parser@1.2.0", "", {}, "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A=="], - "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], + "rc": ["rc@1.2.8", "", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="], - "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], + "react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="], - "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + "react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="], - "pump": ["pump@3.0.3", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="], + "react-medium-image-zoom": ["react-medium-image-zoom@5.4.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-BsE+EnFVQzFIlyuuQrZ9iTwyKpKkqdFZV1ImEQN573QPqGrIUuNni7aF+sZwDcxlsuOMayCr6oO/PZR/yJnbRg=="], - "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], + "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], - "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - "react-dom": ["react-dom@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" }, "peerDependencies": { "react": "^18.3.1" } }, "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw=="], - - "react-refresh": ["react-refresh@0.17.0", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="], + "readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], @@ -938,21 +754,19 @@ "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], - "regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], + "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], - "regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], - "rehype": ["rehype@13.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", "rehype-stringify": "^10.0.0", "unified": "^11.0.0" } }, "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A=="], - - "rehype-parse": ["rehype-parse@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", "unified": "^11.0.0" } }, "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag=="], + "registry-auth-token": ["registry-auth-token@3.3.2", "", { "dependencies": { "rc": "^1.1.6", "safe-buffer": "^5.0.1" } }, "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ=="], - "rehype-raw": ["rehype-raw@7.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="], + "registry-url": ["registry-url@3.1.0", "", { "dependencies": { "rc": "^1.0.1" } }, "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA=="], "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], - "rehype-stringify": ["rehype-stringify@10.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", "unified": "^11.0.0" } }, "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA=="], + "remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="], "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], @@ -962,51 +776,31 @@ "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], - "remark-smartypants": ["remark-smartypants@2.1.0", "", { "dependencies": { "retext": "^8.1.0", "retext-smartypants": "^5.2.0", "unist-util-visit": "^5.0.0" } }, "sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw=="], - "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], - "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], - - "retext": ["retext@8.1.0", "", { "dependencies": { "@types/nlcst": "^1.0.0", "retext-latin": "^3.0.0", "retext-stringify": "^3.0.0", "unified": "^10.0.0" } }, "sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q=="], - - "retext-latin": ["retext-latin@3.1.0", "", { "dependencies": { "@types/nlcst": "^1.0.0", "parse-latin": "^5.0.0", "unherit": "^3.0.0", "unified": "^10.0.0" } }, "sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ=="], - - "retext-smartypants": ["retext-smartypants@5.2.0", "", { "dependencies": { "@types/nlcst": "^1.0.0", "nlcst-to-string": "^3.0.0", "unified": "^10.0.0", "unist-util-visit": "^4.0.0" } }, "sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw=="], - - "retext-stringify": ["retext-stringify@3.1.0", "", { "dependencies": { "@types/nlcst": "^1.0.0", "nlcst-to-string": "^3.0.0", "unified": "^10.0.0" } }, "sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w=="], - - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - - "rollup": ["rollup@4.56.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.56.0", "@rollup/rollup-android-arm64": "4.56.0", "@rollup/rollup-darwin-arm64": "4.56.0", "@rollup/rollup-darwin-x64": "4.56.0", "@rollup/rollup-freebsd-arm64": "4.56.0", "@rollup/rollup-freebsd-x64": "4.56.0", "@rollup/rollup-linux-arm-gnueabihf": "4.56.0", "@rollup/rollup-linux-arm-musleabihf": "4.56.0", "@rollup/rollup-linux-arm64-gnu": "4.56.0", "@rollup/rollup-linux-arm64-musl": "4.56.0", "@rollup/rollup-linux-loong64-gnu": "4.56.0", "@rollup/rollup-linux-loong64-musl": "4.56.0", "@rollup/rollup-linux-ppc64-gnu": "4.56.0", "@rollup/rollup-linux-ppc64-musl": "4.56.0", "@rollup/rollup-linux-riscv64-gnu": "4.56.0", "@rollup/rollup-linux-riscv64-musl": "4.56.0", "@rollup/rollup-linux-s390x-gnu": "4.56.0", "@rollup/rollup-linux-x64-gnu": "4.56.0", "@rollup/rollup-linux-x64-musl": "4.56.0", "@rollup/rollup-openbsd-x64": "4.56.0", "@rollup/rollup-openharmony-arm64": "4.56.0", "@rollup/rollup-win32-arm64-msvc": "4.56.0", "@rollup/rollup-win32-ia32-msvc": "4.56.0", "@rollup/rollup-win32-x64-gnu": "4.56.0", "@rollup/rollup-win32-x64-msvc": "4.56.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg=="], - - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - - "s.color": ["s.color@0.0.15", "", {}, "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA=="], - - "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - "sass-formatter": ["sass-formatter@0.7.9", "", { "dependencies": { "suf-log": "^2.5.3" } }, "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw=="], + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], + "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - "search-insights": ["search-insights@2.17.3", "", {}, "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ=="], - - "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="], + "scroll-into-view-if-needed": ["scroll-into-view-if-needed@3.1.0", "", { "dependencies": { "compute-scroll-into-view": "^3.0.2" } }, "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ=="], "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], + "serve": ["serve@14.2.5", "", { "dependencies": { "@zeit/schemas": "2.36.0", "ajv": "8.12.0", "arg": "5.0.2", "boxen": "7.0.0", "chalk": "5.0.1", "chalk-template": "0.4.0", "clipboardy": "3.0.0", "compression": "1.8.1", "is-port-reachable": "4.0.0", "serve-handler": "6.1.6", "update-check": "1.5.4" }, "bin": { "serve": "build/main.js" } }, "sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA=="], + + "serve-handler": ["serve-handler@6.1.6", "", { "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", "mime-types": "2.1.18", "minimatch": "3.1.2", "path-is-inside": "1.0.2", "path-to-regexp": "3.3.0", "range-parser": "1.2.0" } }, "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ=="], - "shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], + "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], - "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], - "simple-code-frame": ["simple-code-frame@1.3.0", "", { "dependencies": { "kolorist": "^1.6.0" } }, "sha512-MB4pQmETUBlNs62BBeRjIFGeuy/x6gGKh7+eRUemn1rCFhqo7K+4slPqsyizCbcbYLnaYqaoZ2FWsZ/jN06D8w=="], + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "simple-swizzle": ["simple-swizzle@0.2.4", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw=="], + "shiki": ["shiki@3.22.0", "", { "dependencies": { "@shikijs/core": "3.22.0", "@shikijs/engine-javascript": "3.22.0", "@shikijs/engine-oniguruma": "3.22.0", "@shikijs/langs": "3.22.0", "@shikijs/themes": "3.22.0", "@shikijs/types": "3.22.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g=="], - "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], @@ -1014,68 +808,50 @@ "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], - "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], - - "stack-trace": ["stack-trace@1.0.0-pre2", "", {}, "sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A=="], - - "stdin-discarder": ["stdin-discarder@0.2.2", "", {}, "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ=="], - - "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], + "string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - "strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="], + "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - "strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="], + "strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], - "suf-log": ["suf-log@2.5.3", "", { "dependencies": { "s.color": "0.0.15" } }, "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow=="], + "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], - "svgo": ["svgo@3.3.2", "", { "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", "css-select": "^5.1.0", "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.0.0" }, "bin": "./bin/svgo" }, "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw=="], + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "tar": ["tar@7.5.6", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA=="], + "tailwind-merge": ["tailwind-merge@3.4.0", "", {}, "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g=="], - "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + "tailwindcss": ["tailwindcss@4.1.18", "", {}, "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw=="], - "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], + + "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], - "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="], - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], + "type-fest": ["type-fest@2.19.0", "", {}, "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA=="], "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], - - "ultrahtml": ["ultrahtml@1.6.0", "", {}, "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw=="], - - "undici": ["undici@7.19.1", "", {}, "sha512-Gpq0iNm5M6cQWlyHQv9MV+uOj1jWk7LpkoE5vSp/7zjb4zMdAcUD+VL5y0nH4p9EbUklq00eVIIX/XcDHzu5xg=="], - "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], - "unherit": ["unherit@3.0.1", "", {}, "sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg=="], - "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], - "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], - "unist-util-modify-children": ["unist-util-modify-children@3.1.1", "", { "dependencies": { "@types/unist": "^2.0.0", "array-iterate": "^2.0.0" } }, "sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA=="], - "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], @@ -1086,330 +862,88 @@ "unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], - "unist-util-visit-children": ["unist-util-visit-children@2.0.2", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q=="], - "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], - "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + "update-check": ["update-check@1.5.4", "", { "dependencies": { "registry-auth-token": "3.3.2", "registry-url": "3.1.0" } }, "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ=="], - "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - "vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], - "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], - "vite": ["vite@6.4.1", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g=="], + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - "vite-prerender-plugin": ["vite-prerender-plugin@0.5.12", "", { "dependencies": { "kolorist": "^1.8.0", "magic-string": "0.x >= 0.26.0", "node-html-parser": "^6.1.12", "simple-code-frame": "^1.3.0", "source-map": "^0.7.4", "stack-trace": "^1.0.0-pre2" }, "peerDependencies": { "vite": "5.x || 6.x || 7.x" } }, "sha512-EiwhbMn+flg14EysbLTmZSzq8NGTxhytgK3bf4aGRF1evWLGwZiHiUJ1KZDvbxgKbMf2pG6fJWGEa3UZXOnR1g=="], + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], - "vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="], - - "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], - - "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], - - "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], - - "which-pm": ["which-pm@3.0.1", "", { "dependencies": { "load-yaml-file": "^0.2.0" } }, "sha512-v2JrMq0waAI4ju1xU5x3blsxBBMgdgZve580iYMN5frDaLGjbA24fok7wKCsya8KLVO19Ju4XDc5+zTZCJkQfg=="], - - "which-pm-runs": ["which-pm-runs@1.1.0", "", {}, "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA=="], - - "widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="], - - "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], - - "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - - "xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="], - - "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], - - "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], - "yauzl": ["yauzl@2.10.0", "", { "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" } }, "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g=="], + "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], - "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "widest-line": ["widest-line@4.0.1", "", { "dependencies": { "string-width": "^5.0.1" } }, "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig=="], - "zod-to-json-schema": ["zod-to-json-schema@3.25.1", "", { "peerDependencies": { "zod": "^3.25 || ^4" } }, "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA=="], + "wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - "zod-to-ts": ["zod-to-ts@1.2.0", "", { "peerDependencies": { "typescript": "^4.9.4 || ^5.0.2", "zod": "^3" } }, "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA=="], + "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], - "@algolia/abtesting/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], - - "@algolia/abtesting/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], - - "@algolia/abtesting/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "@algolia/abtesting/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], - - "@algolia/client-abtesting/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], + "@mdx-js/mdx/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], - "@algolia/client-abtesting/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], + "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - "@algolia/client-abtesting/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], + "@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - "@algolia/client-abtesting/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], + "@radix-ui/react-popover/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - "@algolia/client-analytics/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], + "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], - "@algolia/client-analytics/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], - "@algolia/client-analytics/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], - "@algolia/client-analytics/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], - "@algolia/client-insights/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" }, "bundled": true }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], - "@algolia/client-insights/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], + "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], - "@algolia/client-insights/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "@algolia/client-insights/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], - - "@algolia/client-personalization/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], - - "@algolia/client-personalization/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], - - "@algolia/client-personalization/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "@algolia/client-personalization/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], - - "@algolia/client-query-suggestions/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], - - "@algolia/client-query-suggestions/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], - - "@algolia/client-query-suggestions/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "@algolia/client-query-suggestions/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], - - "@algolia/ingestion/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], - - "@algolia/ingestion/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], - - "@algolia/ingestion/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "@algolia/ingestion/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], - - "@algolia/monitoring/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], - - "@algolia/monitoring/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], - - "@algolia/monitoring/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "@algolia/monitoring/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], - - "@algolia/recommend/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], - - "@algolia/recommend/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], - - "@algolia/recommend/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "@algolia/recommend/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], - - "@antfu/install-pkg/tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], - - "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - - "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - - "@docsearch/react/@docsearch/css": ["@docsearch/css@3.9.0", "", {}, "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA=="], - - "@prefresh/vite/@rollup/pluginutils": ["@rollup/pluginutils@4.2.1", "", { "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" } }, "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ=="], - - "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - - "@types/nlcst/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "@types/yauzl/@types/node": ["@types/node@20.19.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g=="], - - "algoliasearch/@algolia/client-common": ["@algolia/client-common@5.47.0", "", {}, "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg=="], - - "algoliasearch/@algolia/client-search": ["@algolia/client-search@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0", "@algolia/requester-browser-xhr": "5.47.0", "@algolia/requester-fetch": "5.47.0", "@algolia/requester-node-http": "5.47.0" } }, "sha512-b5hlU69CuhnS2Rqgsz7uSW0t4VqrLMLTPbUpEl0QVz56rsSwr1Sugyogrjb493sWDA+XU1FU5m9eB8uH7MoI0g=="], - - "algoliasearch/@algolia/requester-browser-xhr": ["@algolia/requester-browser-xhr@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw=="], - - "algoliasearch/@algolia/requester-fetch": ["@algolia/requester-fetch@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA=="], - - "algoliasearch/@algolia/requester-node-http": ["@algolia/requester-node-http@5.47.0", "", { "dependencies": { "@algolia/client-common": "5.47.0" } }, "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA=="], + "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "astro/@astrojs/markdown-remark": ["@astrojs/markdown-remark@5.3.0", "", { "dependencies": { "@astrojs/prism": "3.1.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.1", "remark-smartypants": "^3.0.2", "shiki": "^1.22.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg=="], - - "astro/vite": ["vite@5.4.21", "", { "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", "rollup": "^4.20.0" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" }, "optionalPeers": ["@types/node", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser"], "bin": { "vite": "bin/vite.js" } }, "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw=="], + "chalk-template/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], + "compression/negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], - "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "mdast-util-to-hast/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], - "gray-matter/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "mdast-util-to-markdown/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], - "htmlparser2/entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], + "micromark/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "load-yaml-file/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "mime-types/mime-db": ["mime-db@1.33.0", "", {}, "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="], - "log-symbols/is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="], - - "lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - - "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - - "mlly/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], - - "p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], - - "retext/unified": ["unified@10.1.2", "", { "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^5.0.0" } }, "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q=="], - - "retext-latin/unified": ["unified@10.1.2", "", { "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^5.0.0" } }, "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q=="], - - "retext-smartypants/unified": ["unified@10.1.2", "", { "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^5.0.0" } }, "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q=="], - - "retext-smartypants/unist-util-visit": ["unist-util-visit@4.1.2", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", "unist-util-visit-parents": "^5.1.1" } }, "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg=="], - - "retext-stringify/unified": ["unified@10.1.2", "", { "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", "extend": "^3.0.0", "is-buffer": "^2.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^5.0.0" } }, "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q=="], + "serve-handler/bytes": ["bytes@3.0.0", "", {}, "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="], - "unist-util-modify-children/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + "serve-handler/path-to-regexp": ["path-to-regexp@3.3.0", "", {}, "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw=="], - "unist-util-visit-children/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "vite/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], - - "@prefresh/vite/@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - - "@prefresh/vite/@rollup/pluginutils/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - - "@types/yauzl/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "unist-util-remove-position/unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "astro/@astrojs/markdown-remark/remark-smartypants": ["remark-smartypants@3.0.2", "", { "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", "unified": "^11.0.4", "unist-util-visit": "^5.0.0" } }, "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA=="], - - "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], - - "gray-matter/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - - "load-yaml-file/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - - "mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], - - "retext-latin/unified/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "retext-latin/unified/vfile": ["vfile@5.3.7", "", { "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "unist-util-stringify-position": "^3.0.0", "vfile-message": "^3.0.0" } }, "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g=="], - - "retext-smartypants/unified/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "retext-smartypants/unified/vfile": ["vfile@5.3.7", "", { "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "unist-util-stringify-position": "^3.0.0", "vfile-message": "^3.0.0" } }, "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g=="], - - "retext-smartypants/unist-util-visit/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "retext-smartypants/unist-util-visit/unist-util-is": ["unist-util-is@5.2.1", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw=="], - - "retext-smartypants/unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@5.1.3", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } }, "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg=="], - - "retext-stringify/unified/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "retext-stringify/unified/vfile": ["vfile@5.3.7", "", { "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "unist-util-stringify-position": "^3.0.0", "vfile-message": "^3.0.0" } }, "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g=="], - - "retext/unified/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - - "retext/unified/vfile": ["vfile@5.3.7", "", { "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", "unist-util-stringify-position": "^3.0.0", "vfile-message": "^3.0.0" } }, "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g=="], - - "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], - - "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], - - "vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], - - "vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], - - "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], - - "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], - - "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + "chalk-template/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], - - "vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], - - "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], - - "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], - - "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], - - "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], - - "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], - - "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], - - "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], - - "vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], - - "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], - - "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], - - "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], - - "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], - - "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], - - "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + "micromark/debug/ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext-smartypants": ["retext-smartypants@6.2.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ=="], - - "retext-latin/unified/vfile/unist-util-stringify-position": ["unist-util-stringify-position@3.0.3", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg=="], - - "retext-latin/unified/vfile/vfile-message": ["vfile-message@3.1.4", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" } }, "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw=="], - - "retext-smartypants/unified/vfile/unist-util-stringify-position": ["unist-util-stringify-position@3.0.3", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg=="], - - "retext-smartypants/unified/vfile/vfile-message": ["vfile-message@3.1.4", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" } }, "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw=="], - - "retext-stringify/unified/vfile/unist-util-stringify-position": ["unist-util-stringify-position@3.0.3", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg=="], - - "retext-stringify/unified/vfile/vfile-message": ["vfile-message@3.1.4", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" } }, "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw=="], - - "retext/unified/vfile/unist-util-stringify-position": ["unist-util-stringify-position@3.0.3", "", { "dependencies": { "@types/unist": "^2.0.0" } }, "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg=="], - - "retext/unified/vfile/vfile-message": ["vfile-message@3.1.4", "", { "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" } }, "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/retext-stringify": ["retext-stringify@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext-smartypants/@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext-smartypants/nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/retext-latin/parse-latin": ["parse-latin@7.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/retext-stringify/nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/retext-latin/parse-latin/nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/retext-latin/parse-latin/unist-util-modify-children": ["unist-util-modify-children@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" } }, "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw=="], - - "astro/@astrojs/markdown-remark/remark-smartypants/retext/retext-latin/parse-latin/unist-util-visit-children": ["unist-util-visit-children@3.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="], } } diff --git a/components/provider.tsx b/components/provider.tsx new file mode 100644 index 00000000..522282b2 --- /dev/null +++ b/components/provider.tsx @@ -0,0 +1,8 @@ +'use client'; +import SearchDialog from '@/components/search'; +import { RootProvider } from 'fumadocs-ui/provider/next'; +import { type ReactNode } from 'react'; + +export function Provider({ children }: { children: ReactNode }) { + return {children}; +} diff --git a/components/search.tsx b/components/search.tsx new file mode 100644 index 00000000..1f704205 --- /dev/null +++ b/components/search.tsx @@ -0,0 +1,46 @@ +'use client'; +import { + SearchDialog, + SearchDialogClose, + SearchDialogContent, + SearchDialogHeader, + SearchDialogIcon, + SearchDialogInput, + SearchDialogList, + SearchDialogOverlay, + type SharedProps, +} from 'fumadocs-ui/components/dialog/search'; +import { useDocsSearch } from 'fumadocs-core/search/client'; +import { create } from '@orama/orama'; +import { useI18n } from 'fumadocs-ui/contexts/i18n'; + +function initOrama() { + return create({ + schema: { _: 'string' }, + // https://docs.orama.com/docs/orama-js/supported-languages + language: 'english', + }); +} + +export default function DefaultSearchDialog(props: SharedProps) { + const { locale } = useI18n(); // (optional) for i18n + const { search, setSearch, query } = useDocsSearch({ + type: 'static', + initOrama, + locale, + }); + + return ( + + + + + + + + + + + + ); +} diff --git a/components/split.tsx b/components/split.tsx new file mode 100644 index 00000000..59a6db5c --- /dev/null +++ b/components/split.tsx @@ -0,0 +1,59 @@ +"use client"; +import React, { useState } from "react"; + +interface SplitProps { + children: React.ReactNode; +} + +export function Root({ children }: SplitProps) { + const [leftWidth, setLeftWidth] = useState(50); + + const handleMouseDown = (e: React.MouseEvent) => { + e.preventDefault(); + + const startX = e.clientX; + const initialLeftWidth = leftWidth; + + const handleMouseMove = (moveEvent: MouseEvent) => { + const deltaX = moveEvent.clientX - startX; + const newLeftWidth = Math.max( + 20, + Math.min(80, initialLeftWidth + (deltaX / window.innerWidth) * 100), + ); + setLeftWidth(newLeftWidth); + }; + + const handleMouseUp = () => { + document.removeEventListener("mousemove", handleMouseMove); + document.removeEventListener("mouseup", handleMouseUp); + }; + + document.addEventListener("mousemove", handleMouseMove); + document.addEventListener("mouseup", handleMouseUp); + }; + + const childrenArray = React.Children.toArray(children); + const leftChild = childrenArray[0]; + const rightChild = childrenArray[1]; + + return ( +
+
+ {leftChild} +
+
+
+
+
+
+ {rightChild} +
+
+ ); +} diff --git a/src/content/docs/en/release/43-upgrades.mdx b/content/docs/about/43-upgrades.mdx similarity index 69% rename from src/content/docs/en/release/43-upgrades.mdx rename to content/docs/about/43-upgrades.mdx index 73cf9cb7..54101555 100644 --- a/src/content/docs/en/release/43-upgrades.mdx +++ b/content/docs/about/43-upgrades.mdx @@ -1,9 +1,8 @@ --- -title: Upgrades for Ultramarine 43 -description: "A temporary notice for the 42 to 43 upgrade path." +title: Upgrading to Ultramarine 43 +description: "How to upgrade to Ultramarine 43" --- -import Alert from "../../../../components/Docs/Alert.astro"; We're proud to announce that upgrades to Ultramarine Linux 43 (Gas Meter) are ready right now in your edition's app store! @@ -17,7 +16,7 @@ You may need to update your copy of Ultramarine 42 before the upgrade will becom ## Command Line -In case the above doesn't work, you can always upgrade through the command line, using `dnf system-upgrade`. +In case the above doesn't work, you can always upgrade through the command line, using `dnf system-upgrade`dnf. Run the following and follow the prompts: @@ -38,8 +37,4 @@ sudo dnf distro-sync --releasever=43 ## Getting Support -If you need any help please reach out in [one of our chats.](/en/community/community/) - -#### [Next Up: Errata →](/en/release/errata) - -#### [← Back To: Linux Concepts, Security and Privacy →](/en/linux/securityprivacy) +If you need any help please reach out in [one of our chats.](/docs/community/) diff --git a/src/content/docs/en/release/diff-fedora.mdx b/content/docs/about/diff-fedora.mdx similarity index 72% rename from src/content/docs/en/release/diff-fedora.mdx rename to content/docs/about/diff-fedora.mdx index bbe8d26a..0c75acaa 100644 --- a/src/content/docs/en/release/diff-fedora.mdx +++ b/content/docs/about/diff-fedora.mdx @@ -3,7 +3,6 @@ title: Differences with Fedora description: "Known differences and changes compared with Fedora" --- -import Alert from "../../../../components/Docs/Alert.astro"; This page documents Ultramarine Linux's significant changes compared with a typical Fedora workstation setup. @@ -17,8 +16,8 @@ Changes listed below are non-exhaustive and cumulative, meaning each section con ## Ultramarine 43 -- `umcli` tweak: cachyos-kernel -- `umcli` tweak: sudo-pwfeedback +- `umcli`dnf tweak: cachyos-kernel +- `umcli`dnf tweak: sudo-pwfeedback - More fixes to Taidan, including language selection, keyboard variant, etc. - 🔥 Readymade preview images @@ -27,7 +26,7 @@ Changes listed below are non-exhaustive and cumulative, meaning each section con - 🔥 Many Taidan fixes and new pages/features - 📦 Use netto for network connection in Taidan - Properly enable terra-mesa repo for all images -- 📦 `umcli` tweaks feature included ootb +- 📦 `umcli`dnf tweaks feature included ootb - 📦 Surface images switch to upstream surface-dtx-daemon package - WSL gains hardware acceleration, proper Ultramarine shell configs, and some packages ported over from Ultramarine proper. - Update preset systemd services @@ -37,24 +36,24 @@ Changes listed below are non-exhaustive and cumulative, meaning each section con ## Ultramarine 41 -- 🔥 Switched to Taidan, our out-of-box experience +- 🔥 Switched to Taidandnf, our out-of-box experience - 🔥 All raw images (including Pi) switched to Btrfs - 🔥 Move many core desktop apps to Flatpak - 🔥 WSL support - 🔥 Surface Images -- 🛳️ `fastfetch` -- 🛳️ `zstd` -- 📦 `umcli` +- 🛳️ `fastfetch`dnf +- 🛳️ `zstd`dnf +- 📦 `umcli`dnf - 📦 NVIDIA drivers shipped in [Terra] - 📦 Codecs shipped in [Terra] ## Ultramarine 40 -- 🔥 [Change default package manager to `dnf5`](/en/usage/um40-dnf5) (`dnf5-default-package-manager`) +- Change default package manager to `dnf5` (`dnf5-default-package-manager`dnf) - Drop Pantheon Edition -- `ultramarine-fun` -- 🛳️ `git` -- 🛳️ XFCE Edition +- `ultramarine-fun`dnf +- `git`dnf +- XFCE Edition - Improve key bindings for `zsh` - Supported by [Raspberry Pi Imager](https://github.com/raspberrypi/rpi-imager) - Use `ext4` instead of `btrfs` for Raspberry Pis @@ -64,20 +63,20 @@ Changes listed below are non-exhaustive and cumulative, meaning each section con - Out of box repositories: [Terra], full set of [RPM Fusion], [Flathub] - IP MTU probing enabled (which fixes [Ubisoft Connect](https://en.wikipedia.org/wiki/Ubisoft_Connect) games) - [Custom wallpapers](https://github.com/Ultramarine-Linux/backgrounds) 🌇 by Aikoyori -- 📦 [System76 Scheduler](https://github.com/pop-os/system76-scheduler) (significantly better scheduling for low-end devices) +- 📦 [System76 Scheduler](https://github.com/pop-os/system76-scheduler)dnf (significantly better scheduling for low-end devices) - 📦 [KWin Script for system76-scheduler Integration](https://github.com/maxiberta/kwin-system76-scheduler-integration) - Numerous popular GNOME extensions - - 🛳️ [AppIndicator/KStatusNotifierItem support](https://github.com/ubuntu/gnome-shell-extension-appindicator) (`gnome-shell-extension-appindicator`) - - 🛳️ [Pop shell extension](https://github.com/pop-os/shell) (`gnome-shell-extension-pop-shell`) - - 🛳️ Support for keyboard selection of windows and workspaces in GNOME Shell (`gnome-shell-extension-windowsNavigator`) - - 🛳️ [Bringing back the app menu](https://github.com/fthx/appmenu-is-back) (`gnome-shell-extension-appmenu-is-back`) - - 📦 [Pop Launcher](https://github.com/pop-os/launcher) (`pop-launcher`) + - 🛳️ [AppIndicator/KStatusNotifierItem support](https://github.com/ubuntu/gnome-shell-extension-appindicator) (`gnome-shell-extension-appindicator`dnf) + - 🛳️ [Pop shell extension](https://github.com/pop-os/shell) (`gnome-shell-extension-pop-shell`dnf) + - 🛳️ Support for keyboard selection of windows and workspaces in GNOME Shell (`gnome-shell-extension-windowsNavigator`dnf) + - 🛳️ [Bringing back the app menu](https://github.com/fthx/appmenu-is-back) (`gnome-shell-extension-appmenu-is-back`dnf) + - 📦 [Pop Launcher](https://github.com/pop-os/launcher) (`pop-launcher`dnf) - 🛳️ Most drivers and codecs -- 🛳️ Guest Desktop Agents (`@guest-desktop-agents`) -- 📦 `sipa-fonts` ([Thai National Fonts](https://en.wikipedia.org/wiki/National_Fonts)) +- 🛳️ Guest Desktop Agents (`@guest-desktop-agents`dnf) +- 📦 `sipa-fonts`dnf ([Thai National Fonts](https://en.wikipedia.org/wiki/National_Fonts)) - 🛳️ Mozc (Japanese Input Method Editor) - 📦 ~~Pantheon Edition (`@pantheon-desktop`)~~ (deprecated since UM40) -- 📦 [Starship](https://starship.rs) +- 📦 [Starship](https://starship.rs)dnf - Custom Budgie Layout that focuses on simplicity (Last Updated October 2025) @@ -85,5 +84,3 @@ Changes listed below are non-exhaustive and cumulative, meaning each section con [Terra]: https://terra.fyralabs.com [RPM Fusion]: https://rpmfusion.org [Flathub]: https://flathub.org - -#### [← Back To: Errata](/en/release/errata) diff --git a/src/content/docs/en/release/errata.mdx b/content/docs/about/errata.mdx similarity index 88% rename from src/content/docs/en/release/errata.mdx rename to content/docs/about/errata.mdx index 7514d0cb..84cd512f 100644 --- a/src/content/docs/en/release/errata.mdx +++ b/content/docs/about/errata.mdx @@ -3,7 +3,6 @@ title: Errata description: "Various known bugs and other issues in Ultramarine Linux." --- -import Alert from "../../../../components/Docs/Alert.astro"; This page contains bugs that we can't solve or that are easily solvable by users. We remove them as they are resolved. @@ -30,7 +29,7 @@ This is solved by distributors including Ultramarine as a synonym to Fedora. This is caused by the boot partition running out of space, you can boot into the previous kernel entry and either install `dracut-strip-trigger` (which will break moving drives to another device) or [tell DNF to keep less kernels](https://discussion.fedoraproject.org/t/how-can-i-change-the-number-of-kernels-retained-when-updating-in-fedora/73863/2). - Since Ultramarine 42, only 2 kernel versions are kept, and `dracut-strip-trigger` should be installed by default. + Since Ultramarine 42, only 2 kernel versions are kept, and `dracut-strip-trigger`dnf should be installed by default. - Taidan language switching does not work @@ -44,7 +43,7 @@ This is solved by distributors including Ultramarine as a synonym to Fedora. - Install icon may not be using the Ultramarine icon. -## Ultramarine Linux 41 +## Ultramarine Linux 41 (EOL) ### All Editions @@ -56,10 +55,10 @@ This is solved by distributors including Ultramarine as a synonym to Fedora. - Nvidia and Surface users may experience a kernel panic after upgrade. - This is caused by the boot partition running out of space, you can boot into the previous kernel entry and either install `dnf-strip-trigger` (which will break moving drives to another device) or [tell DNF to keep less kernels](https://discussion.fedoraproject.org/t/how-can-i-change-the-number-of-kernels-retained-when-updating-in-fedora/73863/2). + This is caused by the boot partition running out of space, you can boot into the previous kernel entry and either install `dracut-strip-trigger`dnf (which will break moving drives to another device) or [tell DNF to keep less kernels](https://discussion.fedoraproject.org/t/how-can-i-change-the-number-of-kernels-retained-when-updating-in-fedora/73863/2). -## Ultramarine Linux 40 +## Ultramarine Linux 40 (EOL) ### Xfce Edition @@ -77,7 +76,7 @@ This is solved by distributors including Ultramarine as a synonym to Fedora. - Flathub not included in new installs - Our builder had dnf weakdeps disabled, causing `ultramarine-repos-extras` to not be installed. This was fixed in UM40.1. + Our builder had dnf weakdeps disabled, causing `ultramarine-repos-extras`dnf to not be installed. This was fixed in UM40.1. - Raw images don't have a Plymouth theme @@ -93,7 +92,7 @@ This is solved by distributors including Ultramarine as a synonym to Fedora. - Fedora bookmarks still included - We removed the Fedora bookmarks and replaced them with `ultramarine-phony-bookmarks`. As the name implies, there are no bookmarks. + We removed the Fedora bookmarks and replaced them with `ultramarine-phony-bookmarks`dnf. As the name implies, there are no bookmarks. - dnf5 not set as default @@ -155,7 +154,7 @@ A workaround is to also specify the Fedora buildroot when trying to add a Copr r - Pop!\_Shell launcher -The Pop!\_Shell launcher is not included. This can be fixed by installing the `pop-launcher` package. +The Pop!\_Shell launcher is not included. This can be fixed by installing the `pop-launcher`dnf package. ### Cutefish Edition @@ -176,7 +175,3 @@ You can help us fix this issue by offering to maintain these packages ourselves, - Missing Tweaks from the Standard Releases As the standard release includes a script to modify the system, due to the nature of OSTree, we are unable to include these tweaks unless we rebuild all major packages with our custom patches. - -#### [Next Up: Differences with Fedora →](/en/release/diff-fedora) - -#### [← Back To: Ultramarine 42 Upgrades →](/en/release/42-upgrades) diff --git a/src/content/docs/en/welcome.mdx b/content/docs/about/index.mdx similarity index 85% rename from src/content/docs/en/welcome.mdx rename to content/docs/about/index.mdx index f4a5eb2e..2798bdfb 100644 --- a/src/content/docs/en/welcome.mdx +++ b/content/docs/about/index.mdx @@ -1,19 +1,25 @@ --- -title: "Welcome" -description: "This wiki is meant to be the extended documentation for both end users and developers, so it is separated in those two categories." +title: "About Ultramarine" +description: "Learn about Ultramarine itself" --- -import Alert from "../../../components/Docs/Alert.astro"; +If you want to install Ultramarine Linux, head to the [Getting Started](/docs/get-started) section. -Welcome to the Ultramarine Wiki! This wiki is designed to help users get settled into Ultramarine Linux. +## What is Ultramarine? -Developer and Package Maintainer Documentation has moved to [Fyra Developer](https://developer.fyralabs.com). +Ultramarine Linux is a modern operating system that supports your workflow with the hardware and tools you already love, for work, school, and play. -If you want to get started with contributing, head to the [Contributing Section](/en/contributing/contributorguide). +However you use your system, we have you covered with tweaks and tools to make things run more seamlessly out of the box. -On this page, you can read about the project, so if you want to become familiar with important concepts and our philosophy, read this first! +## A Brief History -If you want to install Ultramarine Linux, head to the [Getting Ultramarine](/en/setup/getting) section. +Ultramarine Linux was founded as a spiritual succesor to Korora Linux, but has since come into its own and grown beyond this goal. + +Our first release was Ultramarine 35 (Phing Kan), based on Fedora 35. Our latest is Ultramarine 43 (Gas Meter). + +Ultramarine joined Fyra Labs ahead of UM39, and has been maintained by Team Fyra ever since. + +Our guiding idea (beyond the philisophy you'll read in a moment) is that the user opening a terminal is a failure of UX (unless they wanted to open the terminal). ## General Philosophy @@ -33,7 +39,7 @@ While it may seem trivial to more advanced users to tweak a few settings and ins ### Ultramarine is Accesible. -We believe that software should meet you where you are. Ultramarine accomplishes this by making the experience better, localizing our software, and running on the hardware you already have. +We believe that software should meet you where you are. Ultramarine accomplishes this by making the experience better, localizing our software, providing a better input method experience, and running on the hardware you already have. ## FAQ @@ -53,10 +59,6 @@ No, Ultramarine is not just Fedora with extra desktop environments. We aim to im Cutefish is no longer maintained upstream. We decided to stop supporting Cutefish due to this in Ultramarine 37. -### What happened to Pantheon? - -Pantheon Edition was removed in UM40. Downloads had been steadily declining for some time and the desktop simply failed to start, which is why unfortunately it was dropped. - ### Can you add a (insert desktop here) edition? Put simply, maybe. We require new editions to satisfy the following small set of requirements: @@ -73,15 +75,11 @@ Ideally, any new edition will also have the following: You may also manually install the desktop environment if it is available in Fedora. -#### But what about (insert revival of Cutefish)? - -We do not intend to include revivals of Cutefish as they tend to be very short-lived. - ### Does Ultramarine track or collect my data? -As of now, the only data we collect is a count of how many times a package has been downloaded from Terra or the Ultramarine repository using [DNF Counting](https://docs.fedoraproject.org/en-US/infra/sysadmin_guide/dnf-counting/). This information is not tied to you or your computer. +As of now, the only data we collect is a count of how many times a package has been downloaded from Terra or the Ultramarine repository using [DNF Counting](https://docs.fedoraproject.org/en-US/infra/sysadmin_guide/dnf-counting/), and the number of times our out of box experience connects to the internet. This information does not include any information about your system beyond your CPU architecture, Ultramarine version, and Edition. -Fyra Labs (the company behind Ultramarine) does not collect any data that can be tied to an individual without express consent from the user. +Fyra Labs (the company behind Ultramarine) does not collect any data that can be tied to an individual. ### Is Ultramarine semi-rolling? @@ -117,14 +115,14 @@ By default, Ultramarine will automatically update using _PackageKit_, which will which requires a reboot to apply updates. Ultramarine may prompt you to reboot your system after applying updates to ensure that all updates are applied correctly, but you can choose to reboot at any later time. - + It is still recommended to reboot your system after applying updates to ensure that all updates are applied correctly, especially if you have not rebooted your system in a while. - + -### Why Ultramarine (instead of other distros) +### Why Ultramarine over other Distros? - Performance - Fedora (the distro Ultramarine is based on) has some of the best IO performance over other distros. @@ -150,7 +148,7 @@ especially if you have not rebooted your system in a while. - Terra is reviewed by Fyra Labs and the Ultramarine Project. You can also [take a look at our security policy](https://github.com/terrapkg/packages/blob/f39/SECURITY.md). - Flathub is used by users across the entire Linux/BSD ecosystem. If you install apps from an app store, you are most likely installing apps from Flathub, which are isolated from your system environment when run, making attacks less likely to succeed. -### Why Ultramarine (instead of Windows) +### Why Ultramarine over Windows? - Performance - Windows bloats your computer with many different potentially unwanted programs that slow down your computer. Ultramarine does not. @@ -184,22 +182,3 @@ especially if you have not rebooted your system in a while. - Default settings on Ultramarine makes it so that you can start using your computer as soon as possible. - Ultramarine comes with an app store. You can install programs reviewed by dedicated teams very easily. - If you want some programs to be included in the app stores, you should send us feedback. - -## Team - -Made with these people, and the community! - -- Pornpipat "Cappy" Popum -- Lleyton "Lea" Gray -- Madomado -- Jaiden Riordan -- Owen Zimmerman -- June Fish -- Aikoyori -- Trobonox -- Mo -- Toru Ishikawa - -[Meet the team →](https://fyralabs.com/about/#Meet:~:text=benefit%20of%20all.-,Meet%20the%20Team) - -#### [Next Up: Join the Community →](/en/community/community) diff --git a/content/docs/about/meta.json b/content/docs/about/meta.json new file mode 100644 index 00000000..3d7b2067 --- /dev/null +++ b/content/docs/about/meta.json @@ -0,0 +1,6 @@ +{ + "title": "About Ultramarine", + "description": "Learn about Ultramarine itself", + "icon": "PawPrint", + "root": true +} diff --git a/src/content/docs/en/anywhere/chromebook.mdx b/content/docs/anywhere/completed/chromebook.mdx similarity index 77% rename from src/content/docs/en/anywhere/chromebook.mdx rename to content/docs/anywhere/completed/chromebook.mdx index 4af4fada..4f8b46dc 100644 --- a/src/content/docs/en/anywhere/chromebook.mdx +++ b/content/docs/anywhere/completed/chromebook.mdx @@ -1,16 +1,8 @@ --- -title: "Chromebook (Anywhere)" -description: "Chromebooks in the Ultramarine Anywhere Initiative" +title: "Chromebook" +description: "Technical details about Ultramarine on Chromebooks" --- -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **In Progress Phase**. All information on - this page is subject to change. Do not follow any instructions unless you know - what you're doing. - - Chromebooks were an obvious target for Ultramarine Anywhere, despite being mostly standard hardware, they have custom EC and strange firmware. @@ -20,7 +12,7 @@ Chromebook support in Ultramarine Linux is provided in partnership with the [Chr ## How it Works -Ultramarine Chromebook Edition uses a special bootloader called [Submarine](https://developer.fyralabs.com/submarine) to load the kernel. +Ultramarine for Chromebooks uses a special bootloader called [Submarine](https://developer.fyralabs.com/submarine) to load the kernel. Under the hood, Submarine is an incredibly minimal Linux OS based on [u-root](https://github.com/u-root/u-root), it's only really usable for debug and booting a full distribution. Once Submarine is loaded, we use [LinuxBoot](https://www.linuxboot.org/) to boot a full copy of Ultramarine (and hopefully more distros in the future). @@ -88,15 +80,15 @@ These are among the first few generations of Chromebooks, and either use an unsu ## Installation -Ultramarine on Chromebook will be released soon, installation guide for that will be found on a separate menu in this wiki at the time of release. +Ultramarine for Chromebooks will be released soon, installation guide for that will be found on a separate menu in this wiki at the time of release. -## Manual Installation - Note that Ultramarine Chromebook Edition will be a much easier experience once released +## Manual Installation - Note that Ultramarine for Chromebooks will be a much easier experience once released - + This method is more technical than our usual wiki content, proceed if you know what you're doing. We are not responsible for brickage, thermonuclear war, the death of a pet, etc. - + This guide assumes you are on x86 and have [Developer Mode](https://chromium.googlesource.com/chromiumos/docs/+/main/developer_mode.md#dev-mode) and [USB Booting Enabled](https://chromium.googlesource.com/chromiumos/docs/+/main/developer_guide.md#boot-from-your-usb-disk). We also assume you are using GParted for partitioning tasks. There are alterations you could make to these instructions and still get the same result, this is just what we think is the easiest way. @@ -117,9 +109,9 @@ You're now inside the Ultramarine install on your USB/SD card. Slowness and lag 6. Use `dd` to copy the contents of the USB/SD card to the internal storage of the Chromebook. - + You do NOT need to resize the root filesystem, it should do this automatically upon first boot. Depending on the size of your Chromebook's internal storage, you may need to move the Submarine partition to the end of the disk again, after it is copied to internal. - + If you need help with `dd` syntax, here are some pointers - @@ -151,10 +143,69 @@ cgpt add -i -t kernel -P 15 -T 1 -S 1 /dev/sdX 11. Done! - + Once Ultramarine has been successfully installed onto your Chromebook's internal disk, rebooting will take you back to the ChromeOS recovery screen. To boot to Ultramarine, select 'Boot to Internal Disk' or press Ctrl+D - - -## ARM - -ARM Chromebooks are in heavy development. If you'd like to help test, check out the [ARM Beta Program](/en/chromebook/armbeta). + + +## ARM Chromebook Closed Beta + +We are looking for technically-versed people to test our Ultramarine Chromebook beta images for ARM. + +This is a closed program, please join and ping @Owen in the [Discord](https://fyralabs.com/discord), or email him at owen@fyralabs.com, to apply. + +The following devices are supported: + +All Kukui (mt8183) family Chromebooks: + +| Model name/number | Codename | +| ------------------------------------------ | -------- | +| Acer Chromebook 311 (C722/C722T) | willow | +| Acer Chromebook 311 (CB311-11H/CB311-11HT) | kenzo | +| Acer Chromebook 314 (CB314-2H/CB314-2HT) | cozmo | +| Acer Chromebook Spin 311 (CP311-3H) | juniper | +| Acer Chromebook Spin 311 (R722T) | pico | +| Asus Chromebook CZ1 | cerise | +| Asus Chromebook Detachable CM3 (CM3000) | kakadu | +| Asus Chromebook Detachable CZ1 | katsu | +| Asus Chromebook Flip CM3 (CM3200, MT8183) | damu | +| Asus Chromebook Flip CZ1 | stern | +| HP Chromebook 11a | kappa | +| HP Chromebook 11MK G9 EE | esche | +| HP Chromebook x360 11MK G3 EE | burnet | +| Lenovo 100e Chromebook 2nd Gen MTK 2 | makomo | +| Lenovo 10e Chromebook Tablet | kodama | +| Lenovo IdeaPad 3 Chromebook (MT8183) | fennel14 | +| Lenovo IdeaPad Duet Chromebook | krane | +| Lenovo IdeaPad Flex 3 Chromebook (MT8183) | fennel | + +Source: https://wiki.postmarketos.org/wiki/Google_Kukui_Chromebook_(google-kukui) + +All Asurada (mt8192) family Chromebooks: + +| Model name/number | Codename | +| ------------------------------------------ | -------- | +| Acer Chromebook 514 (CB514-2H / CB514-2HT) | spherion | +| ASUS Chromebook Flip CM3 (CM3200, MT8192) | hayato | + +Source: https://wiki.postmarketos.org/wiki/Google_Asurada_Chromebook_(google-asurada) + +All Trogdor (sc7180) family Chromebooks: + +| Model name/number | Codename | +| --------------------------------------------- | ------------- | +| Acer Chromebook 511 | limozeen | +| Acer Chromebook Spin 513 | lazor | +| Dynabook Chromebook C1 | pompom | +| HP Fortis 11 G9 Q Chromebook | kingoftown | +| Libera-Merdeka Chromebook C100/C110/C120/C150 | pazquel | +| Orbic Chromebook 4G | pazquel | +| Acer Chromebook Tab 510 | quackingstick | +| HP Chromebook X2 | coachz | +| Lenovo IdeaPad Duet 3 | wormdingler | +| Lenovo IdeaPad Duet 5 | homestar | + +Source: https://wiki.postmarketos.org/wiki/Google_Trogdor_Chromebook_(google-trogdor) + +If your device isn't listed, contact Owen anyway! We may be able to help! + +Follow-up instructions, guide, and dedicated discord channel will be provided after acceptance. diff --git a/src/content/docs/en/anywhere/rpi.mdx b/content/docs/anywhere/completed/rpi.mdx similarity index 61% rename from src/content/docs/en/anywhere/rpi.mdx rename to content/docs/anywhere/completed/rpi.mdx index edda72c8..eb8adfca 100644 --- a/src/content/docs/en/anywhere/rpi.mdx +++ b/content/docs/anywhere/completed/rpi.mdx @@ -1,32 +1,29 @@ --- -title: "Raspberry Pi (Anywhere)" -description: "Raspberry Pi in the Ultramarine Anywhere Initiative" +title: "Raspberry Pi" +description: "Technical details about Ultramarine on Raspberry Pi devices" --- -import Alert from "../../../../components/Docs/Alert.astro"; - -### Ultramarine Linux currently supports the Raspberry Pi 3 and 4/400. For information on other Pis, see [below](/en/anywhere/rpi#raspberry-pi-5). - -## Selecting a Drive +## Raspberry Pi 3, 4, and 400 +### Selecting a Drive The drive you use will affect the experience you'll have on Ultramarine. -### Raspberry Pi 3 Series +#### Raspberry Pi 3 Series Raspberry Pi 3 Series support only microSD cards. Your storage device must be 16GB or larger. You should also look for a class 10 SDHC or SDXC microSD. -### Raspberry Pi 4 Series +#### Raspberry Pi 4 Series Raspberry Pi 4 Series support microSD cards and USB storage. Your storage device must be 16GB or larger. The best experience will be with an SSD connected over an adapter. A USB 3.0 flash drive will be on-par to slightly better then a microSD card. All of the options are good, it's up to your needs. -## Flashing the Image +### Flashing the Image If you're using a Raspberry Pi 4/400, you can skip these steps and use -[Raspberry Pi Imager instead](/en/anywhere/rpi#raspberry-pi-imager). +[Raspberry Pi Imager instead](#raspberry-pi-imager). First, you will need to decompress it. - On Linux, run `unzstd FILENAME.img.zst`, you may need to install the `zstd` package @@ -34,17 +31,17 @@ First, you will need to decompress it. - On Windows 10, use 7zip or WinRaR - On macOS, install `zstd` from [Homebrew](https://brew.sh/) (`brew install zstd`), then `unzstd FILENAME.img.zst`. -Grab a USB stick or SD Card! Use a flasher program to flash Ultramarine to your storage device. [balenaEtcher](https://www.balena.io/etcher/) is an easy cross-platform choice. +Grab a USB stick or SD Card! Use a flasher program to flash Ultramarine to your storage device. [Moonshot](https://www.github.com/fyralabs/moonshot)flatpak is an easy cross-platform choice. -![](/assets/balenaetcher.png) +![](/assets/moonshot/moonshot.png) Simply select the .img file, the device you're using, and click flash. You can also use the Disks application on Budgie, Xfce, and GNOME editions. -## Raspberry Pi Imager +### Raspberry Pi Imager -- Install [Raspberry Pi Imager](https://www.raspberrypi.com/software/). You can grab this from the app store on Ultramarine. If you're on Windows or Mac you can [download it from here](https://www.raspberrypi.com/software/), or use it [directly in the Raspberry Pi firmware](https://www.raspberrypi.com/documentation/computers/getting-started.html#install-over-the-network). +- Install [Raspberry Pi Imager](https://www.raspberrypi.com/software/)flatpak. You can grab this from the app store on Ultramarine. If you're on Windows or Mac you can [download it from here](https://www.raspberrypi.com/software/), or use it [directly in the Raspberry Pi firmware](https://www.raspberrypi.com/documentation/computers/getting-started.html#install-over-the-network). - Open Raspberry Pi Imager, select 'Choose Device,' then select 'Raspberry Pi 4.' - Select 'Choose OS' then scroll down to 'Other General-Purpose OS,' select 'Ultramarine Linux,' then select your edition of choice. - Select 'Choose Storage,' and select your storage device you would like to flash to. Double check you have the correct device selected, as this is a destructive operation. @@ -55,7 +52,7 @@ You can also use the Disks application on Budgie, Xfce, and GNOME editions. Your Imager app should look something like this when ready to flash. -## First Boot +### First Boot On first boot, the root file system will automatically be expanded, and you’ll be prompted with our out-of-box app, [Taidan](/en/setup/installation/#taidan-out-of-box-guide). @@ -63,22 +60,22 @@ That’s it! You’re ready to enjoy Ultramarine on your Raspberry Pi! We’re w Fedora has upstream support for the Pi 4, 400, and 3. Ultramarine Anywhere intends to extend support to the Pi 5 and Zero 2. -## Packages +### Packages We have Raspberry Pi packages packaged in [Terra](https://terra.fyralabs.com/). We are working on packaging as many as we can, currently included packages: -- [rpi-utils](https://github.com/raspberrypi/utils), a collection of miscellaneous tools for Raspberry Pis. You may install these individually, or all together as `rpi-utils` -- [rpi-update](https://github.com/raspberrypi/rpi-update), a script to update Raspberry Pi firmware. -- [Picotool](https://github.com/raspberrypi/picotool), a tool for working with RP2040/RP2350 devices. +- [rpi-utils](https://github.com/raspberrypi/utils)dnf, a collection of miscellaneous tools for Raspberry Pis. You may install these individually, or all together as `rpi-utils` +- [rpi-update](https://github.com/raspberrypi/rpi-update)dnf, a script to update Raspberry Pi firmware. +- [Picotool](https://github.com/raspberrypi/picotool)dnf, a tool for working with RP2040/RP2350 devices. -We also have the [Raspberry Pi Control Center](https://github.com/raspberrypi-ui/rpcc) application, and its various plugins: +We also have the [Raspberry Pi Control Center](https://github.com/raspberrypi-ui/rpcc)dnf application, and its various plugins: -- [Appset](https://github.com/raspberrypi-ui/appset), Application for customisation of appearance of Raspberry Pi Desktop. -- [Bookshelf](https://github.com/raspberrypi-ui/bookshelf), A browser for Raspberry Pi Press publications. -- [Piclone](https://github.com/raspberrypi-ui/piclone), Utility to back up a Raspberry Pi to an SD card. -- [Raindrop](https://github.com/raspberrypi-ui/raindrop), Graphical display configurator for Raspberry Pi, using arandr and wlrandr. -- [Rasputin](https://github.com/raspberrypi-ui/rasputin), Mouse and keyboard settings for Raspberry Pi Desktop. -- [Rpinters](https://github.com/raspberrypi-ui/rpinters), Printing utility +- [Appset](https://github.com/raspberrypi-ui/appset)dnf, Application for customisation of appearance of Raspberry Pi Desktop. +- [Bookshelf](https://github.com/raspberrypi-ui/bookshelf)dnf, A browser for Raspberry Pi Press publications. +- [Piclone](https://github.com/raspberrypi-ui/piclone)dnf, Utility to back up a Raspberry Pi to an SD card. +- [Raindrop](https://github.com/raspberrypi-ui/raindrop)dnf, Graphical display configurator for Raspberry Pi, using arandr and wlrandr. +- [Rasputin](https://github.com/raspberrypi-ui/rasputin)dnf, Mouse and keyboard settings for Raspberry Pi Desktop. +- [Rpinters](https://github.com/raspberrypi-ui/rpinters)dnf, Printing utility To install any of these: @@ -86,7 +83,7 @@ To install any of these: dnf install PACKAGENAME ``` -### Notes +#### Notes - RPi4B has a 1GB and 2GB model, we suggest against running a desktop environment on these (Xfce may be alright). - RPi3B has only 1GB of RAM, and the 3A only has 512MB, we suggest against running a desktop environment (Xfce may be alright). @@ -95,18 +92,14 @@ dnf install PACKAGENAME - If using a microSD card, we recommend using a Class 10 microSD card, your experience will be significantly better than lower classes. - Your storage device will need to be larger than 9GB (the image is 8.59GB). We suggest 16GB so you have space for software. -# (Currently) Unsupported Raspberry Pi Devices +## Unsupported Raspberry Pi Devices -## Raspberry Pi 5 +### Raspberry Pi 5 The Raspberry Pi 5 is not currently supported in Fedora. We are packaging the official Raspberry Pi kernel (which will also provide a better experience on the other Pi models). -## Raspberry Pi Zero, 1, and 2 +### Raspberry Pi Zero, 1, and 2 - + These devices are **Not Supported** due to 32bit CPUs. - - -#### [Next Up: Windows Subsystem for Linux →](/en/anywhere/wsl) - -#### [← Back To: Microsoft Surface](/en/anywhere/surface) + diff --git a/src/content/docs/hi/anywhere/surface.mdx b/content/docs/anywhere/completed/surface.mdx similarity index 97% rename from src/content/docs/hi/anywhere/surface.mdx rename to content/docs/anywhere/completed/surface.mdx index f6375579..69482cd5 100644 --- a/src/content/docs/hi/anywhere/surface.mdx +++ b/content/docs/anywhere/completed/surface.mdx @@ -3,7 +3,6 @@ title: Microsoft Surface description: "Information about Ultramarine Linux on Microsoft Surfaces" --- -import Alert from "../../../../components/Docs/Alert.astro"; Microsoft Surface support is provided using the [Linux Surface team's](https://github.com/linux-surface/linux-surface) Surface kernel and packages/software. @@ -54,7 +53,3 @@ All packages and configuration needed to enable (lib)camera support is included. - We do not and will **NEVER** support the Surface 1, 2, or RT. - We do not support the Surface Pro X or Windows DevKit, and probably won't. If you'd like to change this you can [donate hardware](/en/contributing/contributorguide/#hardware). - We do not support the "Copilot+ PC" Surfaces **YET**. - -#### [Next Up: Raspberry Pi →](/en/anywhere/rpi) - -#### [← Back To: Ultramarine Anywhere](/en/anywhere/anywhere) diff --git a/content/docs/anywhere/completed/wsl.mdx b/content/docs/anywhere/completed/wsl.mdx new file mode 100644 index 00000000..a498215d --- /dev/null +++ b/content/docs/anywhere/completed/wsl.mdx @@ -0,0 +1,7 @@ +--- +title: "Windows Subsystem for Linux" +description: "Technical details about Ultramarine for Windows Subsystem for Linux (WSL)" +--- +If you want to learn about using Ultramarine WSL go [here](/docs/get-started/wsl). + +Ultramarine WSL uses the [standard Microsoft distro launcher](https://github.com/Ultramarine-Linux/wsl), we add a few packages to keep WSL in sync and provide our userspace utilities. diff --git a/src/content/docs/en/anywhere/applesilicon.mdx b/content/docs/anywhere/in-progress/applesilicon.mdx similarity index 51% rename from src/content/docs/en/anywhere/applesilicon.mdx rename to content/docs/anywhere/in-progress/applesilicon.mdx index 0ff33784..8e5e6504 100644 --- a/src/content/docs/en/anywhere/applesilicon.mdx +++ b/content/docs/anywhere/in-progress/applesilicon.mdx @@ -1,14 +1,13 @@ --- -title: "Apple Silicon Macs (Anywhere)" -description: "Apple Silicon in the Ultramarine Anywhere Initiative" +title: "Apple Silicon Macs" +description: "Technical information about supporting Apple Silicon Macs in Ultramarine" --- -import Alert from "../../../../components/Docs/Alert.astro"; - - This device type is still in the **Planning Phase**. All information on this + + This device type is still in the **In Progress**. All information on this page is subject to change - + We are working on porting the Asahi Linux installer to work with Ultramarine. Images that can boot from an external drive that already has Asahi installed are also being worked on. diff --git a/src/content/docs/en/anywhere/xr.mdx b/content/docs/anywhere/in-progress/xr.mdx similarity index 78% rename from src/content/docs/en/anywhere/xr.mdx rename to content/docs/anywhere/in-progress/xr.mdx index c3477099..1e5f24f0 100644 --- a/src/content/docs/en/anywhere/xr.mdx +++ b/content/docs/anywhere/in-progress/xr.mdx @@ -3,23 +3,23 @@ title: "XR and Spatial Computing" description: "XR and Spatial Computing in the Ultramarine Anywhere Initiative" --- -We are working on providing full support for [Stardust XR](https://stardustxr.org/). +We are working on providing full support for [Stardust XR](https://stardustxr.org/). ### Packages All core Stardust XR components are packaged in the [Terra repository](https://terra.fyralabs.com/) (shipped with Ultramarine): -- [stardust-xr-armillary](https://repology.org/project/stardust-xr-armillary/versions) -- [stardust-xr-atmosphere](https://repology.org/project/stardust-xr-atmosphere/versions) -- [stardust-xr-black-hole](https://repology.org/project/stardust-xr-black-hole/versions) -- [stardust-xr-comet](https://repology.org/project/stardust-xr-comet/versions) -- [stardust-xr-flatland](https://repology.org/project/stardust-xr-flatland/versions) -- [stardust-xr-gravity](https://repology.org/project/stardust-xr-gravity/versions) -- [stardust-xr-magnetar](https://repology.org/project/stardust-xr-magnetar/versions) -- [stardust-xr-non-spatial-input](https://repology.org/project/stardust-xr-non-spatial-input/versions) -- [stardust-xr-protostar](https://repology.org/project/stardust-xr-protostar/versions) -- [stardust-xr-server](https://repology.org/project/stardust-xr-server/versions) -- [stardust-xr-telescope](https://repology.org/project/stardust-xr-telescope/versions) +- [stardust-xr-armillary](https://repology.org/project/stardust-xr-armillary/versions)dnf +- [stardust-xr-atmosphere](https://repology.org/project/stardust-xr-atmosphere/versions)dnf +- [stardust-xr-black-hole](https://repology.org/project/stardust-xr-black-hole/versions)dnf +- [stardust-xr-comet](https://repology.org/project/stardust-xr-comet/versions)dnf +- [stardust-xr-flatland](https://repology.org/project/stardust-xr-flatland/versions)dnf +- [stardust-xr-gravity](https://repology.org/project/stardust-xr-gravity/versions)dnf +- [stardust-xr-magnetar](https://repology.org/project/stardust-xr-magnetar/versions)dnf +- [stardust-xr-non-spatial-input](https://repology.org/project/stardust-xr-non-spatial-input/versions)dnf +- [stardust-xr-protostar](https://repology.org/project/stardust-xr-protostar/versions)dnf +- [stardust-xr-server](https://repology.org/project/stardust-xr-server/versions)dnf +- [stardust-xr-telescope](https://repology.org/project/stardust-xr-telescope/versions)dnf To install all of these packages: @@ -31,6 +31,6 @@ To install these packages on an RPM-OSTree/bootc based system: sudo rpm-ostree install stardust-xr-armillary stardust-xr-atmosphere stardust-xr-black-hole stardust-xr-comet stardust-xr-flatland stardust-xr-gravity stardust-xr-magnetar stardust-xr-non-spatial-input stardust-xr-protostar stardust-xr-server stardust-xr-telescope ``` -Then, run `telescope` in your terminal, or `telescope -f` for flatscreen mode. +Then, run `telescope` in your terminal, or `telescope -f` for flatscreen mode. For further information, check out [the Stardust XR docs](https://stardustxr.org/docs/get-started/What-is-Stardust). diff --git a/src/content/docs/en/anywhere/anywhere.mdx b/content/docs/anywhere/index.mdx similarity index 50% rename from src/content/docs/en/anywhere/anywhere.mdx rename to content/docs/anywhere/index.mdx index 20acab54..e8ef6f2e 100644 --- a/src/content/docs/en/anywhere/anywhere.mdx +++ b/content/docs/anywhere/index.mdx @@ -1,57 +1,52 @@ --- title: Ultramarine Anywhere -description: "Our goal is to run Ultramarine Linux on as many devices as possible" +description: "Check out the unique devices Ultramarine runs on" --- -import Alert from "../../../../components/Docs/Alert.astro"; - One of the major focuses of the Ultramarine project is to bring Linux to as many people as possible. A major part of this is supporting as many devices as possible, through our Ultramarine Anywhere Initiative. By contributing to Ultramarine Anywhere, you can help us bring Linux to more devices and more people. - + The pages about this program are more technical than the rest of the wiki. Do not follow the instructions on these pages unless you know what you're doing. - + -#### If you have any suggestions or comments regarding these pages, don't hesitate to [reach out](/en/community/community). +If you have any suggestions or comments regarding these pages, don't hesitate to [reach out](/docs/community). ## Completed Platforms in the **Completed** category are fully supported in Ultramarine and available to use right now! -- [Microsoft Surface](/en/anywhere/surface) -- [Raspberry Pi 3, 4, and 400](/en/anywhere/rpi) -- [Windows Subsystem for Linux](/en/anywhere/wsl) +- [Microsoft Surface](/docs/anywhere/surface) +- [Raspberry Pi 3, 4, and 400](/docs/anywhere/rpi) +- [Windows Subsystem for Linux](/docs/anywhere/wsl) +- [Chromebooks](/docs/anywhere/chromebook) ## In Progress Platforms in the **In Progress** category are being actively worked on, and will be released soon. For more updates or contributions, check out our [socials](https://fyralabs.com/contact/). -- [Chromebooks](/en/anywhere/chromebook) -- [XR and Spatial Computing](/en/anywhere/xr) -- [Raspberry Pi 5](/en/anywhere/rpi) -- [Apple Silicon Macs](/en/anywhere/applesilicon) +- [XR and Spatial Computing](/docs/anywhere/xr) +- [Raspberry Pi 5](/docs/anywhere/rpi) +- [Apple Silicon Macs](/docs/anywhere/applesilicon) ## Planned Devices in the **Planned** category are being brainstormed, researched, or experimented with, and will (probably) be worked on in the near future. -- [Android Devices](/en/anywhere/android) -- [Data Centre, Enterprise, and HPC](/en/anywhere/enterprise) -- [RISC-V](/en/anywhere/riscv) +- [Android Devices](/docs/anywhere/android) +- [Servers](/docs/anywhere/servers) +- [RISC-V](/docs/anywhere/riscv) ## Wishlist Devices in the **Wishlist** category are platforms we would like to support one day, but are very much up in the air and have not been worked on. -- [Smart TV Devices](/en/anywhere/ott) -- [Thin Clients](/en/anywhere/thin) -- [Steam Deck](/en/anywhere/steamdeck) -- [Nintendo Switch](/en/anywhere/tegra) -- [NVIDIA Shield](/en/anywhere/tegra) -- [NVIDIA Jetson Microcomputers](/en/anywhere/tegra) - -#### [Next Up: Microsoft Surface →](/en/anywhere/surface) +- [Smart TV Devices](/docs/anywhere/ott) +- [Thin Clients](/docs/anywhere/thin) +- [Nvidia Tegra Devices (Jetson, Nintendo Switch)](/docs/anywhere/tegra) -#### [← Back To: Ultramarine Contributions, Mirroring](/en/contributing/mirroring) + + If you're looking for support for your x86 PC handheld, we highly suggest checking out our friends at [Bazzite](https://bazzite.gg). + diff --git a/content/docs/anywhere/meta.json b/content/docs/anywhere/meta.json new file mode 100644 index 00000000..70314a6b --- /dev/null +++ b/content/docs/anywhere/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Anywhere", + "description": "Learn about running Ultramarine on unusual devices", + "icon": "Cpu", + "root": true +} diff --git a/src/content/docs/en/anywhere/android.mdx b/content/docs/anywhere/planned/android.mdx similarity index 68% rename from src/content/docs/en/anywhere/android.mdx rename to content/docs/anywhere/planned/android.mdx index ecbe9507..709f857f 100644 --- a/src/content/docs/en/anywhere/android.mdx +++ b/content/docs/anywhere/planned/android.mdx @@ -1,17 +1,16 @@ --- -title: "Android (Anywhere)" +title: "Android" description: "Android Devices in the Ultramarine Anywhere Initiative" --- -import Alert from "../../../../components/Docs/Alert.astro"; - + This device type is still in the **Planning Phase**. All information on this page is subject to change - + Android Devices are very common, and (most of the time) extremely customizable. We do not have a target release or full plan at this time, but we will support in the (hopefully) near future. ## Implementation -We are actively debating wether to do pmOS style ports or Halium (like Ubuntu Touch). Join our [community](/en/community/community) if you wanna discuss this! \ No newline at end of file +We are actively debating wether to do pmOS style ports or Halium (like Ubuntu Touch). Join our [community](/docs/community) if you wanna discuss this! diff --git a/src/content/docs/en/anywhere/riscv.mdx b/content/docs/anywhere/planned/riscv.mdx similarity index 79% rename from src/content/docs/en/anywhere/riscv.mdx rename to content/docs/anywhere/planned/riscv.mdx index 370a12ad..c623af0c 100644 --- a/src/content/docs/en/anywhere/riscv.mdx +++ b/content/docs/anywhere/planned/riscv.mdx @@ -1,13 +1,12 @@ --- -title: "RISC-V (Anywhere)" +title: "RISC-V" description: "RISC-V Devices in the Ultramarine Anywhere Initiative" --- -import Alert from "../../../../components/Docs/Alert.astro"; - + This device type is still in the **Wishlist Phase**. All information on this page is subject to change. - + We plan to port to RISC-V architecture as soon as we can get the hardware. If you are a hardware vendor producing RISC-V devices or have a spare RISC-V device, please [reach out](mailto:contact@fyralabs.com) if you'd like to support the Ultramarine RISC-V port. diff --git a/src/content/docs/hi/anywhere/enterprise.mdx b/content/docs/anywhere/planned/servers.mdx similarity index 65% rename from src/content/docs/hi/anywhere/enterprise.mdx rename to content/docs/anywhere/planned/servers.mdx index 2efcabbe..539beb76 100644 --- a/src/content/docs/hi/anywhere/enterprise.mdx +++ b/content/docs/anywhere/planned/servers.mdx @@ -1,16 +1,15 @@ --- -title: "Data Centre, Enterprise, and HPC (Anywhere)" -description: "Data Centre, Enterprise, and HPC in the Ultramarine Anywhere Initiative" +title: "Servers" +description: "Serversin the Ultramarine Anywhere Initiative" --- -import Alert from "../../../../components/Docs/Alert.astro"; - + This device type is still in the **Planning Phase**. All information on this page is subject to change. - + -These images will be built for constant runtime, and include/exclude fitting packages for server usecases. If you'd like to suggest a platform, drop us a line in [our chats](/en/community/community). +These images will be built for constant runtime, and include/exclude fitting packages for server usecases. If you'd like to suggest a platform, drop us a line in [our chats](/docs/community). ## Implementation diff --git a/src/content/docs/en/anywhere/ott.mdx b/content/docs/anywhere/wishlist/ott.mdx similarity index 84% rename from src/content/docs/en/anywhere/ott.mdx rename to content/docs/anywhere/wishlist/ott.mdx index 6d7d45a2..25a3b280 100644 --- a/src/content/docs/en/anywhere/ott.mdx +++ b/content/docs/anywhere/wishlist/ott.mdx @@ -3,13 +3,12 @@ title: "Smart TV Devices" description: "Smart TV Devices in the Ultramarine Anywhere Initiative" --- -import Alert from "../../../../components/Docs/Alert.astro"; - + This device type is still in the **Wishlist Phase**. All information on this page is subject to change. - + -Smart TV boxes often run Android, which means we can use Halium to port Ultramarine to the unlockable ones. See [the Android page.](/en/anywhere/android) +Smart TV boxes often run Android, which means we can use Halium to port Ultramarine to the unlockable ones. See [the Android page.](/docs/anywhere/android) This may be limited to FireOS devices as many of them are vulnerable to [mtk-su](https://xdaforums.com/t/amazing-temp-root-for-mediatek-armv8-2020-08-24.3922213/). If you are knowledgable about Smart TV modding/running alternative operating systems, please reach out [here](/en/community/community). diff --git a/src/content/docs/hi/anywhere/tegra.mdx b/content/docs/anywhere/wishlist/tegra.mdx similarity index 96% rename from src/content/docs/hi/anywhere/tegra.mdx rename to content/docs/anywhere/wishlist/tegra.mdx index 970f28c8..6f3f575d 100644 --- a/src/content/docs/hi/anywhere/tegra.mdx +++ b/content/docs/anywhere/wishlist/tegra.mdx @@ -1,14 +1,13 @@ --- -title: "NVIDIA Tegra (Anywhere)" +title: "NVIDIA Tegra" description: "NVIDIA Tegra devices in the Ultramarine Anywhere Initiative" --- -import Alert from "../../../../components/Docs/Alert.astro"; - + This device type is still in the **Wishlist Phase**. All information on this page is subject to change. - + Most of the team has a modern Tegra device, most commonly, the Nintendo Switch. There is interest in running Ultramarine on these devices, but we haven’t started work on a port yet. @@ -64,4 +63,4 @@ the user with the boot menu options. [Horizon OS]: https://en.wikipedia.org/wiki/Nintendo_Switch_system_software [U-Boot]: https://en.wikipedia.org/wiki/Das_U-Boot [Submarine]: https://github.com/FyraLabs/submarine -[Boot Loader Specification]: https://uapi-group.org/specifications/specs/boot_loader_specification/ \ No newline at end of file +[Boot Loader Specification]: https://uapi-group.org/specifications/specs/boot_loader_specification/ diff --git a/src/content/docs/en/anywhere/thin.mdx b/content/docs/anywhere/wishlist/thin.mdx similarity index 81% rename from src/content/docs/en/anywhere/thin.mdx rename to content/docs/anywhere/wishlist/thin.mdx index b66e279d..1dc4d814 100644 --- a/src/content/docs/en/anywhere/thin.mdx +++ b/content/docs/anywhere/wishlist/thin.mdx @@ -1,14 +1,13 @@ --- -title: "Thin Clients (Anywhere)" +title: "Thin Clients" description: " Ultramarine Anywhere Initiative" --- -import Alert from "../../../../components/Docs/Alert.astro"; - + This device type is still in the **Wishlist Phase**. All information on this page is subject to change. - + Thin client images would be fun, and frankly pretty easy. diff --git a/src/content/docs/hi/community/codeofconduct.mdx b/content/docs/community/codeofconduct.mdx similarity index 97% rename from src/content/docs/hi/community/codeofconduct.mdx rename to content/docs/community/codeofconduct.mdx index 37b44b31..43fb09da 100644 --- a/src/content/docs/hi/community/codeofconduct.mdx +++ b/content/docs/community/codeofconduct.mdx @@ -3,7 +3,6 @@ title: Code of Conduct description: "Rules for interacting in the Ultramarine Community" --- -import Alert from "../../../../components/Docs/Alert.astro"; ## Summary @@ -114,6 +113,4 @@ The Code of Conduct for Fyra Labs Projects is derived from the Citizen Code of C Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). -#### [Next Up: Ultramarine Linux System Requirements →](/en/setup/requirements) -#### [← Back To: Join the Community](/en/community/community) diff --git a/src/content/docs/en/contributing/contributorguide.mdx b/content/docs/community/contributing/contributorguide.mdx similarity index 87% rename from src/content/docs/en/contributing/contributorguide.mdx rename to content/docs/community/contributing/contributorguide.mdx index a332d8a5..a5cd277e 100644 --- a/src/content/docs/en/contributing/contributorguide.mdx +++ b/content/docs/community/contributing/contributorguide.mdx @@ -13,7 +13,7 @@ This applies to all of the code that Fyra Labs writes with the community, and mo Sadly, some components, especially device drivers, may be (in a way) held hostage by their authors. This means we cannot see or fix the code. -Check out the [Development Page](/en/contributing/hacking) to get started! +Check out the [Development Page](/docs/contributing/hacking) to get started! ## Packaging @@ -35,10 +35,10 @@ Documentation allows people to understand how to use Ultramarine. Our main sourc Many parts of Ultramarine need testing before release. Here's a list of our current pre-release programs: -- [ARM Chromebook Beta Program](/en/chromebook/armbeta) -- [Ultramarine Atomic Open Beta](https://github.com/Ultramarine-Linux/bootc) +- [ARM Chromebook Beta Program](/docs/anywhere/chromebook#arm-chromebook-closed-beta) +- [Ultramarine Atomic Public Preview](https://github.com/ultramarine-linux/bootc) -We announce new programs frequently, [join our chat] or [follow us on socials] to stay up to date. +We announce new programs frequently, [join our chats] or [follow us on socials] to stay up to date. ## Finance @@ -46,7 +46,7 @@ You can [sponsor us on Github](https://github.com/sponsors/FyraLabs)! Your sponsorship helps us continue and dedicate more time to our work, allowing us to develop and ship technology that can make a difference for you (and many others.) Now, of course, don't forget there's also some sweet and useful benefits (with even more coming soon) in it for you :3 -For those without a GitHub account, we also have [a PayPal page where you can sponsor us](https://www.paypal.com/donate/?hosted_button_id=FE3SHU5U4CL5C). Please note that because we can't reward perks automatically via PayPal, you'll need to ping staff in our chats, so we can manually award them. +For those without a GitHub account, we also have [a PayPal page where you can sponsor us](https://www.paypal.com/donate/?hosted_button_id=FE3SHU5U4CL5C). Please note that because we can't reward perks automatically via PayPal, you'll need to ping staff in our chats, so we can manually award them. ## Outreach @@ -56,7 +56,7 @@ If you'd like to help us grow, join [one of our chats] and ask where you can hel ## Hardware -One of Ultramarine's major focuses is to support as many hardware platforms as possible, our formal initiative for this is [Ultramarine Anywhere](/en/hardware/anywhere). +One of Ultramarine's major focuses is to support as many hardware platforms as possible, our formal initiative for this is [Ultramarine Anywhere](/docs/anywhere). We're always looking for people with knowledge of different and niche hardware platforms to help us expand our support. Hardware donations are also appreciated, especially Chromebooks and RISC-V boards, as they're a major focus of this program. @@ -90,10 +90,6 @@ Here is a list of important upstream projects to Ultramarine, with links to thei - [KDE](https://community.kde.org/Get_Involved) - [XFCE](https://docs.xfce.org/contribute/start) -[one of our chats]: /en/community/community -[join our chat]: /en/community/community -[follow us on socials]: /en/community/community - -#### [Next Up: Code Contributions →](/en/contributing/hacking) - -#### [← Back To: NVIDIA](/en/setup/nvidia) +[one of our chats]: /docs/community +[join our chats]: /docs/community +[follow us on socials]: /docs/community diff --git a/src/content/docs/zh_hant/contributing/hacking.mdx b/content/docs/community/contributing/hacking.mdx similarity index 84% rename from src/content/docs/zh_hant/contributing/hacking.mdx rename to content/docs/community/contributing/hacking.mdx index 40d32cf6..747a5235 100644 --- a/src/content/docs/zh_hant/contributing/hacking.mdx +++ b/content/docs/community/contributing/hacking.mdx @@ -1,9 +1,8 @@ --- -title: 原碼貢獻 +title: Code Contributions description: "A step-by-step guide to hacking on Ultramarine Linux components" --- -import Alert from "../../../../components/Docs/Alert.astro"; One of the most noticeable contributions you can make is code contributions. Whether it's building a new feature or fixing a bug, contributing code is a great way to make a noticeable difference to the operating system itself. @@ -21,32 +20,32 @@ This problem can be anything from a tiny papercut to a massive structural change If you're fixing an issue, what's the cause? If you're building a feature, what's the goal? What's the best way to implement it? -A great place to gather information is within our [community](/en/community/community), simply ask and see what users, contributors, and developers think. +A great place to gather information is within our [community](/docs/community), simply ask and see what users, contributors, and developers think. ## Getting the Ultramarine Toolchain If you're contributing to an existing component, simply get the tools needed for it (we're slowly adding a list to our repositories.) -If you're building a completely new feature, we recommend [Rust](https://www.rust-lang.org/) or [Go](https://go.dev) for features without a GUI. +If you're building a completely new feature, we recommend [Rust](https://www.rust-lang.org/) (`cargo`dnf) or [Go](https://go.dev) (`golang`dnf) for features without a GUI. -If you're building with a GUI, we recommend using [libhelium](https://github.com/tau-os/libhelium), you can find more information here. +If you're building with a GUI, we recommend using [libhelium](https://github.com/tau-os/libhelium)dnf, you can find more information here. Get to work! Make a fork of a project and tinker away! - -
+ +
**Big Changes** For especially big changes, or, major features, ask for help. We'll help you refine and build your idea.
- +
## Writing the Code Write the code! Make sure to continuously test your solution as you go. This will help you catch bugs early and make sure your changes are on the right track. It's also important to document your code when you're done, as this will help other contributors understand your changes. -Remember, you're not alone, no problem is too big or too small to ask for help. If you have a question or want to work with another contributor, ask in our [community](/en/community/community). +Remember, you're not alone, no problem is too big or too small to ask for help. If you have a question or want to work with another contributor, ask in our [community](/docs/community). ## Getting into Ultramarine diff --git a/src/content/docs/hi/contributing/mirroring.mdx b/content/docs/community/contributing/mirroring.mdx similarity index 96% rename from src/content/docs/hi/contributing/mirroring.mdx rename to content/docs/community/contributing/mirroring.mdx index 9ed3cb75..bea53438 100644 --- a/src/content/docs/hi/contributing/mirroring.mdx +++ b/content/docs/community/contributing/mirroring.mdx @@ -75,7 +75,3 @@ And here is a table of what each field means: - You can use a service like [ipinfo.io](https://ipinfo.io/) to get your ASN, continent, country, latitute, and longitude from your server's IP address. - The location doesn't have to be exact, but it should be close to your actual location. - -#### [Next Up: Ultramarine Anywhere →](/en/anywhere/anywhere) - -#### [← Back To: Code Contributions](/en/contributing/hacking) diff --git a/src/content/docs/hi/community/community.mdx b/content/docs/community/index.mdx similarity index 78% rename from src/content/docs/hi/community/community.mdx rename to content/docs/community/index.mdx index 84b6a01c..ea21b69f 100644 --- a/src/content/docs/hi/community/community.mdx +++ b/content/docs/community/index.mdx @@ -1,10 +1,8 @@ --- title: Join the Community! -description: "Community Information" +description: "Come chat with us, or get started with contributing" --- -import Alert from "../../../../components/Docs/Alert.astro"; - Ultramarine Linux has an active community of users, tinkerers, developers, and everyone in between. Our community (like our code) is open to everyone. Here's some of the official spaces: @@ -15,12 +13,9 @@ The Fyra Labs Discord is for all of our projects. We have lively discussions and [Join the Fyra Labs Chat →](https://fyralabs.com/discord) -### Matrix - - -We're closing our Matrix rooms due to a myriad of issues. [Learn more here →](https://blog.fyralabs.com/dropping-matrix/) - - + + We are aware of Discord's upcoming ID requirements. We are exploring alternatives and options. + ### Socials @@ -41,7 +36,3 @@ The Ultramarine Subreddit is a more asynchronous way to interact with the commun ## Our Philosophy We believe that the Fyra Community is larger than just Fyra (the organization). Part of this is interacting with the rest of our community. We feel that this allows us to better judge the desires and needs of our users (and we love talking to all of you). - -#### [Next Up: Code of Conduct →](/en/community/codeofconduct) - -#### [← Back To: Welcome](/en/welcome) diff --git a/content/docs/community/meta.json b/content/docs/community/meta.json new file mode 100644 index 00000000..5612764c --- /dev/null +++ b/content/docs/community/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Community", + "description": "Join our community and get started with contributing", + "icon": "MessageCircleHeart", + "root": true +} diff --git a/src/content/docs/hi/setup/bioskeys.mdx b/content/docs/get-started/bioskeys.mdx similarity index 96% rename from src/content/docs/hi/setup/bioskeys.mdx rename to content/docs/get-started/bioskeys.mdx index 8dfc7757..1bd8b393 100644 --- a/src/content/docs/hi/setup/bioskeys.mdx +++ b/content/docs/get-started/bioskeys.mdx @@ -23,7 +23,7 @@ These are the keys (or combination of keys) used to enter the boot menu or UEFI/ | Huawei | F2 | F12 | | | Intel | F2 | F10 | | | Lenovo (Desktops) | F1 | F12 | | -| Lenovo (Laptops) | F1+Enter, Novo Button | F12, Novo Button | | +| Lenovo (Laptops) | F1+Enter, Novo Button, F2 | F12, Novo Button | | | Lenovo (ThinkPad) | F1, Startup Interrupt Menu | F12, Startup Interrupt Menu | You can (and may need to) access the BIOS/UEFI and boot menus from the Startup Interrupt Menu, which is accessed by pressing Enter (or ThinkVantage when present). | | Macs (Intel) | - | Hold Option (⌥) or Alt | You can change NVRAM variables inside the OS. If you know what you're doing, power to you. | | MSI | Del | F11 | | @@ -42,8 +42,8 @@ These are the keys (or combination of keys) used to enter the boot menu or UEFI/ | Vaio | F3, F4 | F11 | | | Zotac | Del | F8 | | -#### [Next Up: Installation →](/en/setup/installation) - -#### [← Back To: Getting Ultramarine](/en/setup/getting) + +You may need to hold FN/Function when you press these keys. + [mrchromebox UEFI Full ROM]: https://docs.chrultrabook.com/docs/firmware/about.html#rw-legacy diff --git a/src/content/docs/en/setup/getting.mdx b/content/docs/get-started/index.mdx similarity index 71% rename from src/content/docs/en/setup/getting.mdx rename to content/docs/get-started/index.mdx index 33efddbb..8c65d54d 100644 --- a/src/content/docs/en/setup/getting.mdx +++ b/content/docs/get-started/index.mdx @@ -3,11 +3,10 @@ title: Getting Ultramarine Linux description: "Getting started with installing Ultramarine Linux" --- -import Alert from "../../../../components/Docs/Alert.astro"; ## System Requirements -If your computer could run Windows 7 well, chances are it'll run Ultramarine Linux. You should check the [System Requirements](/en/hardware/requirements) to make sure +If your computer could run Windows 7 well, chances are it'll run Ultramarine Linux. You should check the [System Requirements](/docs/get-started/requirements) to make sure. ## Choosing Your Edition @@ -18,36 +17,34 @@ Ultramarine Linux comes in 4 variants: - **Budgie Edition**: A familiar and stylish experience with a bit of flair. - **GNOME Edition**: A simple, elegant, and intuitive desktop with a large ecosystem of apps and extensions. -Check the [System Requirements](/en/hardware/requirements) to make sure your hardware is supported. - Ultramarine Linux is distributed in various formats available for download from [our website](https://ultramarine-linux.org). - + Fyra Labs cannot guarantee the safety or quality of images downloaded from - sites other than our website or FOSSTorrents - + sites other than our website, the Microsoft Store, Raspberry Pi Imager, or FOSSTorrents + ### Microsoft Surface Devices Ultramarine is available with Microsoft Surface support out of the box. -Downloads can be found on our website, and more information can be found [here](../anywhere/surface). +Downloads can be found on our website, and more information can be found [here](/docs/anywhere/surface). ### Windows Subsystem for Linux Ultramarine offers a WSL build/application. -This can be found on the microsoft store, with `winget`, or can be installed with an offline script found on it's anywhere page [here](../anywhere/wsl). +This can be found on the microsoft store, with `winget`, or can be installed with an offline script, learn more [here](/docs/get-started/wsl). -### Raw Images and Raspberry Pi +### Preinstalled Images and Raspberry Pi -Ultramarine is also available as a raw (or preinstalled) image. These images come with a desktop preinstalled and are intended to be flashed directly to the drive your device will boot from (like an SSD or an SD card.) +Ultramarine is also available as a preinstalled (or raw) image. These images come with a desktop preinstalled and are intended to be flashed directly to the drive your device will boot from (like an SSD or an SD card.) These can be found in the [Raw Image](https://images.fyralabs.com/images/ultramarine/) sections of the download page. - + If you're using a Raspberry Pi 4, you can skip these steps and use Raspberry Pi Imager! Either insert an empty microSD and press shfit at startup, or use it on another device. - + ## Verifying the Safety of an Ultramarine Image (Recommended) @@ -75,22 +72,22 @@ CertUtil -hashfile PATH\TO\ULTRAMARINE.ISO SHA256 # Open the checksum file with Notepad and compare the checksum ``` - + If you're using a Raspberry Pi, stop here and go to the [Raspberry Pi instructions](/en/anywhere/rpi) - + ## Creating the Installer -Grab a USB stick! Use a flasher program to create an installer from the image. [balenaEtcher](https://www.balena.io/etcher/) is an easy cross-platform choice. +Grab a USB stick! Use a flasher program to create an installer from the image. [Moonshot](https://github.com/fyralabs/moonshot)flatpak is an easy cross-platform choice. -![](/assets/balenaetcher.png) +![](/assets/moonshot/moonshot.png) -You can also use [Fedora Media Writer](https://github.com/FedoraQt/MediaWriter), or the Disks application on Budgie, Xfce, and GNOME editions. +You can also use [Fedora Media Writer](https://github.com/FedoraQt/MediaWriter)dnf, or the Disks application on Budgie, Xfce, and GNOME editions. - + Rufus has been known to cause issues with Ultramarine images. - + ## Booting the Installer @@ -98,22 +95,12 @@ After flashing the image to your installer, you can boot to Ultramarine Linux by Most computers have a special key that can be used to select a boot device, or to enter the setup screen. This varies from brand to brand, check the [BIOS Keys Page](/en/hardware/bioskeys) for how to enter the boot menu on your machine. - + If you're currently using Windows 10 (or newer) head to the recovery section of settings and select "Advanced Restart". Once there, select "Use a Device". - + - + If you're currently using Linux, you may be able to enter the BIOS by running `sudo systemctl reboot --firmware` - - -## Footnotes - -- The Anaconda installer is very complex and hard to work with, we are working on a new installer that is easier to use and more reliable. -- Ultramarine's Budgie edition provides a close to stock Budgie experience, with a custom theme. Unlike Fedora's Budgie Spin, which provides a completely custom layout and experience. - -#### [Next Up: BIOS Keys →](/en/setup/bioskeys) - -#### [← Back To: System Requirements](/en/setup/requirements) - + diff --git a/src/content/docs/en/setup/installation.mdx b/content/docs/get-started/installation.mdx similarity index 95% rename from src/content/docs/en/setup/installation.mdx rename to content/docs/get-started/installation.mdx index 8e33711c..9b6afc39 100644 --- a/src/content/docs/en/setup/installation.mdx +++ b/content/docs/get-started/installation.mdx @@ -3,7 +3,6 @@ title: Installation description: "A guide on how to install Ultramarine Linux" --- -import Alert from "../../../../components/Docs/Alert.astro"; If you're using an Anaconda image, proceed with the instructions below. If you're using a Readymade Preview image, go [here](#readymade). @@ -27,11 +26,11 @@ After starting the installer, you will be greeted with a language and keyboard s Set your date and time, as well as your time zone. By default, it will be set to automatic - + By default, the time is set from your IP address geolocation. If you're using a VPN or proxy this may not be accurate. - + ### Installation Method @@ -47,10 +46,10 @@ Configure your storage. You also have the option to encrypt your disk. When you If you want to set up a custom storage config, select the 3-dot menu on the top right, then select `Launch Storage Editor`. - + We recommend encrypting your disk for added security. Simply select the "Encrypt" checkbox, and you will be prompted to enter a passphrase for encryption. You will need to enter this passphrase every time your system reboots. - + For more information on how encryption works, refer [here](#encryption). @@ -58,16 +57,16 @@ For more information on how encryption works, refer [here](#encryption). After completing your system configuration, press the `Erase data and Install` button to continue. The installation process will start and may take a few minutes. - + This process is **IRREVERSIBLE**. If you manage to stop the installer before it finishes, you will end up with a broken system.
To fix this, you will have to reinstall. -
+ After the installation process is complete, Anaconda will prompt you to exit back to the live environment. You can reboot your device from the live environment. When the system reboots, you will be greeted with our out-of-box app, Taidan. -For a guide on using Taidan, go [here](#taidan). +For a guide on using Taidan, go [here](#taidan-out-of-box-guide). --- @@ -100,10 +99,10 @@ From here, select `Entire Disk`. Note that a custom option will come in future r You also have the option to encrypt your disk, and enable TPM encryption. When you encrypt your disk, you will be prompted to enter a password used for encryption. Note that this is in no way tied to your Ultramarine user password. - + We recommend encrypting your disk for added security. Simply select the "Encrypt" checkbox, and you will be prompted to enter a passphrase for encryption. You will need to enter this passphrase every time your system reboots. - + For more information on how encryption works, refer [here](#encryption). @@ -117,16 +116,16 @@ Now, you are ready to install. Select `Install` to begin. You will then be taken ![Installing](/assets/readymade/installing.png) - + This process is **IRREVERSIBLE**. If you manage to stop the installer before it finishes, you will end up with a broken system.
To fix this, you will have to reinstall. -
+ After the installation process is complete, Readymade will prompt you to reboot your device. When the system reboots, you will be greeted with our out-of-box app, Taidan. -For a guide on using Taidan, go [here](#taidan). +For a guide on using Taidan, go [here](#taidan-out-of-box-guide). --- @@ -234,7 +233,7 @@ If you'd like, you can turn on a more yellow-tuned color tone, which may be easi Once you press `Confirm and Setup System`, Taidan will start the configuration process, as seen below. -### Sit Back and Relax! +### Sit Back and Relax! ![Installing Apps](/assets/taidan/installing-your-apps.png) @@ -250,8 +249,4 @@ We hope you enjoy using Ultramarine! ## Issues and Support -If you run into any issues at all, please hop into [our chats](/en/community/community/) and let us know! - -#### [Next Up: Post-Installation →](/en/setup/postinstall) - -#### [← Back To: BIOS Keys](/en/setup/bioskeys) +If you run into any issues at all, please hop into [our chats](/docs/community/) and let us know! diff --git a/content/docs/get-started/meta.json b/content/docs/get-started/meta.json new file mode 100644 index 00000000..5bac85aa --- /dev/null +++ b/content/docs/get-started/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Getting Started", + "description": "Get started with Ultramarine", + "icon": "CirclePower", + "root": true +} diff --git a/src/content/docs/zh_hant/hardware/broadcom-realtek.mdx b/content/docs/get-started/post-installation/broadcom-realtek.mdx similarity index 69% rename from src/content/docs/zh_hant/hardware/broadcom-realtek.mdx rename to content/docs/get-started/post-installation/broadcom-realtek.mdx index 4bb42433..5bd37d02 100644 --- a/src/content/docs/zh_hant/hardware/broadcom-realtek.mdx +++ b/content/docs/get-started/post-installation/broadcom-realtek.mdx @@ -1,9 +1,8 @@ --- -title: Broadcom and Realtek Networking -description: "Information about Broadcom and Realtek Networking on Ultramarine Linux" +title: Broadcom and Realtek Drivers +description: "Get your Broadcom or Realtek WiFi card working" --- -import Alert from "../../../../components/Docs/Alert.astro"; Some computers with specific Broadcom or Realtek chipsets may require additional drivers to be installed. These should be automatically installed if you were connected to the internet during installation. @@ -11,13 +10,13 @@ We can't include these by default as they may break other WiFi devices. You'll need to connect to the internet, you can do this via Ethernet or USB tethering from your phone. iPhones will automatically tether over USB when connected, Android phones may require you to switch the USB mode. -On Broadcom, install `broadcom-wl` and `kmod-wl` +On Broadcom, install `broadcom-wl`dnf and `kmod-wl`dnf ```shell sudo dnf install kmod-wl broadcom-wl ``` -On Realtek, install `kmod-wl` only +On Realtek, install `kmod-wl`dnf only ```shell sudo dnf install kmod-wl diff --git a/src/content/docs/zh_hant/installation/postinstall.mdx b/content/docs/get-started/post-installation/codecs.mdx similarity index 56% rename from src/content/docs/zh_hant/installation/postinstall.mdx rename to content/docs/get-started/post-installation/codecs.mdx index 29543850..96f00133 100644 --- a/src/content/docs/zh_hant/installation/postinstall.mdx +++ b/content/docs/get-started/post-installation/codecs.mdx @@ -1,47 +1,8 @@ --- -title: 安裝之後… -description: "Things to do after installing Ultramarine Linux." +title: Installing Codecs +description: "If codecs weren't automatically installed, this page will help." --- -import Alert from "../../../../components/Docs/Alert.astro"; - -After installing Ultramarine Linux, There are a few things you should do to make the most out of your new system. - -## Install NVIDIA Drivers - -NVIDIA drivers were installed during the installation process. If this didn't happen or you missed the chance to enable them on first boot, you can install them with these commands - -```bash -sudo dnf update # Update the system first, the drivers may not work right if you don't. -sudo dnf install akmod-nvidia # Install the NVIDIA kernel module. -``` - -Then, reboot your system. - - - You MUST wait until the process is finished before rebooting. Rebooting too - early might result in a broken installation! This may take upwards of 15 - minutes! You can check the progress by running `sudo akmods` - - -### Use NVIDIA Graphics Card as the primary card on Optimus Laptops - -This change is is completely optional. You can skip this step if you don't -want to use your NVIDIA Graphics Card as the primary card, or you do not use a -dual-GPU laptop connected to an external monitor. It may also cause issues -with some applications, such as Steam and Bottles. - -Run the following commands to make your NVIDIA Graphics Card the primary Graphics Card: - -```bash -sudo cp -p /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf -sudo sed -i '10i\ Option "PrimaryGPU" "yes"' /etc/X11/xorg.conf.d/nvidia.conf # Add PrimaryGPU = yes to the 10th line of the file. -``` - -Then reboot your system. - -## Install Codecs - Ultramarine Linux includes codecs for most of the media you'll come across. **You shouldn't need to install any additional codecs.** Most of these packages below should be installed by default, excluding the VLC and MPV media players, and the `libdvdcss` library. @@ -59,14 +20,3 @@ However, if you find yourself in the situation where you do not have those codec - `nv-codec-headers` - NVIDIA's codec headers for encoding and decoding video on NVIDIA GPUs. Required for hardware-accelerated video encoding and decoding on NVIDIA GPUs. May not be used by default assuming you do not have an NVIDIA GPU. - [LAME](https://lame.sourceforge.io/) (`lame`) - A free and open-source MP3 encoder. Required for encoding MP3 files. - `PackageKit-gstreamer-plugin` - PackageKit plugin that helps you install the above codec packages using GNOME Software/KDE Discover. - -## Set up Backups - -You may want to back up your files to an external volume, you can use [Pika Backup] or [Déjà Dup] to do so. - -Instructions are available on the [Pika Backup] and [Déjà Dup] websites. - -[Déjà Dup]: https://wiki.gnome.org/Apps/DejaDup -[Pika Backup]: https://apps.gnome.org/PikaBackup/ - -#### [← Back To: Installation](/en/installation/installation) diff --git a/src/content/docs/en/setup/nvidia.mdx b/content/docs/get-started/post-installation/nvidia.mdx similarity index 57% rename from src/content/docs/en/setup/nvidia.mdx rename to content/docs/get-started/post-installation/nvidia.mdx index ac291cbc..924a2a2c 100644 --- a/src/content/docs/en/setup/nvidia.mdx +++ b/content/docs/get-started/post-installation/nvidia.mdx @@ -1,21 +1,20 @@ --- title: NVIDIA Drivers -description: "Information about NVIDIA Graphics on Ultramarine Linux" +description: "Get your NVIDIA GPU working" --- -import Alert from "../../../../components/Docs/Alert.astro"; For computers with NVIDIA graphics cards, you have two choices for drivers. -#### Noveau Driver +## Nouveau Driver -[The Noveau driver](https://nouveau.freedesktop.org/) is a fully open-source driver for NVIDIA graphics cards. It's built into Ultramarine so you can use your GPU instantly. +[The Nouveau driver](https://nouveau.freedesktop.org/) is a fully open-source driver for NVIDIA graphics cards. It's built into Ultramarine so you can use your GPU instantly. -Despite how good this sounds, modern NVIDIA GPUs will suffer performance issues and screen tearing under the Noveau driver. +Despite how good this sounds, modern NVIDIA GPUs will suffer performance issues and screen tearing under the Nouveau driver. -Older NVIDIA GPUs work well with the Noveau driver (and may only work with Noveau.) +Older NVIDIA GPUs work well with the Nouveau driver (and may only work with Nouveau.) -#### Proprietary Driver +## Proprietary Driver This is our recommended solution. Proprietary drivers support all of the features and performance of your GPU. They are automatically installed during installation if you are connected to the internet. @@ -26,12 +25,8 @@ sudo dnf update # Update the system first, the drivers may not work right if you sudo dnf install akmod-nvidia # Install the NVIDIA kernel module. ``` - + You MUST wait until the process is finished before rebooting. Rebooting too early might result in a broken installation! This may take upwards of 15 minutes! - - -#### [Next Up: Contributing →](/en/contributing/contributorguide) - -#### [← Back To: Broadcom and Realtek Networking](/en/setup/broadcom-realtek) + diff --git a/src/content/docs/zh_hant/installation/post-advanced.mdx b/content/docs/get-started/post-installation/systemd-boot.mdx similarity index 78% rename from src/content/docs/zh_hant/installation/post-advanced.mdx rename to content/docs/get-started/post-installation/systemd-boot.mdx index 1438134d..566b5b16 100644 --- a/src/content/docs/zh_hant/installation/post-advanced.mdx +++ b/content/docs/get-started/post-installation/systemd-boot.mdx @@ -1,23 +1,21 @@ --- -title: 進階安裝後步驟 -description: Learn how to further configure your Ultramarine Linux installation. +title: Use systemd-boot as the Bootloader (Advanced) +description: Try a modern bootloader --- -import Alert from "../../../../components/Docs/Alert.astro"; - -## Use systemd-boot as the bootloader - Ultramarine Linux currently still uses GRUB as the default bootloader for compatibility reasons. However, if you have a UEFI system, you can simply switch to systemd-boot, which is a more modern bootloader. - - This step is optional. You can skip this step if you don't want to use - systemd-boot. Make sure to back up your data and have a live USB ready in case + + Don't try this if you don't know what you're doing. + Make sure to back up your data and have a live USB ready in case something goes wrong. Incorrectly configuring a new bootloader can make your OS unbootable. - + + +## Switching to systemd-boot -1. Make sure you turn off Secure Boot in your UEFI settings for now, You can re-enable it later after [Setting up Secure Boot](#set-up-secure-boot) +1. Make sure you turn off Secure Boot in your UEFI settings for now, You can re-enable it later after [Setting up Secure Boot](#using-secure-boot-with-systemd-boot) 2. Remove GRUB from protected packages: ```bash @@ -30,7 +28,7 @@ sudo rm /etc/dnf/protected.d/grub* sudo dnf remove -y grubby grub2\* memtest86\* && sudo rm -rf /boot/grub2 && sudo rm -rf /boot/loader ``` -4. Install unsigned systemd-boot binaries and the `sdubby` tool: +4. Install `systemd-boot-unsigned`dnf and `sdubby`dnf: ```bash sudo dnf install systemd-boot-unsigned sdubby @@ -50,20 +48,20 @@ sudo dnf reinstall -y kernel-core ``` 6. Reboot your system and make sure it boots correctly, run `sudo bootctl` to check if the boot process is correct. -7. (Optional) Proceed to [Set up Secure Boot](#set-up-secure-boot) if you want to re-enable Secure Boot. +7. (Optional) Proceed to [Set up Secure Boot](#using-secure-boot-with-systemd-boot) if you want to re-enable Secure Boot. -## Set up Secure Boot +## Using Secure Boot with systemd-boot [Secure Boot] is a UEFI security protocol that secures the boot process by ensuring that only signed executables are allowed to boot. While Ultramarine Linux's bootloader shim is signed by Microsoft and Red Hat, you may want to use a different bootloader (i.e systemd-boot or rEFInd) or kernel. In that case, you will need to manually enroll and sign the files with your own keys. -Fortunately, there's a tool to automate this called [sbctl]. You can install it from the Terra repository: +Fortunately, there's a tool to automate this called [sbctl]dnf. You can install it from the Terra repository: - + `sbctl` is only available on Ultramarine/Fedora 40 and later. - + ```bash sudo dnf install sbctl diff --git a/content/docs/get-started/requirements.mdx b/content/docs/get-started/requirements.mdx new file mode 100644 index 00000000..3bbd225d --- /dev/null +++ b/content/docs/get-started/requirements.mdx @@ -0,0 +1,50 @@ +--- +title: System Requirements +description: "Minimum Requirements for Ultramarine Linux" +--- + +Ultramarine's requirements vary by Edition. So these requirements are by Edition. + +These are the minimum for a system that can handle opening a browser or a handful of native apps. You CAN run Ultramarine on lower specs, but you may run into a sluggish or unusable system. + +## Plasma Edition +- 8GB of RAM +- 64-bit processor (x86_64/amd64/aarch64) +- Any GPU +- 20GB of free disk space (32GB or more recommended) +- Internet connection (for downloading the ISO image, updates, and additional drivers) +- A computer that supports booting from a USB drive +- A USB drive (for creating the bootable media) + +## Xfce Edition +- 2GB of RAM (At least 4GB recommended) +- 64-bit processor (x86_64/amd64/aarch64) +- 20GB of free disk space (32GB or more recommended) +- Internet connection (for downloading the ISO image, updates, and additional drivers) +- A computer that supports booting from a USB drive +- A USB drive (for creating the bootable media) + +## Budgie Edition +- 4GB of RAM +- 64-bit processor (x86_64/amd64/aarch64) +- 20GB of free disk space (32GB or more recommended) +- Internet connection (for downloading the ISO image, updates, and additional drivers) +- A computer that supports booting from a USB drive +- A USB drive (for creating the bootable media) + +## GNOME Edition +- 8GB of RAM +- 64-bit processor (x86_64/amd64/aarch64) +- Any GPU +- 20GB of free disk space (32GB or more recommended) +- Internet connection (for downloading the ISO image, updates, and additional drivers) +- A computer that supports booting from a USB drive +- A USB drive (for creating the bootable media) + +## Minimum Requirements + +These requirements are the **_bare minimum_** to run Ultramarine Linux. Using Ultramarine on a computer of this caliber will not be a good time. + +- 1GB of RAM +- 64-bit processor (x86_64 **OR** aarch64) +- 16GB of disk space diff --git a/src/content/docs/en/anywhere/wsl.mdx b/content/docs/get-started/wsl.mdx similarity index 85% rename from src/content/docs/en/anywhere/wsl.mdx rename to content/docs/get-started/wsl.mdx index fac37c4b..e097fc0b 100644 --- a/src/content/docs/en/anywhere/wsl.mdx +++ b/content/docs/get-started/wsl.mdx @@ -3,7 +3,6 @@ title: "Windows Subsystem for Linux" description: "Ultramarine for Windows Subsystem for Linux (WSL)" --- -import Alert from "../../../../components/Docs/Alert.astro"; [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/about) is a feature in Windows 10 and 11 that, in essence, is a Linux system as a Windows application. @@ -29,7 +28,7 @@ Locate the 'Hyper-V Requirements' section, near the bottom. Within that section, ## Enabling Virtualization - Power off your device. -- Press the power button, then press your [BIOS key](/en/setup/bioskeys). +- Press the power button, then press your [BIOS key](/docs/get-started/bioskeys). - Locate the virtualization option. This can be in various places depending on the motherboard/manufacturer. Typically, this will be in the CPU configuration menu. Check with your manufacturer if you need help. - Save and exit. There will typically be a dedicated key to do this, or a select option on the main or exit page. @@ -37,7 +36,7 @@ Hardware virtualization should now be enabled, and you can proceed to installati ## Installing Ultramarine WSL -### Install using the Microsoft Store +### Install Using the Microsoft Store Open the Microsoft Store, and search 'Ultramarine Linux' in the Microsoft Store app, or use [this link](https://apps.microsoft.com/detail/9PBPG2RDMZB9?hl=en-us&gl=US&ocid=pdpshare) @@ -45,7 +44,7 @@ Select 'Ultramarine Linux,' verify the author is Fyra Labs, and then select 'Get After this, Ultramarine WSL will appear as a Windows app. You can select 'Open' from the Microsoft Store window. -You're now ready for the [Post-Installation](/en/anywhere/wsl#post-installation) section! +You're now ready for the [Post-Installation](#post-installation) section! ### Install with WinGet @@ -65,7 +64,7 @@ winget install ultramarine After this, Ultramarine WSL will appear as a Windows application. This will install everything needed for WSL, and Ultramarine WSL, assuming the requirements are met. -You're now ready for the [Post-Installation](/en/anywhere/wsl#post-installation) section! +You're now ready for the [Post-Installation](#post-installation) section! ### Install from the Command Line @@ -95,7 +94,7 @@ Be sure to replace the file name in the URL to match your architecture. If you a After this, Ultramarine WSL will appear as a Windows application. This will install everything needed for WSL, and Ultramarine WSL, assuming the requirements are met. -You're now ready for the [Post-Installation](/en/anywhere/wsl#post-installation) section! +You're now ready for the [Post-Installation](#post-installation) section! ## Post-installation @@ -113,7 +112,7 @@ It is always recommended to update a fresh install. To do this, please run the f sudo dnf upgrade ``` -### Setting your Default WSL Distro as Ultramarine +### Setting your Default WSL Distro to Ultramarine To change your default WSL distro to Ultramarine, run the following command: @@ -131,7 +130,7 @@ Then, replace `Ultramarine` in the setdefault command with the listed name. ### Hardware Acceleration -Starting with Ultramarine WSL 42, hardware acceleration packages are included by default. +Starting with Ultramarine 42, hardware acceleration packages are included by default. If you upgraded from 41 to 42, you may need to enable the terra-mesa repository to install the needed packages. Run the following command to enable the repo: @@ -140,21 +139,27 @@ Run the following command to enable the repo: sudo sed -i '0,/enabled=0/s/enabled=0/enabled=1/' /etc/yum.repos.d/terra-mesa.repo ``` -And then install the `mesa-vulkan-drivers` package: +And then install the `mesa-vulkan-drivers`dnf package: ```sh sudo dnf install mesa-vulkan-drivers ``` -This will install everything you need for hardware acceleration through Ultramarine WSL. +This will install everything you need for hardware acceleration on Ultramarine WSL. ### Version Upgrading -To version upgrade Ultramarine WSL, check the instructions [here](/en/release/43-upgrades#upgrading-ultramarine-wsl-system-versions). +WSL works a bit differently than regular Ultramarine installs, run the following commands, replacing `xx` with the version you want to upgrade to. Follow the prompts: + +```sh +sudo dnf upgrade --refresh +sudo dnf distro-sync --releasever=xx +``` + ## More Information -Microsoft has vast resources about WSL, here are some helpful links: +Microsoft has lots of resources about WSL, here are some helpful links: General WSL information: https://learn.microsoft.com/en-us/windows/wsl/about @@ -163,7 +168,3 @@ Basic WSL commands: https://learn.microsoft.com/en-us/windows/wsl/basic-commands Best Practices: https://learn.microsoft.com/en-us/windows/wsl/setup/environment Frequently Asked Questions: https://learn.microsoft.com/en-us/windows/wsl/faq - -#### [Next Up: Gaming on Ultramarine →](/en/usage/gaming) - -#### [← Back To: Raspberry Pi](/en/anywhere/rpi) diff --git a/src/content/docs/en/linux/devicefiles.mdx b/content/docs/linux/devicefiles.mdx similarity index 94% rename from src/content/docs/en/linux/devicefiles.mdx rename to content/docs/linux/devicefiles.mdx index 0c9ca3a9..4ed22c9f 100644 --- a/src/content/docs/en/linux/devicefiles.mdx +++ b/content/docs/linux/devicefiles.mdx @@ -3,13 +3,12 @@ title: Device Files description: "Overview of various device files in /dev" --- -import Alert from "../../../../components/Docs/Alert.astro"; - + These files are an actual representation of all your hardware devices according to how your drivers see them. Please do not modify or delete these files unless you know what you are doing. - + Device files are special files that exist as an interface for your system to interact with hardware. They are located in the `/dev` directory, which is a temporary virtual filesystem that is created by Linux on boot. @@ -85,10 +84,10 @@ nvme0n1 259:0 0 119.2G 0 disk In this specific case, it is configured in a Btrfs spanned (JBOD) volume, which in this case combines both `sda3` and `nvme0n1p1` into a single volume. - + Ultramarine Linux's installer, *Anaconda* will automatically configure your disks in a Btrfs spanned volume by default when multiple disks are selected. - + `nvme0n1` is a 128GB NVMe SSD that is used as a cache for the Btrfs volume. It has a single partition, `nvme0n1p1`, which is mounted to `/var/lib/docker/btrfs`, `/home`, `/var` and `/`. @@ -103,19 +102,19 @@ Since we are using Btrfs, Docker will use Btrfs subvolumes to store its data. Fo ### Manipulating Block Devices -You can use `fdisk` to do various operations on block devices, such as creating partitions, formatting them and more. +You can use `fdisk`dnf to do various operations on block devices, such as creating partitions, formatting them and more. ```sh fdisk /dev/sda ``` - + **NEVER** run the following commands on any actual systems! These commands **ANNIHILATE your system WITHOUT CONFIRMATION**, causing **IRREVERSIBLE DAMAGES** to your system! If you want to test out these commands for whatever reason, please _make sure (and double check) you are ONLY doing this in a virtual environment._ - + As an example, you can use the following command to do a zero-filled format of a disk called `/dev/sda` by simply using a pipe: @@ -147,8 +146,6 @@ dd if=/dev/sda of=/dev/sdb You can find more information about `dd` [here](https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html). -#### [Next Up: Permissions →](/en/linux/permissions) -#### [← Back To: The Filesystem](/en/linux/filesystem) [Docker]: https://en.wikipedia.org/wiki/Docker_(software) diff --git a/src/content/docs/hi/linux/filesystem.mdx b/content/docs/linux/filesystem.mdx similarity index 73% rename from src/content/docs/hi/linux/filesystem.mdx rename to content/docs/linux/filesystem.mdx index a34e445e..45a52fe5 100644 --- a/src/content/docs/hi/linux/filesystem.mdx +++ b/content/docs/linux/filesystem.mdx @@ -3,7 +3,6 @@ title: The File System description: "An overview of the file system in Linux." --- -import Alert from "../../../../components/Docs/Alert.astro"; There are a few notable differences in how files work on Linux when compared to Windows or macOS. @@ -13,7 +12,7 @@ In Linux, and more widely, UNIX, everything is a file. Unlike Windows which has ## The File System Hierarchy -Linux has a standardized file system hierarchy called the [*Filesystem Hierarchy Standard*](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) (FHS). The FHS is contained within `/` (called root.) Root doesn't only contain normal files, but also physical devices, virtual devices, and various other special files that control the system itself. +Linux has a standardized file system hierarchy called the [*Filesystem Hierarchy Standard*](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) (FHS). The FHS is contained within `/` (called root, not to be confused with `/root`) Root doesn't only contain normal files, but also physical devices, virtual devices, and various other special files that control the system itself. It should also be noted that Linux uses a forward slash (`/`) to represent going deeper in a directory, unlike Windows which uses a backslash (`\`) @@ -22,23 +21,32 @@ The directory structure is as follows: | Directory | Description | | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | / | The root directory with the all the other directories and files. This is as far back as you can go | -| /bin | Executables and command binares required for a functioning system. Most applications installed from RPM end up here. | -| /boot | The bootloader and files used during early boot process. May usually be in a seperate partition. | +| /bin | A symbolic link to /usr/bin. | +| /boot | The bootloader and files used during early boot process. Usually in a seperate partition. | | /dev | Special device files for various purposes (`/dev/sda` for a drive, `/dev/null` for blank data, `/dev/random` for pseudo-random data, `/dev/tty` for terminal sessions, etc). | | /etc | System-wide settings and configuration files. | | /home | User files. This is where your stuff lives! | -| /lib | Libraries required for executables in `/bin` to function. May be also named `/lib`. | +| /lib | A symbolic link to /usr/lib. | | /media | Mount points for when the system mounts removable media, such as USB drives, SD cards, etc. | | /mnt | Temporary mount points for media. Usually used when manually mounting a drive. | | /opt | Optional packages that may be installed by the user. Most packages don't actually install here. | | /proc | Process data and kernel information for inter-process communication managed by the kernel. | | /root | User data for the root user. Don't confuse this with `/` (root) | -| /sbin | Executables for system tasks. | +| /sbin | A symbolic link to /usr/sbin. | | /srv | Shared service data used by server processes, such as web servers and NAS/File servers. | | /tmp | Temporary data. | -| /usr | Shared application data used by all users. | +| /usr | Shared application data used by all users. +| /usr/bin | Executables and command binaries.. Most applications installed from an RPM end up here. +| /usr/sbin | A symbolic link to /usr/bin since UM42. +| /usr/lib | Libraries required for executables to function. May be also named `/usr/lib`| | /var | Variable data used by system processes. | + +You may notice that `/bin`, `/sbin`, and `/lib` are "symbolic links", this is for legacy reasons. In the past, binaries were seperated between system (`/bin`, `/sbin`) and user (`/usr/bin`, `/usr/sbin`). As systems evolved this complexity became unnecessary and clunky, leading to the merged usr setup you see today. + +Similarly, in UM42, we completed sbin-merge, which turned `/usr/sbin` into a link to `/usr/bin`. Historically sbin contained binaries specifically for managing the system, but as with usr-merge, this became unnecessary as package management became better. + + ## The Home Directory The home folder is the place where your personal data, and most of your apps are stored. It's a folder located in the `/home` directory named after your username. It is similar to the `Users` folder in Windows. @@ -71,17 +79,24 @@ It currently supports most file systems that are supported by the Linux kernel, And extra file system drivers can be installed, such as: -- ZFS +- ZFSdnf Ultramarine's installer is configured to use Btrfs by default. Btrfs is a modern filesystem with snapshots, virtual volumes, journaling, error correction and compression. -By default, the installer will use all the available space on the disk. 500mb is dedicated to the EFI boot partition (2mb on BIOS systems, 16mb on x86 Chromebooks, and 64mb on ARM Chromebooks), 1gb for /boot, a Btrfs volume uses the rest of the space on the selected disks. -It then creates 2 subvolumes, one for the root directory `/`, and one for the home directory `/home`, which will share the same space but have different filesystem settings. - +By default, the installer will use all the available space on the disk. +- 2–500 MB for the system partition, this varies by platform: + - 500 MB for the EFI partition + - 2 MB for a GPT shim on BIOS systems + - 16 MB for Submarine on x86 Chromebooks + - 64 MB for Submarine on ARM Chromebooks +- 1 GB for /boot +- Remainder of the disk is used for a Btrfs partition containing: + - /home Subvolume + - /root Subvolume + + + The subvolumes don't show sizes as they are dynamically allocated based on usage. Simply, they will grow and shrink as needed. + ### Remote Filesystems -Ultramarine Linux can also mount remote file systems from a remote server or NAS, using the NFS, SFTP, SMB, and WebDAV protocols. - -#### [Next Up: Device Files →](../linux/devicefiles) - -#### [← Back To: What is Linux?](../linux/overview) +Ultramarine Linux can also mount remote file systems from a remote server or NAS, using the NFS, SFTP, SMB, and WebDAV protocols. You can connect with your edition's file manager. diff --git a/src/content/docs/en/linux/overview.mdx b/content/docs/linux/index.mdx similarity index 83% rename from src/content/docs/en/linux/overview.mdx rename to content/docs/linux/index.mdx index b48f0b2b..faa7ecf7 100644 --- a/src/content/docs/en/linux/overview.mdx +++ b/content/docs/linux/index.mdx @@ -1,15 +1,13 @@ --- title: What is Linux? -description: "A general overview of Linux concepts." +description: "Get acquainted with how a Linux system works" --- -import Alert from "../../../../components/Docs/Alert.astro"; - Linux refers to a family of operating systems with one common feature: the Linux kernel. Linux is distributed differently than Windows or macOS. Multiple (separate) groups take the Linux kernel and combine it with other software before distributing it as a distinct operating system. These compilations are called "distributions" (but we'll shorten that to distro.) -Ultramarine Linux is based on another distribution of Linux called Fedora. See ["Why does this distro exist?"](/en/welcome#why-does-this-distro-exist-what-difference-does-it-have-other-than-just-fedora-with-rpmfusion) for more on that. +Ultramarine Linux is based on another distribution of Linux called Fedora. See ["Why does this distro exist?"](/docs/get-started#why-does-this-distro-exist-what-difference-does-it-have-other-than-just-fedora-with-rpmfusion) for more on that. ## Why use Linux? @@ -27,7 +25,7 @@ For example: Edge cannot be removed from a Windows computer. Meanwhile on Linux, ### Security -Linux is more secure by design, with features like mandatory access controls (MACs) and stricter permissions, you can learn more about those features on the [Permissions](/en/linux/securityprivacy) page. +Linux is more secure by design, with features like mandatory access controls (MACs) and stricter permissions, you can learn more about those features on the [Permissions](/docs/linux//securityprivacy) page. Linux is also resistant to many common viruses due to these features (and inexperienced developers.) While it can be argued that developers simply do not target Linux, it's actually because most software comes from moderated collections (repositories) rather than the internet. @@ -41,8 +39,8 @@ Ultramarine Linux is designed to get a lot of the configuration out of the way. Ultramarine is built on Fedora, the base for Red Hat's Enterprise Linux. This means that the software backing Ultramarine has been built with the stability needed for mission critical systems. - -
+ +
If you'd like a crash course on the basics, this video should cover a lot of what the following pages will cover
- - -#### [Next Up: The Filesystem →](/en/linux/filesystem) - -#### [← Back To: eduroam](/en/usage/eduroam/) +
diff --git a/content/docs/linux/meta.json b/content/docs/linux/meta.json new file mode 100644 index 00000000..507a0c2f --- /dev/null +++ b/content/docs/linux/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Linux Concepts", + "description": "Learn how a Linux system works", + "icon": "GraduationCap", + "root": true +} diff --git a/src/content/docs/hi/linux/permissions.mdx b/content/docs/linux/permissions.mdx similarity index 91% rename from src/content/docs/hi/linux/permissions.mdx rename to content/docs/linux/permissions.mdx index 4c67df00..9279e3c0 100644 --- a/src/content/docs/hi/linux/permissions.mdx +++ b/content/docs/linux/permissions.mdx @@ -25,6 +25,4 @@ To execute commands as a superuser, use the `sudo` command, followed by the comm sudo dnf install vim # This will install vim as the root user ``` -#### [Next Up: Software and Package Management →](/en/linux/software) -#### [← Back To: Device Files](/en/linux/devicefiles) diff --git a/src/content/docs/hi/linux/securityprivacy.mdx b/content/docs/linux/securityprivacy.mdx similarity index 88% rename from src/content/docs/hi/linux/securityprivacy.mdx rename to content/docs/linux/securityprivacy.mdx index 56cd977b..43cb2db9 100644 --- a/src/content/docs/hi/linux/securityprivacy.mdx +++ b/content/docs/linux/securityprivacy.mdx @@ -3,7 +3,6 @@ title: Security and Privacy description: "How Ultramarine keeps you safe" --- -import Alert from "../../../../components/Docs/Alert.astro"; ## Mandatory Access Controls @@ -21,11 +20,11 @@ By default, SELinux is in "Enforcing" mode, which means that it will prevent you Ultramarine includes polkit, a tool used to manage privilege elevation. If you've ever gotten a graphical password prompt on your system, you've interacted with polkit. - + Use the `pkexec` command instead of `sudo` to give polkit a try. - + polkit also manages communication between privileged and non privileged applications. @@ -40,7 +39,3 @@ When you install an app as a Flatpak, it's contained within a sandbox, meaning i ## Restricted Memory Access Ultramarine and Fedora restrict access to physical memory. This should prevent most memory injection attacks. - -#### [Next Up: Ultramarine Release Notes, Ultramarine 42 Upgrades →](/en/release/42-upgrades) - -#### [← Back To: SSH](/en/linux/ssh) diff --git a/src/content/docs/hi/linux/shell.mdx b/content/docs/linux/shell.mdx similarity index 93% rename from src/content/docs/hi/linux/shell.mdx rename to content/docs/linux/shell.mdx index f7408978..3a8b301e 100644 --- a/src/content/docs/hi/linux/shell.mdx +++ b/content/docs/linux/shell.mdx @@ -3,13 +3,12 @@ title: The Shell description: "How the shell works in Linux." --- -import Alert from "../../../../components/Docs/Alert.astro"; The shell is a command line interface to the operating system. It is a program that allows you to directly execute commands and interact on deeper level. -You may be familiar with bash from other Linux distributions. Ultramarine uses the [zsh](https://en.wikipedia.org/wiki/Z_shell) instead of bash. We also use the [Starship Prompt](https://starship.rs/) to provide additional convenience features like displaying the current git branch. +You may be familiar with bash from other Linux distributions. Ultramarine uses the [zsh](https://en.wikipedia.org/wiki/Z_shell) instead of bash. We also use the [Starship Prompt](https://starship.rs/)dnf to provide additional convenience features like displaying the current git branch. - +
To learn more about shell scripting, you can watch this Bash introduction video by Fireship here: @@ -18,14 +17,14 @@ You may be familiar with bash from other Linux distributions. Ultramarine uses t height="315" src="https://www.youtube.com/embed/I4EWvMFj37g" title="YouTube video player" - frameborder="0" + frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" - allowfullscreen + allowFullScreen > NOTE: The Z shell is mostly compatible with Bash, so most of the knowledge you will learn will be mostly applicable in Ultramarine Linux.
-
+ ## Interacting with the Shell @@ -94,10 +93,10 @@ To delete a full directory, recursively delete it by typing `rm -r` followed by rm -r /home/user/Documents ``` - + Most users will usually execute `rm -rf` instead of `rm -r`. The `-f` flag is used to force the deletion of a file or directory. - + To create a new file, type `touch` followed by the path to the file. @@ -111,10 +110,10 @@ To create a new directory, type `mkdir` followed by the path to the directory. mkdir /home/user/Documents/newdir ``` - + To create a new directory inside of another new directory (i.e. `.../newdir/newdir2`), execute `mkdir` with the `-p` flag. - + To move or rename a file or directory, type `mv` followed by the path to the file or directory, and then the new path. @@ -128,9 +127,9 @@ To copy a file and optionally rename the copy, type `cp` followed by the path of cp file newfile ``` - + To copy a directory, type `cp` with the `-r` (recursive) flag. - + For both the `cp` and `mv` commands, you may move multiple files into a directory at once. The target directory must exist. @@ -191,12 +190,8 @@ For files in your current folder, you must use `./` before the file name. ./exec ``` - + Executables are often moved into a directories listed in the `$PATH` variable (run `echo $PATH`). The filenames of executables in `$PATH` can be executed as commands (i.e. `custom-command` will run `/usr/local/bin/custom-command`) - - -#### [Next Up: SSH →](/en/linux/ssh) - -#### [← Back To: Software and Package Management](/en/linux/software) + diff --git a/src/content/docs/hi/linux/software.mdx b/content/docs/linux/software.mdx similarity index 57% rename from src/content/docs/hi/linux/software.mdx rename to content/docs/linux/software.mdx index 9057bf28..0a8ef334 100644 --- a/src/content/docs/hi/linux/software.mdx +++ b/content/docs/linux/software.mdx @@ -2,54 +2,60 @@ title: Software and Package Management description: "How to manage software on Linux." --- + +You may have noticed package manager tags (like thisdnf and thisflatpak) across the wiki. This shows our reccomended way to get that software, either from `dnf` or as a `flatpak`. +This page goes more into depth about package managers, to help you make choices like this on your own. + -import Alert from "../../../../components/Docs/Alert.astro"; +## Using the App Store +Ultramarine comes with an app store. It's called "Discover" on Plasma Edition, and "Software" on GNOME, Budgie, and Xfce Edition. -There are many different ways to install software on Linux. +You can search for and install all of the software available for Ultramarine in the app store, and it will handle installing RPMs and flatpakrefs from the internet. + +You can also install software with the terminal, which we'll cover in the next section. + +If you're trying to install something from the internet, check the [Software Downloaded from the Internet](#software-downloaded-from-the-internet) section. ## The Package Manager Unlike Windows, most software for Ultramarine is stored in online collections of software called repositories. You can browse and install software (packages) from these repositories using something called a package manager. -### Flatpaks +### Flatpak Flatpak is the primary package manager for regular apps. It installs applications in a sandbox, keeping them separate from anything they don't need to access. -Flatpaks can be installed from **Software** on Flagship, GNOME, and Xfce, and **Discover** on Plasma. - -You can browse the available software in these app stores, or on the [Flathub website](https://flathub.org/). - -Most desktop apps should be installed as a Flatpak, but in some cases, like with Steam, IDEs, or other apps that require access to the system, they may not work. The following sections will help with software in other formats. - -### Software Downloaded from the Internet +You can install Flatpaks from your app store, or with `flatpak install` in the terminal. -Sometimes, the software you need may come as a package file downloaded from the internet. +You can browse the available software in your app store, or on the [Flathub website](https://flathub.org/). -#### RPM Packages +Most desktop apps should be installed as a Flatpak, but in some cases, like with Steamdnf, IDEs, or other apps that require access to the system, they may not work. The following sections will help with software in other formats. -To install RPMs simply double-click the downloaded file in the file manager. +### DNF -#### AppImages +Ultramarine uses the DNF package manager. While this package manager primarily handles system software (like the kernel, and your desktop environment) it can install user apps as well. -1. Install AppImage Launcher from **Software** or **Discover**. +```bash +sudo dnf install steam # Install Steam +``` -2. Double-click the AppImage file and you're done! +You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf groupinstall` command. - +```bash +sudo dnf groupinstall "Audio Production" # installs multiple packages at once, in this case a suite of music/audio production tools +``` -AppImages are not automatically updated and may have issues communicating with other apps and the system. We recommend looking for a Flatpak or RPM instead. +For a full list of available groups, run `sudo dnf group list` - ### Snap Snap is a package manager made by Canonical. It contains a large amount of proprietary applications that you may not be able to find elsewhere. - + Snap may cause your system to run noticeably slower! - + To get started, install Snap. @@ -64,28 +70,28 @@ sudo snap install helloworld helloworld ``` - + Snap packages can load slowly and may not work on editions other than GNOME. We recommend avoiding Snaps. - + -### DNF +### Software Downloaded from the Internet -Ultramarine uses the DNF package manager. While this package manager primarily handles system software (like the kernel, and your desktop environment) it can install user apps as well. +Sometimes, the software you need may come as a package file downloaded from the internet. -```bash -sudo dnf install steam # Install Steam -``` +#### RPM Packages -You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf groupinstall` command. +To install RPMs simply double-click the downloaded file in the file manager. -```bash -sudo dnf groupinstall "Audio Production" # installs multiple packages at once, in this case a suite of music/audio production tools -``` +#### AppImages -For a full list of available groups, run `sudo dnf group list` +1. Install Gear Lever from **Software** or **Discover**. + +2. Double-click the AppImage file, select "Install" and you're done! -#### [Next Up: The Shell →](/en/linux/shell) + + +AppImages are not automatically updated and may have issues communicating with other apps and the system. We recommend looking for a Flatpak or RPM instead. -#### [← Back To: Permissions](/en/linux/permissions) + diff --git a/src/content/docs/hi/linux/ssh.mdx b/content/docs/linux/ssh.mdx similarity index 92% rename from src/content/docs/hi/linux/ssh.mdx rename to content/docs/linux/ssh.mdx index d8663cc1..f1ab89df 100644 --- a/src/content/docs/hi/linux/ssh.mdx +++ b/content/docs/linux/ssh.mdx @@ -1,123 +1,117 @@ ---- -title: SSH Secure Shell -description: "An overview of the SSH utility." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Secure Shell ("SSH") is a tool used to access a shell on a remote device. - -## SSH overview - -SSH uses a client/server model where one computer acts as an SSH server[^1] and allows other computers to connect. - -![Example SSH Client and Server](/assets/ssh.png) - -## Connecting to an SSH Server - -To access a device remotely, the `ssh` command is run from [the shell](/en/linux/shell), mostly used with this format: - -```zsh -ssh [username@] -``` - -If you don't specify a username then SSH will attempt to connect you using the username with which you are logged in. Here are some examples: - -- `ssh myuser@myserver.com` - - This will attempt to connect to the server at myserver.com using the username myuser -- `ssh myuser@192.168.1.2` - - This is just like the example above except you can also specify an IP address instead of a hostname -- `ssh myserver.com` - - This will attempt to connect to the SSH server at myserver.com using your current username - -When using any of the above commands, once connected to the remote server you'll be prompted for a password. - -## Running Your Own SSH Server - -Start by installing the SSH server: - -```zsh -sudo dnf install openssh-server -``` - -Then start the server using: - -```zsh -systemctl enable --now sshd -``` -You will be prompted to enter your password, enter it. - -Once the above command is run, your machine will begin listening for incoming connections on port 22. You can verify that the SSH server application started correctly by using the command - -```zsh -systemctl status sshd -``` - -You should see output similar to this: - -```zsh -● sshd.service - OpenSSH server daemon - Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled) - Drop-In: /usr/lib/systemd/system/service.d - └─10-timeout-abort.conf - Active: active (running) since Sun 2024-04-07 14:00:20 EDT; 44min ago - Docs: man:sshd(8) - man:sshd_config(5) - Main PID: 1065 (sshd) - Tasks: 1 (limit: 4396) - Memory: 156.0K - CPU: 50ms - CGroup: /system.slice/sshd.service - └─1065 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups" - -Apr 07 14:00:20 ultramarine systemd[1]: Starting sshd.service - OpenSSH server daemon... -Apr 07 14:00:20 ultramarine sshd[1065]: Server listening on 0.0.0.0 port 22. -Apr 07 14:00:20 ultramarine sshd[1065]: Server listening on :: port 22. -Apr 07 14:00:20 ultramarine systemd[1]: Started sshd.service - OpenSSH server daemon. -``` - -Check for the field that says `Active: active (running)` to ensure that the SSH server is listening for incoming connections. - -If you'd like to stop the SSH server, you can do so with - -```zsh -sudo systemctl stop sshd -``` - -You should see output similar to this: - -```zsh - -○ sshd.service - OpenSSH server daemon - Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled) - Drop-In: /usr/lib/systemd/system/service.d - └─10-timeout-abort.conf - Active: inactive (dead) since Sun 2024-04-07 14:50:24 EDT; 3s ago - Duration: 50min 4.206s - Docs: man:sshd(8) - man:sshd_config(5) - Process: 1065 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS) - Main PID: 1065 (code=exited, status=0/SUCCESS) - CPU: 58ms - -Apr 07 14:50:24 ultramarine systemd[1]: Stopping sshd.service - OpenSSH server daemon... -Apr 07 14:50:24 ultramarine sshd[1065]: Received signal 15; terminating. -Apr 07 14:50:24 ultramarine systemd[1]: sshd.service: Deactivated successfully. -Apr 07 14:50:24 ultramarine systemd[1]: Stopped sshd.service - OpenSSH server daemon. -``` - -#### [← Back To: Software and Package Management](/en/linux/software) - -[^1]### A Note about the Word "Server" -It's common to hear the word "server" used but not understand exactly what is meant. Here are a couple examples of how "server" can be used: - -- It can refer to a physical machine somewhere - - Ex: Our email server lost power over the weekend. -- It can refer to a specific _application_ running on one machine (or even a number of machines across the world!) - - Ex: The SSH server is up so that users can connect. - -In this guide we'll try to make it clear to which we're referring. - -#### [Next Up: Security and Privacy →](/en/linux/securityprivacy) - -#### [← Back To: The Shell](/en/linux/shell) +--- +title: SSH +description: "An overview of the SSH utility." +--- + + +Secure Shell ("SSH") is a tool used to access a shell on a remote device. + +## SSH overview + +SSH uses a client/server model where one computer acts as an SSH server[^1] and allows other computers to connect. + +![Example SSH Client and Server](/assets/ssh.png) + +## Connecting to an SSH Server + +To access a device remotely, the `ssh` command is run from [the shell](/docs/linux/shell), mostly used with this format: + +```zsh +ssh [username@] +``` + +If you don't specify a username then SSH will attempt to connect you using the username with which you are logged in. Here are some examples: + +- `ssh myuser@myserver.com` + - This will attempt to connect to the server at myserver.com using the username myuser +- `ssh myuser@192.168.1.2` + - This is just like the example above except you can also specify an IP address instead of a hostname +- `ssh myserver.com` + - This will attempt to connect to the SSH server at myserver.com using your current username + +When using any of the above commands, once connected to the remote server you'll be prompted for a password. + +## Running Your Own SSH Server + +Start by installing the SSH server: + +```zsh +sudo dnf install openssh-server +``` + +Then start the server using: + +```zsh +systemctl enable --now sshd +``` +You will be prompted to enter your password, enter it. + +Once the above command is run, your machine will begin listening for incoming connections on port 22. You can verify that the SSH server application started correctly by using the command + +```zsh +systemctl status sshd +``` + +You should see output similar to this: + +```zsh +● sshd.service - OpenSSH server daemon + Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled) + Drop-In: /usr/lib/systemd/system/service.d + └─10-timeout-abort.conf + Active: active (running) since Sun 2024-04-07 14:00:20 EDT; 44min ago + Docs: man:sshd(8) + man:sshd_config(5) + Main PID: 1065 (sshd) + Tasks: 1 (limit: 4396) + Memory: 156.0K + CPU: 50ms + CGroup: /system.slice/sshd.service + └─1065 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups" + +Apr 07 14:00:20 ultramarine systemd[1]: Starting sshd.service - OpenSSH server daemon... +Apr 07 14:00:20 ultramarine sshd[1065]: Server listening on 0.0.0.0 port 22. +Apr 07 14:00:20 ultramarine sshd[1065]: Server listening on :: port 22. +Apr 07 14:00:20 ultramarine systemd[1]: Started sshd.service - OpenSSH server daemon. +``` + +Check for the field that says `Active: active (running)` to ensure that the SSH server is listening for incoming connections. + +If you'd like to stop the SSH server, you can do so with + +```zsh +sudo systemctl stop sshd +``` + +You should see output similar to this: + +```zsh + +○ sshd.service - OpenSSH server daemon + Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled) + Drop-In: /usr/lib/systemd/system/service.d + └─10-timeout-abort.conf + Active: inactive (dead) since Sun 2024-04-07 14:50:24 EDT; 3s ago + Duration: 50min 4.206s + Docs: man:sshd(8) + man:sshd_config(5) + Process: 1065 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS) + Main PID: 1065 (code=exited, status=0/SUCCESS) + CPU: 58ms + +Apr 07 14:50:24 ultramarine systemd[1]: Stopping sshd.service - OpenSSH server daemon... +Apr 07 14:50:24 ultramarine sshd[1065]: Received signal 15; terminating. +Apr 07 14:50:24 ultramarine systemd[1]: sshd.service: Deactivated successfully. +Apr 07 14:50:24 ultramarine systemd[1]: Stopped sshd.service - OpenSSH server daemon. +``` + + +[^1]### A Note about the Word "Server" +It's common to hear the word "server" used but not understand exactly what is meant. Here are a couple examples of how "server" can be used: + +- It can refer to a physical machine somewhere + - Ex: Our email server lost power over the weekend. +- It can refer to a specific _application_ running on one machine (or even a number of machines across the world!) + - Ex: The SSH server is up so that users can connect. + +In this guide we'll try to make it clear to which we're referring. diff --git a/src/content/docs/en/usage/eduroam.mdx b/content/docs/usage/eduroam.mdx similarity index 91% rename from src/content/docs/en/usage/eduroam.mdx rename to content/docs/usage/eduroam.mdx index 9ce6e972..96e17f10 100644 --- a/src/content/docs/en/usage/eduroam.mdx +++ b/content/docs/usage/eduroam.mdx @@ -31,8 +31,4 @@ Final step! Enter your credentials (usually your institution-issued email addres You're done! Just visit any eduroam hotspot and you'll be automatically connected. ![Running CAT](/assets/eduroam/done.png) -If you need further support, we recommend contacting your institution's helpdesk, or hopping into one of [our chats](/en/community/community/). - -#### [Next Up: Linux Concepts: What is Linux? →](/en/linux/overview) - -#### [← Back To: umcli](/en/usage/umcli) +If you need further support, we recommend contacting your institution's helpdesk, or hopping into one of [our chats](/docs/community/). diff --git a/content/docs/usage/gaming.mdx b/content/docs/usage/gaming.mdx new file mode 100644 index 00000000..d4662ce7 --- /dev/null +++ b/content/docs/usage/gaming.mdx @@ -0,0 +1,128 @@ +--- +title: Gaming +description: "Extra instructions for gaming on Ultramarine Linux." +--- + +Ultramarine isn't explicitly optimized for gaming, but that doesn't mean it can't game. + +Fyra Labs (the developer of Ultramarine) is a member of the [Open Gaming Collective](https://opengamingcollective.org). We use many of their patches (like Mesa) in Ultramarine, making Ultramarine slightly more optimized than normal distributions. + +Gaming on Linux has gotten a lot easier over the years. In some cases it may be even easier than Windows. + +"I was talking to a friend about GTA 4, and they were warning me about how much setup it needed to run on Windows and told me it would probably be worse on Linux. I opened Steam, pressed play, and the game just launched." + +Linux may be missing games like Fortnite and League of Legends, but beyond those (and a handful of other exceptions) your library should run just fine, or potentially better than it did on Windows. + + +## Steam +You're gonna have the best luck with Steamdnf, and you probably already have a library there. + +Valve has been improving the Linux experience in Steamdnf over the last few years. Most notably, Valve has been pushing Proton, a compatability layer, forward. Things have become far better across the board, and even outside of Steam, after the release of the Steam Deck. + +Install Steamdnf from the app store, make sure that you select "terra" instead of Flathub. +![Source selector](/assets/steam/selector.png) + +Once you launch and sign into Steam, open Settings from the Steam menu. + +![Steam menu](/assets/steam/menu.png) + +Then, go to the Compatibility page, and ensure that "Steam Play is enabled for all titles" is listed, and Proton is set either to Experimental, or the latest version. + +![Compat page](/assets/steam/compat.png) + +Now you're ready to play! Simply download and run any game in your library. + + +Sometimes, it may appear like Steam isn't launching. Just wait, sometimes its updater doesn't get shown on screen. + + +If you're looking for some games that run great on Linux to get started, here's some of our team's favorites: + + +- [HoloCure](https://store.steampowered.com/app/2420510) (Free) +- [Peggle Deluxe](https://store.steampowered.com/app/3480/Peggle_Deluxe) ($5) +- Any Valve game + - [Counter-Strike 2](https://store.steampowered.com/app/730/CounterStrike_2/) (Free) + - [Portal Bundle](https://store.steampowered.com/bundle/234/Portal_Bundle) ($15, regularly on sale) +- [SIGNALIS](https://store.steampowered.com/app/1262350/SIGNALIS/) ($20) +- [Untitled Goose Game](https://store.steampowered.com/app/837470/Untitled_Goose_Game/) ($20) +- [Ultrakill](https://store.steampowered.com/app/1229490/ULTRAKILL/) ($25) +- [Any Jackbox Party Pack](https://store.steampowered.com/developer/jackboxgames) ($25-30) +- [Stray](https://store.steampowered.com/app/1332010/Stray/) ($30) +- [Cyberpunk: 2077](https://store.steampowered.com/app/1091500/Cyberpunk_2077/) ($60) + +These are not affiliate links, just games we love. + +## itch.io + +[itch.io](https://itch.io)flatpak is a platform for indie games, and it has a native Linux client. It has a large library of indie games, and some of them are available for free. You can install the itch.io client as a Flatpak from [Flathub](https://flathub.org/apps/io.itch.itch). + +## Epic Games Store, GOG, and Amazon Games + +The Epic Games Store, GOG, and Amazon Games do not have native Linux clients, but you can use the [Heroic Games Launcher](https://heroicgameslauncher.com/)flatpak to install and run games from these platforms on Linux. + +Simply search for Heroic in the app store and hit install! + +## EA Desktop/Origin + +We suggest using [Bottles](https://usebottles.com/gaming)flatpak to install EA Desktop and your games from it. + +Although you can use Bottles for Steam, and Epic Games, we suggest using the solutions we mentioned above instead. + +## Ubisoft Connect/Uplay + +If you still own games on Ubisoft Connect (formerly known as Uplay), you may be able to run some of them on Linux using Wine/Proton. However, some games may not work due to Ubisoft's anti-cheat software. + +We suggest using [Bottles](https://usebottles.com/gaming)flatpak to install Ubisoft Connect and your games from it. + +## Anything Else + +If you have loose game files, or games from a source we didn't list, check [ProtonDB](https://www.protondb.com) and try running them in [Bottles](https://usebottles.com/gaming)flatpak, your mileage my vary, but game support in Bottles gets better every day. + +## Known Incompatible Games +These games are known to not work on Ultramarine due to various reasons, such as anti-cheat software, DRM, or API incompatibilities: + +### Games that Simply Won't Run + +Some of these may run, but they just aren't worth it. This list is not exhaustive. + +| Game | Anti-Cheat implementation | Reason (if applicable) | Notes | +| --------------------------------------------------- | ------------------------- | ------------------------------- | ---------------------------------------------- | +| Apex Legends | Easy Anti-Cheat | - | Support for Proton recently removed | +| Fortnite | Easy Anti-Cheat, BattlEye | - | Officially unsupported according to Epic Games | +| Tom Clancy's Rainbow Six Siege | BattlEye, MouseTrap | - | - | +| The Crew 2 | Easy Anti-Cheat | - | - | +| Valorant | Vanguard | - | - | +| League of Legends | Vanguard | - | - | +| Battlefield V | EA Anti-Cheat | - | - | +| Battlefield 2042 | EA Anti-Cheat | - | - | +| Need for Speed Unbound | EA Anti-Cheat | - | - | +| Command & Conquer Red Alert 3 & Uprising | - | SAGE 2 Path resolver is broken | [^3] | +| Command & Conquer 3: Tiberium Wars & Kane's Wrath | - | SAGE 2 Path resolver is broken | [^3] | +| Command & Conquer games up to Yuri's Revenge | - | DirectDraw compatibility issues | [^4] | + +### Games with Broken Online Play +This ranges from online play not working to being banned for trying to. We reccomend just playing these in their single player form. + +| Game | Anti-Cheat | Notes | +|-----------------------------------------------------|---------------------------|---------------------------------| +| Watch_Dogs | Easy Anti-Cheat | Single player works | +| Watch_Dogs 2 | Easy Anti-Cheat | Single player works | +| Watch_Dogs: Legion | Easy Anti-Cheat | Single player works | +| Honkai Impact 3rd | Tencent Anti-Cheat Expert | [^1] | +| Honkai: Star Rail | HoYoProtect | [^1] | +| Infinity Nikki | Tencent Anti-Cheat Expert | [^1] [^2] | +| Strinova | Tencent Anti-Cheat Expert | [^1] [^2] | +| Phantasy Star Online 2: New Genesis (Japan) | Easy Anti-Cheat | [^2] | + + +## Gaming Performance + +Ultramarine (and Linux distributions generally) use less resources than Windows, meaning you should be able to sqeeuze a couple more frames out of your hardware. + +Proton is frequently updated, so performance of non-native games is always being worked on. + +[^1]: There may be workarounds for these games, but they are not officially supported and you may risk getting banned for its use. The recommended way to play these games is to play on a mobile device or a Windows machine. +[^2]: These games have a known whitelist for the Steam Deck specifically, but does not guarantee that it will work on other Linux systems. +[^3]: You may run this game if you install the game in a path that does not contain periods (e.g. `~/Games/` instead of `~/.local/share/Steam/`). +[^4]: You may need to install DDrawCompat or CnC-DDraw to run this game properly, as it has compatibility issues even with Windows systems. You may also use CnCNet to apply the aforementioned fixes and enable multiplayer. diff --git a/src/content/docs/hi/usage/hop.mdx b/content/docs/usage/hop.mdx similarity index 56% rename from src/content/docs/hi/usage/hop.mdx rename to content/docs/usage/hop.mdx index 1951d302..b4929628 100644 --- a/src/content/docs/hi/usage/hop.mdx +++ b/content/docs/usage/hop.mdx @@ -1,20 +1,17 @@ --- -title: Switching Desktop Editions -description: "Add/remove the DE/edition with Ultramarine Hop." +title: Switching Editions (Advanced) +description: "Switch Editions with Hop" --- + +This is for advanced users. Your system may get a mix of components and things get messy really quickly. Be ready to troubleshoot. + -import Alert from "../../../../components/Docs/Alert.astro"; - -Hop is a graphical application -that enables users of Ultramarine to switch between editions or install -multiple desktop environments on their system. - -The source code is available on [GitHub]. +Hopdnf is an app that allows you to switch between Editions or install +multiple desktop environments on your system. ## Installation -The package name is `ultramarine-hop` but it is also aliased as `hop`. This -package is available directly in Ultramarine repositories. +The package name is `ultramarine-hop`dnf but it is also aliased as `hop`dnf. ```sh sudo dnf install hop @@ -22,7 +19,7 @@ sudo dnf install hop ## Using Hop -1. Open the launcher (usually by pressing `winkey`/`Meta`/`Super`). +1. Open the launcher (usually by pressing `Windows`, `command`, or the search key). 2. Type `hop`. `Ultramarine Hop` should pop up as the first option. 3. Select the option. A dialog asking for privileges will pop out. Type in your password to continue. @@ -37,9 +34,3 @@ sudo dnf install hop greyed out. - if you would like to switch to another edition, select the last option. 5. Select the corresponding desktop environment / edition. - -[GitHub]: https://github.com/Ultramarine-Linux/hop - -#### [Next Up: umcli →](/en/usage/umcli) - -#### [← Back To: Keyboard Configuration](/en/usage/keyboard-cfg) diff --git a/content/docs/usage/index.mdx b/content/docs/usage/index.mdx new file mode 100644 index 00000000..bc27a21e --- /dev/null +++ b/content/docs/usage/index.mdx @@ -0,0 +1,9 @@ +--- +title: Using Ultramarine +description: "Tips and tricks for getting the most out of your Ultramarine system" +--- +This section includes tips and tricks that are a bit too specific to get called out somewhere else. + +Things like [eduroam](/docs/usage/eduroam) and [advanced keyboard configuration](docs/usage/keyboard-cfg) live here. + +If you have a tip or trick to share with the world, consider [adding it](/docs/community/contributing/contributorguide)! diff --git a/src/content/docs/hi/usage/keyboard-cfg.mdx b/content/docs/usage/keyboard-cfg.mdx similarity index 51% rename from src/content/docs/hi/usage/keyboard-cfg.mdx rename to content/docs/usage/keyboard-cfg.mdx index 9b96d658..c28eac6c 100644 --- a/src/content/docs/hi/usage/keyboard-cfg.mdx +++ b/content/docs/usage/keyboard-cfg.mdx @@ -1,27 +1,27 @@ --- title: Keyboard Configuration -description: How you may configure your keyboard. +description: Remapping keys and building macros with keyd --- -import Alert from "../../../../components/Docs/Alert.astro"; ## Layouts The default keyboard layout is English (US). You may change the keyboard layout in your desktop's settings. -If you would like to type in another language, we have a dedicated [localization guide](/en/usage/l10n#inputting-in-another-language). +If you would like to type in another language, we have a dedicated [localization guide](/docs/usage/l10n#inputting-in-another-language). -## Key remapping +## Remapping Keys -`keyd` is a key remapping daemon that remaps keys at the kernel level, allowing it to be desktop agnostic and even work in TTY. +keyddnf is a key remapping tool that works at the kernel level, this means your remapped keys will work regardless of the desktop you use (or lack thereof). -### Steps for simple configuration +### Creating a Config -1. Make sure you are a system administrator (i.e. you can run sudo) -2. Create a file `/etc/keyd/default.conf` and paste the example configuration below into it. Save the file. -3. Install `keyd` (from [Terra]): `sudo dnf install keyd` +1. Make sure you are an administrator +2. Create `/etc/keyd/default.conf` and paste the example configuration below into it. Save the file. +3. Install keyddnf (from [Terra]): `sudo dnf install keyd` +4. Start the keyd service `systemctl enable --now keyd` -Every time you have changed your configurations, you will need to reload them using `sudo keyd reload` +Every time you change your configuration, you will need to reload keyd using `sudo keyd reload` ### Example configuration @@ -43,9 +43,9 @@ Lines starting with a `#` are comments, they will be ignored by `keyd`. For more information, read the [Quickstart](https://github.com/rvaiya/keyd?tab=readme-ov-file#quickstart) section from upstream. -### Advanced configurations +### Advanced Configuration -`keyd` supports more advanced configurations, including +keyd supports more advanced configuration, including: - Mapping macros - Key timeouts @@ -54,7 +54,3 @@ For more information, read the [Quickstart](https://github.com/rvaiya/keyd?tab=r [Learn More at keyd's Documentation ->](https://github.com/rvaiya/keyd/blob/master/docs/keyd.scdoc) [Terra]: https://terra.fyralabs.com - -#### [Next Up: Switching Desktop Editions →](/en/usage/hop) - -#### [← Back To: Localization](/en/usage/l10n) diff --git a/src/content/docs/en/usage/l10n.mdx b/content/docs/usage/l10n.mdx similarity index 87% rename from src/content/docs/en/usage/l10n.mdx rename to content/docs/usage/l10n.mdx index 2fa4783c..25cc9d51 100644 --- a/src/content/docs/en/usage/l10n.mdx +++ b/content/docs/usage/l10n.mdx @@ -1,9 +1,8 @@ --- -title: Localization, Internationalization and Multilingualization -description: How to make your system support other languages and even improve the support +title: Internationalization +description: How to make your system support other languages and improve support --- -import Alert from "../../../../components/Docs/Alert.astro"; Localization (l10n) and internationalization (i18n) support in Ultramarine Linux is crucial as half of the project team speaks something other than English natively. This page contains details on @@ -11,15 +10,15 @@ how i18n works and how it can be set up on Ultramarine. ## Fonts -Ultramarine should come with fonts for most if not all languages by default. Fonts for CJKV, Thai, -Indic languages are installed out of the box. If you find any glyphs supported by Unicode not +Ultramarine should come with fonts for most, if not all, languages by default. Fonts for Chinese, Japanese, Korean, and Vietnamese (CJKV), Thai, +Indic, and Latin languages are installed out of the box. If you find any glyphs supported by Unicode not rendered correctly, [file a bug report]. ### Font Priorities Chinese users might experience issues where Japanese fonts are preferred over Chinese ones simply because the locale code `ja_JP` is before `zh_*` when sorted alphabetically. To solve this issue, -edit `~/.config/fontconfig/fonts.conf` (or `/etc/fonts/local.conf` for global changes): +edit `~/.config/fontconfig/fonts.conf` (or `/etc/fonts/local.conf` for system-wide changes): ```xml @@ -44,10 +43,9 @@ edit `~/.config/fontconfig/fonts.conf` (or `/etc/fonts/local.conf` for global ch ``` -## Inputting in Another Language +## Typing in Another Language -You may change your key maps / keyboard layout in the settings applet. Refer to documentations for -your chosen Desktop Environment (DE) or Window Manager (WM) for more details. +You may change your keymaps/keyboard layout in the settings app. Check your Edition's documentation or help app for more. ### IMFs, IMEs and IMs @@ -64,12 +62,12 @@ languages. are not actual software; there must be an IME that intercepts the inputted keys and map them into output texts, where the mapping is specified by the IM. -As an example, a Japanese KDE user would install `fcitx5-mozc` in order to type Japanese. In this +As an example, a Japanese KDE user would install `fcitx5-mozc`dnf in order to type Japanese. In this case, Fcitx5 is the IMF, Mozc is the IME, and the IM can be Romaji or Kana input depending on the user's preference. -A Cantonese GNOME user from Hong Kong learning Korean would install `ibus-rime` with Jyutping and -Cangjie support alongside `ibus-hangul` for Korean support. Here, IBus is the IMF, Rime IME provides +A Cantonese GNOME user from Hong Kong learning Korean would install `ibus-rime`dnf with Jyutping and +Cangjie support alongside `ibus-hangul`dnf for Korean support. Here, IBus is the IMF, Rime IME provides support for the Jyutping IM and Cangjie IM, while libhangul IME provides support for the Hangul IM. In most typical cases, only 1 IMF is installed in a system. However, multilingual users may choose @@ -77,43 +75,38 @@ to install multiple IMEs so that they can type in multiple languages. ### Fcitx5 vs IBus -**IBus** (Intelligent Input Bus) is an IMF usually used in GTK-based desktop environments. If you -are using GNOME/Budgie, you most likely will choose IBus over Fcitx5 due to GNOME Desktop's tight +**IBus**dnf (Intelligent Input Bus) is an IMF usually used in GTK-based desktop environments. If you +are using GNOME, Budgie, or Xfce Edition, you most likely will choose IBus over Fcitx5 due to GNOME Desktop's tight integration with IBus. Even though IBus's initial release was back in August 2008, releases are still rather frequent and the project is still being maintained. -**Fcitx5** is a newer IMF implementation and provides support for many different languages with a +**Fcitx5**dnf is a newer IMF implementation and provides support for many different languages with a slim core extensible with different addons and IMEs. It is the successor to Fcitx. If you are using -DEs that are not GTK-based (such as KDE Plasma which uses Qt) or any WMs, you should choose Fcitx5. +DEs that are not GTK-based (such as Plasma which uses Qt) or any WMs, you should choose Fcitx5. There are no strict rules on which one to choose, you can install Fcitx5 even though you use GNOME, -and you can also install IBus on a KDE system. Things come down to personal preferences. +and you can also install IBus on a Plasma system. It comes down to personal preferences. -IBus will not work inside Window Managers. +IBus will not work inside standalone Window Managers. -### Setting up Fcitx5 on KDE +### Setting up Fcitx5 on Plasma Edition -1. Install your chosen IMEs (see the table below) alongside `kcm-fcitx5` and `fcitx5-configtool`. +1. Install your chosen IMEs (see the table below) alongside `kcm-fcitx5`dnf and `fcitx5-configtool`dnf. - - Install `fcitx5-qt` and `fcitx5-gtk` for Qt/GTK support. + - Install `fcitx5-qt`dnf and `fcitx5-gtk`dnf for Qt/GTK support. 2. Enable Fcitx 5: - - On Wayland (default), go to _Settings > Input Devices > Virtual Keyboard_, and select _Fcitx 5_. - - If Fcitx 5 does not work even after a reboot, try running `im-chooser` and select _Fcitx 5_. - - On X11, install `fcitx5-autostart`. - - If Fcitx 5 does not work even after a reboot, try setting the following in `/etc/environment`: - ``` - GTK_IM_MODULE=fcitx - QT_IM_MODULE=fcitx - ``` +Go to _Settings > Input Devices > Virtual Keyboard_, and select _Fcitx 5_. + +If Fcitx 5 does not work even after a reboot, try running `im-chooser` and select _Fcitx 5_. 3. Head to _Settings > Regional Settings > Input Method_, then start configuring Fcitx 5. ### Setting up Fcitx5 on Other DEs/WMs -1. Install your chosen IMEs (see the table below) alongside `fcitx5-configtool`, `fcitx5-autostart`. - - Install `fcitx5-qt` and `fcitx5-gtk` for Qt/GTK support. +1. Install your chosen IMEs (see the table below) alongside `fcitx5-configtool`dnf, `fcitx5-autostart`dnf. + - Install `fcitx5-qt`dnf and `fcitx5-gtk`dnf for Qt/GTK support. 2. Fcitx 5 should be enabled via the autostart package. If not, - try running `im-chooser` and select _Fcitx 5_. @@ -211,16 +204,16 @@ such that it better represents Ultramarine's support on different IMs: 1. Anthy (the IM, not IME) is unmaintained, Mozc is usually preferred. 2. https://github.com/ueno/libskk 3. https://github.com/ueno/libkkc -4. See [#Compose Key](#compose-key). There is also LaTeX support in `fcitx5-m17n`. -5. See below for more IMs supported by `fcitx5-table-extra`. +4. See [#Compose Key](#compose-key). There is also LaTeX support in `fcitx5-m17n`dnf. +5. See below for more IMs supported by `fcitx5-table-extra`dnf. -#### List of IMs Supported by `fcitx5-table-extra` +#### List of IMs Supported by `fcitx5-table-extra`dnf - + Due to a bug in Fedora packaging, you need to also install `fcitx5-chinese-addons` alongside `fcitx5-table-extra` in order for things to take effect. - + - boshiamy - cangjie-large @@ -246,7 +239,7 @@ such that it better represents Ultramarine's support on different IMs: - zhengma-pinyin - zhengma -#### List of Packages for `ibus-table*` +#### List of Packages for `ibus-table*`dnf - `ibus-table-code`: Ibus-Tables for Latex, CNS11643 & Emoticons - `ibus-table-cyrillic`: Ibus-Tables for Cyrillic @@ -315,7 +308,3 @@ our communities and reach out. [file a bug report]: https://github.com/Ultramarine-Linux/ultramarine/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=%5BBUG%5D+Issue+Report [complete list of IMs]: https://wiki.archlinux.org/title/Input_method#List_of_available_input_method_editors - -#### [Next Up: Keyboard Configuration →](/en/usage/keyboard-cfg) - -#### [← Back To: Gaming](/en/usage/gaming) diff --git a/content/docs/usage/meta.json b/content/docs/usage/meta.json new file mode 100644 index 00000000..9b35a092 --- /dev/null +++ b/content/docs/usage/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Using Ultramarine", + "description": "Tips and tricks for getting the most out of your Ultramarine system", + "icon": "Sailboat", + "root": true +} diff --git a/src/content/docs/hi/usage/umcli.mdx b/content/docs/usage/umcli.mdx similarity index 89% rename from src/content/docs/hi/usage/umcli.mdx rename to content/docs/usage/umcli.mdx index 60a74306..326fab64 100644 --- a/src/content/docs/hi/usage/umcli.mdx +++ b/content/docs/usage/umcli.mdx @@ -3,19 +3,18 @@ title: umcli description: "How to use umcli" --- -import Alert from "../../../../components/Docs/Alert.astro"; -umcli is a utility included in Ultramarine. It has many planned features, and this is a list of current and planned ones. +umclidnf is a utility included in Ultramarine. It has many planned features, and this is a list of current and planned ones. ## Current Features Syntax: `um` [global options] command [command options] -#### Global Options +### Global Options `-h`, `--help` -- Display the `um` help screen if not attached to commands. Displays the Command's help page if run before a command. Just running `um` will also show the base `um` help screen. -#### Commands/Features +### Commands/Features `status` -- Displays information about the system. This includes system version info, hardware overview, disk information, system status, network information, and more. @@ -46,7 +45,3 @@ List of umcli Tweaks: - `umcli upgrade`, potentially a wrapper around the `topgrade` package. Would update everything on the system (system packages, flatpaks, firmware, etc.). - `um get PACKAGE`. A way to easily install packages that are not in a common package repository, but do distribute their own RPMs, or their own repositories. Based on [deb-get](https://github.com/wimpysworld/deb-get) - And more! - -#### [Next Up: eduroam →](/en/usage/eduroam) - -#### [← Back To: Switching Ultramarine Desktop Editions](/en/usage/hop) diff --git a/src/content/docs/hi/chromebook/chromebook.mdx b/docs-staging/chromebook/chromebook.mdx similarity index 83% rename from src/content/docs/hi/chromebook/chromebook.mdx rename to docs-staging/chromebook/chromebook.mdx index a9c544e9..e83da6b5 100644 --- a/src/content/docs/hi/chromebook/chromebook.mdx +++ b/docs-staging/chromebook/chromebook.mdx @@ -3,7 +3,6 @@ title: Getting Started with Chromebook Edition description: "Introduction to Chromebook Edition" --- -import Alert from "../../../../components/Docs/Alert.astro"; ### Welcome to Ultramarine Chromebook Edition! @@ -13,4 +12,3 @@ These pages will get you everything you need to know about what Ultramarine Chro If you would like more info about Ultramarine Chromebook and it's release, take a peak at the [Release post](link) -#### [Next Up: Getting Chromebook Edition →](getting) diff --git a/src/content/docs/en/chromebook/getting.mdx b/docs-staging/chromebook/getting.mdx similarity index 94% rename from src/content/docs/en/chromebook/getting.mdx rename to docs-staging/chromebook/getting.mdx index 3795d123..3289feeb 100644 --- a/src/content/docs/en/chromebook/getting.mdx +++ b/docs-staging/chromebook/getting.mdx @@ -3,7 +3,6 @@ title: Getting Chromebook Edition description: "Getting started with installing Ultramarine Chromebook Edition" --- -import Alert from "../../../../components/Docs/Alert.astro"; ## Minimum System Requirements @@ -20,10 +19,10 @@ Ultramarine Chromebook comes in 4 variants: Ultramarine Linux is distributed with image files available for download from [our website](https://ultramarine-linux.org/download/chromebook). - + Fyra Labs cannot guarantee the safety or quality of images downloaded from sites other than our website or FOSSTorrents - + ## Verifying the Safety of an Ultramarine ISO (Recommended) @@ -70,9 +69,7 @@ CertUtil -hashfile PATH\TO\ULTRAMARINE.ISO SHA256 Simply select the img file, a device to use for the installer, and click flash. -#### [Next Up: Installing to a Chromebook →](preparing) -#### [← Back To: Getting Started](chromebook) ## Footnotes diff --git a/docs-staging/chromebook/postinstall.mdx b/docs-staging/chromebook/postinstall.mdx new file mode 100644 index 00000000..2820df99 --- /dev/null +++ b/docs-staging/chromebook/postinstall.mdx @@ -0,0 +1,7 @@ +--- +title: Post-Installation +description: "Things to do after installing Ultramarine Chromebook Edition" +--- + + + diff --git a/src/content/docs/en/chromebook/preparing.mdx b/docs-staging/chromebook/preparing.mdx similarity index 94% rename from src/content/docs/en/chromebook/preparing.mdx rename to docs-staging/chromebook/preparing.mdx index 56f27d94..b11af988 100644 --- a/src/content/docs/en/chromebook/preparing.mdx +++ b/docs-staging/chromebook/preparing.mdx @@ -3,7 +3,6 @@ title: Installing to a Chromebook description: "Steps to be done on the Chromebook" --- -import Alert from "../../../../components/Docs/Alert.astro"; Before we insert the installer, we will need to do a few things with your ChromeOS device. @@ -15,7 +14,7 @@ If you choose to back up with Google Drive, you will be prompted to add your Goo ### 2. Enable developer mode -Enabling developer mode will wipe your data +Enabling developer mode will wipe your data #### Developer mode on Chromebooks (ChromeOS laptops only): @@ -28,12 +27,12 @@ If you choose to back up with Google Drive, you will be prompted to add your Goo #### Developer Mode on Chromeboxes and Chromebases (ChromeOS Desktops and All-in-ones): - + Not all monitors will work with the Chromebox OS Verification screens. This typically happens if the monitor has a resolution greater then 1080p. If your Chromebox appeared to boot (lights on) but does not output anything, you can attempt to continue without a display. - + 1. Shut down the device, then insert a paper clip (SIM ejector tool works great too!) into the RECOVERY BUTTON (small hole usually near the I/O, see your hardware documentation for exact location) and reboot. You will then be greeted with the "OS Verification is turned off" screen. 2. Plug in a keyboard and press Ctrl+D. You may be prompted with 'To turn OS verification off, press RECOVERY BUTTON,' press RECOVERY BUTTON. @@ -65,6 +64,4 @@ enable_dev_usb_boot ### 4. Boot from USB/SD -#### [Next Up: Post-Install →](postinstall) -#### [← Back To: Getting Chromebook Edition](getting) diff --git a/src/content/docs/en/chromebook/terminology.mdx b/docs-staging/chromebook/terminology.mdx similarity index 98% rename from src/content/docs/en/chromebook/terminology.mdx rename to docs-staging/chromebook/terminology.mdx index 4a6fd3dd..35e81154 100644 --- a/src/content/docs/en/chromebook/terminology.mdx +++ b/docs-staging/chromebook/terminology.mdx @@ -101,8 +101,6 @@ Kinda official term to refer to higher spec Chromebooks. The Pixelbooks, Framewo No real definition besides an RGB keyboard, specs and price are all over the place -#### [← Back To: ARM Chromebooks (Beta)](armbeta) - ### Footnotes [1: Firmware Overview and Porting Guide > Firmware / EC Write Protection](https://www.chromium.org/chromium-os/firmware-porting-guide/firmware-ec-write-protection/) diff --git a/docs-staging/fido-keys.mdx b/docs-staging/fido-keys.mdx new file mode 100644 index 00000000..25cbbcf7 --- /dev/null +++ b/docs-staging/fido-keys.mdx @@ -0,0 +1,71 @@ +--- +title: Decrypting the Disk with a Security Key (Advanced) +description: "Decrypt your drive with a security key!" +--- + +If you [encrypted your setup during installation](/docs/get-started/installation/#luks-full-disk-encryption), you have the option +of using a FIDO2-Compliant security key (such as a Yubikey 5) to decrypt your disk upon boot. + +You'll need to find the encrypted disk name first: + +```bash +# Get the list of available block devices +lsblk +``` + +Find the entry with type `crypt` and mountpoint `/home` or `/`. The disk name should look something like `nvme0n1p3`, `sda3`, or `mmcblk0p2` + +Next, enroll your security key with the disk: + +```bash +# Enroll security key +sudo systemd-cryptenroll --fido2-device=auto /dev/your_disk_name +``` + +Replace the disk name with the name found previously. You'll be asked to input the security key PIN and activate the key, +refer to your key's documentation for information on how to do this. + +Once the disk has been enrolled, the initramfs must be told to use the security key. + +Open the file `/etc/crypttab` in your preferred terminal editor, and after the section labelled `none discard`, +add the line `fido2-device=auto`. It should appear similar to the following: + +```bash +# /etc/crypttab +luks-my-disk-id UUID=my-disk-id none discard,fido2-device=auto +``` + +Lastly, edit the bootloader configuration and specify to use FIDO2. The instructions for this will deviate depending on whether you use systemd-boot or GRUB. + +## GRUB + +Edit the file `/etc/default/grub` in your preferred terminal editor. + +On the line `GRUB_CMDLINE_LINUX`, add the option `rd.luks.fido2-device=auto` before the `rd.luks.uuid` line. An example is provided as follows: + +```bash +# /etc/default/grub +GRUB_CMDLINE_LINUX="rd.luks.fido2-device=auto rd.luks.uuid=luks-my-disk-id rhgb quiet" +``` + +## systemd-boot + +Find the loader file. Use `sudo bootctl status` to find all entries. Look for the entry titled "Ultramarine Linux", and note the source entry. It should appear similar to `/boot/efi//loader/entries/id-6.18.5-200.fc43.x86_64.conf` (In general, the format is id-kernel_version.fedora_version.arch.conf). Edit this file in your preferred terminal editor. + +On the line `options`, add the option `rd.luks.fido2-device=auto` before the `root=UUID=` line. An example is provided as follows: + +```bash +# /boot/efi//loader/entries/*.conf +options rd.luks.fido2-device=auto root=UUID=id ro ... +``` + +## Final Steps + +Regenerate the initramfs. + +```bash +# Regenerate dracut initramfs +sudo dracut --regenerate-all --force +``` + +If all went well, reboot the machine. When booting, you should be prompted to enter the PIN for your security key. This may not have any words, just a text box with a lock icon. Enter the PIN and press `Enter`. You will then be asked to activate the security key. Once activated, your drive will be properly decrypted and the boot will finish. diff --git a/lib/layout.shared.tsx b/lib/layout.shared.tsx new file mode 100644 index 00000000..6baf51ef --- /dev/null +++ b/lib/layout.shared.tsx @@ -0,0 +1,9 @@ +import type { BaseLayoutProps } from "fumadocs-ui/layouts/shared"; + +export function baseOptions(): BaseLayoutProps { + return { + nav: { + title: "Ultramarine Wiki", + }, + }; +} diff --git a/lib/source.ts b/lib/source.ts new file mode 100644 index 00000000..43252ab2 --- /dev/null +++ b/lib/source.ts @@ -0,0 +1,36 @@ +import { docs } from "fumadocs-mdx:collections/server"; +import { type InferPageType, loader } from "fumadocs-core/source"; +import { icons } from "lucide-react"; +import { createElement } from "react"; + +// See https://fumadocs.dev/docs/headless/source-api for more info +export const source = loader({ + baseUrl: "/docs", + source: docs.toFumadocsSource(), + plugins: [], + icon(icon) { + if (!icon) { + // You may set a default icon + return; + } + + if (icon in icons) return createElement(icons[icon as keyof typeof icons]); + }, +}); + +export function getPageImage(page: InferPageType) { + const segments = [...page.slugs, "image.png"]; + + return { + segments, + url: `/og/docs/${segments.join("/")}`, + }; +} + +export async function getLLMText(page: InferPageType) { + const processed = await page.data.getText("processed"); + + return `# ${page.data.title} + +${processed}`; +} diff --git a/mdx-components.tsx b/mdx-components.tsx new file mode 100644 index 00000000..20beb4cd --- /dev/null +++ b/mdx-components.tsx @@ -0,0 +1,9 @@ +import defaultMdxComponents from 'fumadocs-ui/mdx'; +import type { MDXComponents } from 'mdx/types'; + +export function getMDXComponents(components?: MDXComponents): MDXComponents { + return { + ...defaultMdxComponents, + ...components, + }; +} diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 00000000..4f2216e9 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,15 @@ +import { createMDX } from "fumadocs-mdx/next"; + +const withMDX = createMDX(); + +/** @type {import('next').NextConfig} */ +const config = { + output: "export", + reactStrictMode: true, + images: { + // TODO: make this work properly + unoptimized: true, + }, +}; + +export default withMDX(config); diff --git a/package.json b/package.json index 06544e9a..b7573978 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,33 @@ { - "name": "@example/docs", - "type": "module", - "version": "0.0.1", + "name": "wiki", + "version": "0.0.0", "private": true, "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", - "preview": "astro preview", - "astro": "astro" + "build": "next build", + "dev": "next dev", + "start": "serve out", + "types:check": "fumadocs-mdx && next typegen && tsc --noEmit", + "postinstall": "fumadocs-mdx" }, "dependencies": { - "@algolia/client-search": "^5.49.0", - "@astrojs/mdx": "^2.0.5", - "@astrojs/preact": "^4.1.3", - "@astrojs/react": "^4.4.2", - "@docsearch/css": "^4.5.3", - "@docsearch/react": "^3.5.2", - "@iconify-json/bi": "^1.1.23", - "@iconify-json/lucide": "^1.2.92", - "@types/node": "^25.0.10", - "@types/react": "^18.2.48", - "@types/react-dom": "^18.2.18", - "astro": "^4.2.1", - "astro-icon": "^1.0.2", - "preact": "^10.19.3", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "@orama/orama": "^3.1.18", + "fumadocs-core": "16.5.4", + "fumadocs-mdx": "14.2.7", + "fumadocs-ui": "16.5.4", + "lucide-react": "^0.563.0", + "next": "16.1.6", + "react": "^19.2.4", + "react-dom": "^19.2.4" }, "devDependencies": { - "html-escaper": "^3.0.3", - "prettier": "^3.2.4", - "prettier-plugin-astro": "^0.14.1" + "@tailwindcss/postcss": "^4.1.18", + "@types/mdx": "^2.0.13", + "@types/node": "^25.2.3", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "postcss": "^8.5.6", + "serve": "^14.2.5", + "tailwindcss": "^4.1.18", + "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..9b12f4aa --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4604 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@orama/orama': + specifier: ^3.1.18 + version: 3.1.18 + fumadocs-core: + specifier: 16.5.4 + version: 16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) + fumadocs-mdx: + specifier: 14.2.7 + version: 14.2.7(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + fumadocs-ui: + specifier: 16.5.4 + version: 16.5.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(fumadocs-core@16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.1.18) + lucide-react: + specifier: ^0.563.0 + version: 0.563.0(react@19.2.4) + next: + specifier: 16.1.6 + version: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: + specifier: ^19.2.4 + version: 19.2.4 + react-dom: + specifier: ^19.2.4 + version: 19.2.4(react@19.2.4) + devDependencies: + '@tailwindcss/postcss': + specifier: ^4.1.18 + version: 4.1.18 + '@types/mdx': + specifier: ^2.0.13 + version: 2.0.13 + '@types/node': + specifier: ^25.2.3 + version: 25.2.3 + '@types/react': + specifier: ^19.2.14 + version: 19.2.14 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.14) + postcss: + specifier: ^8.5.6 + version: 8.5.6 + serve: + specifier: ^14.2.5 + version: 14.2.5 + tailwindcss: + specifier: ^4.1.18 + version: 4.1.18 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + + '@esbuild/aix-ppc64@0.27.3': + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.3': + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.3': + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.3': + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.3': + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.3': + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.3': + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.3': + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.3': + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.3': + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.3': + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.3': + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.3': + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.3': + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.3': + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.3': + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.3': + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.3': + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.3': + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.3': + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.3': + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.3': + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.3': + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.3': + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.3': + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.3': + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@floating-ui/core@1.7.4': + resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} + + '@floating-ui/dom@1.7.5': + resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} + + '@floating-ui/react-dom@2.1.7': + resolution: {integrity: sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@formatjs/fast-memoize@3.1.0': + resolution: {integrity: sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg==} + + '@formatjs/intl-localematcher@0.8.1': + resolution: {integrity: sha512-xwEuwQFdtSq1UKtQnyTZWC+eHdv7Uygoa+H2k/9uzBVQjDyp9r20LNDNKedWXll7FssT3GRHvqsdJGYSUWqYFA==} + + '@fumadocs/tailwind@0.0.2': + resolution: {integrity: sha512-4JrTJLRDKKdFF3gy07rAsakqGr17/0cJE042B1icCmMRrPA4a38cjR1qd4EqUiDJ+fzM0wgVN9QYiqds3HB2rg==} + peerDependencies: + tailwindcss: ^4.0.0 + peerDependenciesMeta: + tailwindcss: + optional: true + + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + + '@next/env@16.1.6': + resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} + + '@next/swc-darwin-arm64@16.1.6': + resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.1.6': + resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.1.6': + resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@16.1.6': + resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@16.1.6': + resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@16.1.6': + resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@16.1.6': + resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.1.6': + resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@orama/orama@3.1.18': + resolution: {integrity: sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA==} + engines: {node: '>= 20.0.0'} + + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-navigation-menu@1.2.14': + resolution: {integrity: sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-scroll-area@1.2.10': + resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.2.4': + resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + + '@shikijs/core@3.22.0': + resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} + + '@shikijs/engine-javascript@3.22.0': + resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==} + + '@shikijs/engine-oniguruma@3.22.0': + resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} + + '@shikijs/langs@3.22.0': + resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} + + '@shikijs/rehype@3.22.0': + resolution: {integrity: sha512-69b2VPc6XBy/VmAJlpBU5By+bJSBdE2nvgRCZXav7zujbrjXuT0F60DIrjKuutjPqNufuizE+E8tIZr2Yn8Z+g==} + + '@shikijs/themes@3.22.0': + resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} + + '@shikijs/transformers@3.22.0': + resolution: {integrity: sha512-E7eRV7mwDBjueLF6852n2oYeJYxBq3NSsDk+uyruYAXONv4U8holGmIrT+mPRJQ1J1SNOH6L8G19KRzmBawrFw==} + + '@shikijs/types@3.22.0': + resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tailwindcss/node@4.1.18': + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} + + '@tailwindcss/oxide-android-arm64@4.1.18': + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.18': + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.18': + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} + engines: {node: '>= 10'} + + '@tailwindcss/postcss@4.1.18': + resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@zeit/schemas@2.36.0': + resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + baseline-browser-mapping@2.9.19: + resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} + hasBin: true + + boxen@7.0.0: + resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} + engines: {node: '>=14.16'} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clipboardy@3.0.0: + resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + compute-scroll-into-view@3.1.1: + resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.19.0: + resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} + engines: {node: '>=10.13.0'} + + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + + estree-util-value-to-estree@3.5.0: + resolution: {integrity: sha512-aMV56R27Gv3QmfmF1MY12GWkGzzeAezAX+UplqHVASfjc9wNzI/X6hC0S9oxq61WT4aQesLGslWP9tKk6ghRZQ==} + + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + framer-motion@12.34.0: + resolution: {integrity: sha512-+/H49owhzkzQyxtn7nZeF4kdH++I2FWrESQ184Zbcw5cEqNHYkE5yxWxcTLSj5lNx3NWdbIRy5FHqUvetD8FWg==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + + fumadocs-core@16.5.4: + resolution: {integrity: sha512-CUqyl1YMTzj6JbzduVqAza5rp3zRO2idwu7HoYTkB3Gpibyph1uwOMVGwFt3ra8hENpQCXQAfPMUGcjyba9MCg==} + peerDependencies: + '@mdx-js/mdx': '*' + '@mixedbread/sdk': ^0.46.0 + '@orama/core': 1.x.x + '@oramacloud/client': 2.x.x + '@tanstack/react-router': 1.x.x + '@types/estree-jsx': '*' + '@types/hast': '*' + '@types/mdast': '*' + '@types/react': '*' + algoliasearch: 5.x.x + lucide-react: '*' + next: 16.x.x + react: ^19.2.0 + react-dom: ^19.2.0 + react-router: 7.x.x + waku: ^0.26.0 || ^0.27.0 || ^1.0.0 + zod: 4.x.x + peerDependenciesMeta: + '@mdx-js/mdx': + optional: true + '@mixedbread/sdk': + optional: true + '@orama/core': + optional: true + '@oramacloud/client': + optional: true + '@tanstack/react-router': + optional: true + '@types/estree-jsx': + optional: true + '@types/hast': + optional: true + '@types/mdast': + optional: true + '@types/react': + optional: true + algoliasearch: + optional: true + lucide-react: + optional: true + next: + optional: true + react: + optional: true + react-dom: + optional: true + react-router: + optional: true + waku: + optional: true + zod: + optional: true + + fumadocs-mdx@14.2.7: + resolution: {integrity: sha512-Q2W79F7wpwhq4HoYPw9GnMpf5ZmpdU7YzZND7EWwwOiWddfyzPh6EH/z7MFhhdhsTqRh9/kwwsu9XslWDRRPsg==} + hasBin: true + peerDependencies: + '@fumadocs/mdx-remote': ^1.4.0 + '@types/mdast': '*' + '@types/mdx': '*' + '@types/react': '*' + fumadocs-core: ^15.0.0 || ^16.0.0 + mdast-util-directive: '*' + mdast-util-mdx-jsx: '*' + next: ^15.3.0 || ^16.0.0 + react: '*' + vite: 6.x.x || 7.x.x + peerDependenciesMeta: + '@fumadocs/mdx-remote': + optional: true + '@types/mdast': + optional: true + '@types/mdx': + optional: true + '@types/react': + optional: true + mdast-util-directive: + optional: true + mdast-util-mdx-jsx: + optional: true + next: + optional: true + react: + optional: true + vite: + optional: true + + fumadocs-ui@16.5.4: + resolution: {integrity: sha512-HGKBgjViQTd1Df/ZcDTELnZ5haAbkGR16Yy5oJkUKKqdNJ5fpEBCLn/f9nbxjBIfvtayPtUd7+1jNIjvBZu/1A==} + peerDependencies: + '@types/react': '*' + fumadocs-core: 16.5.4 + next: 16.x.x + react: ^19.2.0 + react-dom: ^19.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + next: + optional: true + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + image-size@2.0.2: + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} + engines: {node: '>=16.x'} + hasBin: true + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-port-reachable@4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lucide-react@0.563.0: + resolution: {integrity: sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + motion-dom@12.34.0: + resolution: {integrity: sha512-Lql3NuEcScRDxTAO6GgUsRHBZOWI/3fnMlkMcH5NftzcN37zJta+bpbMAV9px4Nj057TuvRooMK7QrzMCgtz6Q==} + + motion-utils@12.29.2: + resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} + + motion@12.34.0: + resolution: {integrity: sha512-01Sfa/zgsD/di8zA/uFW5Eb7/SPXoGyUfy+uMRMW5Spa8j0z/UbfQewAYvPMYFCXRlyD6e5aLHh76TxeeJD+RA==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} + + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@16.1.6: + resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-to-yarn@3.0.1: + resolution: {integrity: sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} + + oniguruma-to-es@4.3.4: + resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-to-regexp@3.3.0: + resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + peerDependencies: + react: ^19.2.4 + + react-medium-image-zoom@5.4.0: + resolution: {integrity: sha512-BsE+EnFVQzFIlyuuQrZ9iTwyKpKkqdFZV1ImEQN573QPqGrIUuNni7aF+sZwDcxlsuOMayCr6oO/PZR/yJnbRg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + + registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + serve-handler@6.1.6: + resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + + serve@14.2.5: + resolution: {integrity: sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==} + engines: {node: '>= 14'} + hasBin: true + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@3.22.0: + resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + tailwind-merge@3.4.0: + resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} + + tailwindcss@4.1.18: + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@emnapi/runtime@1.8.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.27.3': + optional: true + + '@esbuild/android-arm64@0.27.3': + optional: true + + '@esbuild/android-arm@0.27.3': + optional: true + + '@esbuild/android-x64@0.27.3': + optional: true + + '@esbuild/darwin-arm64@0.27.3': + optional: true + + '@esbuild/darwin-x64@0.27.3': + optional: true + + '@esbuild/freebsd-arm64@0.27.3': + optional: true + + '@esbuild/freebsd-x64@0.27.3': + optional: true + + '@esbuild/linux-arm64@0.27.3': + optional: true + + '@esbuild/linux-arm@0.27.3': + optional: true + + '@esbuild/linux-ia32@0.27.3': + optional: true + + '@esbuild/linux-loong64@0.27.3': + optional: true + + '@esbuild/linux-mips64el@0.27.3': + optional: true + + '@esbuild/linux-ppc64@0.27.3': + optional: true + + '@esbuild/linux-riscv64@0.27.3': + optional: true + + '@esbuild/linux-s390x@0.27.3': + optional: true + + '@esbuild/linux-x64@0.27.3': + optional: true + + '@esbuild/netbsd-arm64@0.27.3': + optional: true + + '@esbuild/netbsd-x64@0.27.3': + optional: true + + '@esbuild/openbsd-arm64@0.27.3': + optional: true + + '@esbuild/openbsd-x64@0.27.3': + optional: true + + '@esbuild/openharmony-arm64@0.27.3': + optional: true + + '@esbuild/sunos-x64@0.27.3': + optional: true + + '@esbuild/win32-arm64@0.27.3': + optional: true + + '@esbuild/win32-ia32@0.27.3': + optional: true + + '@esbuild/win32-x64@0.27.3': + optional: true + + '@floating-ui/core@1.7.4': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.5': + dependencies: + '@floating-ui/core': 1.7.4 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/react-dom@2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@floating-ui/dom': 1.7.5 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@floating-ui/utils@0.2.10': {} + + '@formatjs/fast-memoize@3.1.0': + dependencies: + tslib: 2.8.1 + + '@formatjs/intl-localematcher@0.8.1': + dependencies: + '@formatjs/fast-memoize': 3.1.0 + tslib: 2.8.1 + + '@fumadocs/tailwind@0.0.2(tailwindcss@4.1.18)': + dependencies: + postcss-selector-parser: 7.1.1 + optionalDependencies: + tailwindcss: 4.1.18 + + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.8.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.15.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.15.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@next/env@16.1.6': {} + + '@next/swc-darwin-arm64@16.1.6': + optional: true + + '@next/swc-darwin-x64@16.1.6': + optional: true + + '@next/swc-linux-arm64-gnu@16.1.6': + optional: true + + '@next/swc-linux-arm64-musl@16.1.6': + optional: true + + '@next/swc-linux-x64-gnu@16.1.6': + optional: true + + '@next/swc-linux-x64-musl@16.1.6': + optional: true + + '@next/swc-win32-arm64-msvc@16.1.6': + optional: true + + '@next/swc-win32-x64-msvc@16.1.6': + optional: true + + '@orama/orama@3.1.18': {} + + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + aria-hidden: 1.2.6 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + aria-hidden: 1.2.6 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@floating-ui/react-dom': 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/rect': 1.1.1 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/rect@1.1.1': {} + + '@shikijs/core@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.4 + + '@shikijs/engine-oniguruma@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + + '@shikijs/rehype@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + '@types/hast': 3.0.4 + hast-util-to-string: 3.0.1 + shiki: 3.22.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + + '@shikijs/themes@3.22.0': + dependencies: + '@shikijs/types': 3.22.0 + + '@shikijs/transformers@3.22.0': + dependencies: + '@shikijs/core': 3.22.0 + '@shikijs/types': 3.22.0 + + '@shikijs/types@3.22.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@standard-schema/spec@1.1.0': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.1.18': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.19.0 + jiti: 2.6.1 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.18 + + '@tailwindcss/oxide-android-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.18': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.18': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': + optional: true + + '@tailwindcss/oxide@4.1.18': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 + '@tailwindcss/oxide-darwin-x64': 4.1.18 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 + + '@tailwindcss/postcss@4.1.18': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.18 + '@tailwindcss/oxide': 4.1.18 + postcss: 8.5.6 + tailwindcss: 4.1.18 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.8 + + '@types/estree@1.0.8': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + + '@types/ms@2.1.0': {} + + '@types/node@25.2.3': + dependencies: + undici-types: 7.16.0 + + '@types/react-dom@19.2.3(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@ungap/structured-clone@1.3.0': {} + + '@zeit/schemas@2.36.0': {} + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + ajv@8.12.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + arch@2.2.0: {} + + arg@5.0.2: {} + + argparse@2.0.1: {} + + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + astring@1.9.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + baseline-browser-mapping@2.9.19: {} + + boxen@7.0.0: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.0.1 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + bytes@3.0.0: {} + + bytes@3.1.2: {} + + camelcase@7.0.1: {} + + caniuse-lite@1.0.30001769: {} + + ccount@2.0.1: {} + + chalk-template@0.4.0: + dependencies: + chalk: 4.1.2 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.0.1: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-boxes@3.0.0: {} + + client-only@0.0.1: {} + + clipboardy@3.0.0: + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + + clsx@2.1.1: {} + + collapse-white-space@2.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + compute-scroll-into-view@3.1.1: {} + + concat-map@0.0.1: {} + + content-disposition@0.5.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + csstype@3.2.3: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + deep-extend@0.6.0: {} + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + detect-node-es@1.1.0: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + eastasianwidth@0.2.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.19.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + + esast-util-from-estree@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + unist-util-position-from-estree: 2.0.0 + + esast-util-from-js@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + acorn: 8.15.0 + esast-util-from-estree: 2.0.0 + vfile-message: 4.0.3 + + esbuild@0.27.3: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.3 + '@esbuild/android-arm': 0.27.3 + '@esbuild/android-arm64': 0.27.3 + '@esbuild/android-x64': 0.27.3 + '@esbuild/darwin-arm64': 0.27.3 + '@esbuild/darwin-x64': 0.27.3 + '@esbuild/freebsd-arm64': 0.27.3 + '@esbuild/freebsd-x64': 0.27.3 + '@esbuild/linux-arm': 0.27.3 + '@esbuild/linux-arm64': 0.27.3 + '@esbuild/linux-ia32': 0.27.3 + '@esbuild/linux-loong64': 0.27.3 + '@esbuild/linux-mips64el': 0.27.3 + '@esbuild/linux-ppc64': 0.27.3 + '@esbuild/linux-riscv64': 0.27.3 + '@esbuild/linux-s390x': 0.27.3 + '@esbuild/linux-x64': 0.27.3 + '@esbuild/netbsd-arm64': 0.27.3 + '@esbuild/netbsd-x64': 0.27.3 + '@esbuild/openbsd-arm64': 0.27.3 + '@esbuild/openbsd-x64': 0.27.3 + '@esbuild/openharmony-arm64': 0.27.3 + '@esbuild/sunos-x64': 0.27.3 + '@esbuild/win32-arm64': 0.27.3 + '@esbuild/win32-ia32': 0.27.3 + '@esbuild/win32-x64': 0.27.3 + + escape-string-regexp@5.0.0: {} + + estree-util-attach-comments@3.0.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-build-jsx@3.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + + estree-util-is-identifier-name@3.0.0: {} + + estree-util-scope@1.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + + estree-util-to-js@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.6 + + estree-util-value-to-estree@3.5.0: + dependencies: + '@types/estree': 1.0.8 + + estree-util-visit@2.0.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + framer-motion@12.34.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + motion-dom: 12.34.0 + motion-utils: 12.29.2 + tslib: 2.8.1 + optionalDependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + fumadocs-core@16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6): + dependencies: + '@formatjs/intl-localematcher': 0.8.1 + '@orama/orama': 3.1.18 + '@shikijs/rehype': 3.22.0 + '@shikijs/transformers': 3.22.0 + estree-util-value-to-estree: 3.5.0 + github-slugger: 2.0.0 + hast-util-to-estree: 3.1.3 + hast-util-to-jsx-runtime: 2.3.6 + image-size: 2.0.2 + mdast-util-mdx: 3.0.0 + mdast-util-to-markdown: 2.1.2 + negotiator: 1.0.0 + npm-to-yarn: 3.0.1 + path-to-regexp: 8.3.0 + remark: 15.0.1 + remark-gfm: 4.0.1 + remark-rehype: 11.1.2 + scroll-into-view-if-needed: 3.1.0 + shiki: 3.22.0 + tinyglobby: 0.2.15 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + optionalDependencies: + '@mdx-js/mdx': 3.1.1 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 19.2.14 + lucide-react: 0.563.0(react@19.2.4) + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + zod: 4.3.6 + transitivePeerDependencies: + - supports-color + + fumadocs-mdx@14.2.7(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4): + dependencies: + '@mdx-js/mdx': 3.1.1 + '@standard-schema/spec': 1.1.0 + chokidar: 5.0.0 + esbuild: 0.27.3 + estree-util-value-to-estree: 3.5.0 + fumadocs-core: 16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) + js-yaml: 4.1.1 + mdast-util-to-markdown: 2.1.2 + picocolors: 1.1.1 + picomatch: 4.0.3 + remark-mdx: 3.1.1 + tinyexec: 1.0.2 + tinyglobby: 0.2.15 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + zod: 4.3.6 + optionalDependencies: + '@types/mdast': 4.0.4 + '@types/mdx': 2.0.13 + '@types/react': 19.2.14 + mdast-util-mdx-jsx: 3.2.0 + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + transitivePeerDependencies: + - supports-color + + fumadocs-ui@16.5.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(fumadocs-core@16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.1.18): + dependencies: + '@fumadocs/tailwind': 0.0.2(tailwindcss@4.1.18) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + class-variance-authority: 0.7.1 + fumadocs-core: 16.5.4(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.563.0(react@19.2.4))(next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) + lucide-react: 0.563.0(react@19.2.4) + motion: 12.34.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next-themes: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-medium-image-zoom: 5.4.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + scroll-into-view-if-needed: 3.1.0 + tailwind-merge: 3.4.0 + optionalDependencies: + '@types/react': 19.2.14 + next: 16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + transitivePeerDependencies: + - '@emotion/is-prop-valid' + - '@types/react-dom' + - tailwindcss + + get-nonce@1.0.1: {} + + get-stream@6.0.1: {} + + github-slugger@2.0.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + hast-util-to-estree@3.1.3: + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + html-void-elements@3.0.0: {} + + human-signals@2.1.0: {} + + image-size@2.0.2: {} + + ini@1.3.8: {} + + inline-style-parser@0.2.7: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-decimal@2.0.1: {} + + is-docker@2.2.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-hexadecimal@2.0.1: {} + + is-plain-obj@4.1.0: {} + + is-port-reachable@4.0.0: {} + + is-stream@2.0.1: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isexe@2.0.0: {} + + jiti@2.6.1: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + json-schema-traverse@1.0.0: {} + + lightningcss-android-arm64@1.30.2: + optional: true + + lightningcss-darwin-arm64@1.30.2: + optional: true + + lightningcss-darwin-x64@1.30.2: + optional: true + + lightningcss-freebsd-x64@1.30.2: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.2: + optional: true + + lightningcss-linux-arm64-gnu@1.30.2: + optional: true + + lightningcss-linux-arm64-musl@1.30.2: + optional: true + + lightningcss-linux-x64-gnu@1.30.2: + optional: true + + lightningcss-linux-x64-musl@1.30.2: + optional: true + + lightningcss-win32-arm64-msvc@1.30.2: + optional: true + + lightningcss-win32-x64-msvc@1.30.2: + optional: true + + lightningcss@1.30.2: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 + + longest-streak@3.1.0: {} + + lucide-react@0.563.0(react@19.2.4): + dependencies: + react: 19.2.4 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + markdown-extensions@2.0.0: {} + + markdown-table@3.0.4: {} + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + merge-stream@2.0.0: {} + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-expression@3.0.1: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-mdx-jsx@3.0.2: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-extension-mdx-md@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-mdxjs-esm@3.0.0: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-extension-mdxjs@3.0.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + micromark-extension-mdx-expression: 3.0.1 + micromark-extension-mdx-jsx: 3.0.2 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-mdx-expression@2.0.3: + dependencies: + '@types/estree': 1.0.8 + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-events-to-acorn: 2.0.3 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.3 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-events-to-acorn@2.0.3: + dependencies: + '@types/estree': 1.0.8 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + vfile-message: 4.0.3 + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + mime-db@1.33.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.18: + dependencies: + mime-db: 1.33.0 + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimist@1.2.8: {} + + motion-dom@12.34.0: + dependencies: + motion-utils: 12.29.2 + + motion-utils@12.29.2: {} + + motion@12.34.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + framer-motion: 12.34.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + tslib: 2.8.1 + optionalDependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + ms@2.0.0: {} + + ms@2.1.3: {} + + nanoid@3.3.11: {} + + negotiator@0.6.4: {} + + negotiator@1.0.0: {} + + next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + next@16.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + '@next/env': 16.1.6 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001769 + postcss: 8.4.31 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(react@19.2.4) + optionalDependencies: + '@next/swc-darwin-arm64': 16.1.6 + '@next/swc-darwin-x64': 16.1.6 + '@next/swc-linux-arm64-gnu': 16.1.6 + '@next/swc-linux-arm64-musl': 16.1.6 + '@next/swc-linux-x64-gnu': 16.1.6 + '@next/swc-linux-x64-musl': 16.1.6 + '@next/swc-win32-arm64-msvc': 16.1.6 + '@next/swc-win32-x64-msvc': 16.1.6 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-to-yarn@3.0.1: {} + + on-headers@1.1.0: {} + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + oniguruma-parser@0.12.1: {} + + oniguruma-to-es@4.3.4: + dependencies: + oniguruma-parser: 0.12.1 + regex: 6.1.0 + regex-recursion: 6.0.2 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + path-is-inside@1.0.2: {} + + path-key@3.1.1: {} + + path-to-regexp@3.3.0: {} + + path-to-regexp@8.3.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.3: {} + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + property-information@7.1.0: {} + + punycode@2.3.1: {} + + range-parser@1.2.0: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-dom@19.2.4(react@19.2.4): + dependencies: + react: 19.2.4 + scheduler: 0.27.0 + + react-medium-image-zoom@5.4.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): + dependencies: + react: 19.2.4 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4): + dependencies: + react: 19.2.4 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) + optionalDependencies: + '@types/react': 19.2.14 + + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): + dependencies: + get-nonce: 1.0.1 + react: 19.2.4 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react@19.2.4: {} + + readdirp@5.0.0: {} + + recma-build-jsx@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-build-jsx: 3.0.1 + vfile: 6.0.3 + + recma-jsx@1.0.1(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + estree-util-to-js: 2.0.0 + recma-parse: 1.0.0 + recma-stringify: 1.0.0 + unified: 11.0.5 + + recma-parse@1.0.0: + dependencies: + '@types/estree': 1.0.8 + esast-util-from-js: 2.0.1 + unified: 11.0.5 + vfile: 6.0.3 + + recma-stringify@1.0.0: + dependencies: + '@types/estree': 1.0.8 + estree-util-to-js: 2.0.0 + unified: 11.0.5 + vfile: 6.0.3 + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + registry-auth-token@3.3.2: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + + registry-url@3.1.0: + dependencies: + rc: 1.2.8 + + rehype-recma@1.0.0: + dependencies: + '@types/estree': 1.0.8 + '@types/hast': 3.0.4 + hast-util-to-estree: 3.1.3 + transitivePeerDependencies: + - supports-color + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-mdx@3.1.1: + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + remark@15.0.1: + dependencies: + '@types/mdast': 4.0.4 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + require-from-string@2.0.2: {} + + safe-buffer@5.2.1: {} + + scheduler@0.27.0: {} + + scroll-into-view-if-needed@3.1.0: + dependencies: + compute-scroll-into-view: 3.1.1 + + semver@7.7.4: + optional: true + + serve-handler@6.1.6: + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 3.3.0 + range-parser: 1.2.0 + + serve@14.2.5: + dependencies: + '@zeit/schemas': 2.36.0 + ajv: 8.12.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.8.1 + is-port-reachable: 4.0.0 + serve-handler: 6.1.6 + update-check: 1.5.4 + transitivePeerDependencies: + - supports-color + + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.4 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@3.22.0: + dependencies: + '@shikijs/core': 3.22.0 + '@shikijs/engine-javascript': 3.22.0 + '@shikijs/engine-oniguruma': 3.22.0 + '@shikijs/langs': 3.22.0 + '@shikijs/themes': 3.22.0 + '@shikijs/types': 3.22.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + signal-exit@3.0.7: {} + + source-map-js@1.2.1: {} + + source-map@0.7.6: {} + + space-separated-tokens@2.0.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-final-newline@2.0.0: {} + + strip-json-comments@2.0.1: {} + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + styled-jsx@5.1.6(react@19.2.4): + dependencies: + client-only: 0.0.1 + react: 19.2.4 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + tailwind-merge@3.4.0: {} + + tailwindcss@4.1.18: {} + + tapable@2.3.0: {} + + tinyexec@1.0.2: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + tslib@2.8.1: {} + + type-fest@2.19.0: {} + + typescript@5.9.3: {} + + undici-types@7.16.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position-from-estree@2.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + update-check@1.5.4: + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): + dependencies: + react: 19.2.4 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.4 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + util-deprecate@1.0.2: {} + + vary@1.1.2: {} + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + + zod@4.3.6: {} + + zwitch@2.0.4: {} diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 00000000..a34a3d56 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; diff --git a/public/CNAME b/public/CNAME deleted file mode 100644 index 03cb49b1..00000000 --- a/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -wiki.ultramarine-linux.org \ No newline at end of file diff --git a/public/assets/moonshot/moonshot.png b/public/assets/moonshot/moonshot.png new file mode 100644 index 0000000000000000000000000000000000000000..251dc46d673061434251641069dc9c46ced9c8c6 GIT binary patch literal 113954 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ŽK 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 F{{tyrLM#9P literal 0 HcmV?d00001 diff --git a/public/assets/steam/compat.png b/public/assets/steam/compat.png new file mode 100644 index 0000000000000000000000000000000000000000..e13d3e44163413e4f7be4c94b05a22c14f42216c GIT binary patch literal 83488 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 C!7bhZ literal 0 HcmV?d00001 diff --git a/public/assets/steam/menu.png b/public/assets/steam/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..51a30a5ceed175ada4f0db71b60f3ff29ee306b8 GIT binary patch literal 28535 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 f&h>J>H_Vx=8qT{0kh@ij { - element.setAttribute("tabindex", "0"); -}); diff --git a/public/og-image.png b/public/og-image.png deleted file mode 100644 index d9db4eb519acd568af276a2d15a8b72700c9f89c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354234 zcmXtf1yEE``!@{>OD`#%OV>(=yL7XFw3M_cC?H4*?9v^Q3cE`;f`F8;gn-miA_`Jc zN=c_5@B4qhxpU{tdG6e~bLZZ3p63@&yor%EB{?fO9v&X0u8xK&9v)Ex9v*=e8NprT z1`%g?HxRi)4WW2=jj0sZPQ-U}uE#p2cky5WJiONkJiN=h(CaNcyZ}i&yd6h8JjGl* zJSN}5cDVB01rld{Z4JDC|2c}g$}{gG0AC$zKRi4N`v08xc=?6Qcemr|YCz3{7XEa7 zd$Fc7hfru;p!#ESvN@vOe9`Kr=grf_rJ}b zUxHPS@+LxW1;^1|w_P>WvnaKQ8gaElzkrLai8bqFru_?}+jdrQqy3wUE~R9qHTUk! z?z(Z#i*~iHvvRp}(MO#DpIi6NW$iYL{6AlRZ@oRA>!UdRdswT~onpMwuGCFcuGSqu z+GcdN%Vrw&FtDQ?3#6ivD!Zw{9S%1vHz~XFgTy{X;J&)`F$1kx=$Ac7pmbY zOa(p{ZmME-lbDXrZb!M|Q*T36t|z-yQ;ZMijX743v6p+jUDvNAAjjC~8{eC>cMB&$ zjU09RyKhg_yTUz|XMSI;yj@W&a(nx8B5?0s5Xye>AS`@ku0-hoTWi0#6QFuFcG+!D z>9aIgeo<0CyQ6nz*}AZo#58sp-d1<{q&=ecQp92F=J>?)B9Ir4 z?rDcAY^3(4;*E=Pwf>?*)t+6zW^h2|<&p1T!Oh2=KZ1R4+tpI{%jJF_ZdB@}R_$ep z|M|7Tex}eFs;8!aERWIta%%PA^I_C}NsjTsiM;Zomd{m67N>6Qk0sdN?4nk4a&~*e z@88a;v4+dP<9A3Z8Vd&m9z#Nc{p5E!Za0GH>!YX3GC#>)>HYk<^0jJFqJaH+?5$d2 zFw@d!vkzCAU5{itR{XxLKWVp;{qEZIXy&`Cp##&2+j%?LKD8QWcZytVVz5l8;h9__ zc36VCUaVmEMVrpo#GPmG#o;H3m(Sonj3Pq?#0Mmt)#nf$M-ybld`{f_(3hcN5(KN z%J(`r$WVH})>yHD$vTL+{%8!&_E$)!_p1qgOLTi?Q*7c5HEj@>tjS_Df|TF6gEO1s zc4RMF&j5Bv>>`-ZRYDh7g*QDQqpxuW1`NQ@55F4KwN5Ms9fIO?uX(MDBAX zky?ZQQr~yFBn&&e;1FD1L9%ETLivkRNA>(Fb!_qRlZ?NO;|{vws`)9$9Pt#Oo!l3lXO?dY9qYnC}*scSw5 z%V<`+WZ_2XfO5fV4SK{jYyT4RlK}C&;5PGCm&q-$-1LMogHV^*Ec@aYfr~fRUx%mR zx&lJ-*M^{wMJW+=cyz_q;MaCcMTZ{3K_;$!O**kl^e8_}(`V06Q2@VE&zO(1sOsF` zJ;Eg`zXGVg;FB6G;jsSun0_WwDX87hMm$WQlvM2}iQw?38oZnU#@O#AVxO4|SY+2I z`sy{v^H1-I|NTN4KU`X<nO&G9ma@uXRcI&c?Hen05S{!I^Y`2|zAy^5eLFkI) z`xg?ggl@MuZ`9Zx0^TC8E``Y>Lc$G$@4oP^-- z*xSGs@}D~596!%hKO!HskQ@7SF-KefO^!OKRq9M|9zEr%>gV8de)4xBRP#Qe_4!Hc z*OY9hj(X}7J}df*5x0)petUgiq-WFZs5agJCPjE?WEyR}d+G^0`S4xP|DOp_FmxU*{X=fIe+Dd?={<)dZ+B}*?fMCd2EBBPt>!{iPf|$lx3h1r|dGN?6?fk7$AIE zSeB5`kPIuqlGJJ6VzPvx~F1lr+J$@LYUlRR3>_bFu4)K`+W5;g_)TINNzQKLI-4S|RD_!lS$=~`RR@_C z&$rhC0=?AUZ|z1^odnT`R>`KmL69M}mlXGC5X0P~3D3Xn7jBUer;Zg!r!$UMs#tMdx9zZKi5JtOJmBg&TV#1mMVS{faH_c5Yz zUOkqEs#`0f>RS|l8$3YnM}1*W^|2p-)d$`vWfcvo84|Rc3;ZWbo4YvRLOmYk`=7k_ z?}um0+0C!V0a7bD0bKgf*@Wo!CeYS4JH&|*!AZw9;7~ixx#;Onpkx+&o3vA>e~1%3 zeb2v@S&9(};<0Q{gY`pxX_8v{(gdLCt}t6F3GoZlhqtN6C#3dgK~0Vf!FgX3K)?Vl zo$i-sQ&E)j?A_`H$4a-tLOq=f*Z|V0#$nUR z6a~bXhhV-F8Od@}D=BGhg`Aulvs*UvJE%wk8Kf5cp5}O|_|Qf-Ex5E5rKBKjL#-$l z-=k<9r7CYzUY`#l9?*G(J49+9lYFx@_l*5G%|{D0T{UE4(`=PoB>J94w4}1rLt_76 z*s`|HgHZOjZC6V!cs_bfP^8D!o8&z~R^mdu`g`($%S7>O%WhTbUU(WZS|s;mo#lP8 zHDki{7nF$))HLD^wccY^!&w;~9GsRt+x|wohb&lCTG>=I{LU&5o^`L(lRw_FbMifR8Tj)56d&}Ofbn{&>p1g$b z7uL5?_ODdnofU7r+@Tks&Haas+A9V@o`b`=N_6GCg{ziqQ&I~(*!Y~+O1Svp`_9%@ zi(=%SQ`{!3=i!cc;sXl)UcUIy=};~YMQyE3nWBqpkHgprE$a&9s>ZbN4IjA$uOHC~GN>+K5~;3^PA}b{u6N;VjwJ+IK73 zW~B{M)8t85iJA^%BV*;zG71C!N2L}VO8JZDjKub<*g6;Zm!_fap1tB%K}cy%?Z66h zQNLWki98WjLjR|m=`Q(D-vg$=c>F~vql}sLph@v=n+?4h9)+}F&tzA4TPWp>1+ELF zy}yJzVuYq^4!fOZ8&ck5pjuhfvH)92z(>V6;XSE@c-1-UKLeC~Ax)HDsre3;V~YW# z4BC3s430G5M~hpAZFz>UtcY`45MrFKQ|rz0Yz|P{()WBJk*pJHnN}6u?UIW@eS_D? zYv@5u(&8Rw@z!P>e6euKCM@D1@Pj~@C_dO%QOxY?pE|P-Jpi z33FNui;ccF3Hvl5jHGx@te~xEzggf&l0i8ye}CRL6g2vP3TYDx;&%?$W{uHr^GU7h zKqmAw>gFzeZRh%kym;dJZe>a#VLR55!{T@8%}e$jtsTY}UjEiU$Nsml#|sTUIXsFG z*gd27U!J&r7>dm%!(Mx~Q|%ulj9O=}FuimwwqkbCcJI=nv1Qc%Hih3J~4ihh(= zA_&Fj_^7_M*Ca36ukmS_re&O2)SU7YX$nuu2;2Gio~HdhBxi8EQe2Y2nS@ARFEyfI zVx4heQ)Y>U0kg>Y%bD(t`uGtA1%#33*A$oC>#3^}MGr;avp?4lAiz&6?FOeLwt+wY z7A@bpQm1XYbmQuhwt6V95Cxw-vzb4TH*(6$QfDTfgTr7dPv$b8jHSc0KuH>>Bu58H zM21~t>lQ19q@JdiGvf1tg>|g5M&eX;TseTx^_ZObYO0#xm&8y-3v0@DAy!U&&E#^S z=@cgC3{tC)=ipy3D2p?kh97MibD{V}IWZf?Jvrx5#v0?^h~FhuK`2va<*}bT^|+{E zt-%AzZ~EQj8C98s_S3$Eoqo(yCh4GWZH;uC_vkAqA%fH0@|5f`;HjX#0hmUN4dGrxfC-Zjb8@!2<8e*U~fQ3kA z`g1MB*n_c_g0!~vgm4?%VlT95OzowvgwNzOQNoX)=@kI8|tZJy5+X^ zs9T)g7DV8fvSa^E=Zes$2lS8{HIWPuB@w3}@8(`|duX_-zct1}m%EVxBe zHnMT;T*NrRnyaI!>z+&-wD5TnG)@9*}a;1p^wsabqGr;jn!_< z;vtx}NpB{A1%h|~zHk`q7$BwU^$m9zSAp@U$VZ&KtZZ2kIH#ceG}+G!`KS*5E_3nw z{Zfw?cz?`1P@k14`K#VT`tkpLO!d>{_lqUD;O7FqkKImYPjG>g$&PgIKDgwn9Z@S; zvfIVS7)aENo3jGhur8M;4fl6SFnO`;I;vjxIP})z*{(v7pbF8HTSuXDOcrP$bQ==I zli0^iynwNDAxB;!I+#9JOb!+gKovCf=%iR#Zx-l;n(>dAg#>h3B^5_9>ZczF#lVIo ziFO48dW%)&HAFBMMnk1!7*qont3-O)F3TK3m#Af4(nW@5)5SNqc`>wlpTo;EEcF9{ z;M6x|MXLcqB}D32`@C3IJUkr<*M58P*V2s-iznC(2;YawF(q84IAgSYk|l-4w1QdLQ3Tn$frhA zt|!Htunq`m&tVfvMy}#{V(4)EFbu@=O=vOQa}!8m@?knovx~CKwL!{C-;-v;-GpbO z-kVvxlakCKb_o15d1_}gCSZ+Zx`Y{gqUZ~6lURfeBdcu5Zn?jxxeHr7i*6<_DK0k~ z{ono?!{yyV{f*9lwzr6xEnwsz49hoai)n+lV;AAEBK|Ea1!mDcJsc&)o-`~Uaw~FU z6L_+ov~BN1iSsUGs$M(gCR99_C-uYB51emx$B7V4&?rAplOu~ zJRN~8_KfdEn7c8)Fn@}b%4YKCCZK!-b&;kn=T3#`Rud*@nhn;<6HUdP4Y=XhUR3XD z&-tpyMJ`Tn6V?2&BXuW=sE7=U{`~-qrt-g6vc}ubKr%8pjOClh)5AZ38KhZ+!%5f% zW;kYIxa9y7dlCo>r+3MybMWY}NnYAl?WYbiPQZvUhQbA|lT;IMi;?*IsmFPNKq%;; z4NLZ^BQyP@%YtP4t0C|P%r!*I6yqWowh6H$^KjM_>2xiRHU{f(y2-aR+PF9tbHM7FpcmArMqwC+s#hIlZ#E%NE4^>bm8}Vs+X3PvLcc>+_`V*+G1d>=L zRm*try+me4((9_M3XJJg3mR^nY6{k1k5!Gwi*3f-Y8o``KuacbGTFU!Z47bd{*V8%JrpZK~XaEl$&yka(>^=CGa#C?v&CT2bMs zVhs(Z_-g(4BX?d0={7l4ri{GU+JF=N)&pV6DgnET<%%WLCxxLFtL;U-YXB4f$rXC- z+MqNeHAd^VDuNLfnf5CB!tH(@Z}LI(^~28I6ifHXdw(9~rNwGJvEf%isk9MMH{3?4 zHg9d0kg-jnSQ*Dw(^e3|1Tt-Cy!zPF;?dzYV%Ef5n_~aFGG;t>WY0sS26i79311Nc zb?98}@`^EO=r*+&P_4Mv!o=yR*kLdb$-yQ2MdawctOXSH+jbnT)}Pi-%U?IMB%NUW z99$bil8sFk(EKgbvn>6W0iZnZZAwfl$#7iu5qVTG`d@UKY*tHE{d;2emwNsF&1=Zd{WtjD(+wMA*e zX1^2~Ec0-rDRb+W(EpZ3&Ulyxw{xn$!f}pY@&;^@y4iqf=!zyYN+qOK7Nmwa-acq^ z?2{~}Rdl?W>z2Jk>ARU$adEX17|b7*vVwwoH|tiJ$y1i6hX0Ox`@!+e z-{vI43@mjAU5<0G=EimPH~7J!k@Yw<;DE>l`}ha?D?hNM!`=or{5F#+bV?ax5rgPu5(H2;L!~#!(HT#(0|J?yDL`&7BIit_|1q)x#)azp~maU2yE0~-tJ-(n7(cmI1 zd^$g}22fqH1$%BKgW`CjrQ8CI@1eq^*=_~uSUqqm>Fc|Px*11 zz93Gm5YA~MTZp$Md*et-0WoY~YCq0Ynr7Tx_2^=AQ}b&HNuylQ%{B$%uyB-E zKbljEt7K_e=~cXD(E&!3Obn{nhU{wwmT9@V4F-~ZRzo(S=|ohtcn%z$a5#NslcI(k z-)*Rc`=8@xjmy5L6W8Y>QifK}%YHv4h}=T2;ZTYI&A^7I^OLMrmv^M(#3I8!RIuFl#edjj12y{^>_9{pvCHH? zGSZ2*7v;rx7qKs8X1NVm|3c$If!y(`66s644ewfA<~8lqiy;e4W2+6%4PbU`#6+6? zrM`*Mlnhk7|9p27kjV2bmw*FC>E9<$isoEJxx5TvDXA}tv%W@32mR`}0I*fS5--}bo{NTfK-MHNmN|#Zuu)gi-WL)zFO)CHSy9Wji zmneCixzf(F9k_z8gvz2k5zH(B`X#kxy4AVLa4eiA0&N<@?VX@#=kySi{5|R|cor%r zIjsShVkOb(Yh1=@KJDf&DLXIL_R3$xu0`H^a0^twkb4b{XHRy0D@QlIl!YG9tDH-4NDAC5{z% z+^Ux;MvfDw#lU3elx8)r*fhJ|l~!O4lUkZ|X@*jAfMfatc};c=zOE3BX$)CmTn(01 z&8i2UWFr;59VpRzyk(v_`339#%lOZ`fam^af2iL8r}wt#354aLmnGvU@e!gmG{15f zkWaLDN55L8^x@RpMQquPmB@zDU$PGl9qGv|L`EKE&D{kWv`elz)P(3%7Axc5m`Slw zn{;d`5{1ikFiwlV(mHdS$Fn1hmDJUE$MDO_Q~D1SS6Dps%`lZ%Wq2O_YgT?vL*f&jP!jf z_{eE9%{EF?9+f=Sk&!XOirCdq49$ z5MZXG0AIhjm^XPR?9VsXhAO&VjqZ112Mq?PyQRA(Ax=yuBq8M_SKb_DG~3Lir7WhP zNZ0tb)B&fzhjy)#NKM7Xi|FN z?j(E41@^7(`N|^gU-!a#;6r-Dt zc3#dud17cm@ynp((Z0$VaM^>tKNY&F>V}ilpC|STpS}BFT=B+HUMBhomD4FjzY6|4 z;<2c7B>4=GVI0@uG?WK+ff_p#MxA21@>sFx`^?c_Ec(#cOdb0B(QZn5E+8UQ>T8bY zCe2aFEJuJNb{o!Lt3@t)LR`UQ?mGGifG04#KiPTvp2mkRRcbD@iI9n#!6&etPWutUH-4ld0Qnn(S76EoCVV9&8? z887O(5qw<0{5>G4n*ou<&BGOhN{Lp;1Yajg#Nz;Wn^B5CEOzoz&0LAYgk{U#sU${a} zfYdaMD#2`;^UTMoZ!!sGwgrG`va6(2XMsTu`^({;GbHP;J!%+`##_@Ryp1MTk>BM_ z^tND`p@h>1yZ^>O?llP|rBor?K-CRA z6TU(w3IEG(<=>;P+$9KJx%%gF+@#@~+Ox4ER+aj;)TFI=tawyd{G2uA)Ir>z)UV^= zS5Br`HxE`#+w@TQf*!Dqtg${z=rQbDe#+Q$@ZFiGmQ(mWOF;oKgX zzeLROnnaq)u%-||E}~OzdM~l7SDa^|iB)u6M+!7@>e!u!bl4$>S!FfQzZXr|zY@zc zW{r6dd2AjJ$dptFuk{`*Nu0w6*#5}YjfnKwaUZ0M5(ou9fz5=22{;$`z@j5HocSHG zFAa*8^jjqtSdl~EwBMRMbHA+Ng?W{hts8qB?mABX{$6T>re#HiJ@*irdH1X$N@KY3 z1t*W!oVkCnJ!HFzl~-89mTFb(kISo%D4}zTIms&FvH;%f`3q-M{DbtUK8GPK=l6S*Z9FP*ny$KV$PM0o z6bG*};MX{|#YMJ)1nK&T&&dy8~{lmCA=^;({^RbPJAj~fX z)QCvutgyn~GFNv)&riTq<>ZL^QURxkPKF>vLBMH6O)WIItFVM+^f zQ)waZfO+}9c)am#?ay0h7gwuQdM`MQM2)e0MccD-{yqWI*QT^UPTWl)ub6QX`t(Vw zF&9OXM(8nD$UNwVF$yecU3Da>X|Ce=srNXVZF{X4?|C%jV-zw=s6LhMMOu!Vo}f(@ zu8}44r7rnu9ngZ@Ghp!h>)*B@$}U*j45K#25NA7kgc#k){|Su7jF!2RsEnxfPd|R& z4CJmkSf@fE^;txF@0EN2QLqOpzWFb&KB{x_Xkv0^u9;8Yk0w=#u8Fi z4~RBa^5!&LpZf=luLpM&sr2ogzu5+9@XpMDL*g%}K9E!D4^174kte2%ssAOR4^N{j zd0n;d*LZNS^BSS1_lC=#fWgRW3c>C(SYaD)#ee@OznQDq_<7W~6!(oWstPGgvU z`^T?ARk$J^qR3jVr6BLc)PWrwO<7;%B49CG@k34U#}6IEAA8Vyk3wkEB=Lcq>bXuL z&A||oMi+2kkC*}7VWTJ+C#&UsZ#hj1r>^lOM-En38JdFFCq&Et7_EP_SsLN|vw`OXh; zB)@d^q#xO~E1?ZrRJ)^n4t{1DOH3JFZNxlw#3SCc;tf~m)3eZ`ItrZ03tA>w7O(h8 zV(txYA>l39bfztNK3ZecX(qoBF)BzD*~-vKG>jdD3Nb$d+x4>X{KCNr<}j4Z@4=F) z?Z8+Uv_jrW?Eh*Q>JOyyw8;AjgWkg4V}P4}01gFwFTG|LDdd-}V@`jYGllN0qrW^`Jbh7HM8 zF`D*fygEixznzx8WRgLnPckelPcL)NJG|^e($*PR{;~_iW~dgAKs&H4s){739s;e| zx`T=)%k(HU4*TB}3w4nUy4l2K$d=(1g*B$h(-#PS%VqIN7`)1IpjLIdcMSL@Xn>Ip zK$%*J(wjydb1%Gm*f+cdr~SLv`sS&gL+96KT$1O>D7e>`}=$N6AGV z;qI7Z_@pO{%Xoc-Ws^<(xlRlgttb;MEY(BTl7#6Qs@O}6c`S1k5B3btQtrW0=-qL< z9_`bDR7v=ZS|v-;i`H1R z0p7StKGS1;@pjYQ4Ju!BF}lfF1;`l_{@t_moUB%gEPT1jpaeXYcG|5nlni}OZ;Yna zHk@Bs_2?1gqiEzk+kb26vZPYQu?>2g4)`DkK6CYefXT7Ei>#$oP7U`LNPlB~sxgJP zv8){&`zPOWFByD#`h{QJEbM_mRt&d*raEohXmAnlm>&i|3M-KkgTa8019=G{gk|c#6-!xXb^TE5Z4Zub8d$JLTue?>3&pDbi)Vm=&c_ zA~a}9ok&x7Os9yMW>I$J_Mu@5{*@o{Y_Zv3w~=06OL+f`KvkW_W0f2&Ro(go}%s2=kUcKuz+Vav2RF?#USXy5ld@d;OZWjp{Hy zJf?TSZev%th@U!}ua%{U$L;pATDrFkm1)P)Tp{w5X`@K>9WOOMs*?r#H2I1_f5cc< z`E4~jAZi_k-T>_;{*RSbV^Y&u?)~kfs_JEnk>tp%j*gTf10@_&S&|#SVS2PuR`F-j zH^kRf7+!;wW6OOmN={6jVH;Ee&kJ4DguonFf!f-im6G0??8d&A1bixFEybS-QxSsQUJ-EBm{n$zDaDVSe5SZL=`$hk1Q?AsjN^g0GBZa{%8X*9 zec2BLa}`!Lv^-OfyI<~c`XsArEccSWprGJs5dWf93VKgJ9~45PgpdX&>=Pz8K={m< zc?0AVRGD+1n?Tj_|T0l*tOsyEJv?yjW9qWn@40 zuYy)TteMo)W^mmhb{Tp?f^ygCz0)&hH8j)u(Ed0!WprAL);;n>@)UwxL`Q`^IM|1J z5tbQ8p$^(BvvkMmIh6ofX(OT(5Rt5qi`Z~30>BYRWfxcW9kswvJG2Pvh}Uw)@RpLH z8>F2u!flrKgmH25qNKK*wpl#ij z@n9S9MrUH5nUfv)lLd`(KLMzqC$j+q$|b?v1KMHs5DK-m@lPmY`D1{#P+S&lDpn1s zsj~=s7{j4~ig6NB+Bt}JVSqI@xY~qKgcmDgpK)(!;y7Hcm(ON6fInctnaw{bNVOH% z+X*$C;*E!;<37;8<=-X6x2uhQ{ zKa|5|6)z>FWY><+*7$eoE13d&2Ca`|G^ruy5_e)06!}9I@yQ@Rjpo!>+g0Z4r-zD^8aC(#_0D*d&3;c9-Jvs1y@bNw5~m7@sVa4GOn-~`K+{C!65@NsV6F22mYDj?YJc|~KUV^Yqprc~D!47w zSV3vQZNQ2uB}OrA8YMt*Z$4Gms5mTOx0jT6gCM z0kKr3LYgHd+s9D9~{Axq7eq)EYW-C9fmzvE=!RUvk1m6mfZAAADEagv#|7zU3`_YXC zrO}_$4BAGGU*$II^~uchnL~365Yl4m1ax0w$@40#cuf02hMz)JDoMn67xY4Wnc#oU zqy_0+G$PV9omOcEbx1#0MB3_jnliK2>hMolP(Dpyt#|GdGLyj*(;MN1P)X2YD3amu zkF$9R+$Rc3Hou_oYLNJ&6i}Af|E|Ei&aIPHW$rs2MN%rkjSI8$Yqd#$+g-z$ zq|70bv*M|GjA@1Z3=YS4G~S>Rtpw5H4gGxTSjW1dkmn8L8L(fbAJ#PI(VP&ZNobMC z=Px=VA+=GdO+9T;l(AEqPF=-BmH3?fRR1XvGqdjyGn+TpNPaY*M6B)PV6NQf!VsPc zIJsgn7J$@+aU^|{DdR~8JWf-gz>+)wt%U=ff6FOCSTAGAIIe-_%wLHGS!14xQZRTj zzXq?nv9j`OOU-9UJ-4EMvA5?`!75!~ufX^rxjzeAdUmUN3IIHuh;drV1^9D?EuoV< zsB$v=*~Epv0!8bGCY5k_LiYh(tVC_fo}ZkO%pd+3q1}0!yaAiWNagtkZT=zE(banC z-b@2$xkDh?)E|6b5`Cgf84C%2pALCj?am;X8Z%3DpMyt> z@#0=7_ipUS0pKI3(x8G)iaJ@gg^k`SZb`TwQu(t$sw?o!YTXo}>O>bV<}0)y))sXR zqcxzuCj%_%DM)8+cFphAKmIG>*-2_1d|J80wP^m@i7JcgYxhGk8(QuYX8wmyo*PzN zx{2MBi7L-o_TUnTM&VSMGtxie$QuzZg7(;D4|z#?mgu#~t+;$E?hh~=NI@bYVZ0Y$ z{P%tbvQ3wlEWw06<{h_9RAc3kD#{T+N^5l{*vgjq9OO+coIrzI?d^!e%=fVgiDkLL z13|Jk(tf)vqKz(R_1G;>_2%F|^cK4)FV`S}=^cK7cG7Fd@OIk`isaN6{mm(-ntjU^ zRLL;K<_&fnSR;YafiaV!{&=UhL|q1@3L)8+Fb^aQ#ij%HlZ&Vk^|; ztL_UJ`y)$Pt`qz)H}FrFC-4=TsXg!+iIQ;%UYJK+aqW20niPE)j3R4~^u^6teFJzQ z9tAHbyoeMsG0r7Joh}oFp9whWRBOBDx~{myf#grVyQ@h~SL_@SmSE%&DBR|@vs0xz zm{8_84(Uu*Be4i%@?d?KnkuR5rC$>LMqi6l+4(39Q$mf~>?4YR^`U>~+Jc`xkO71l z%viWL0XggNbOeOv=)+=X%5wpuSkf9KY-cH=m}ltEpfv@yD*2t+33 zutS01Ms+7_fnG!W19}$-N-Kbk;<-oY?bx-sExHyL#@FSR7O3C!Qw7Pm9XOj_BTXli zwFD54oKXNtujugpe>m@A-%Psh*g}4Vez>&|lP*sLwE`yAv7y5GDf=>`X|zQ{=E+jm8l0EvqQRZI|r$^DApF~gl_51VkP9=p7%8;BdgzlJT zo23Fz^*{Z+g8H5zTJ6YJ&;0!f&Lqs#rLXoMyUcvn2(X@6FT~Kc>#c~3(!3{a^D~p8 z=kXP0CyyW^LIs8GZdCrd$eWbyH>nU(*N^3Si&YB$A@&1w5M7XFGV%059c>iL77kQQ z`1J=zC$D2yQk-n3ikXtDm9}>_+==-Ou|2IBbdGbo z2cw_n1#i&WC1ujzCsl;q6m!2)AUU9m&hRcFwfezYYnNxzdko~`Bhsw4Kz)r|S+VlO zE2^0115TczG=Lh9y%~6N!{OS5B_E7ZEylzJjLCA)vj1oXHQ{pkufQ?f*(BPu73uKP zV_7f(leDDzdtV}k;J(T4(M{_AMRG-PCHoWm(X1frHiGXBk&W=Y_emBJ<^T{-Zyn=#-QMi_ps}udb$igHUhw@5&zD{h>O2 zxiv?u-7DtZ!U2WrycukRHBlBAztq;{hgq2mAzxPo9^we9RN2^{u1t1=6(hH+!F_n9 zpM-W3FKcm*%7Z?`xu-||pwoQG$j|8D7!oO<1i`G{I+ zL1w)bqbFs~&C)ykKP84>aba&fPLx*0*ANChmGz!55;;vKM9a?ymmnFmt?P7$QZJpS zKh&N_U7*Bv>trdzz6`uADb-G7E&o3ePZVl(qV$Q;?9wLGpFg}Si=_}MH!~x|UYXYo^I3xER@F2Hk3~(^>f)pgwcflwe;N;;isKUdtoY6Oj zACenRcEk1PM*_rIPBA9eE3cv-#T#)ymg&fuiyt)S>JJHcvRN+>i7 zgmlh$wItY?-GH!XNs+&Lw*|^h8ELD9`;rOfo-C8w3vWV5<}dfy8vm%IO?J=S3}m3Y zcqg-#Als* z5Zxxu8;2#cElP-ji2`G^0%1aTbH>5XP>uE z`$S50N%J-@=*gyK&)ZOMcX$!)@!gp6_hfT=WiBs{#mfR(;nwLE(g7AtjFUrd3E7Gy``+L<7Imlrfe)+dX$fo z$PJU*&nuh(nXGn3=A^v}cHu2TULDfirt{b*Q6k>nmStYgD+ZZ}1HZh{C>EjL>-GSO zcjNJy{|J@g0oSNoeeStL<{|djsfCF$X_U2IKWxxDF73rrO&9GQt>@%IBwkV}CGZfZ zn>UWiUkTF-?X7y|edGSG4x9RyK%8oK~rc??&l);sQ+q+lVkY}gKEUDP)2 zY?9l67b2+`>?V0*-QwcmZ$3m{eWYE)gLy=&^)KbD))cIZGkcdeEb&R;!9aBzQX^M> zrx~cNJH}CR#w{v*3`2ohuK1|Vz+|5y>?Jgw=Q1-yRh@yzBWxb!T%;`BY4Mi>I6jK7 zs4P;qmWku2CQ>D9o<)^S6ugIeB!5e$M18mYF>j*~b9B43u=wgAON=h1k=O`G+k?X| zE-Msf8ox@aYQqGFyh{_54N|it=lqSY-P?;}w9v)3*&3!NW+Y~y%7aNQ$@NK!^azAe z%DP#!LfK*lu$~}p61{tuweIE!LYXQ$Vw3a+`fcQ`%}GwAGIz~g`J`wQ_9ms<7(9UO zF=C6+Lh7WibJl(-Ub20j-|PsS!+|K>^^A**Qp4}-DGI3RizZ+sfBRWMw6$0sSs`Yk z4=6IwWMb>Y`RclqBZH#|=aO_&vP6r;-WV<0zd#Y2EZWF&Q^~8y6t&2Wm0NmZdCI!t zWw4{*j#!2Egzyj1SZOEr9>GrjtyPSbsLQS#RkCn;)bYDmT=`SeMw-t=p1)2tKTUBL zYP;TbH(gv~#@~NG9;UW)ijGV@+Z(B)&D+}s|c&V-ZL_r5SnVZSKl zJ}BE@F?McSU7Ybnh_4S;;<mllW`WuQReWKiZSNgSvDZ8+LeQ z!?xvh!enmK6M@OWo03WiM)(UaMjr^Q8wkB55OUVDOL*9=TJ2sj)Jsv9q$mU?N;JWL z2ftH`qU60(pE*NlV)LLrrM)SK(cO@F+@wdY&2u|4A>ts;AIf)z<%)ZaoN z6UAZpz`m%KHM4H7#UE%Ea)5Q^EAa|ehwcZ*3|NQ{_Kkt<7WV5o2<0~~-`6lVn^(h4 z$}6>ODj!Bx_A^)XQTrXF7QDlh47$C-nZKX<`~MHyDU^>WUxtsyMeTIlwzRWGp+AMz z7&2Zeu((qTcyM>JAT=c*kc3|NdFX_quPX^AESVi^=I?%;ot$1)FRPeP$0hw6&bEPq zb7TWzbZ;g-Qj(^AY(={148Z&A93g`Av6{RWXIa@t9Ee_}&M#@v&4 zCK7=$LlrN{UIhr;j((Av{7-9>MO927Z6VE>+n#@hIk4|CMJciwe6%$QDq`m`{$U$C zS*lxWl}p*PPD5gVh4s%AKES6V&klcdKxo-$V(@bHe)Kjk4eX551Y4u7F^ zg}%y+X-AfAwFEuAb!y_zY?v~HuhN%ER{0TUx?6ennJ{{QRTY)~556m`p?OooCGj!^ z*!)nP_jk%&Gbov9h0rvWp(B^zb?t)7Ww|4KD0!vm@KCCpKg!ZwbzfX!K-Fed+O0l{>E+fl*>i0^#N~|$=30~ z=-ixkx(ZlCx<#%DMdUeV#1*IhgFSnUxq*h_J&j5qNsMj*cCNx9OKO`L2@~1p5daf2 z$NYc(a|IW8FDcqt|3F_`%OlI2y8zuLeQCyp;G&|{JYOpMX_-?5kqcgR@m%7%BS|hO zEKsb`7?IpD^`unie83yP0JGI295v?rOx1h`OJln}ZmlPE^U+c~^491>jqS}l5PEA4Lo z|A_hd@f_U6AN_ z?kM%PcWh$$>5vBDCew6L;2PN3i}@DyYvmN?7)(^5(4Mrhl_qX3_w_T$tIwxCQI30m zf49fORiFWZUHWT);S3(=T-;o=-Z3@1X7&IMX6^N4kc0)AsY_b^g>mL|>!aT&VPB_Q zsJrd>KrBuvF8lxg5r&1jLa|87gsy6laotvkaNq^|RR2dhYBKEoMq*4CRPW`H_%|+X z=?g`PC)cD8lNbqgE&$hwLFygmc%`oT=+8U{zR=TBS8!jOf9K8? zMCt_pD(g7h88Wl5xJa$89DG8dVzsO{tNMp71E(k9*6*-wT(i}u*lUI#+Co2UK3tjd zXVDmK23%a_;SCUVoWECsp3~SCFe7`T7(R~XFO$g>bu&d>dIBi^HLFh23kxbBqCYWJ zbuEG`?yA)O5E}sTL!f%vl_IT1-vNiWB4&kk<&)fAODLUZAnJ}NSa)*u{$lo@yD4W| zxy!T;-$6d9%%iy^5xhMdYxO{kIR0ut$tl9T(2i~B=iSoutobx6_NzZ=cxcPKk`8lr z-tKWX^|ps^5xW(k(W!J*;qizykm;1IhWS@H_!*bTU+WVk!w;-ERIK;Ek8)x-OX1<} zvG{irm)Q>EuJ^ZH1s}b&-k3O(bY?!y`pM+tA}bKArnYXkHtUa>`2eu{p%8Fln=uW} zo~{Bms|M1)5-(h=TNWs+rylaJt|L#hE0g#Ib}|CO3McABJ=d<~mdq!~m%DT@pAU`A z4x+b;2#iX47zFQKTY>d#%)Kw9vl}DYazCYzw70gw?t*Ft^Yd%ghShI)1ek01vyv~B zR|#kY?ehmMmMOo$EcXpGn=jVl%;nX)N2*~oQerak$BpM$3v+v*gk7hwW5HD2(@%*s zk2O24p0vNOjd@qAuk}l*9k`|5C)I9et_2L{9M#X+$r|mXX5?gBiTQy|Qw#FbN>~({ zOwC2EYdg4z_x$Y6E@YWr8@o=YPrZAn;8xv#)?)fu>!Xr%QOd1e=lv3Aa#|Hq{?4V+ z_0M3g38T$#>M#XL=#HrXkNL6@50#pA^E@n^TEqLunP1Id5f+Evu#=ZRv+yTf%*~SI zRMKR*GOG5?yiyRP7hco84YqtWbI0UMVZ_`?o6^k(_7#f~at_^EXahkbPvASc(v-{c_pg8KI7g?ERN$FSt#HA|G2_3 zxt2Kll-GUvV`1x{`KKF0!cM*ke<(yX=}#%;&Iv1(S64x)QGI0oo;%Bv@bR(ZL^#W9 zPC)wIVO#}vvv=Jt%Tn`6!W{FPli5Z20y^|64>Tpr?euUB9DIw4F(zF9 z?bvuSAbh6qSv8o6d#b(m0%sl5r3op)-zF##=mUKOL=my>Zpr~y+SUE2S7kIjwrmrC`pKA7A}HOJB~iMbAq7G$1TRz{nSscP6uoFuD} zLu~XpwK0g=*4{^Y3F`G;jD#tUcEywBIBq7-OamM_!)LG#l8~B7ClU4$rAPU<0(xYR zPk7So-(k7lw3n<1h+M?sQCjWreo>%P;+2>ilCq}DU|#MzC8d-UWgXdW_JV_4T_dei zsoau=M2dpfeXe7qwBkGji2XUx_z)QjZOLdz#WPwmdcFSRyksJmX)bG;F${{Z?wX1b#;hf^`s=dyx$8SB)|fc>M16 zlqWm@X>n|{0vZ8>^u7&a2HFe^CzR%d#ut6QMWfhi6#Ssq66GF8*5;!d10d3 zqkK+!RObKuejXDr(>4t1u;0Xmnh*WM0rdN=ttgPD#~~59tH8d0(4=L6FDCC=|-P z^45dWKql6R5YFUx57H4B{zb#rITe${&CB~QUXU|y*6osUe3;}80mBLJM18vtM&D*{ zTN3PUaETr+@C)KDJP#PF>5P-d#EBV|I_RGwAGrqrGfD|ya1i8|TL!SfbJv5oX*js-F}gt+J9 z%lss%&hWW*i@6X9=}qeSO8dWL{M_;IrIzBRr_q2_i?(A$MN%;L5wK=iawQrcj!3lY z`JGvJ`-bw}ohu#Ks~lNF>nj&NC;D?gdT;(9`gh1lq*TU;IQ4*#-1u2&oNO;Kdv&nv zstJot!9lh5-Qh<2btD%4#Y~7~{HGzS@R@aEo{8v)i7fNFVbd|zO{C#c=7Zm(lLcGe z#d_3CFcw|;=Wv3{e^p!3Zrdkp2!v}FbHs42PT#5F!u@@(=`G2&f<@Q2vk#fOiIr|9 zS4Jmxns^NksY+QJ(^ZJE=r(f=$&i=9@10s^&x+5D@pD;gzhDjzA&*LQ(wkLR1$8=Z zv+`m1L;IegNz+!zofZTx5p}Gxq%K46?~C?mz4Holq($8NKE6?3mcili%+1YvK5SF2jXQ4z(Kk{r`%cAq z87t`ZykfCTX*johRO^rQ=$X_0W&hm25OBuGXnvz(9VRee#x)UMS?5<8a|sH?O#pv2 zre6F4VMO;{KJuwOnBk9v#r`_VguaxCqIt*f`5$`jBJr~sS$SAwwk z+cueT6Fr+{%Qq7_0oyY#A5ePzpK-PDYi(Sg|rv^r;`xoAdPdPVwO$}pIb(Y3yWOg(Ytj7&^w_m~1QeKI<42$JShx3dIEz)EZ($01c% z#QL4P5mZRP(Bv8uyYxq=Rql1){-xT>3oyWtpF0B^P!V$aGHtoML zbp=rA^}sAiW2FJP5g*B#Wk{+Ly8g+1Y|+O4~YU72Od*K1j^mxRRR zkFgr^U-8L4EIL*3Kcy~w5*@6OK$*FdLq}U0BLNpy9KQ5LH`%_E+sYZ6kQ29Gx#1;n z|NjhP6WZs0uE(DW-7(k#9XUy3@hAzhDj_`TT;7i*P7^l$#A6t!WcQ9Tm2H>bE#PqH zAXE_^yxK1gcaRugkrhTbp(LOU^DPyFo2zhXC*UO)>9z855nNYO+Dw8C z^ZI$&d0uGEO}s5U7K9ti=>|!cCowlcUnO2VzK=N!VKEK#p=mVKh^LmRx)*D$huI#t zf0}2tDNX3PG|%7^>&wk?llaPRczxw2*vujY6vSdqF*9qr2@gjMpuQwY_QZuer}mQ~ z02frhNuobyQXvRbdZe%0K}2vU#IIhI)y5DSzG{?A3=pDx_piNdzMuE=V9O^ka7v2$ zXZ{7^`h7wg3gS^0XO@Z`msq`4D=wq}nrYb1)eq>mKJd_{s7C^f-e1Xw(MrUU<52ba z&;1z;hW95ZxOd5#T2B?Gf1O!psp5$$SlX$tkM%yrZ-N8k+Kmkvb4D>mlj%6-sk`^< zOx=!u=3;^{YAulYE;ui%N6L%~fip%oHPYvTs+8Ctmra4)gbZf`{zO}LmAmb^dnvFO zLd1##92~gLfR{`c>5`ToA9fmJD7kA?*9QT&TAnIbzLBc>FKL4bkpi9^J@P4y!Tj8q z%kEBJ19KpOUH{P6jWt+SiifcxNWQgYN|&KACQ}e-!uRv5qroHy^7c88U7@eTjQ3g{ zoMYrbSH8#q7ht#CC!VwcvpGqD_yn`5ycVv+)-JgM8|uqjcJCh8iV=RyBK+FfBOus{ zW3F&On&#~w&&c20{HfVQC6LKf90>mHG}Ns#>vv$SPS-_GeA2d&h=#`z(`}#MKUd+L zIdp^iaT)#R>_(E3l~@6zpYnWwcPYxmqjz4u8&A{C@r*80*B_kaRrFMap^lO`6GPf zb+xXsL;S(}g5g5};~zpKR|b+&lkI!KJ0B0yn)&FShyVMU6@Z8ZHy|$o?xmizGxEom zrdQk7e5n1!^g3bi!hss8(PMb#bb)m~r3_lHPR0Z_7(EB6)b~d{iCHzOsMVa)A@nMO z35S}vR>kQ}Vkpd4YD^-8{`nprAeGGsW3=3QIw>j4V})Tiv@Lz~)~-s}<~L6JXQDr1 zn>|-dDTG@xi5UsB%G5|Fy539*kH0wzx{xwUI%ov;rp8Zc*9fz7qF zOPV^!IPz%~K#74L1F$>-sytLwmY49H7F_2w6li}@;I0fnLU_+~X=$K;b>v$GUs@~I zBD*dC=5Vxe_?EZH>SX5(+yX}7~FIQNA zF$@Zj2+QzpGRis)`0y`}cWrOE_%y&S%u;Bkj8Z9=OFE!5D`e^XW#G)`ChJSi{#ZEF zFU7eX9x}7u^PR}=^!?LG)@{NVJY!Cv)h7?WBu)fh2#s=_NwxSoQZDrsT-bIzQ0`z^ z>iax=CX8HVEje@5s4Q~XvGfl3A!l+!fhIgJ-E)G=kph~sWpiQQf(eaIBKY%S&g7t@ z#>5sjs->!DAdYF8xfKD-TGX3qK9x-5m5CwoA8`1G2`^XN3Xs_aW@=UOR|b7-6mFw} zNE$vh!iQWP?V7f|7JV)B(^J`RIWzabMeSZWS;WvA>)Ea(>f6I*Q*fH(%TiINdm+(l zEBR`g$QgIqo@zfx8*C~!cDuB7lmzsxAE=^qDw}H(j~n5J+;`v9gXmTuF=C8JT9dBZ z#>BB23~EE@p@!sa7PITqxav~8W*Qw@5|pWRR=+{c58&+P_;dJ>KBWgkua20^?6h}x zYz~JhQ?ZXw2Jen#^$Kgru}zN0wOYmx7ZAt~-`oBR;Jo#+9=^Uaa8t$Q83S_(fDtjA zTVdQ~is#SHC4K)x{2oB=yD&E7*GsK#2=FnA4VF`xgnEI8Tue8KZX!2a z4|?fo^fHFT;|bR>8ZH;ov=?dg7Bj{?tqX~KC=SC!H*Z#rbBFPm6a%a!^bF9K!M=+)a%lI*_uQUxj?G>vC3Wg>HSZlG2i zuy;su|Mm}`EJ-tJYXV8PQd|-9Wd-l?)_JKOL}~GgbHlkZ0TZ7-ChMNlKJ5_AJn~&? zq5-(Ca;Ifh7~0pd7FMjNCsbW`viMW37YGfjTMOgo`7GaMiV7 zPga9P?@{}HFx4_rBpdw=kIF1`)=`da)r}EDe7Nd~9t=RNlk?VC{HEhF%(IAHiVxwW z5H<$~wT#~G-*i)TwX@hL^tH}iJD&OYF6HUX+(vp%j;WtC=~+L|1LBtd;%Dfh?l!C@ z30&a2?pXusuW#fWr}5{Dn8`^}DYk@-YS%$X@l9NRrS=uavbrm~j541nbHi<@&2``> z{;>+sG+s@98dRP?4CWU27D*wMu<AvXX%m@Dj$TH3+MN zqVrhQeAr~_CpV1KL?EV&iUp;zxaLINq&F-xNg@MH2B+B+3WzEJz8`GB4C~Z~1)Io$ zpfPl&0gJ63(W~9d8w+8XN8eBaVLX;zPEIx7Os4sRydh}@uR1S5+nEz0BOV{TwBH`2 zKfs_=#Vgd*gn1mE@1&yH8Fl zqfwGy3V((@3k`*^8(ZE@H8C3C2`$rAF6XO&Nw19Os}90ZE4tS))ie)|Gk=SoLjAq+b*H>~8Jk}BRxs#& z)(tEBR>XG^(%mu9&qD^Q1HyADG#!;F366;>(pxj6ccv zXX?eK>_nVh`i3W86yF%sM%F03%qo>Eu|eVOk6TgvLgO(gR6I{Vn=Dt_w*{1$v|Ll4 zuYV++5nc@Bo(!xP1)4wvTc1~((~im~ECjn2Z{d!?Iq{EgmT7}^Q8&{TeL~p?o=#A- zP0-YT7yC9ksb{~{cvQ8LG#yg3^kf)G>Ss!h@DL;fcDSr?B==9rXxj$xiN)s&el{ZzTYf}gZ?CHFvJ7@Xk`SoHBl>53DS zyu@s3V-_TB5TO!wWeMp_%Z|Gu>krspErTHJ*`pF}$GR}a58RQBCsU2qmHHkboSA1Y zr_cFar+m0-Ho~IT_QQEzbkLI``VVSdbL0ulHZ{{Div78Z=#bjS{z|xla6W5^FKi8;ghO4M59f_LGp)l;maQ~4bAP3biD=UqYXda5gIeTw4fET8 z8pG)L0I{3mtZHAhzhHX9d)CkS4HST5v3s093O&DwCWx(rNag=IYUlsV5;k)cw?6-n zHMN;jH#6=1dR6gFOJlh78{IR?0wgDA)N_QNZE*2`W@Geq_$qn|-12UXW5wc|7+PlN zkX+y<5|bL{AT1#seGt5-E)G|+4^~X!7+{3@a#k8tx$vTH4 zi`aI)@-$}@+gek!a_u50))()dz(kn*Bk+);BBtz~IhRM?k&mYeviEH=2!s=`|Ec0D zMHNV*QGD&K>&pHiX=4iTC^6pEPV2j^tbu;~66rRG1<`L~-!Ce0 zPVd4il4w+QFZcR=^jlF{6qT>QTJ=r7UEOnCtkhm%+jy*ZLx>zi3em_+m}3l{98EKC z)U-WE5$l2s0zYjx@4~ZGtg3~t5M<%52vjOti^wy7f=2C^PnTYFd1%Ci@Z3d#az!(r zowuvFZdizYG{?rar@MV5*0T4TF5h`tbiNVt9E) zc7!-TUrNg$>#Aj*gm311o;7ti7|7f_-*EOf=N)AW+67ag4=D}{b}IbIlWxo}q#oGo zn8B5~C+MCW_Cut>-^2?$_?-KfBcwXd*j&JhlnmR;Lz+P9Z_DqBGcWa${`X=FK zrl%mEbY~dATmU+Vo+>$H68Aa(v|unRs9++>bH$A{!g_nG&JZ>u9H8ZP3ISOiUY6NwRk~YZ=UT@_IK7I= zd{}bXA!(Lxx=xa7%XPoJ)ObbeCecR80jL;evmyN^+<4YiG<$IXRld!xAinc_&A+Mj zol*;&TuaA3aIiAIy^Y?D3hOx8N=evzh|c z882}bpwem`Nql7$%gf|y1F~#Qd!bfid6J7)){D%Wt^r1KvJbpmOlhsCbKb{9369oa zID7y6-v*_vAoElwkpjxZ;sv=h^Sn6;2A4f2?eF;=ShK0}TullJEB7m37k{Pi;ibSo z&l!G!?6IB7j;jl4(<;LRbG~wui1fXK#)DgOLO5$c77^7OPSUOt0~eM&e?mruGe&qv zt_)+dDwqP{ikqOLmR-|hWNt~SQ*3&6Z0gEFaxG-Iv6gP-zYlOJ^8e)U3yW=Guj8!3 zDIg|iSaV+#%retTb)f!D!IVm|?*Y@3v6p}(PylsE%4d=Ps#344>P<=N|4A&6r%hy( zQ;I#Gt~ma$jl%M;-scn41qaWd0}_ebslb0F&b!%eJY=M>z#Z_P6gH-=6ITEG z%T9H`HON{214&-2d2<@CF9xPkK$-|d`L<{bN~oTPt8u5e47KmLe&dXl2~h(jMq zg|*ep&yC&TQOV(IY(HLTrt3^9fIOB&@8&-+ zjCg1KlyG$!RLy!y_#UvvUaCrXVA*5j#%uHY+AnTSH#>z-G-Hx@X~TOetuMtjnevd; zfGE-2to=#Mx7bt_HOppINv2z+;Ib(bNnLr3ws=5gqmxJnXyEUq+(-{!i*IoV0gb2wDElv7#g9aB#0? z>vI_8^e|w4;9+=C8CVn$Aj8CnueYWGpT#5|&z3s7^qNrZz?r+>eXaxs7!!XEv2o-a zx&62wqAR&HGEXgve3a1bVQNL#=42{USPl)v&tP(yXupPwZpTnR7P9;ovwqd%r!)<} zqchenzKZ5R^KJA~ggEP?nT%Yqv$tDlJg(&8k(k7bV{xj=b$?&b)I{IX5FIfPC^J$w z_hvndrR7;Q@hD90lm?O~$DdP$?@T~kGh|boJE_u4)FEB@7(U;Iy7n_^7(6GlW++|4 z@-k zB(QWa6VpB!iRY7skPljj|9QMxr>#c}^3yv!8TNc^bB;JJ|F~~xYJWDMPVH$Ne&Y<{ z**u{*=@h4#+6~m#+I!G{+uN9enVJh=V3)O;%*Mce8nbGE{ z`-DHSa==i_B2~^27+WG1F52qa^ zetZCtSO5uO6(aeLfWExe=pNy_+-}s(7eEQ9z6D^hauv0k31RtYs3<7ja3MQ;Gw4|; zX2#%#A!#&)d7K;KyW(&uEwlDN+2KE1FEud0y8$ca`gh6~vK|9}D{_mNz)ieF zK5WC;b5^IapEFONeq9^O^81)a1;*vu@p5o2ti7~<0Ht2EojJv%JPgnh_PkrmGE2pW zb9BmD7680b{Ab8KRsb5GosP>}1BHsInH+q$o_Y5Mbw)g&D#`k*ppv3M0QAJ=Q?IWq z?%@z!!}RRM?+9D=4R7j)Q{SLA%#CnWGY0f+{TdQ2OVShFK7C^S9_ug}`pj{fXtlsK&N3x_#KwZeKQ(?87BN{g zxkEh`?-((lvVFkuNx)0uo%<|JM@vg1M$QC>F6P0&+dn?m$~8{;knuWpYZU9UA9K0 zhcMrjZ;~rJzYW(J(*TFs$a!NFNF+!1Cqx?tBVni|NMt+K|(3{lZAw^QMUcqAqp*d@*Sx@F?^JE?t&rv7H2_gya4e zEpalSO>LZ{H#a&7N-Xj9lM368wUD!tC$+lDGDUSQ^xrt7tgbtyK4R4GdnKaG5@(;P z=eISktNX$kZC-tBFqgvh`ffQy$N*t9T!7M4lTqrQlphd61#u@|j)uGqldv;vh#Z-w z;`?m&*bE2w+)1sbt8ih{d@sjPCya>jNM=#*P@EVEc}?@EHgtvVD6j{LG#pHJ_9s|O z#b)W)H>X4?y9Iy7f8b|O#{-@ag6=YTJ<|MNse8)JX(0)SwE+G7m|_9P#&!VX5<#1X zRFB3(SafQYwET81_bs|pEH0@0L!*p*0g_;w1-*t34H|oIvP_oGp=Dlb;VUH@Sfxd zpq-APXjUTewJ0OHOzm@GRF9bPSVp2##Bcs5@Ll0xk}c%B={1et^W((F@LeTjtan?= z0vY--!1I>cYpNdSHm4+=V@JCY;(USLLZ24ZLSQLZavZ(VXZdX@C*D8~xQGPODUf1P z-V`l%$;Bo6e2hR+*9R{j}~49K|im|+WFVD$O+{}Yk6v5*QhR;aC|%f~F({Mi6!(Lb^FDZNvGgsl$a=)a;a z`Fd2Um>|mFsN4>;G9}cMu56H9!JGGuz&b*6LQ5wRK|>X3$i{nkGQY<^C}$4B0fNF> z*T0P*KNs#NXvqS_CL4Kb`dPfCAj>{1fpX}HPpFm4oqdy(y!U-uWT`rPjFxftFQUrH zWpLf+=-6U0;^(U+#jvDsD^p*;ON1{n5F!5Plz9n3w<90URL{&Yi34MzkqZb>NBi1K zjL4yne};EU$P4Nmg4Esw1UNgLVrgTNTd6>ut>B{L^T}^kF`*DA-#%TZ!j(|&_WX{hg9J42YS>9=%7myn$kHz9Pe0NMM!0U1pQ1yF8Vdj(Z80J~=$Sw8>sEHvPa* zl!4de`ummSQLLKmL#LC9nr^|Sshuq66(Lg#akatwJ>{2I|6|)U0oa|u0FC7zKe5(z zEHCuT&ob1VnLn{?Kk!L$7Z+r~TCgYU9jiWOP6(t!k4X(!OOH+XxJE{0sKG2>acB9? ziL#fP$N0`<^#7%#U8Mxw+e?X0@~ru8iUO|FZ*raW%K`Eryd^p1N30I{aVbYnMW|03 z#c#hMUeo^lvV$Q6=zu_e%@TpKixWSchz}3^WxSAb-@78I2lM3VLMfIk9_3R6jJtUdCs=V{M-k)z_u4y8u|JajC_+9rBTM%vk+wuOUN+m&y0dYrUpnz}%%8gYSlmPRzBW*tDk8!nT z4;K9-O)~#Ly?_cE+PSzA`(5IfC~_1KcauX|1!@lm4v>7V6?^t|8z?^E*zR>Mro%6^ zyqtKLnkhE+&9Iv1>Hk@LD-L0;8Od4)a=^^OTOVOq!g55iCZ?kO6K4(2y44EZXxa^qFcA{;Lfp! zcGmP*|J*9D?#eqiw7T0+jefhvLeIaNX)Vn6trb;NP>!Ho%V0`1MN6yEpysgFO#Dp! zs(!^zSP{Zze^R;qe*JB_KeJSC>Q`x8l5u+B505g|!EKC{rm~#nq9}ybKpxzkBd`LV z7y7=>lWMVbc^UXo*E$od^1@iCQxK^L8@0q_yS+IvWhISi=aY<+g6CcUKr>~_GJhg;(o|rM`N=q6mX%1NSDNKM%C5Wfn!(t&+@^n(fTvRJFzDoA*v%BpXU|7B*I^4ERJg`@#P4vGgc+fiI!kEH>{aN&t%cU~iLO`UO#4^dbg|Ua{Ai z0pYePKXde&l=>t&E_tV@NqH3czJKHK$t?hi@^ zzLw}G0S5Wc{F9wwb|veB|3efNtNxx*7XhHH)toZ68tt^q`_#9ypgH+3aLO^OIwlT^qudTy#T5eA-yy( zbq2mOS(|uf)T~Oif8OZ$2W?g=`vQ|1=?tKQwafLOTu7O?p50I@7=%upX+h*Dy&*m@ z1BaY6m6t>7mzkIYg+C`ogaMU;NdLFCZ&7c3vleUKD^S)2`3(}doMU#I37zqTkSvD1 zl=GHH=MtBOl@SP9G|8E>SP>=Z@a5qmb%V=V|Bz@-7WZ{hPCC_u|BHJ>7#ZdAG8C4Z z^|6`NLd!XkU!c{;UTwr&2%6KJ%Fw7)Vu%Yute;&}S(zPJQTau=tR}4PJzpW~`t&F5 z%G)G|jJk@87{5A6NE#mHA}8obTg}VsjH$2NlK&m~M$pjFg?eT{|&BiX$cQo$O?Z|79}CdR>jD zE$1J#wWv}=J1r`KYWRUq4EQ#wd`V^SZa~u15>^*~Yw25x2QCs3kgiTDkp+w4d`&RG z8-O&k`f~)+;pnjSJst7| zq&`{{@;eE+P0vb2DeKs@S)ror0g(_M(S&tpv~&EX;Nz=h#5y*KNS%D_YL}j)n8Pui zY}6BVsf(UomHjrr26(c7dIr)ftA6ArAeOJR#>*tbMNe4NX8UgXgQ}1>1~e#^FiAZy zdt2Ki%KQo8bb(5n8)~L9`P^W&*id(}@6m+9whQ*(X|C9*d0vW)M>r<_;Yi#jF4m%C zA33HaVUg8)H^}27`5c~CwmvXQAQ0#s0vRO6{KbD7`Asnb#%2^=hJLHKf4fQQdmUJLqtRasx&;GZG9e34K1JOgL(!R< zgtM9iPUp#R#gj$^H)O2Lnpg>X(YdiHO~G19TPDm6M?Q-suy}JJgn?QtFxB)_P(kli z#*tqkY@f2k@7?FTvSOBYq0WMrw;k;L7$_7Mel|Z^+b9mcrKJbW=%=+*He`Lb*)iOp zct7-CyeAG1T%`!yl3$D0{BYcoK!uS|3PIQR;%&x zfi;uikXw#vraYHLatcgSVfCi075Sb<-$CoX=v#m4&}F-JZFyeTF*EhnX{YRPQ-=&& za4K`DpMnx^Ffvo(kAk{5@RO7-IExf1PNLYs0eHdmCbH@Y7OXwhqvf7A`G+NO1^#QZ z@s=xVk<#as`^=mi-$gH|l3FHw!<;fkcp&WzLzexQ9S)c-E4U}mC;)vGM|wUcZBu>Z zZpm>5@Jza}3a6x_<=S1rr(z+(I`wZE5Kh@C%C6sZgInDkKS^GJGz5ecr4|wJNI?~X zwRlhEe>B`*NA=IAmmLx*p!FGe5lccn^+jsu`(^*3_N&A47+dWQeNp})o=aNnY*?lxfdLh%`mp@q+%P67&D1ZjcbJrD#pTS7_C1jQoU*dp$cI%^5^szhy@&8udy%js zk)x!>bRDC%Wf;Vh%pn*4eVW*RJ5Q|`**IWH6%fnfUa6JcH@*S*t*c?Isv7DN=<&C1 zbJ@}Gx#lx$O_g+^)PNFp19g=KDruVDZD$w}!m8)DrP0%tVSi?ZJ_lC(?IG;ciVQ5K&S z1Mp~5%Y`DJXg2=4N9>rNe6>mi&BKJxXX}?Iq$7qqV^`UIoA)xe`>1;vmmjh9#=LJL z*Qh9cl{b1{eDZK5PRuU6e{%Out>sv$s9Tout<~!i;OeEM2*o(nA4KK!Hz#K?{+25i z^!5B;8_g!yIiV;_Cv(4jcQQ@eKiZ_J**EfE_{_|tH%D$uhz37Y%+BlnQx38;@+bAG zu^23rz*_l>q;5^POMZE*bx=%N*6lcbpg0^3zdo{dsZ1s33rS0*o4UkkS5TueERg%; z7-O0FO!?j4j&DijbuuD3-an@5yaXjFcgo}rzY@rk@cBetZ7|Zb|F?^)&`buop&ee- z#Ldp1;mcVF@w_)1@R5;Y#XZgR!WA+3KqReULQbk_+pRL^umQvX|BWbn1*9@l7h;RI z5CCC!1K|Vx2qIBtFqj}-@G?1Cu{TRTw z@vVOn7#Z}8#9lHZlq*TtjMm6rndx?!qDDz_wi-mvEnF2A|4Pa4NWzv;p+TdG}7|!m~ zq54EtAKSf7Yv!{IISw+@K-)GmH9maGd>O92kJd_Vf1zOfrS#Di5W7&} zRH{!$+y>ar1S9NL%#zd5Vt-l2{<< z6(5C8mD?x=7z%jKnbybuw((d7e^oyp)AkzK#l+~P4fU65ob5K4LwJ?+9y ze7~~LuJ_;cAwjY5m0Md_LQB}|wnt5-@EjuzrrGC9E}Dd?gnEy;Cwi_>XcQ7S4^>|t z_~RFKZlQ+IV6xJ7*aCWCP)t#xzAP}-6EaJX5`k-zl`)`8=h_`L3*>wWtr%k=o6SXN z`(J-!BI41HE7qNwL+7%oh$I`kvdmqjLYDJMctX7V^&FBp}NT7Jk+0;d4J=oP6P_^Dp_ zE~rvvUuw?k6q}j&3|$N9^nR)C*Iq(K?bEz2!1&K#pEKlmQRfjcI&3+q;%X#`;#QPX z2JJij&+)d(8m}%7zf@_YDY1N=TH6$xXk8ud38Vl=@8@gd#nlXJm>v6Jo*O%5XennJ6R#_&WmZf^0d9ZW zx)OaARivkd<~eyJx`cN_O|;B5m7VbgZ-7HF7$@)aGvoKUqbH3kz{;J+lLiCi|J@@z zei1Ie*7O7EV6Qz_fwI014`G6)ywGd(P&tP3CwA+A@zRhxHTH)B9(mp|L6QHV7iJcKpJU-@vz&o7v; z;Y`InDQbN1F9qr2B_>~ILDpca#id9h8L1ozSG!l8&%HqNBIDy076*>3TQS~|W)#v; zLjXW$ViY8ggv}bL_dOar{zbLA(@cIoXbj0TWs7Ai-dxL8V(}Q7e(<_z1e}+18}b9L zSW)knf*P?dwuJL&j7Ord8%SA?rx5VgZANFYt#(Ni)A#v&iG0 zUHUf19$7ao+07+_k3_@8_i{UFZx7rH%Xcv6axBPYHJL(9F0|Q6!j&`D+62j-) z)`Ru(lm9IzTpF!vtQfyOzGF04r@$1zpzWBTi+=JT>xWU!ctl0a%Stjlx*00}iSsHy7z9D+H2lj_9&-G;pG$OcW=x$g>R^^=RoxcmoC4N zihMEY=U&@kMCEE3!$5s0W<#jCgGLW_z0r^{ihyKXzG@@$+KgXr&bM-hdr$T-K|qfp_TgRG2_BpJuZyf~<&%p@}^Bt`f4 zy6@|E{|6p8=kxiz-mmxb$>?xHQykpLZ*A}|c)gbjx|^$fO$4Gri+9La=T8W^-fs4N z@aT)SpQB1%!mfI`yMjH;TAcog3d?Y!fXR20`ao>O>L}HYFwTnlVgA?C|| zvpTiD^;k^G+=f5Xc%JGOku4F|su#Y3v2WpHyG?#orVJ*Z<>?QZ;1R1|kTP|Lo=Ua7 z$8c{sH?9OfPRp8BKh8DI`tD2couA6~T9W4`cau9=)D}|Se~b%?FG8gvHOVzF#I_8N zKRL>9MGu<8eng0;jv*?3R6b@i+G6Q_T;x+t4dqLLDZGZSZu~&=8*#ktgvX{C!#~s3 ze-IAgbH*COyDhkQSp6#?YBl|}Fdxvbf=4s&cJ6<&5W5+s&L*!)vwH1KV0>Mh{iD<7 z$!+NnV---4Z!N2)Z>t^SdWMnc+tYJ?Lwssg9VKAmLF`C+vciNI*h30`&+c-R8$7M` z>zx?v+@i7un^{gE7VIjjvAl0`Y33tTC<@C8SI-;^<5#E8BSW)Cxey8ynUsWQ&-co1 ziGH1=)f@N-m2{pq-j4cAy?WhEH5WZ2pgR!zGWgbILD(?yq_*n!f_Huz$J3y;s=Juc43rt!0Qd&OuGiaT}(qLFo-_3<1(E z`0MU-Hic^vPgw3W?7y}_bXI;y746iy+M?QBF@|eKj%a1(8G^}2+kXf&Y8{3W^%Tvt zstYpg72hW{7fURtXVyg*QW&aPrLh<#p|NIWEW$kBHe_P`n&F2$!t~53tlkI->A3D& ztC;=TdVkEj*l|1g66&#~}h9jMb?`*wzY3N(V zmy17&v$K;)Np|KR2qG3!-C%+Hsy|w}b#CD7b+38?1kXGLR&K{q(<*_~`mnlj)g1-{ zCApXIGGjiZu@ov(3%npkH-}4RAOND};#xDBxPy%-e{htwxRbsFcq9}2)AV=a^-MX+ z5=&-t^JU&h#`n-BRhxyKPOOT`z^@swsduP(#zG0R{B=R1KCQ_rXe`Y^njl(OkP6)b z_OntA@c|bQ#l_!=KsB#=6}}+gVPA$?U#6TKv6Rr4SioMw1GteC6o&2lQLD+A<T&bfJLNh`ecSI0i#*avjIMMgWG>t`!X~yg5Im>zFKAS=Ic2otLSbITZ@L|a8g8+q64HG z`<>_F2CiLqKeXcUK`8?xl4Zv>Gx*H4-b9PdD6^E~l_jhGKx$4O9>^Q9?1EbT)p=-e z_tFPb1#mFm#_r}nG;*BX2`StZ1ZAQROd`ruP{ULlVj`{@W4xdLaT z;D9qu73jAHzf~Ps%A3Spnkj}nBs)5~aY*tOFd$ZQQQ!hIWi>T>Giy#I29u{2d@MN? zG>5v{Nv~>==o!JFR%aIDGlkWV+0<&xji zuiFy^C61otKPEp0(u(fQO_qx(J`bFc|L=*C1s}g9K|!sspW8N9)fv50Vb(Klp?SB- zV*6y*BUk-oq0+$5F;$3+@z}5wBIhILccPhdCr#>Nd*O1P#6h#8$>-Q>jt`8NAd|{| zYzNg>ReCcn*vb^cjFXzskAx6`R#8HoN@+rn7)N zG0M+1N`~CW6$v3UKxdJ!g~@lnAQv6(ONLAfX8##Th2g0cZy(!wlXl?C>`s*69t{qB zGA&eLl6ICv&~)*Bo2I6wD85VQvVR{Z_*}N@TXZbHu&~tH3fI~Uv-L-rosnoDtZ^>Ydtg*lTwtJdEjPGYS-u*l*Y(pXVN&ctmaM? z+;Y

Aa(N<@`oDl0;)8vx5G@n#TFFb{8oGS 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 C0O*YX diff --git a/source.config.ts b/source.config.ts new file mode 100644 index 00000000..63cedfa8 --- /dev/null +++ b/source.config.ts @@ -0,0 +1,22 @@ +import { defineConfig, defineDocs, frontmatterSchema, metaSchema } from 'fumadocs-mdx/config'; + +// You can customise Zod schemas for frontmatter and `meta.json` here +// see https://fumadocs.dev/docs/mdx/collections +export const docs = defineDocs({ + dir: 'content/docs', + docs: { + schema: frontmatterSchema, + postprocess: { + includeProcessedMarkdown: true, + }, + }, + meta: { + schema: metaSchema, + }, +}); + +export default defineConfig({ + mdxOptions: { + // MDX options + }, +}); diff --git a/src/components/Docs/Alert.astro b/src/components/Docs/Alert.astro deleted file mode 100644 index 1a39705a..00000000 --- a/src/components/Docs/Alert.astro +++ /dev/null @@ -1,74 +0,0 @@ ---- -const { type } = Astro.props; - -const getIconName = (type: string) => { - switch (type) { - case "info": - return "lucide:info"; - - case "warning": - return "lucide:alert-circle"; - - case "danger": - return "lucide:x-circle"; - - default: - return "lucide:info"; - } -}; - -import { Icon } from "astro-icon/components"; ---- - -

- - diff --git a/src/components/Footer/Footer.astro b/src/components/Footer/Footer.astro deleted file mode 100644 index b528c3d2..00000000 --- a/src/components/Footer/Footer.astro +++ /dev/null @@ -1,19 +0,0 @@ ---- -import ThemeToggleButton from "../RightSidebar/ThemeToggleButton"; ---- - -
-

Copyright © 2021 - {new Date().getFullYear()} Fyra Labs

- -
- - diff --git a/src/components/HeadCommon.astro b/src/components/HeadCommon.astro deleted file mode 100644 index 221ec978..00000000 --- a/src/components/HeadCommon.astro +++ /dev/null @@ -1,38 +0,0 @@ ---- -import "../styles/theme.css"; -import "../styles/index.css"; ---- - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/HeadSEO.astro b/src/components/HeadSEO.astro deleted file mode 100644 index 67da0a39..00000000 --- a/src/components/HeadSEO.astro +++ /dev/null @@ -1,50 +0,0 @@ ---- -import type { CollectionEntry } from "astro:content"; -import { SITE, OPEN_GRAPH } from "../consts"; - -type Props = { canonicalUrl: URL } & CollectionEntry<"docs">["data"]; - -const { ogLocale, image, title, description, canonicalUrl } = Astro.props; -const formattedContentTitle = `${title} 🚀 ${SITE.title}`; -const imageSrc = image?.src ?? OPEN_GRAPH.image.src; -const canonicalImageSrc = new URL(imageSrc, Astro.site); -const imageAlt = image?.alt ?? OPEN_GRAPH.image.alt; ---- - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/Header/Header.astro b/src/components/Header/Header.astro deleted file mode 100644 index bcd86c4f..00000000 --- a/src/components/Header/Header.astro +++ /dev/null @@ -1,195 +0,0 @@ ---- -import { getLanguageFromURL, KNOWN_LANGUAGE_CODES } from "../../languages"; -import { SITE } from "../../consts"; -import UltramarineLogo from "./UltramarineLogo.astro"; -import SkipToContent from "./SkipToContent.astro"; -import SidebarToggle from "./SidebarToggle"; -import LanguageSelect from "./LanguageSelect"; - -import { Icon } from "astro-icon/components"; - -type Props = { - currentPage: string; -}; - -const { currentPage } = Astro.props; -const lang = getLanguageFromURL(currentPage); ---- - -
- - -
- - - - diff --git a/src/components/Header/LanguageSelect.css b/src/components/Header/LanguageSelect.css deleted file mode 100644 index 4e878714..00000000 --- a/src/components/Header/LanguageSelect.css +++ /dev/null @@ -1,47 +0,0 @@ -.language-select { - flex-grow: 1; - width: 48px; - box-sizing: border-box; - margin: 0; - padding: 0.33em 0.5em; - overflow: visible; - font-weight: 500; - font-size: 1rem; - font-family: inherit; - line-height: inherit; - background-color: var(--theme-bg); - border-color: var(--theme-text-lighter); - color: var(--theme-text-light); - border-style: solid; - border-width: 1px; - border-radius: 0.25rem; - outline: 0; - cursor: pointer; - transition-timing-function: ease-out; - transition-duration: 0.2s; - transition-property: border-color, color; - -webkit-font-smoothing: antialiased; - padding-left: 30px; - padding-right: 1rem; -} -.language-select-wrapper .language-select:hover, -.language-select-wrapper .language-select:focus { - color: var(--theme-text); - border-color: var(--theme-text-light); -} -.language-select-wrapper { - color: var(--theme-text-light); - position: relative; -} -.language-select-wrapper > svg { - position: absolute; - top: 7px; - left: 10px; - pointer-events: none; -} - -@media (min-width: 50em) { - .language-select { - width: 100%; - } -} diff --git a/src/components/Header/LanguageSelect.tsx b/src/components/Header/LanguageSelect.tsx deleted file mode 100644 index 8440d483..00000000 --- a/src/components/Header/LanguageSelect.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import type { FunctionComponent } from "react"; -import "./LanguageSelect.css"; -import { KNOWN_LANGUAGES, langPathRegex } from "../../languages"; - -const LanguageSelect: FunctionComponent<{ lang: string }> = ({ lang }) => { - return ( -
- - -
- ); -}; - -export default LanguageSelect; diff --git a/src/components/Header/SidebarToggle.tsx b/src/components/Header/SidebarToggle.tsx deleted file mode 100644 index c14a0fbc..00000000 --- a/src/components/Header/SidebarToggle.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { FunctionalComponent } from "preact"; -import { useState, useEffect } from "preact/hooks"; - -const MenuToggle: FunctionalComponent = () => { - const [sidebarShown, setSidebarShown] = useState(false); - - useEffect(() => { - const body = document.querySelector("body")!; - if (sidebarShown) { - body.classList.add("mobile-sidebar-toggle"); - } else { - body.classList.remove("mobile-sidebar-toggle"); - } - }, [sidebarShown]); - - return ( - - ); -}; - -export default MenuToggle; diff --git a/src/components/Header/SkipToContent.astro b/src/components/Header/SkipToContent.astro deleted file mode 100644 index 829c70d2..00000000 --- a/src/components/Header/SkipToContent.astro +++ /dev/null @@ -1,28 +0,0 @@ ---- -type Props = {}; ---- - - - - diff --git a/src/components/Header/UltramarineLogo.astro b/src/components/Header/UltramarineLogo.astro deleted file mode 100644 index 9424dec2..00000000 --- a/src/components/Header/UltramarineLogo.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -type Props = { - size: number; -}; -const { size } = Astro.props; ---- - - - - diff --git a/src/components/LeftSidebar/LeftSidebar.astro b/src/components/LeftSidebar/LeftSidebar.astro deleted file mode 100644 index 59dff0cf..00000000 --- a/src/components/LeftSidebar/LeftSidebar.astro +++ /dev/null @@ -1,135 +0,0 @@ ---- -import { getLanguageFromURL } from "../../languages"; -import { SIDEBAR } from "../../consts"; - -type Props = { - currentPage: string; -}; - -const { currentPage } = Astro.props; -const currentPageMatch = currentPage.endsWith("/") - ? currentPage.slice(1, -1) - : currentPage.slice(1); -const langCode = getLanguageFromURL(currentPage); -const sidebar = SIDEBAR[langCode]; ---- - - - - - - - - diff --git a/src/components/PageContent/PageContent.astro b/src/components/PageContent/PageContent.astro deleted file mode 100644 index a9484bf8..00000000 --- a/src/components/PageContent/PageContent.astro +++ /dev/null @@ -1,51 +0,0 @@ ---- -import type { MarkdownHeading } from "astro"; -import MoreMenu from "../RightSidebar/MoreMenu.astro"; -import TableOfContents from "../RightSidebar/TableOfContents"; - -type Props = { - title: string; - headings: MarkdownHeading[]; - githubEditUrl: string; -}; - -const { title, headings, githubEditUrl } = Astro.props; ---- - -
-
-

{title}

- - -
- -
- - diff --git a/src/components/RightSidebar/MoreMenu.astro b/src/components/RightSidebar/MoreMenu.astro deleted file mode 100644 index 0309d8cd..00000000 --- a/src/components/RightSidebar/MoreMenu.astro +++ /dev/null @@ -1,76 +0,0 @@ ---- -import ThemeToggleButton from "./ThemeToggleButton"; -import { COMMUNITY_INVITE_URL } from "../../consts"; - -type Props = { - editHref: string; -}; - -const { editHref } = Astro.props; -const showMoreSection = Boolean(COMMUNITY_INVITE_URL); ---- - -{showMoreSection &&

More

} - - - diff --git a/src/components/RightSidebar/RightSidebar.astro b/src/components/RightSidebar/RightSidebar.astro deleted file mode 100644 index d318e991..00000000 --- a/src/components/RightSidebar/RightSidebar.astro +++ /dev/null @@ -1,34 +0,0 @@ ---- -import type { MarkdownHeading } from "astro"; -import TableOfContents from "./TableOfContents"; -import MoreMenu from "./MoreMenu.astro"; - -type Props = { - headings: MarkdownHeading[]; - githubEditUrl: string; -}; - -const { headings, githubEditUrl } = Astro.props; ---- - - - - diff --git a/src/components/RightSidebar/TableOfContents.tsx b/src/components/RightSidebar/TableOfContents.tsx deleted file mode 100644 index 0b886af7..00000000 --- a/src/components/RightSidebar/TableOfContents.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import type { MarkdownHeading } from "astro"; -import type { FunctionalComponent } from "preact"; -import { unescape } from "html-escaper"; -import { useState, useEffect, useRef } from "preact/hooks"; - -type ItemOffsets = { - id: string; - topOffset: number; -}; - -const TableOfContents: FunctionalComponent<{ headings: MarkdownHeading[] }> = ({ - headings = [], -}) => { - const toc = useRef(); - const onThisPageID = "on-this-page-heading"; - const itemOffsets = useRef([]); - const [currentID, setCurrentID] = useState("overview"); - useEffect(() => { - const getItemOffsets = () => { - const titles = document.querySelectorAll("article :is(h1, h2, h3, h4)"); - itemOffsets.current = Array.from(titles).map((title) => ({ - id: title.id, - topOffset: title.getBoundingClientRect().top + window.scrollY, - })); - }; - - getItemOffsets(); - window.addEventListener("resize", getItemOffsets); - - return () => { - window.removeEventListener("resize", getItemOffsets); - }; - }, []); - - useEffect(() => { - if (!toc.current) return; - - const setCurrent: IntersectionObserverCallback = (entries) => { - for (const entry of entries) { - if (entry.isIntersecting) { - const { id } = entry.target; - if (id === onThisPageID) continue; - setCurrentID(entry.target.id); - break; - } - } - }; - - const observerOptions: IntersectionObserverInit = { - // Negative top margin accounts for `scroll-margin`. - // Negative bottom margin means heading needs to be towards top of viewport to trigger intersection. - rootMargin: "-100px 0% -66%", - threshold: 1, - }; - - const headingsObserver = new IntersectionObserver( - setCurrent, - observerOptions, - ); - - // Observe all the headings in the main page content. - document - .querySelectorAll("article :is(h1,h2,h3)") - .forEach((h) => headingsObserver.observe(h)); - - // Stop observing when the component is unmounted. - return () => headingsObserver.disconnect(); - }, [toc.current]); - - const onLinkClick = (e) => { - setCurrentID(e.target.getAttribute("href").replace("#", "")); - }; - - return ( - <> -

- On this page -

- - - ); -}; - -export default TableOfContents; diff --git a/src/components/RightSidebar/ThemeToggleButton.css b/src/components/RightSidebar/ThemeToggleButton.css deleted file mode 100644 index 0f0ee5e1..00000000 --- a/src/components/RightSidebar/ThemeToggleButton.css +++ /dev/null @@ -1,40 +0,0 @@ -.theme-toggle { - display: inline-flex; - align-items: center; - gap: 0.25em; - padding: 0.33em 0.67em; - border-radius: 99em; - background-color: var(--theme-code-inline-bg); -} - -.theme-toggle > label:focus-within { - outline: 2px solid transparent; - box-shadow: - 0 0 0 0.08em var(--theme-accent), - 0 0 0 0.12em white; -} - -.theme-toggle > label { - color: var(--theme-code-inline-text); - position: relative; - display: flex; - align-items: center; - justify-content: center; - opacity: 0.5; - cursor: pointer; -} - -.theme-toggle .checked { - color: var(--theme-accent); - opacity: 1; -} - -input[name="theme-toggle"] { - position: absolute; - opacity: 0; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: -1; -} diff --git a/src/components/RightSidebar/ThemeToggleButton.tsx b/src/components/RightSidebar/ThemeToggleButton.tsx deleted file mode 100644 index bdcf8243..00000000 --- a/src/components/RightSidebar/ThemeToggleButton.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import type { FunctionalComponent } from "preact"; -import { useState, useEffect } from "preact/hooks"; -import "./ThemeToggleButton.css"; - -const themes = ["light", "dark"]; - -const icons = [ - - - , - - - , -]; - -const ThemeToggle: FunctionalComponent = () => { - const [theme, setTheme] = useState(() => { - if (import.meta.env.SSR) { - return undefined; - } - if (typeof localStorage !== undefined && localStorage.getItem("theme")) { - return localStorage.getItem("theme"); - } - if (window.matchMedia("(prefers-color-scheme: dark)").matches) { - return "dark"; - } - return "light"; - }); - - useEffect(() => { - const root = document.documentElement; - if (theme === "light") { - root.classList.remove("theme-dark"); - } else { - root.classList.add("theme-dark"); - } - }, [theme]); - - return ( -
- {themes.map((t, i) => { - const icon = icons[i]; - const checked = t === theme; - return ( - - ); - })} -
- ); -}; - -export default ThemeToggle; diff --git a/src/consts.ts b/src/consts.ts deleted file mode 100644 index 244de71b..00000000 --- a/src/consts.ts +++ /dev/null @@ -1,185 +0,0 @@ -export const SITE = { - title: "Ultramarine Wiki", - description: "The wiki for Ultramarine Linux.", - defaultLanguage: "en-us", -} as const; - -export const OPEN_GRAPH = { - image: { - src: "https://i.imgur.com/thZm6Qc.png", - alt: "Ultramarine Linux Wiki Text with an abstract background with two blue circles", - }, - twitter: "UltramarineProj", -}; - -export const KNOWN_LANGUAGES = { - English: "en", - Deutsch: "de", - 正體中文: "zh_hant", - hindi: "hi" -} as const; -export const KNOWN_LANGUAGE_CODES = Object.values(KNOWN_LANGUAGES); - -export const GITHUB_EDIT_URL = `https://github.com/Ultramarine-Linux/wiki-new/blob/main`; - -export const COMMUNITY_INVITE_URL = `https://fyralabs.com/discord`; - -export type Sidebar = Record< - (typeof KNOWN_LANGUAGE_CODES)[number], - Record ->; -export const SIDEBAR: Sidebar = { - en: { - Introduction: [{ text: "Welcome", link: "en/welcome" }], - Community: [ - { text: "Join the Community", link: "en/community/community" }, - { text: "Code of Conduct", link: "en/community/codeofconduct" }, - ], - Setup: [ - { text: "System Requirements", link: "en/setup/requirements" }, - { text: "Getting Ultramarine", link: "en/setup/getting" }, - { text: "BIOS Keys", link: "en/setup/bioskeys" }, - { text: "Installation", link: "en/setup/installation" }, - // { - // text: "Installation with Readymade", - //link: "en/installation/readymade", - //}, - { text: "Post-Installation", link: "en/setup/postinstall" }, - { - text: "Broadcom and Realtek Networking", - link: "en/setup/broadcom-realtek", - }, - { text: "NVIDIA", link: "en/setup/nvidia" }, - ], - Contributing: [ - { text: "Overview", link: "en/contributing/contributorguide" }, - { text: "Development", link: "en/contributing/hacking" }, - { text: "Mirroring", link: "en/contributing/mirroring" }, - ], - //Hardware: [ - //{ text: "Ultramarine Anywhere", link: "en/hardware/anywhere" }, - //{ text: "Microsoft Surface", link: "en/hardware/surface" }, - //{ - // text: "Broadcom and Realtek Networking", - // link: "en/hardware/broadcom-realtek", - //}, - //], - Anywhere: [ - { text: "Ultramarine Anywhere", link: "en/anywhere/anywhere" }, - { text: "Microsoft Surface", link: "en/anywhere/surface" }, - { text: "Raspberry Pi", link: "en/anywhere/rpi" }, - { text: "WSL", link: "en/anywhere/wsl" }, - ], - Usage: [ - { text: "Gaming on Ultramarine", link: "en/usage/gaming" }, - { text: "Localization", link: "en/usage/l10n" }, - { text: "Keyboard Configuration", link: "en/usage/keyboard-cfg" }, - { - text: "Switching Desktop Environments / Edition", - link: "en/usage/hop", - }, - { text: "umcli", link: "en/usage/umcli" }, - { text: "eduroam", link: "en/usage/eduroam" }, - ], - "Linux Concepts": [ - { text: "What is Linux?", link: "en/linux/overview" }, - { text: "The File System", link: "en/linux/filesystem" }, - { text: "Device Files", link: "en/linux/devicefiles" }, - { text: "Permissions", link: "en/linux/permissions" }, - { text: "Software and Package Management", link: "en/linux/software" }, - { text: "The Shell", link: "en/linux/shell" }, - { text: "SSH", link: "en/linux/ssh" }, - { text: "Security and Privacy", link: "en/linux/securityprivacy" }, - ], - "Release Notes": [ - { text: "Ultramarine 43 Upgrades", link: "en/release/43-upgrades" }, - { text: "Errata", link: "en/release/errata" }, - { text: "Differences with Fedora", link: "en/release/diff-fedora" }, - ], - // Chromebook: [ - // { text: "Getting Started", link: "en/chromebook/chromebook" }, - // { text: "Getting Chromebook Edition", link: "en/chromebook/getting" }, - // { text: "Installing to a Chromebook", link: "en/chromebook/preparing" }, - // { text: "Post-Install", link: "en/chromebook/postinstall" }, - // { text: "ARM Chromebooks (Beta)", link: "en/chromebook/armbeta" }, - // { text: "Terminology", link: "en/chromebook/terminology" }, - // ], - }, - de: { - Introduction: [{ text: "Welcome", link: "de/welcome" }], - Installation: [ - { text: "Getting started", link: "de/installation/getting-started" }, - { text: "Installation", link: "de/installation/installation" }, - { text: "Post-Installation", link: "de/installation/postinstall" }, - ], - "Linux Concepts": [ - { text: "Concepts overview", link: "de/linux/overview" }, - { text: "The File System", link: "de/linux/filesystem" }, - { text: "Permissions", link: "de/linux/permissions" }, - { text: "Software and package management", link: "de/linux/software" }, - { text: "The Shell", link: "de/linux/shell" }, - ], - }, - zh_hant: { - 介紹: [{ text: "歡迎", link: "zh_hant/welcome" }], - 社羣: [ - { text: "參與社羣", link: "zh_hant/community/community" }, - { text: "行為準則", link: "zh_hant/community/codeofconduct" }, - ], - 安裝: [ - { text: "取得 Ultramarine", link: "zh_hant/installation/getting" }, - { text: "安裝過程", link: "zh_hant/installation/installation" }, - // { - // text: "Installation with Readymade", - //link: "zh_hant/installation/readymade", - //}, - { - text: "Raspberry Pi 安裝過程", - link: "zh_hant/installation/rpi", - }, - { text: "安裝之後…", link: "zh_hant/installation/postinstall" }, - { - text: "進階安裝後步驟", - link: "zh_hant/installation/post-advanced", - }, - ], - 貢獻: [ - { text: "貢獻指南", link: "zh_hant/contributing/contributorguide" }, - { text: "原碼貢獻", link: "zh_hant/contributing/hacking" }, - ], - 硬件: [ - { text: "系統要求", link: "zh_hant/hardware/requirements" }, - { text: "Ultramarine Anywhere", link: "zh_hant/hardware/anywhere" }, - { text: "NVIDIA", link: "zh_hant/hardware/nvidia" }, - { text: "Microsoft Surface", link: "zh_hant/hardware/surface" }, - { - text: "Broadcom and Realtek Networking", - link: "zh_hant/hardware/broadcom-realtek", - }, - { text: "BIOS Keys", link: "zh_hant/hardware/bioskeys" }, - ], - "關於 Linux": [ - { text: "何謂 Linux?", link: "zh_hant/linux/overview" }, - { text: "檔案系統", link: "zh_hant/linux/filesystem" }, - { text: "裝置檔案", link: "zh_hant/linux/devicefiles" }, - { text: "權限", link: "zh_hant/linux/permissions" }, - { text: "軟件及安裝包管理", link: "zh_hant/linux/software" }, - { text: "The Shell", link: "zh_hant/linux/shell" }, - { text: "安全及私隱", link: "zh_hant/linux/securityprivacy" }, - ], - - 用途: [ - { text: "電子遊戲", link: "zh_hant/usage/gaming" }, - { text: "本地化", link: "zh_hant/usage/l10n" }, - ], - - 發佈版本通知: [{ text: "勘誤表", link: "zh_hant/release/errata" }], - - 開發: [ - { - text: "為 Ultramarine 開發", - link: "zh_hant/development/developing-for-ultramarine", - }, - ], - }, -}; diff --git a/src/content/config.ts b/src/content/config.ts deleted file mode 100644 index 8fa194ad..00000000 --- a/src/content/config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineCollection, z } from "astro:content"; -import { SITE } from "../consts"; - -const docs = defineCollection({ - schema: z.object({ - title: z.string().default(SITE.title), - description: z.string().default(SITE.description), - lang: z.literal("en-us").default(SITE.defaultLanguage), - dir: z.union([z.literal("ltr"), z.literal("rtl")]).default("ltr"), - image: z - .object({ - src: z.string(), - alt: z.string(), - }) - .optional(), - ogLocale: z.string().optional(), - }), -}); - -export const collections = { docs }; diff --git a/src/content/docs/de/development/anda.md b/src/content/docs/de/development/anda.md deleted file mode 100644 index f1544569..00000000 --- a/src/content/docs/de/development/anda.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Using Andaman -description: "Build and push packages with the Andaman toolchain." ---- - -To make package management easier for everyone, Ultramarine Linux developers and Fyra Labs have created the Andaman Toolchain, aka. [`anda`](https://github.com/FyraLabs/anda). - -The latest version as of writing is `0.1.6`. - -## Getting Started - -Install Andaman with `dnf install anda`. Andaman is in the Terra repository. - -## Configuration - -Andaman uses a per-project configuration file written in HCL. The configuration file is named `anda.hcl` and it is located in the root of the project directory. - -The configuration files can also be loaded recursively from the current directory, for easier project discovery. This is useful if you have multiple projects in the same directory. For example, the Terra and Ultramarine Linux repositories are stored inside a monorepo with all its packages. - -To start building a package in an already configured project, simply run `anda build ` from the project directory. diff --git a/src/content/docs/de/development/developing-for-ultramarine.md b/src/content/docs/de/development/developing-for-ultramarine.md deleted file mode 100644 index eff9ec29..00000000 --- a/src/content/docs/de/development/developing-for-ultramarine.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Developing for Ultramarine -description: "Things to get started on developing in Ultramarine." ---- - -Ultramarine Linux aims to be a developer-friendly environment for all kinds of developers. In this article, we will cover the basics of how to get started developing in Ultramarine. - -If you would like to develop your own software, you can get started with the section below. - -If you would like to develop **for** Ultramarine, you can get started with the [Developing for Ultramarine](#developing-for-ultramarine) section. - -## Getting Started - -Ultramarine comes with the [Python programming language](https://www.python.org/) out of the box, which is also required for most Fedora and Ultramarine -software, including the DNF package manager itself. - -### Setting up Rust - -To set up Rust in your environment, you can install the Rust and Cargo package from the Fedora repositories. - -```zsh -sudo dnf install rustc cargo -``` - -You can also use the `rustup` installer from the [Rust website](https://www.rust-lang.org/tools/install). This will install Rust in your local environment. - -## Developing for Ultramarine - -Our main IDE is [Visual Studio Code](https://code.visualstudio.com/), which is an open-source (mostly source-available) IDE that is available for both Windows, macOS, and Linux. - -If you, however, do not prefer to use the official Microsoft distribution of Visual Studio Code, you can also use [VSCodium](https://www.vscodium.com/), which is a free alternative distribution of Visual Studio Code. Or you can also use the [Official open-source build of Visual Studio Code](https://github.com/microsoft/vscode) here. - -There are also other supported IDEs and software we recommend using for development, such as: - -- [JetBrains CLion](https://www.jetbrains.com/clion/) (Native applications with C/C++, or Rust) -- [JetBrains PyCharm](https://www.jetbrains.com/pycharm/) for Python development. -- [GNOME Builder](https://wiki.gnome.org/Apps/Builder) for GNOME and GTK development. -- [Qt Creator](https://www.qt.io/product/development-tools) for Qt development. - -And other text editors you can use, such as: - -- [VIM](https://www.vim.org/) -- [Emacs](https://www.gnu.org/software/emacs/) -- [Micro](https://micro-editor.github.io/) -- [Neovim](https://neovim.io/) -- [Helix](https://helix-editor.com/) - -These text editors come with a minimal set of features, so you may want to install plugins for them, and configure them to your liking. - -Our preferred programming languages are Python, Vala and Rust, and our preferred GUI library is Helium. - -To build packages for Ultramarine, see [Using Andaman](/development/anda). - -### UI development - -It is recommended to follow the [Helium Human Interface Guidelines](https://developers.tauos.co/docs/hig) for UI development for Ultramarine apps. However, if you think that the Helium guidelines limit aspects of your app, you can deviate from the Helium guidelines and do your own UI design. - -### Build systems - -For build systems, we prefer using the programming language's native build system. For example, if you're using Rust, you can use the Rust's native Cargo build system. And in the case of Python, you can use the standard Python setuptools, which consists of either a `setup.py` file or a `pyproject.toml` file. - -For cases where using a native build system does not fit the needs of the application, we have a prioritized list of build systems that we recommend using: - -- [Meson](https://mesonbuild.com/) -- [CMake](https://cmake.org/) -- [GNU Autotools](https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html) -- A standard makefile. diff --git a/src/content/docs/de/development/ux-guide.md b/src/content/docs/de/development/ux-guide.md deleted file mode 100644 index 6b11aa4c..00000000 --- a/src/content/docs/de/development/ux-guide.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: UX Guidelines -description: "Guidelines for how the Ultramarine Linux experience should be designed." ---- - -Ultramarine Linux is supposed to be a user-friendly desktop operating system, and stay out the way of the user. These guidelines are meant to be a reference for how to implement the UX of Ultramarine Linux. - -## Theming - -We believe that the user should be able to easily customize the look and feel of Ultramarine Linux. But we want the default experience to be as minimalistic as possible, and not be full of clutter. - -Applications should look and feel like they are in the same place as the rest of the desktop. This means consistent theming, and a consistent color scheme. - -This also means that applications that use a dedicated styling library (libadwaita, libhelium, Material UI, etc.) are frowned upon for default apps, unless they are made for that exact ecosystem (libadwaita and libhelium apps on GNOME, for example). -The only exception for this is a case where there are no apps that functionally fit into the intended use case. - -## UX - -There are a few things that should be kept in mind when creating an application for Ultramarine Linux: - -- The application should be designed to be usable on any desktop environment. - -- Keep notifications to a minimum. - -- Always let the user know what is happening. - -- Let the user know what they're doing, and don't try to get in their way if they really want to do something. Which means allowing the user to do risky changes to their system, with a warning. - -## DE Choice - -Unlike what most people think about Ultramarine Linux, Ultramarine is not just supposed to be Fedora with a bunch of Desktop Environments. One should not expect the team to ship Ultramarine with every single desktop environment that they want to support. - -The core Ultramarine team does not want to maintain every single desktop environment. Instead, consider offering to maintain packages yourself. - -Ultramarine includes a pragmatic set of tweaks that are designed to get the user started as quickly as possible, not offer as many options as possible. diff --git a/src/content/docs/de/installation/getting-started.mdx b/src/content/docs/de/installation/getting-started.mdx deleted file mode 100644 index 3320870f..00000000 --- a/src/content/docs/de/installation/getting-started.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Getting Started -description: "Getting started with installing Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Ultramarine Linux comes in a form of an ISO image, which can be used to make a bootable DVD, or be flashed onto a USB stick. - -This guide will help you get the correct ISO image, create your boot image and install Ultramarine Linux on your computer. - -## Downloading - -### Choosing your edition - -Ultramarine Linux comes in 4 variants: - -- The **Flagship Edition**, which is the default and most popular variant, powered by the Budgie desktop environment and is made to stay out of your way. This is probably the version you want to use, and its desktop layout is similar to Windows or Chrome OS. -- The **GNOME Edition**, with the GNOME desktop environment designed to be elegant and modern. This is the variant you want if you would like a simple, unique experience. -- The **Pantheon Edition**, featuring elementary OS' Pantheon Desktop, made to be familiar to users coming from macOS. -- The **KDE Edition**, a new variant for Ultramatine 37, with a fresh look and feel inspired by Pop!\_OS. - -Ultramarine Linux supports Intel and AMD (amd64/x86*64) and ARM computers. Despite supporting ARM computers, Ultramarine Linux \*\*\_DOES NOT*\*\* support M1 and M2 Macs. - -The ISO images are available for download from the [Ultramarine Linux website](https://ultramarine-linux.org). - -### Checking the integrity of the ISO image (Recommended) - -If you would like to make sure the ISO image is valid, Ultramarine ISO images all come with a `CHECKSUM` file that can be checked against the image itself. - -The checksum file is a SHA256 checksum of the ISO image, you can use the following command to check the integrity of the ISO image (if you're using another Linux distribution) - -```bash -sha256sum -b /path/to/ultramarine.iso # Generate the checksum for the ISO image -cat /path/to/CHECKSUM # Check the checksum - -# Now you can compare the checksum -``` - -### Verifying the checksum on Windows - -```powershell -CertUtil -hashfile PATH\TO\ULTRAMARINE.ISO SHA256 -# Open the CHECKSUM file with Nodepad and compare the checksum -``` - -## Creating the bootable media - -### With Ultramarine Linux - -You can use the Fedora Media Writer to create a bootable media from the ISO image. - -![](/assets/fedoramediawriter.png) - -### With other operating systems (Windows, macOS, other Linux distributions) - -You can use [balenaEtcher](https://www.balena.io/etcher/) to create a bootable media from the ISO image. - -![](/assets/balenaetcher.png) - -### With Windows (alternative) - -You can use [Rufus](https://rufus.ie/) to create the bootable image. - -![](/assets/rufus_en.png) - -## Booting to Ultramarine Linux - -After flashing the image to your USB drive, you can boot to Ultramarine Linux by plugging in the drive and restarting your computer. - -Before your computer boots to your current OS, please refer to your computer's documentation on which key to press to select a custom boot option. - - - -Most BIOS has a special key that can be used to select a boot device, or to enter the BIOS setup screen. This varies from brand to brand. These keys may be `Esc`, `F1`, `F2`, `F8`, `F11`, `F12`, or even `Del`. The BIOS will usually display a message on the screen briefly on startup. If you're not sure which key to press, look up the BIOS setup instructions on the internet or ask your computer manufacturer. - - - - - -On Macs, press power, then hold down the `Alt` or `Option` key until the Apple Logo appears. - - diff --git a/src/content/docs/de/installation/installation.mdx b/src/content/docs/de/installation/installation.mdx deleted file mode 100644 index 4df75efd..00000000 --- a/src/content/docs/de/installation/installation.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: Installation -description: "A guide on how to install Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -After booting into the live system, you will see a dialog box asking you to whether to start the installer, or continue with the live system. - -![The Welcome Dialog box](/assets/welcome-window.png) - -You can pick whichever you want, and you'll be able to start the installer later by opening the `Install to Hard Drive` application. - -To start the installation, click on the `Install to Hard Drive` button, or open the `Install to Hard Drive` application. - -# The Anaconda Installer - -Ultramarine currently uses the [Anaconda Installer]() (not to be confused with [The Python distribution]()). This is a system installer similar to the likes of Ubuntu's Ubiquity, or Calamares. - -There has been progress to replace the installer with a custom installer, but it is very experimental and not yet ready for normal use. - -![Anaconda Language Selection](/assets/anaconda-1.png) - -After starting the installer, you will be greeted with a language selection screen. Simply choose the language you would like to use for Ultramarine Linux. - -## The Anaconda Hub & Spoke Model - -![Anaconda Hub](/assets/anaconda-2.png) - -Anaconda uses a hub and spoke model to guide the user through the installation process. You can configure your installation in any order you want, but you will need to complete all the options before you can continue. - -### Keyboard Layouts - -![Anaconda Keyboard Layout](/assets/anaconda-3.png) - -Press the `+` button to add a new keyboard layout, then pick and search for the keyboard layout you prefer. - -Once you have selected the keyboard layout, you can press the `Done` button on the top left to go back to the hub. - -### Time & Date - -![](/assets/anaconda-4.png) - -The Time & Date selection screen has a world map in which where you can click on your location on the map to set your timezone. - -You can also use custom NTP servers to sync your time with a different server by clicking on the cog icon in the top right, or automatically set your time from your geolocation. - - - -By default, the time is set from your IP address geolocation. If you're using a VPN, this may not be accurate. - - - -### Storage - -![](/assets/anaconda-5.png) - -On this screen, you have to choose where you would like to install Ultramarine Linux. You can choose a drive to install to, then have Anaconda automatically partition your drive, or you can pick the 2 custom partitioning options. - - - -By default, Ultramarine uses the [Btrfs](https://en.wikipedia.org/wiki/Btrfs) filesystem, which supports allocating the drive into multiple subvolumes. This is the recommended option for most users as this will allow you to back up your system as atomic snapshots, which take less space than a full data clone. - - - -#### Custom Partitioning - -![](/assets/anaconda-6.png) - -In this mode, you can have Anaconda automatically allocate a partition for you, then you can change your mount point and file system type. - - - -For UEFI-based systems, you will also have to set up an EFI partition (mounted at `/boot/efi`) for the bootloader to use. - - - -#### Advanced Partitioning - -![](/assets/anaconda-7.png) - -In this mode, Anaconda uses a tool called blivet-gui for you to manually partition your drive. This is more akin to a standard partition editor like GParted. - -You can set up your custom partitioning scheme, along with your own custom mount points and file system types. - -You can also set up disk encryption using LUKS2 for extra security, but you will have to manually type in your password everytime your system boots. - -### Networking - -![](/assets/anaconda-8.png) - -On this screen, you can configure your hostname and network settings. - - - -On live installations, you can only configure your hostname. Everything else will be configured by the Desktop's respective network tools. - - - -### User Accounts - -![](/assets/anaconda-9.png) - -In this screen, you will have to configure your user accounts. Create a system account and enter in your password to continue. - -You can also click on the `Advanced` button for a more in-depth configuration of your account, such as your user folder location, account ID, and your system group membership. - - - -If you do not enter in a password, some apps may not work properly. - - - - - -If you type in a password that Anaconda deems insecure, it will have you confirm whether you still want to use the password. - - - ---- - -After completing your system configuration, press the `Begin Installation` button to continue. The installation process will start and may take a few minutes. - - - This process **IRREVERSIBLE**. If you manage to close down the installer - before it finishes, you will end up with a corrupted system.
To fix - this, you will have to reinstall Ultramarine Linux or your preferred operating - system, causing data loss. -
- -After the installation process is complete, Anaconda will prompt you to reboot your system. Simply reboot your system to complete the installation. - -Welcome to Ultramarine Linux! diff --git a/src/content/docs/de/installation/postinstall.md b/src/content/docs/de/installation/postinstall.md deleted file mode 100644 index e028338a..00000000 --- a/src/content/docs/de/installation/postinstall.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Post-installation -description: "Things to do after installing Ultramarine Linux." ---- - -After installing Ultramarine Linux, There are a few things you should do to make the most out of your new system. - -## Install NVIDIA Drivers - -If you have an NVIDIA GPU, you can install the latest drivers for it by running the following commands: - -```bash -sudo dnf update # Update the system first, because NVIDIA drivers will build using the latest kernel. -sudo dnf install akmod-nvidia # Install the NVIDIA kernel module. -``` - -Then, reboot your system. - -### (Optimus Laptops) use the NVIDIA GPU as the primary GPU - -Execute the following scripts to make your NVIDIA GPU the primary GPU: - -```bash -sudo cp -p /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf -sudo sed -i '10i\ Option "PrimaryGPU" "yes"' /etc/X11/xorg.conf.d/nvidia.conf # Add PrimaryGPU = yes to the 10th line of the file. -``` - -Then reboot your system. - -Make sure you're using the Xorg version of your desktop environment. - -## Install Codecs - -Ultramarine Linux already includes the necessary codecs for the majority of the popular multimedia formats. You do not need to install any additional codecs. - -## Set up Snapper (Btrfs Snapshots) - -Currently, RPM's architecture does not handle snapper properly. You might experience broken RPM transactions when doing rollbacks. This is a known issue and must be addressed upstream. diff --git a/src/content/docs/de/linux/filesystem.mdx b/src/content/docs/de/linux/filesystem.mdx deleted file mode 100644 index c6ff5037..00000000 --- a/src/content/docs/de/linux/filesystem.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: The File System -description: "An overview of the file system in Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -The Linux (and UNIX) file system is a hierarchical structure of files and directories that make up a Linux operating system. - -In Linux, everything is a file. Unlike Windows where there are many other object types that can either be a physical device, and inter-process communication is done by a kernel call. - - -
- If you don't like reading text, you can watch this video below from Linode! - (Not sponsored) - -
-
- -## The File System Hierarchy - -The file system hierarchy is a set of directories that appear under the root directory `/`. They not only contain normal files, but also physical devices, virtual devices, and various other special files that control the system itself. - -The directory structure is as follows: - -| Directory | Description | -| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| / | The root directory, contains the all the other directories and files. | -| /bin | Contains executables and command binares that are required for the system to function. | -| /boot | The Boot loader, this may usually be in a seperate partition. | -| /dev | Contains special device files that can be used for special purposes (`/dev/sda` for a SATA drive, `/dev/null` for blank data, `/dev/random` for pseudo-random data, `/dev/tty` for terminal sessions, etc). | -| /etc | Contains system-wide settings and configuration files. | -| /home | User data | -| /lib | Libraries required for executables in `/bin` to function. May be also named `/lib` for multi-architecture support. | -| /media | Mount points for removable media, such as USB drives, SD cards, etc. | -| /mnt | Temporary mount points for mounting devices. | -| /opt | Optional packages that may be installed by the user. | -| /proc | Process data and kernel information for inter-process communication managed by the kernel. | -| /root | User data for the root user. | -| /sbin | Executables for system tasks | -| /srv | Shared service data used by server processes, such as web servers and NAS/File servers. | -| /tmp | Temporary data | -| /usr | Shared application data used by all users. | -| /var | Variable data used by system processes. | - -## The Home Directory - -The home folder is the place where all your personal data is stored. It is a directory that is located under the `/home` directory, followed by the username. It is similar to the `Users` folder in Windows. - -In Linux, the home folder is usually more extensively used than in Windows, as it stores all user-specific data and app settings. The system folders are only used when one wants to make system-wide changes. - - - If an app you don't know asks you for your password or root access, It may be - trying to compromise your system. Cases like this are usually uncommon on - Linux, but you should be aware of it. - diff --git a/src/content/docs/de/linux/overview.mdx b/src/content/docs/de/linux/overview.mdx deleted file mode 100644 index 5a1196d5..00000000 --- a/src/content/docs/de/linux/overview.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Concepts Overview -description: "A general overview of Linux concepts." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -This article and this section outlines the concepts of Linux, GNU, and UNIX concepts. - -## What is Linux? - -Linux is an open-source operating system kernel, which can be used to build an operating system. - -Linux itself is not a complete operating system in itself. It is a kernel, or the core of an operating system. Linux itself is usually packaged along with the GNU operating system, which is a collection - - -
- An abridged video of this article can be found here: - -
-
- -## What is the GNU in GNU/Linux? - -Main article: [GNU Core Utilities from Wikipedia](https://en.wikipedia.org/wiki/GNU_Core_Utilities) - -GNU (AKA The GNU Core Utilities, or just `coreutils`) is a collection of utilities that make up the GNU operating system. - -It is a package of various common apps and utilities that are used by UNIX-like operating systems. - -## What are Linux distributions? - -A Linux distribution is an operating system that is built on top of the Linux kernel. It is a collection of packages that are packaged together to make a complete operating system. - -A Linux distribution may come in many different forms, and made for different kinds of use cases. - -There are many different Linux distributions, and each one has its own unique features and benefits, such as: - -- Ubuntu -- Pop!\_OS -- Linux Mint -- Fedora Linux -- The Enterprise Linux family (RHEL, CentOS, Rocky Linux, AlmaLinux, etc.) -- Arch Linux -- Android -- Ultramarine Linux -- etc. - -Ultramarine Linux itself is a Linux distribution that is based on Fedora Linux, and many concepts that apply to Fedora Linux are also applicable to Ultramarine Linux. diff --git a/src/content/docs/de/linux/permissions.md b/src/content/docs/de/linux/permissions.md deleted file mode 100644 index 7ef55937..00000000 --- a/src/content/docs/de/linux/permissions.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Permissions -description: "How permissions work on Linux." ---- - -On Linux, permissions are used to determine who can read, write, and execute files, or do certain actions. - -Users are seperated into various groups with different IDs, and each file or action can be assigned a permission level. - -A user can be assigned a permission level that is higher than the permission level of the group they are in. And users in a group can do certain things that other users cannot. - -However, users in UNIX-like operating are more akin to a principal, as these "users" may not actually be a person, but a program. - -Files are owned by a user, and can be assigned a permission level. The user who owns the file can modify the file and modify the permissions of the file. - -Permission levels are displayed in octal, and are represented by a number of digits. The first digit is the owner, the second is the group, and the third is the other users. Permissions range from 0 to 7, with 0 being no access, and 7 being full access. - -## The Root User - -The root user (or the superuser) is a special user that grants access to all files and actions. It is akin to the Administrator on Windows. - -To execute commands as the root user, use the `sudo` command, followed by the command you want to execute. - -```bash -sudo dnf install vim # This will install vim as the root user -``` diff --git a/src/content/docs/de/linux/shell.mdx b/src/content/docs/de/linux/shell.mdx deleted file mode 100644 index e14b51f2..00000000 --- a/src/content/docs/de/linux/shell.mdx +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: The Shell -description: "How the shell works in Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Sometimes, you may want to interact with the operating system in a more direct way. A traditional way to do this is to do it through the shell. - -The shell is a command line interface to the operating system. It is a program that wraps around the operating system kernel, and allows you to directly execute system calls and commands to interact with the operating system. - -There are many various shells that are available on Linux, such as: - -- The Bourne shell (sh) -- The Bourne-again shell (bash) -- The Korn shell (ksh) -- The Z shell (zsh) -- The Friendly Interactive Shell (fish) - -Ultramarine Linux uses the [Z Shell](https://en.wikipedia.org/wiki/Z_shell) as its default shell, combined with the [Starship Prompt](https://starship.rs/) for a more clean interface. - - -
- To learn more about shell scripting, you can watch this Bash introduction - video by Fireship here: - - NOTE: The Z shell is mostly compatible with Bash, so most of the knowledge you - will learn will be mostly applicable in Ultramarine Linux. -
-
- - - The Z shell is also used Kali Linux and newer versions of macOS (Catalina and - newer). - - -## Interacting with the shell - -To start using the shell, open the Terminal app. - -![The GNOME Terminal](/assets/terminal.png) - -You will be greeted with a prompt, simply type in the command you want to execute, and press `Enter⏎`. - -To change directories, type `cd` followed by the path you want to change to. - -```zsh -cd /home/user/Documents -``` - -To list the contents of a directory, type `ls`. - -To read a file to the terminal, type `cat` followed by the path to the file. - -```zsh -cat /home/user/Documents/README.md -``` - -To delete a file, type `rm` followed by the path to the file. - -```zsh -rm /home/user/Documents/README.md -``` - -To delete a full directory, recursively delete it by typing `rm -r` followed by the path to the directory. - -```zsh -rm -r /home/user/Documents -``` - - - Most users will usually execute `rm -rf` instead of `rm -r`. The `-f` flag is - used to force the deletion of a file or directory. - - -To create a new file, type `touch` followed by the path to the file. - -```zsh -touch /home/user/Documents/newfile.txt -``` - -To create a new directory, type `mkdir` followed by the path to the directory. - -```zsh -mkdir /home/user/Documents/newdir -``` - -To move or rename a file or directory, type `mv` followed by the path to the file or directory, and then the new path. - -```zsh -mv /home/user/Documents/newfile.txt /home/user/Documents/newfile2.txt -``` - -To know more about each command, open the manual by typing `man` followed by what you want to learn about - -``` -man sudo -``` - -This will open `less`, an app that allows you to read through long lines of text as a scrollable page. - -To exit `less` press `Q`. - -Most commands will also have a `-h` or `--help` flag, which tells you more about the command. - -## The Pipeline - -Linux offers a way for inter-process communication through pipes. - -The pipeline you to transfer data from one process to another, and is used to execute commands in parallel. - -```zsh -echo "Hello World" | wc -w -``` - -This calls the `wc` (word count) command, which counts the number of words in the text. Then pipes the output of `echo` to it, which then outputs the number of words. This is a very simple example of a pipeline. - -A named pipe is created by using `>` instead of `|`. - -```zsh -echo "Hello World" > pipe.txt -``` - -This pipes the output of `echo` to the named pipe `pipe.txt`, which is now a file. - -## Executing a file - -To execute a program, you must first make sure that the file is executable. This is done by using the `chmod` command. - -```bash -chmod +x /path/to/exec -``` - -Then you can execute the file by directly pointing to it. - -```bash -/path/to/exec -``` - -For files in your current folder, you must use `./` before the file name. - -```bash -./exec -``` diff --git a/src/content/docs/de/linux/software.md b/src/content/docs/de/linux/software.md deleted file mode 100644 index a7b3393c..00000000 --- a/src/content/docs/de/linux/software.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Software and package management -description: "How to manage software on Linux." ---- - -There are many different ways to install software on Linux. - -## The system package manager - -Most software is installed using the system package manager. There are many different package managers, and each one has its own unique features and benefits, such as: - -- APT (Used by Debian, Ubuntu, and many other Linux distributions) -- Pacman (Used by Arch Linux) -- Yum (Used by older versions of Fedora and Red Hat) -- DNF (Used by Fedora) -- XBPS (Used by Void Linux) -- Portage (Used by Gentoo, and Chrome OS) - -Ultramarine Linux is based on Fedora, and thus uses the DNF package manager. - -To install an RPM package from the Ultramarine and Fedora repositories, use the `dnf` command. - -```bash -sudo dnf install steam # Install Steam -``` - -You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf groupinstall` command. - -```bash -sudo dnf groupinstall "Audio Production" # installs multiple packages at once, in this case a suite of music/audio production tools -``` - -## Other package managers - -You can also install software using other package managers. - -There are many different user-only package managers, such as: - -- Snap -- Flatpak -- Steam (For games) - -### Flatpak - -Flatpak is supported out of the box in Ultramarine Linux. To install a Flatpak app, open GNOME Software or AppCenter, or use the `flatpak` command. - -### Snap - -Snap is a package manager made by Canonical for Ubuntu. It was created to make deploying serverside services easier, and it is also used for GUI applications. - -To get started, install Snap. - -```bash -sudo dnf install snapd # Install Snap -``` - -Then, open the Snap store and search for the app you want to install. - -```bash -# Install VLC media player -sudo snap install vlc -``` - -### Steam - -To install a game on Steam, first install Steam. - -```bash -sudo dnf install steam -``` - -Then, open the Steam store and search for the game you want to install. - -## Other installation methods - -### AppImages - -AppImages are self-contained binaries that are packaged with their own dependencies. To use an AppImage, simply download it, and then execute it by double-clicking it or using the command line. - -```bash -./balenaEtcher.AppImage -``` - -If this doesn't work, you may need to make the file executable. - -```bash -chmod +x balenaEtcher.AppImage -``` - -### Install from source - -Sometimes, software is not available in a package, and you need to build it from source. - -To do this, follow the developer's instructions and build the software yourself. diff --git a/src/content/docs/de/release/errata.mdx b/src/content/docs/de/release/errata.mdx deleted file mode 100644 index 1e86d9aa..00000000 --- a/src/content/docs/de/release/errata.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Errata -description: "Various known bugs and other issues in Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -This page contains the erratum for Ultramarine Linux releases. - -An erratum (or corrigendum) is a correction of a published release. It is usually made shortly after a release, and is a minor issue that is not critical to the release, and it may be corrected in the next release. - -## All versions affected - -### Applications - -#### Some installer scripts not supporting Ultramarine, even though it is a Fedora-based OS - -This is related to [DNF Tells the user there are no repositories available for a Copr project](#dnf-tells-the-user-there-are-no-repositories-available-for-a-copr-project), This bug may only be addressed upstream, or until there is mainstream recognition of Ultramarine Linux itself. - -## Ultramarine 37 (Initial Release) - -### Pantheon - -#### Blank wallpaper - -Due to a configuration error, the wallpaper is not set correctly. This will be fixed in the next release. - -The simple workaround is to set your own wallpaper. - -## Ultramarine 36 (Build 1.1) - -### Applications - -#### Firefox still includes Fedora bookmarks - -This is caused by the inclusion of the `fedora-bookmarks` package, which is a weak dependency of Firefox in Fedora. Uninstalling this package may not fix the issue on an already configured account. Simply remove the bookmarks yourself. - -#### Anaconda shows a warning about the system being pre-release - -This is caused by Anaconda not finding the patched `/.buildinfo` file (or ProductMD information about Ultramarine). We do not know how Fedora is doing this, but in Budgie and Cutefish versions there is a script inserting a custom `/.buildinfo` file in the root of the filesystem. - -#### DNF Tells the user there are no repositories available for a Copr project - -This is due to the fact that the DNF Copr plugin detects the OS ID `/etc/os-release` file, and Ultramarine uses a custom code instead of `fedora`. - -A workaround is to also specify the Fedora buildroot when trying to add a Copr repository, like this: - -```bash -sudo dnf copr enable cappyishihara/fedorajam-plus fedora-36-x86_64 -``` - -This will be addressed in a `dnf-plugins-core` patch, either upstream or locally with Ultramarine. - -This issue has been addressed upstream in the [following pull request](https://github.com/rpm-software-management/dnf-plugins-core/pull/463) - -It will be included in the next release of dnf-plugins-core after 4.3.1. - -### GNOME - -#### Pop!\_Shell launcher - -The Pop!\_Shell launcher is broken. This can be fixed by installing the `pop-launcher` package, as the package was not included in the original release. - -### Cutefish - -#### SDDM displaying black screen - -SDDM may display a black screen when starting up. This is a known issue, but there is no known fix as of yet. (Possibly an upstream bug, help needed.) - -### Pantheon - -#### Missing Switchboard (Settings) menus - -This was caused by missing Pantheon Switchboard modules, which are not included in Ultramarine Linux due to time constraints. - -You can help us fix this issue by offering to maintain these packages ourselves, or by [contributing to help submit them to upstream Fedora.](https://fedoraproject.org/wiki/SIGs/Pantheon) - -### Lapis/OSTree Edition - -#### Missing tweaks from the standard releases - -As the standard release includes a script to modify the system, due to the nature of OSTree, we are unable to include these tweaks unless we rebuild all major packages with our custom patches. - -You can help us fix this issue by contributing and maintaining these packages yourself. diff --git a/src/content/docs/de/welcome.mdx b/src/content/docs/de/welcome.mdx deleted file mode 100644 index ec093bf7..00000000 --- a/src/content/docs/de/welcome.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Welcome -description: "This wiki is meant to be the extended documentation for both end users and developers, so it is separated in those two categories." ---- - -import Alert from "../../../components/Docs/Alert.astro"; - -Willkommen im Ultramarine Linux Wiki! Dieses Wiki dient als Dokumentation für den allgemeinen Benutzer, jedoch auch für Entwickler des Projektes. Somit werden alle Artikel in eine dieser zwei Kategorien eingeteilt. - -Diese Hauptseite dient der Einführung der Linux Distribution und ihrer Philosophie und sollte von einem neuen Nutzer als Einstiegspunkt zuerst gelesen werden. - - - Die deutsche Übersetzung ist momentan noch in Arbeit. Bitte zur englischen - Version mit dem Menü oben rechts wechseln. Danke! - - -## Allgemeine Philosophie - -Ultramarine Linux ist der spirituelle Nachfolger zu Korora Linux, mit dem Ziel, ein Betriebssystem zu erstellen welches einfach funktioniert (engl. "it just works"). Mit einigen Anpassungen wird die Fedora-Erfahrung für neue und erfahrene Benutzer gleichermaßen verbessert. Diese Anpassungen können hauptsächlich auch durch ein Skript manuell erzielt werden, jedoch benötigt man dafür extra Aufwand (den wir mit diesem Betriebssystem verhindern wollen). Außerdem sind einige der geplanten Funktionen ohne ein separates ISO Abbild nicht möglich. - -## Team - -- 🇹🇭 Cappy Ishihara (Anonym) - Project lead, Release Engineer -- 🇩🇪 Trobonox (Anonym) - Documentation, Web Developer, UI/UX Designer -- 🇮🇳 Vihag Chaturvedi - Community Manager, Documentation -- 🇮🇩 Mo (Anonym) - Additional Support, Consulting -- 🇵🇱 Toru Ishikawa (Anonym) - Infrastructure SIG diff --git a/src/content/docs/en/anywhere/enterprise.mdx b/src/content/docs/en/anywhere/enterprise.mdx deleted file mode 100644 index 2efcabbe..00000000 --- a/src/content/docs/en/anywhere/enterprise.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Data Centre, Enterprise, and HPC (Anywhere)" -description: "Data Centre, Enterprise, and HPC in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change. - - -These images will be built for constant runtime, and include/exclude fitting packages for server usecases. If you'd like to suggest a platform, drop us a line in [our chats](/en/community/community). - -## Implementation - -- Refined OOTB cockpit experience -- CLI only option -- Advanced installer features -- Advanced networking options -- Package suite more attuned to a server usecase -- Default filesystem changed to ZFS -- Potential improved RAID and non-RAID architecture implementation -- Cluster support -- A whole lot more... diff --git a/src/content/docs/en/anywhere/steamdeck.mdx b/src/content/docs/en/anywhere/steamdeck.mdx deleted file mode 100644 index 95a37316..00000000 --- a/src/content/docs/en/anywhere/steamdeck.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Valve Steam Deck (Anywhere)" -description: "Steam Deck in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -We don't have any handhelds. So for now (and potentially forever) we recommend checking out [Bazzite](https://bazzite.gg/), it shares a base with Ultramarine, has Terra, and is made by our partners at Universal Blue. diff --git a/src/content/docs/en/anywhere/surface.mdx b/src/content/docs/en/anywhere/surface.mdx deleted file mode 100644 index f6375579..00000000 --- a/src/content/docs/en/anywhere/surface.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Microsoft Surface -description: "Information about Ultramarine Linux on Microsoft Surfaces" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Microsoft Surface support is provided using the [Linux Surface team's](https://github.com/linux-surface/linux-surface) Surface kernel and packages/software. - -## Supported Devices - -| Device | Surface Image Required? | Notes | Fyra has This | -| ---------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | -| Surface Pro 1 | No | | ✓ | -| Surface Pro 2 | No | Identical to Pro 1 | | -| Surface Pro 3 | Yes | Boots without, but things may be broken | ✓ | -| Surface Pro 4 | Yes | | ✓ | -| Surface Pro (5th Generation) | Yes | Nearly identical to Pro 4 | ✓ | -| Surface Pro 6 | Yes | Nearly identical to 5th gen | | -| Surface Pro 7 | Yes | | | -| Surface Pro 7+ | Yes | | | -| Surface Pro 8 | Yes | | | -| Surface Pro 9 | Yes | Must disable Secure Core in BIOS to boot from USB storage | | -| Surface 3 | Yes | Battery and touch will not work without Surface Kernel | | -| Surface Go | No | Cameras and LTE will not work without Surface Kernel | ✓ | -| Surface Go 2 | No | Same as Surface Go | ✓ | -| Surface Go 3 | No | May need Secure Boot disabled to boot properly. | | -| Surface Go 4 | Yes | UFS Storage, requires some [manual intervention](https://github.com/linux-surface/linux-surface/wiki/Surface-Go-4) to get working | | -| Surface Book | Yes | NVIDIA needed for some SKUs, fans may not work | ✓ | -| Surface Book 2 | Yes | NVIDIA needed for some SKUs, fans may not work | ✓ | -| Surface Book 3 | Yes | NVIDIA needed for some SKUs. Additionally, surface_aggregator and associated kernel modules NEED to be in initramfs | | -| Surface Laptop | Yes | Some thermal issues due to bad sensor readings | | -| Surface Laptop 2 | Yes | surface_aggregator and associated kernel modules NEED to be in initramfs | | -| Surface Laptop 3 | Yes | surface_aggregator and associated kernel modules NEED to be in initramfs | | -| Surface Laptop 4 | Yes | surface_aggregator and associated kernel modules NEED to be in initramfs. Video is VERY unstable on AMD and Intel models | | -| Surface Laptop 5 | Yes | Hibernation and shutdown are broken, ACPI is generally messed up on here. surface_aggregator and associated kernel modules NEED to be in initramfs | | -| Surface Laptop Go | Yes | Touchpad may stop working when resuming from suspend. Intel PSR causes tearing. Fans may not work | ✓ | -| Surface Laptop Go 2 | Yes | | | -| Surface Laptop Go 3 | Yes | No data, we assume surface_aggregator is required | | -| Surface Studio | Yes | No data, we assume surface_aggregator is required | | -| Surface Studio 2 | Yes | No data, we assume surface_aggregator is required | | -| Surface Studio 2+ | Yes | No data, we assume surface_aggregator is required | | -| Surface Laptop Studio | Yes | GPU may be limited to 10W | | -| Surface Laptop Studio 2 | Yes | | | - -Please review the [Linux Surface wiki page](https://github.com/linux-surface/linux-surface/wiki) for your device, there may be further important imformation there regarding additional setup and usage. - -## Cameras - -All packages and configuration needed to enable (lib)camera support is included. Camera support for some models is still a work in progress upstream. The Surface Pro 7, Intel Surface Laptop 3, and the Surface Book 3 use an IPU4, which is not at all supported at this time. Feature matrix, troubleshooting, and more information can be found [here](https://github.com/linux-surface/linux-surface/wiki/Camera-Support). - -#### Notes - -- We do not and will **NEVER** support the Surface 1, 2, or RT. -- We do not support the Surface Pro X or Windows DevKit, and probably won't. If you'd like to change this you can [donate hardware](/en/contributing/contributorguide/#hardware). -- We do not support the "Copilot+ PC" Surfaces **YET**. - -#### [Next Up: Raspberry Pi →](/en/anywhere/rpi) - -#### [← Back To: Ultramarine Anywhere](/en/anywhere/anywhere) diff --git a/src/content/docs/en/anywhere/tegra.mdx b/src/content/docs/en/anywhere/tegra.mdx deleted file mode 100644 index 970f28c8..00000000 --- a/src/content/docs/en/anywhere/tegra.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: "NVIDIA Tegra (Anywhere)" -description: "NVIDIA Tegra devices in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -Most of the team has a modern Tegra device, most commonly, the Nintendo Switch. -There is interest in running Ultramarine on these devices, but we haven’t started work on a port yet. - -We're tracking the progress of the [Switchroot](https://switchroot.org/) project, which aims to bring Linux to the Nintendo Switch and -other Tegra-based SoCs, such as the Jetson/Xavier/Orin series, the NVIDIA Shield and more. - -The boot process for Tegra devices is similar to other ARM-based Android devices, but with slight differences, especially -for the Nintendo Switch since it uses a completely custom firmware, due to Nintendo's security measures. -We'll be mostly documenting the process for the Switch, but the same principles apply to other Tegra devices. - -## Nintendo Switch - -The Switch loads from a 32GB (or 64GB on the OLED model) eMMC, which is a detachable module. - -Older revisions of the Switch with the X1 SoC (the original 2017 launch model, AKA the "White Box" or "Erista" SoC) -are the most compatible with Linux, since the hardware support for the X1 itself has been mainlined in the Linux kernel. -This model is vulnerable to [CVE-2018-6242 (Fusée Gelée)](https://nvd.nist.gov/vuln/detail/cve-2018-6242) which allows for arbitrary code execution in the boot ROM. - -Newer revisions of the Switch with the X1+ SoC (the 2019 revision, AKA "Red Box" or "Mariko" SoC) and later models -like the Lite and OLED models (also codenamed "Aula") are not vulnerable to Fusée Gelée, and require a different exploit which is a combination -of eMMC interception and a reset glitch to load a custom bootloader. This requires hardware modifications and is not as straightforward as the original exploit. - -"Mariko" SoCs are also not yet supported by the mainline Linux kernel, and require a custom kernel to boot. - -The most common bootloader payload used to run arbitrary code on the Switch is [hekate](https://github.com/ctcaer/hekate), -a custom bootloader that provides a graphical boot menu and partition manager. It can also be used to dump the eMMC storage data and -create an "emuMMC” (a virtualized eMMC partition that can be used to run a backup image of HorizonOS, the stock firmware -without modifying the actual eMMC data.) - -## Implementation - -The Switchroot boot process creates a boot menu entry in Hekate that loads [U-Boot], which in turn reads a custom boot script that does the following: - -1. (If the user is on a Switch Lite) loads the calibration data for the embedded analog sticks -2. Loads the device tree blobs (DTB) for the Switch from the SD card -3. Sets up Linux kernel command line arguments (if configured to do so) - - Disables the touch screen tuning parameters (optional) - - Disables HDMI CEC auto-negotiation (optional) - - Disables WiFi VHT80 bonding (if running the mainline kernel) - - Force-enables NVENC/NVDEC support and sets the memory address for the framebuffer - -4. Finally, loads the Linux kernel and the initramfs from the SD card - -If the boot process fails at any point, the script waits for 10 seconds and then reboots the device. - -## Ultramarine Notes - -To properly support BLS ([Boot Loader Specification]) on the Switch, we want to slightly modify the U-Boot script to instead -chainload another bootloader (such as GRUB, systemd-boot or [Submarine]) which can then read the BLS configurations and present -the user with the boot menu options. - -[Horizon OS]: https://en.wikipedia.org/wiki/Nintendo_Switch_system_software -[U-Boot]: https://en.wikipedia.org/wiki/Das_U-Boot -[Submarine]: https://github.com/FyraLabs/submarine -[Boot Loader Specification]: https://uapi-group.org/specifications/specs/boot_loader_specification/ \ No newline at end of file diff --git a/src/content/docs/en/chromebook/armbeta.mdx b/src/content/docs/en/chromebook/armbeta.mdx deleted file mode 100644 index 174ef8f3..00000000 --- a/src/content/docs/en/chromebook/armbeta.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: ARM Chromebook Beta Program -description: "Closed program for running our beta images for certain ARM chromebooks" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -NOTE - Not all ARM devices are currently supported. This is a Beta program, proceed at your own risk. - -Welcome to the ARM Chromebook Beta Program! We are looking for technically-versed people to test our Ultramarine Chromebook beta images for ARM. - -This is a closed program, please join and ping @Owen in the [Discord](https://discord.com/invite/5fdPuxTg5Q) or [Matrix](https://matrix.to/#/#hub:fyralabs.com) (most prefered), or email him at owen@fyralabs.com, to apply. - -Currently supported ARM Chromebook beta devices (if you have an unsupported device and are willing to use it for image testing, let us know!): - -All Kukui (mt8183) family Chromebooks: - -| Model name/number | Codename | -| ------------------------------------------ | -------- | -| Acer Chromebook 311 (C722/C722T) | willow | -| Acer Chromebook 311 (CB311-11H/CB311-11HT) | kenzo | -| Acer Chromebook 314 (CB314-2H/CB314-2HT) | cozmo | -| Acer Chromebook Spin 311 (CP311-3H) | juniper | -| Acer Chromebook Spin 311 (R722T) | pico | -| Asus Chromebook CZ1 | cerise | -| Asus Chromebook Detachable CM3 (CM3000) | kakadu | -| Asus Chromebook Detachable CZ1 | katsu | -| Asus Chromebook Flip CM3 (CM3200, MT8183) | damu | -| Asus Chromebook Flip CZ1 | stern | -| HP Chromebook 11a | kappa | -| HP Chromebook 11MK G9 EE | esche | -| HP Chromebook x360 11MK G3 EE | burnet | -| Lenovo 100e Chromebook 2nd Gen MTK 2 | makomo | -| Lenovo 10e Chromebook Tablet | kodama | -| Lenovo IdeaPad 3 Chromebook (MT8183) | fennel14 | -| Lenovo IdeaPad Duet Chromebook | krane | -| Lenovo IdeaPad Flex 3 Chromebook (MT8183) | fennel | - -Source: https://wiki.postmarketos.org/wiki/Google_Kukui_Chromebook_(google-kukui) - -All Asurada (mt8192) family Chromebooks: - -| Model name/number | Codename | -| ------------------------------------------ | -------- | -| Acer Chromebook 514 (CB514-2H / CB514-2HT) | spherion | -| ASUS Chromebook Flip CM3 (CM3200, MT8192) | hayato | - -Source: https://wiki.postmarketos.org/wiki/Google_Asurada_Chromebook_(google-asurada) - -All Trogdor (sc7180) family Chromebooks: - -| Model name/number | Codename | -| --------------------------------------------- | ------------- | -| Acer Chromebook 511 | limozeen | -| Acer Chromebook Spin 513 | lazor | -| Dynabook Chromebook C1 | pompom | -| HP Fortis 11 G9 Q Chromebook | kingoftown | -| Libera-Merdeka Chromebook C100/C110/C120/C150 | pazquel | -| Orbic Chromebook 4G | pazquel | -| Acer Chromebook Tab 510 | quackingstick | -| HP Chromebook X2 | coachz | -| Lenovo IdeaPad Duet 3 | wormdingler | -| Lenovo IdeaPad Duet 5 | homestar | - -Source: https://wiki.postmarketos.org/wiki/Google_Trogdor_Chromebook_(google-trogdor) - -Follow-up instructions, guide, and dedicated discord channel will be provided after acceptance. diff --git a/src/content/docs/en/chromebook/chromebook.mdx b/src/content/docs/en/chromebook/chromebook.mdx deleted file mode 100644 index a9c544e9..00000000 --- a/src/content/docs/en/chromebook/chromebook.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Getting Started with Chromebook Edition -description: "Introduction to Chromebook Edition" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -### Welcome to Ultramarine Chromebook Edition! - -With the help from out friends over at the [Chrultrabook Project](https://docs.chrultrabook.com/), we built a no-hassle way to boot full Ultramarine Linux onto your Chromebook! - -These pages will get you everything you need to know about what Ultramarine Chromebook is, how it works, how you can install it, and even how you can help us out. - -If you would like more info about Ultramarine Chromebook and it's release, take a peak at the [Release post](link) - -#### [Next Up: Getting Chromebook Edition →](getting) diff --git a/src/content/docs/en/chromebook/postinstall.mdx b/src/content/docs/en/chromebook/postinstall.mdx deleted file mode 100644 index 0f043330..00000000 --- a/src/content/docs/en/chromebook/postinstall.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Post-Installation -description: "Things to do after installing Ultramarine Chromebook Edition" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -#### [Next Up: ARM Chromebooks (Beta) →](armbeta) - -#### [← Back To: Installing to a Chromebook](preparing) diff --git a/src/content/docs/en/community/codeofconduct.mdx b/src/content/docs/en/community/codeofconduct.mdx deleted file mode 100644 index 37b44b31..00000000 --- a/src/content/docs/en/community/codeofconduct.mdx +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Code of Conduct -description: "Rules for interacting in the Ultramarine Community" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Summary - -Community members are expected to treat each other with the utmost respect, regardless of sexuality, gender, race, creed, nationality, or caste. - -Essentially, if you wouldn't say or do it to someone close to you, don't say or do it here. - -If you don't follow the rules, Fyra Labs reserves the right to ban you (temporarily or permanently) from participating in the project or community. - -If you need to report an incident, contact [**Cappy Ishihara.**](mailto:cappy@fyralabs.com) - -## 0. Employee Conduct - -Employees of Fyra Labs are held to a higher standard than outlined by this document. Employees should review the policy in their onboarding packet, or internal Outline instance for more details. - -## 1. Purpose - -A major goal of Fyra Labs is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). - -This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. - -We invite all those who participate in this community to help us create safe and positive experiences for everyone. - -## 2. Open [Source/Culture/Tech] Citizenship - -A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. - -Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. - -If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know. - -## 3. Expected Behavior - -The following behaviors are expected and requested of all community members: - -- Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. -- Exercise consideration and respect in your speech and actions. -- Attempt collaboration before conflict. -- Refrain from demeaning, discriminatory, or harassing behavior and speech. -- Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. -- Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations. - -## 4. Unacceptable Behavior - -The following behaviors are considered harassment and are unacceptable within our community: - -- Violence, threats of violence or violent language directed against another person. -- Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. -- Posting or displaying sexually explicit or violent material. -- Posting or threatening to post other people's personally identifying information ("doxing"). -- Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. -- Inappropriate photography or recording. -- Inappropriate physical contact. You should have someone's consent before touching them. -- Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. -- Deliberate intimidation, stalking or following (online or in person). -- Advocating for, or encouraging, any of the above behavior. -- Sustained disruption of community events, including talks and presentations. - -## 5. Weapons Policy - -No weapons will be allowed at Fyra Labs events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter. - -## 6. Consequences of Unacceptable Behavior - -Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. - -Anyone asked to stop unacceptable behavior is expected to comply immediately. - -If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). - -## 7. Reporting Guidelines - -If you are subject to or witness unacceptable behavior from employees of Fyra Labs, or have any other concerns, please use the [External Human Resources Form](https://airtable.com/shrCMi4X3Xp3ITMJz) - -If you are subject to or witness unacceptable behavior from other members of this community, or have any other concerns, you should email [Fyra Labs Contact](mailto:contact@fyralabs.com). - -Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. - -## 8. Addressing Grievances - -If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should contact us with a concise description of your grievance, contact information can be found below. Your grievance will be decided at the sole discretion of Fyra Labs. - -## 9. Scope - -We expect all community participants who are not employed by or independent contractors of Fyra Labs to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business. - -This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members. - -## 10. Contact Info - -If you feel further action is needed for an incident, contact one or both of these people: - -[**Owen Zimmerman, CBO**](mailto:owen@fyralabs.com) - -Owen is your first point of contact if an incident is not handled as it happens. - -[**Jaiden Riordan, COO**](mailto:jade@fyralabs.com) - -If your grievance requires additional attention, or you wish to appeal an earlier decision, please contact Jaiden. - -[**Legal Email**](mailto:legal@fyralabs.com) - -Legal concerns and documents should be sent to this address, we will not accept legal documents in any way except to this address or by US Mail. - -## 11. License and Attribution - -The Code of Conduct for Fyra Labs Projects is derived from the Citizen Code of Conduct distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). - -Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). - -#### [Next Up: Ultramarine Linux System Requirements →](/en/setup/requirements) - -#### [← Back To: Join the Community](/en/community/community) diff --git a/src/content/docs/en/community/community.mdx b/src/content/docs/en/community/community.mdx deleted file mode 100644 index 84b6a01c..00000000 --- a/src/content/docs/en/community/community.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Join the Community! -description: "Community Information" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Ultramarine Linux has an active community of users, tinkerers, developers, and everyone in between. - -Our community (like our code) is open to everyone. Here's some of the official spaces: - -### Discord - -The Fyra Labs Discord is for all of our projects. We have lively discussions and build great things together. You can get support as a user and as a contributor here. - -[Join the Fyra Labs Chat →](https://fyralabs.com/discord) - -### Matrix - - -We're closing our Matrix rooms due to a myriad of issues. [Learn more here →](https://blog.fyralabs.com/dropping-matrix/) - - - -### Socials - -Ultramarine Linux is on the Fediverse, Bluesky, and Twitter. These accounts will include important updates about features, bugs, and downtime. - -[Follow Ultramarine on the Fediverse →](https://fedi.fyralabs.com/@ultramarine) - -[Follow Ultramarine on Bluesky →](https://bsky.app/profile/did:plc:fnur6qx57ynsgg4x6psfrj7i) - -[Follow Ultramarine on Twitter →](https://twitter.com/UltramarineProj) - -### Reddit - -The Ultramarine Subreddit is a more asynchronous way to interact with the community. It offers the same great things in a more reddit-y way. - -[Join the Ultramarine Reddit →](https://reddit.com/r/ultramarine) - -## Our Philosophy - -We believe that the Fyra Community is larger than just Fyra (the organization). Part of this is interacting with the rest of our community. We feel that this allows us to better judge the desires and needs of our users (and we love talking to all of you). - -#### [Next Up: Code of Conduct →](/en/community/codeofconduct) - -#### [← Back To: Welcome](/en/welcome) diff --git a/src/content/docs/en/contributing/hacking.mdx b/src/content/docs/en/contributing/hacking.mdx deleted file mode 100644 index ebb5ef41..00000000 --- a/src/content/docs/en/contributing/hacking.mdx +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Code Contributions -description: "A step-by-step guide to hacking on Ultramarine Linux components" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -One of the most noticeable contributions you can make is code contributions. Whether it's building a new feature or fixing a bug, contributing code is a great way to make a noticeable difference to the operating system itself. - -This page serves as a step-by-step guide to hacking on Ultramarine Linux components. - -## Find Something to Work On - -There's no shortage of things to work on in Ultramarine Linux. From a feature you think would be cool, to something on our issue tracker, to an entirely new project in the Ultramarine ecosystem. - -For example, Nvidia drivers, this is an issue with most Linux distributions that Ultramarine solves. - -This problem can be anything from a tiny papercut to a massive structural change. There's no such thing as a bad idea. If you're having trouble finding something to work on, [ask around in our community](/en/community/community), we're always happy to help. - -## Gather Information - -If you're fixing an issue, what's the cause? If you're building a feature, what's the goal? What's the best way to implement it? - -A great place to gather information is within our [community](/en/community/community), simply ask and see what users, contributors, and developers think. - -## Getting the Ultramarine Toolchain - -If you're contributing to an existing component, simply get the tools needed for it (we're slowly adding a list to our repositories.) - -If you're building a completely new feature, we recommend [Rust](https://www.rust-lang.org/) or [Go](https://go.dev) for features without a GUI. - -If you're building with a GUI, we recommend using [libhelium](https://github.com/tau-os/libhelium), you can find more information here. - -Get to work! Make a fork of a project and tinker away! - - -
-**Big Changes** - -For especially big changes, or, major features, ask for help. We'll help you refine and build your idea. - -
-
- -## Writing the Code - -Write the code! Make sure to continuously test your solution as you go. This will help you catch bugs early and make sure your changes are on the right track. It's also important to document your code when you're done, as this will help other contributors understand your changes. - -Remember, you're not alone, no problem is too big or too small to ask for help. If you have a question or want to work with another contributor, ask in our [community](/en/community/community). - -## Getting into Ultramarine - -After you've tested, it's time to contribute. Simply open a pull request to the appropriate repository and we'll review it. Make sure your pull request is descriptive, outlining the motivation, scope, and implementation of your changes. - -There's three possible outcomes - -- **Approval** - -We approve your solution, be proud as very few PRs get merged without changes. - -- **Request for Changes** - -Something needs to change! Fix a problem or two and you're golden! Most PRs go through this process. - -- **Denial** - -This doesn't happen very often, sometimes a feature just doesn't align with our plan. It's more likely that we'll simply ask you for changes. - -#### [Next Up: Mirroring →](/en/contributing/mirroring) - -#### [← Back To: Contributing](/en/contributing/contributorguide) diff --git a/src/content/docs/en/contributing/mirroring.mdx b/src/content/docs/en/contributing/mirroring.mdx deleted file mode 100644 index 9ed3cb75..00000000 --- a/src/content/docs/en/contributing/mirroring.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Mirroring -description: "A guide of how you can mirror Ultramarine Linux, making downloads faster for everyone" ---- - -Mirroring allows you to contribute by hosting packages closer to users, making downloads faster, more reliable, and reducing load on Fyra Labs' infrastructure. - -When users update or install packages, they'll hit our mirror director service, [Tetsudou](https://github.com/terrapkg/tetsudou), which will calculate an optimal set of mirrors to download updates from. - -## Requirements - -- A publicly accessible server with good uptime -- A domain name -- A good internet connection (1Gbps or more) -- A moderate amount of disk space (100GB or more) -- Experience with server administration - -## Mirroring using Terra Mirror Scripts - -We provide a mirror script (and accessory Docker image) to help you get started. Documentation is available on [GitHub](https://github.com/terrapkg/mirror-script). - -## Mirroring using rsync - -You can also mirror the repositories using the `rsync-ssl` utility. - -```sh -rsync-ssl -avPzr --delete rsync://repos.fyralabs.com/repo/ /path/to/your/mirror -``` - -## Running on a schedule - -Regardless of whether you're using the mirror script or directly calling rsync, you'll need to rerun to keep your mirror up-to-date. We recommend syncing every 5 minutes. - -This is required if you want to submit your mirror to the public list. We will remove mirrors that are not kept up-to-date. - -You can use any method for this, but we recommend systemd timers. A good guide on how to set up a systemd timer can be found [here](https://opensource.com/article/20/7/systemd-timers). - -## Serving your mirror - -All mirrors must be served over HTTPS. You can use a web server of your choosing to serve your mirror, we recommend using [Static Web Server](https://static-web-server.net/) or [Caddy](https://caddyserver.com/). - -## Submitting your mirror - -Once you have your mirror set up, you can submit it to the public mirror list by opening a pull request on the [Tetsudou repository](https://github.com/terrapkg/tetsudou). - -The public mirror configuration is stored in the `repos/` directory. Each JSON file represents a repository that can be mirrored. You can add your mirror in the appropriate JSON files. -If you're mirroring all repositories (the default), you ned to add your mirror to all JSON files. - -Here is an example of an entry: - -```json -{ - "url": "repos.fyralabs.com/terra43", - "asn": 24940, - "continent": "EU", - "country": "DE", - "lat": 50.5597, - "lon": 6.7705, - "protocols": ["https"] -} -``` - -And here is a table of what each field means: -| Field | Meaning | Example | -| ------- | ------------ | ------- | -| url | The URL of your mirror, do not include the protocol. | `repos.fyralabs.com/terra43` | -| asn | Your Autonomous System Number (ASN). | `24940` | -| continent | The shortcode of the continent your mirror is located on. | `EU` | -| country | The shortcode of the country your mirror is located in. | `DE` | -| lat | The latitude of your mirror. | `50.5597` | -| lon | The longitude of your mirror. | `6.7705` | -| protocols | The protocols your mirror supports, only `https` is supported. | `["https"]` | - -### Notes - -- You can use a service like [ipinfo.io](https://ipinfo.io/) to get your ASN, continent, country, latitute, and longitude from your server's IP address. -- The location doesn't have to be exact, but it should be close to your actual location. - -#### [Next Up: Ultramarine Anywhere →](/en/anywhere/anywhere) - -#### [← Back To: Code Contributions](/en/contributing/hacking) diff --git a/src/content/docs/en/linux/filesystem.mdx b/src/content/docs/en/linux/filesystem.mdx deleted file mode 100644 index a34e445e..00000000 --- a/src/content/docs/en/linux/filesystem.mdx +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: The File System -description: "An overview of the file system in Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -There are a few notable differences in how files work on Linux when compared to Windows or macOS. - -The most noticeable difference is case sensitivity. Windows and macOS are case-insensitive, meaning that `FOLDER` and `Folder` are the same folder. Linux on the other hand is case-sensitive, so `FOLDER` and `Folder` are two different folders. - -In Linux, and more widely, UNIX, everything is a file. Unlike Windows which has other object types to represent physical devices. - -## The File System Hierarchy - -Linux has a standardized file system hierarchy called the [*Filesystem Hierarchy Standard*](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) (FHS). The FHS is contained within `/` (called root.) Root doesn't only contain normal files, but also physical devices, virtual devices, and various other special files that control the system itself. - -It should also be noted that Linux uses a forward slash (`/`) to represent going deeper in a directory, unlike Windows which uses a backslash (`\`) - -The directory structure is as follows: - -| Directory | Description | -| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| / | The root directory with the all the other directories and files. This is as far back as you can go | -| /bin | Executables and command binares required for a functioning system. Most applications installed from RPM end up here. | -| /boot | The bootloader and files used during early boot process. May usually be in a seperate partition. | -| /dev | Special device files for various purposes (`/dev/sda` for a drive, `/dev/null` for blank data, `/dev/random` for pseudo-random data, `/dev/tty` for terminal sessions, etc). | -| /etc | System-wide settings and configuration files. | -| /home | User files. This is where your stuff lives! | -| /lib | Libraries required for executables in `/bin` to function. May be also named `/lib`. | -| /media | Mount points for when the system mounts removable media, such as USB drives, SD cards, etc. | -| /mnt | Temporary mount points for media. Usually used when manually mounting a drive. | -| /opt | Optional packages that may be installed by the user. Most packages don't actually install here. | -| /proc | Process data and kernel information for inter-process communication managed by the kernel. | -| /root | User data for the root user. Don't confuse this with `/` (root) | -| /sbin | Executables for system tasks. | -| /srv | Shared service data used by server processes, such as web servers and NAS/File servers. | -| /tmp | Temporary data. | -| /usr | Shared application data used by all users. | -| /var | Variable data used by system processes. | - -## The Home Directory - -The home folder is the place where your personal data, and most of your apps are stored. It's a folder located in the `/home` directory named after your username. It is similar to the `Users` folder in Windows. - -In Linux, the home folder is used more than in Windows, as it stores all user-specific data, settings, and the majority of your apps (Flatpaks). The system folders are only used when making system-wide changes or installing applications from DNF or an RPM File. - -## Virtual Memory - -[Virtual memory](https://en.wikipedia.org/wiki/Virtual_memory) is a feature in Linux and other operating systems that allows the system to use a portion of the disk as RAM. This is useful when the system runs out of RAM and needs to use the disk as a temporary storage for data. - -Swap comes with many issues, for example, it can reduce the lifespan of lower-cost SSDs, and is too slow on hard drives. To combat this Ultramarine uses memory compression [(zram specifically)](https://en.wikipedia.org/wiki/Zram). - -By default, we compress to .5x of your physical memory. (e.g. 16gb physical memory=8gb zram) - -Although this may sound magical, it does come at the cost of your CPU working a little bit harder. Luckily this is not very noticeable on modern computers. - -[Learn more about zram →](https://en.wikipedia.org/wiki/Zram) - -## File system formats - -Ultramarine Linux supports a wide variety of file systems, and can be configured to use any of them during installation. - -It currently supports most file systems that are supported by the Linux kernel, including: - -- ext2, ext3, ext4 -- Btrfs -- XFS -- NTFS -- FAT32 - -And extra file system drivers can be installed, such as: - -- ZFS - -Ultramarine's installer is configured to use Btrfs by default. Btrfs is a modern filesystem with snapshots, virtual volumes, journaling, error correction and compression. - -By default, the installer will use all the available space on the disk. 500mb is dedicated to the EFI boot partition (2mb on BIOS systems, 16mb on x86 Chromebooks, and 64mb on ARM Chromebooks), 1gb for /boot, a Btrfs volume uses the rest of the space on the selected disks. -It then creates 2 subvolumes, one for the root directory `/`, and one for the home directory `/home`, which will share the same space but have different filesystem settings. - -### Remote Filesystems - -Ultramarine Linux can also mount remote file systems from a remote server or NAS, using the NFS, SFTP, SMB, and WebDAV protocols. - -#### [Next Up: Device Files →](../linux/devicefiles) - -#### [← Back To: What is Linux?](../linux/overview) diff --git a/src/content/docs/en/linux/permissions.mdx b/src/content/docs/en/linux/permissions.mdx deleted file mode 100644 index 4c67df00..00000000 --- a/src/content/docs/en/linux/permissions.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Permissions -description: "How permissions work on Linux." ---- - -On Linux, permissions are used to determine who can read, write, and execute files, or do certain actions. - -Users are separated into various groups with different IDs, and each file or action can be assigned a permission level. - -A user can be assigned a permission level that is higher than the permission level of the group they are in. And users in a group can do certain things that other users cannot. - -However, users in UNIX-like systems are more akin to a principal, as these "users" may not actually be a person, but a program. - -Files are owned by a user and can be assigned a permission level. The user who owns the file can modify the file and modify the permissions of the file. - -Permission levels are displayed in octal and are represented by several digits. The first digit is the owner, the second is the group, and the third is the other users. Permissions range from 0 to 7, with 0 being no access, and 7 being full access. - -## The Root User - -The root user (or the superuser) is a special user that grants access to all files and actions. It is akin to the Administrator on Windows. - -To execute commands as a superuser, use the `sudo` command, followed by the command you want to execute. - -```bash -sudo dnf install vim # This will install vim as the root user -``` - -#### [Next Up: Software and Package Management →](/en/linux/software) - -#### [← Back To: Device Files](/en/linux/devicefiles) diff --git a/src/content/docs/en/linux/securityprivacy.mdx b/src/content/docs/en/linux/securityprivacy.mdx deleted file mode 100644 index 56cd977b..00000000 --- a/src/content/docs/en/linux/securityprivacy.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Security and Privacy -description: "How Ultramarine keeps you safe" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Mandatory Access Controls - -Ultramarine uses SELinux, a software that implements Mandatory Access Controls. This prevents applications (and users) from accessing files they shouldn't be able to. - -Users are usually required to have root access to modify system files, and even then, SELinux may prevent you from doing so unless you have set the correct contexts for the files. - -By default, SELinux is in "Enforcing" mode, which means that it will prevent you (and others) from modifying system files unless you have the correct permissions. This shouldn't cause any issues. If you would like to disable SELinux you can run `sudo setenforce 0`. We don't recommend this as it makes your system less secure. - -[Learn more about SELinux →](https://www.redhat.com/en/topics/linux/what-is-selinux) - -[Learn more about Permissions →](/en/linux/permissions) - -## Privilege Control - -Ultramarine includes polkit, a tool used to manage privilege elevation. If you've ever gotten a graphical password prompt on your system, you've interacted with polkit. - - - -Use the `pkexec` command instead of `sudo` to give polkit a try. - - - -polkit also manages communication between privileged and non privileged applications. - -## Disk Encryption - -Ultramarine offers the option to encrypt your entire disk at install time. This protects your data from physical attacks and theft. - -## Sandboxing - -When you install an app as a Flatpak, it's contained within a sandbox, meaning it can't see what other apps are doing, and can't see files it isn't allowed to. - -## Restricted Memory Access - -Ultramarine and Fedora restrict access to physical memory. This should prevent most memory injection attacks. - -#### [Next Up: Ultramarine Release Notes, Ultramarine 42 Upgrades →](/en/release/42-upgrades) - -#### [← Back To: SSH](/en/linux/ssh) diff --git a/src/content/docs/en/linux/shell.mdx b/src/content/docs/en/linux/shell.mdx deleted file mode 100644 index f7408978..00000000 --- a/src/content/docs/en/linux/shell.mdx +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: The Shell -description: "How the shell works in Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -The shell is a command line interface to the operating system. It is a program that allows you to directly execute commands and interact on deeper level. - -You may be familiar with bash from other Linux distributions. Ultramarine uses the [zsh](https://en.wikipedia.org/wiki/Z_shell) instead of bash. We also use the [Starship Prompt](https://starship.rs/) to provide additional convenience features like displaying the current git branch. - - -
- To learn more about shell scripting, you can watch this Bash introduction - video by Fireship here: - - NOTE: The Z shell is mostly compatible with Bash, so most of the knowledge you - will learn will be mostly applicable in Ultramarine Linux. -
-
- -## Interacting with the Shell - -To start using the shell, open the Terminal app. - -![The GNOME Terminal](/assets/terminal.png) - -You will be greeted with a prompt, simply type in the command you want to execute, and press `Enter⏎`. - -To change directories, type `cd` followed by the path you want to change to. - -```zsh -cd /home/user/Documents -``` - -To list the contents of a directory, type `ls` followed by the path of the directory of which you want to list the contents of. - -```zsh -ls /home/user/Documents -``` - -The directory path is an optional argument. Running `ls` with no arguments will print the contents of the current working directory (the folder you `cd`ed into). - -The `ls` command, especially, has a lot of useful flags (i.e. execute `ls -a`, `-a` being the flag). Below is a table of the most important flags for `ls`. - -| Flag | Modification | -| :--- | :---------------------------------------------------------------------------- | -| `-a` | List all files in a directory, including hidden files which begin with a `.`. | -| `-d` | List specified directories without listing their content (try `ls -d /`). | -| `-t` | Sort the output in the order of modification time; latest first. | -| `-r` | Sort output in reverse order. | -| `-l` | List one file per line. Also display information about the files listed. | - -The output of `ls -l` includes columns of information about each file in the following order: file type, permissions, number of symlinks, file owner, file size, date of last modification, and file name. - -``` -total 4 -drwxr-xr-x 2 bob bob 4096 Jan 1 13:00 dir --rw-r--r-- 1 bob bob 0 Jan 1 12:00 file --rwxrwxrwx 1 ann ann 1337 Jan 1 11:00 file2 -``` - -Symbolic links (symlinks) are, as the name would imply, links between files. Changes to files are synced between symlinks. To create a symlink between two files, type `ln`, followed by the `-s` flag and two arguments: one being the original file, and the other being the path to the new symlink. - -```zsh -ln -s file newfile -``` - -From now on, when `file` is changed, the change will also be applied to the linked `newfile`. - -To read a file to the terminal, type `cat` followed by the path to the file. - -```zsh -cat /home/user/Documents/README.md -``` - -To delete a file, type `rm` followed by the path to the file. - -```zsh -rm /home/user/Documents/README.md -``` - -To delete a full directory, recursively delete it by typing `rm -r` followed by the path to the directory. - -```zsh -rm -r /home/user/Documents -``` - - - Most users will usually execute `rm -rf` instead of `rm -r`. The `-f` flag is - used to force the deletion of a file or directory. - - -To create a new file, type `touch` followed by the path to the file. - -```zsh -touch /home/user/Documents/newfile.txt -``` - -To create a new directory, type `mkdir` followed by the path to the directory. - -```zsh -mkdir /home/user/Documents/newdir -``` - - - To create a new directory inside of another new directory (i.e. - `.../newdir/newdir2`), execute `mkdir` with the `-p` flag. - - -To move or rename a file or directory, type `mv` followed by the path to the file or directory, and then the new path. - -```zsh -mv /home/user/Documents/newfile.txt /home/user/Documents/newfile2.txt -``` - -To copy a file and optionally rename the copy, type `cp` followed by the path of the file, and then the path to the new file. - -```zsh -cp file newfile -``` - - - To copy a directory, type `cp` with the `-r` (recursive) flag. - - -For both the `cp` and `mv` commands, you may move multiple files into a directory at once. The target directory must exist. - -```zsh -mv file file2 dir dir2 /path/to/target/dir/ -cp -r file file2 dir dir2 /path/to/target/dir/ -``` - -To know more about each command, open the manual by typing `man` followed by what you want to learn about - -``` -man sudo -``` - -This will open `less`, an app that allows you to read through long lines of text as a scrollable page. - -To exit `less` press `q`. - -Most commands will also have a `-h` or `--help` flag, which tells you more about the command. - -## The Pipeline - -Linux offers a way for inter-process communication through pipes. - -The pipeline you to transfer data from one process to another, and is used to execute commands in parallel. - -```zsh -echo "Hello World" | wc -w -``` - -This calls the `wc` (word count) command, which counts the number of words in the text. Then pipes the output of `echo` to it, which then outputs the number of words. This is a very simple example of a pipeline. - -A named pipe is created by using `>` instead of `|`. - -```zsh -echo "Hello World" > pipe.txt -``` - -This pipes the output of `echo` to the named pipe `pipe.txt`, which is now a file. - -## Executing a File - -To execute a program, you must first make sure that the file is executable. This is done by using the `chmod` command. - -```bash -chmod +x /path/to/exec -``` - -Then you can execute the file by directly pointing to it. - -```bash -/path/to/exec -``` - -For files in your current folder, you must use `./` before the file name. - -```bash -./exec -``` - - - Executables are often moved into a directories listed in the `$PATH` variable - (run `echo $PATH`). The filenames of executables in `$PATH` can be executed as - commands (i.e. `custom-command` will run `/usr/local/bin/custom-command`) - - -#### [Next Up: SSH →](/en/linux/ssh) - -#### [← Back To: Software and Package Management](/en/linux/software) diff --git a/src/content/docs/en/linux/software.mdx b/src/content/docs/en/linux/software.mdx deleted file mode 100644 index ee4521d4..00000000 --- a/src/content/docs/en/linux/software.mdx +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Software and Package Management -description: "How to manage software on Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -There are many different ways to install software on Linux. - -## The Package Manager - -Unlike Windows, most software for Ultramarine is stored in online collections of software called repositories. You can browse and install software (packages) from these repositories using something called a package manager. - -### Flatpaks - -Flatpak is the primary package manager for regular apps. It installs applications in a sandbox, keeping them separate from anything they don't need to access. - -Flatpaks can be installed from **Software** on Budgie, GNOME, and Xfce, and **Discover** on Plasma. - -You can browse the available software in these app stores, or on the [Flathub website](https://flathub.org/). - -Most desktop apps should be installed as a Flatpak, but in some cases, like with Steam, IDEs, or other apps that require access to the system, they may not work. The following sections will help with software in other formats. - -### Software Downloaded from the Internet - -Sometimes, the software you need may come as a package file downloaded from the internet. - -#### RPM Packages - -To install RPMs simply double-click the downloaded file in the file manager. - -#### AppImages - -1. Install AppImage Launcher from **Software** or **Discover**. - -2. Double-click the AppImage file and you're done! - - - -AppImages are not automatically updated and may have issues communicating with other apps and the system. We recommend looking for a Flatpak or RPM instead. - - - -### Snap - -Snap is a package manager made by Canonical. It contains a large amount of proprietary applications that you may not be able to find elsewhere. - - - -Snap may cause your system to run noticeably slower! - - - -To get started, install Snap. - -```bash -sudo dnf install snapd -``` - -Then, verify snap is working - -```bash -sudo snap install helloworld -helloworld -``` - - - -Snap packages can load slowly and may not work on editions other than GNOME. We recommend avoiding Snaps. - - - -### DNF - -Ultramarine uses the DNF package manager. While this package manager primarily handles system software (like the kernel, and your desktop environment) it can install user apps as well. - -```bash -sudo dnf install steam # Install Steam -``` - -You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf groupinstall` command. - -```bash -sudo dnf groupinstall "Audio Production" # installs multiple packages at once, in this case a suite of music/audio production tools -``` - -For a full list of available groups, run `sudo dnf group list` - -#### [Next Up: The Shell →](/en/linux/shell) - -#### [← Back To: Permissions](/en/linux/permissions) diff --git a/src/content/docs/en/linux/ssh.mdx b/src/content/docs/en/linux/ssh.mdx deleted file mode 100644 index 7a86c274..00000000 --- a/src/content/docs/en/linux/ssh.mdx +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: SSH Secure Shell -description: "An overview of the SSH utility." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Secure Shell ("SSH") is a tool used to access a shell on a remote device. - -## SSH overview - -SSH uses a client/server model where one computer acts as an SSH server[^1] and allows other computers to connect. - -![Example SSH Client and Server](/assets/ssh.png) - -## Connecting to an SSH Server - -To access a device remotely, the `ssh` command is run from [the shell](/en/linux/shell), mostly used with this format: - -```zsh -ssh [username@] -``` - -If you don't specify a username then SSH will attempt to connect you using the username with which you are logged in. Here are some examples: - -- `ssh myuser@myserver.com` - - This will attempt to connect to the server at myserver.com using the username myuser -- `ssh myuser@192.168.1.2` - - This is just like the example above except you can also specify an IP address instead of a hostname -- `ssh myserver.com` - - This will attempt to connect to the SSH server at myserver.com using your current username - -When using any of the above commands, once connected to the remote server you'll be prompted for a password. - -## Running Your Own SSH Server - -Start by installing the SSH server: - -```zsh -sudo dnf install openssh-server -``` - -Then start the server using: - -```zsh -systemctl enable --now sshd -``` -You will be prompted to enter your password, enter it. - -Once the above command is run, your machine will begin listening for incoming connections on port 22. You can verify that the SSH server application started correctly by using the command - -```zsh -systemctl status sshd -``` - -You should see output similar to this: - -```zsh -● sshd.service - OpenSSH server daemon - Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled) - Drop-In: /usr/lib/systemd/system/service.d - └─10-timeout-abort.conf - Active: active (running) since Sun 2024-04-07 14:00:20 EDT; 44min ago - Docs: man:sshd(8) - man:sshd_config(5) - Main PID: 1065 (sshd) - Tasks: 1 (limit: 4396) - Memory: 156.0K - CPU: 50ms - CGroup: /system.slice/sshd.service - └─1065 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups" - -Apr 07 14:00:20 ultramarine systemd[1]: Starting sshd.service - OpenSSH server daemon... -Apr 07 14:00:20 ultramarine sshd[1065]: Server listening on 0.0.0.0 port 22. -Apr 07 14:00:20 ultramarine sshd[1065]: Server listening on :: port 22. -Apr 07 14:00:20 ultramarine systemd[1]: Started sshd.service - OpenSSH server daemon. -``` - -Check for the field that says `Active: active (running)` to ensure that the SSH server is listening for incoming connections. - -If you'd like to stop the SSH server, you can do so with - -```zsh -sudo systemctl stop sshd -``` - -You should see output similar to this: - -```zsh - -○ sshd.service - OpenSSH server daemon - Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled) - Drop-In: /usr/lib/systemd/system/service.d - └─10-timeout-abort.conf - Active: inactive (dead) since Sun 2024-04-07 14:50:24 EDT; 3s ago - Duration: 50min 4.206s - Docs: man:sshd(8) - man:sshd_config(5) - Process: 1065 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS) - Main PID: 1065 (code=exited, status=0/SUCCESS) - CPU: 58ms - -Apr 07 14:50:24 ultramarine systemd[1]: Stopping sshd.service - OpenSSH server daemon... -Apr 07 14:50:24 ultramarine sshd[1065]: Received signal 15; terminating. -Apr 07 14:50:24 ultramarine systemd[1]: sshd.service: Deactivated successfully. -Apr 07 14:50:24 ultramarine systemd[1]: Stopped sshd.service - OpenSSH server daemon. -``` - -#### [← Back To: Software and Package Management](/en/linux/software) - -[^1]### A Note about the Word "Server" -It's common to hear the word "server" used but not understand exactly what is meant. Here are a couple examples of how "server" can be used: - -- It can refer to a physical machine somewhere - - Ex: Our email server lost power over the weekend. -- It can refer to a specific _application_ running on one machine (or even a number of machines across the world!) - - Ex: The SSH server is up so that users can connect. - -In this guide we'll try to make it clear to which we're referring. - -#### [Next Up: Security and Privacy →](/en/linux/securityprivacy) - -#### [← Back To: The Shell](/en/linux/shell) diff --git a/src/content/docs/en/release/41-upgrades.mdx b/src/content/docs/en/release/41-upgrades.mdx deleted file mode 100644 index 1d265d83..00000000 --- a/src/content/docs/en/release/41-upgrades.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Early Upgrades for Ultramarine 41 -description: "A temporary notice for the 40 to 41 upgrade path." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -We're proud to announce that upgrades to Ultramarine Linux 41 (Cyberia) are ready right now in your edition's app store! - - - In Ultramarine 40, the `dnf` command uses dnf5, which may break certain - release upgrades. Upgrade graphically, or use `dnf4`. - - - - Raspberry Pi users should wait to upgrade, we will have more information for - you soon. - - -Ultramarine 41 comes with the usual desktop and under-the-hood changes for our existing users. In addition, Flagship and Xfce Edition are switching to Slick greeter from LightDM-GTK, this will happen automatically when you upgrade. - -This release also comes with umcli, more information to come! - -We know this seems lackluster, but a lot of our changes are for new installs and hardware enablement this time around, so stay tuned! - -## Upgrading - -Unlike previous releases, everything is now handled in your edition's app store. If you're on Flagship, GNOME, or Xfce, it's called Software. On Plasma, it's called Discover. - -You may need to update your copy of Ultramarine 40 before the upgrade will become available. - -## Command Line - -In case the above doesn't work, you can always upgrade through the command line, using `dnf4 system-upgrade`. - -Run the following and follow the prompts: - -```sh -sudo dnf4 upgrade --refresh -sudo dnf4 install dnf-plugin-system-upgrade -sudo dnf4 system-upgrade download --releasever=41 -sudo dnf4 system-upgrade reboot -``` - -## Wallpaper Contest - -Congratulations to im.j for submitting the team's favorite wallpaper, and winning the community wallpaper contest with 'Paradise'! This wallpaper will be available after you upgrade. - -![](/assets/paradise.png) - -Left: Light Mode | Right: Dark Mode - -If your favourite submission didn't win, don't fret, they'll be available in an extras package soon! - -## Getting Support - -If you need any help please reach out in [one of our chats.](/en/community/community/) diff --git a/src/content/docs/en/release/42-upgrades.mdx b/src/content/docs/en/release/42-upgrades.mdx deleted file mode 100644 index dce818d4..00000000 --- a/src/content/docs/en/release/42-upgrades.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Upgrades for Ultramarine 42 -description: "A temporary notice for the 41 to 42 upgrade path." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -We're proud to announce that upgrades to Ultramarine Linux 42 (Heart of Gold) are ready right now in your edition's app store! - -Ultramarine 42 comes with the usual desktop and under-the-hood changes for our existing users. - -## Upgrading - -Per usual, everything is handled in your edition's app store. If you're on Flagship, GNOME, or Xfce, it's called Software. On Plasma, it's called Discover. - -You may need to update your copy of Ultramarine 41 before the upgrade will become available. - -## Command Line - -In case the above doesn't work, you can always upgrade through the command line, using `dnf system-upgrade`. - -Run the following and follow the prompts: - -```sh -sudo dnf upgrade --refresh -sudo dnf install dnf-plugin-system-upgrade -sudo dnf system-upgrade download --releasever=42 -sudo dnf offline reboot -``` - -### Upgrading Ultramarine WSL System Versions - -WSL works a bit differently, to upgrade Ultramarine 41 WSL, run the following and follow the prompts: - -```sh -sudo dnf upgrade --refresh -sudo dnf distro-sync --releasever=42 -``` - -## Getting Support - -If you need any help please reach out in [one of our chats.](/en/community/community/) - -#### [Next Up: Errata →](/en/release/errata) - -#### [← Back To: Linux Concepts, Security and Privacy →](/en/linux/securityprivacy) diff --git a/src/content/docs/en/release/upgrade-to-ultramarine-40.mdx b/src/content/docs/en/release/upgrade-to-ultramarine-40.mdx deleted file mode 100644 index 5bad807c..00000000 --- a/src/content/docs/en/release/upgrade-to-ultramarine-40.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Upgrade to Ultramarine 40 -description: "A temporary notice for the 39 to 40 upgrade path." ---- - -This page is a temporary notice for upgrading Ultramarine 39 to 40. -For this release cycle, we've decided to release an upgrade path before the full distribution release. -This should let existing users enjoy the new set of packages in 40 sooner. -A full blog post detailing changes will be published for the full distribution release. - -## Flagship, GNOME, and KDE Editions - -You can use the editon's graphical app store to upgrade your system to 40. -On Flagship and GNOME, this will be GNOME Software, while on KDE, this will be Plasma Discover. - -You might need to update your system normally before the upgrade to 40 shows up in the app store. - -## Pantheon Edition - -The Pantheon upgrade path isn't ready yet. -While all of the required packages are in the UM and Terra repositories, the Pantheon desktop environment is broken for a variety of reasons. -We are currently working with upstream and other partners to resolve this, but it's possible that Pantheon may be skipped, deprecated, or deferred until mid-cycle. -If you are interested in contributing to Ultramarine Pantheon, please join [our chats](en/community/community) and let us know! - -## Command line - -In case the above doesn't work, you can always upgrade through the command line, using `dnf system-upgrade`. - -Run the following and follow the prompts: - -```sh -sudo dnf upgrade --refresh -sudo dnf install dnf-plugin-system-upgrade -sudo dnf system-upgrade download --releasever=40 -sudo dnf system-upgrade reboot -``` diff --git a/src/content/docs/en/setup/bioskeys.mdx b/src/content/docs/en/setup/bioskeys.mdx deleted file mode 100644 index b42540a0..00000000 --- a/src/content/docs/en/setup/bioskeys.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: BIOS Keys -description: "How to enter the BIOS or Boot Menu on various Computers" ---- - -These are the keys (or combination of keys) used to enter the boot menu or UEFI/BIOS settings on different computers. - -| Manufacturer | UEFI/BIOS | Boot Menu | Notes | -| ---------------------- | ------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Acer | F2 or Del | Esc, F9, F12 | | -| ASRock | Del, F2 | F11 | | -| ASUS | F2 or Del | Esc, F8 | | -| Chromebooks (UEFI ROM) | Esc | - | Requires [mrchromebox UEFI Full ROM] firmware (coreboot) to be flashed. Boot menu can be accessed from the UEFI menu. | -| Dell | F2 | F12 | | -| Dell (Alienware) | F2 | F12 | | -| Dell (Tablets) | Volume Down+Power | Volume Up+Power | | -| ECS | Del | F7 | | -| EVGA | Del | F7 | | -| Gateway | Del, F1, F2 | F12 | | -| Gigabyte | Del, F2 | F12 | This includes Aorus motherboards | -| GMKtec | Esc, Del | F7 | | -| HP | Esc, F10 | Esc, F9 | | -| HP (Compaq) | F10 | F9 | | -| Huawei | F2 | F12 | | -| Intel | F2 | F10 | | -| Lenovo (Desktops) | F1 | F12 | | -| Lenovo (Laptops) | F1+Enter, F2 (or Fn+F2), Novo Button | F12, Novo Button | | -| Lenovo (ThinkPad) | F1, Startup Interrupt Menu | F12, Startup Interrupt Menu | You can (and may need to) access the BIOS/UEFI and boot menus from the Startup Interrupt Menu, which is accessed by pressing Enter (or ThinkVantage when present). | -| Macs (Intel) | - | Hold Option (⌥) or Alt | You can change NVRAM variables inside the OS. If you know what you're doing, power to you. | -| MSI | Del | F11 | | -| Microsoft (Surface) | Hold Volume Up | - | There is a boot menu available in the UEFI Settings. Volume Up should be held after a reboot is initiated. | -| Origin PC | F2 | F2 | | -| Panasonic (Toughbook) | F2 | Del | There is a boot menu in the 'exit' screen of the bios. | -| Panasonic (Let's Note) | F2, Del | Enter | | -| Razer | Del, F1 | Esc, F12 | | -| Samsung | F2 | F10 | | -| Sony (Vaio) | F1, F2, F3, Assist | Esc, F10, F11, Assist | Use the Assist Button when the computer is fully off, not in the process of booting. | -| Supermicro | Del, F4, F11 | F11 | | -| System76 | F2 | F7 | | -| Toshiba | F2 | F12 | | -| Sharp (Dynabook) | F2 | F12 | Some Toshibas will be branded as Dynabook, this is because Sharp recently purchased the brand. The BIOS keys are the same. | -| TUXEDO | Esc, F2 | F7 | | -| Vaio | F3, F4 | F11 | | -| Zotac | Del | F8 | | - -#### [Next Up: Installation →](/en/setup/installation) - -#### [← Back To: Getting Ultramarine](/en/setup/getting) - -[mrchromebox UEFI Full ROM]: https://docs.chrultrabook.com/docs/firmware/about.html#rw-legacy diff --git a/src/content/docs/en/setup/broadcom-realtek.mdx b/src/content/docs/en/setup/broadcom-realtek.mdx deleted file mode 100644 index 5f7dc33e..00000000 --- a/src/content/docs/en/setup/broadcom-realtek.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Broadcom and Realtek Networking -description: "Information about Broadcom and Realtek Networking on Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Some computers with specific Broadcom or Realtek chipsets may require additional drivers to be installed. These should be automatically installed if you were connected to the internet during installation. - -We can't include these by default as they may break other WiFi devices. - -You'll need to connect to the internet, you can do this via Ethernet or USB tethering from your phone. iPhones will automatically tether over USB when connected, Android phones may require you to switch the USB mode. - -On Broadcom, install `broadcom-wl` and `kmod-wl` - -```shell -sudo dnf install kmod-wl broadcom-wl -``` - -On Realtek, install `kmod-wl` only - -```shell -sudo dnf install kmod-wl -``` - -Then reboot! - -#### [Next Up: NVIDIA →](/en/setup/nvidia) - -#### [← Back To: Post-Installation](/en/setup/postinstall) diff --git a/src/content/docs/en/setup/post-advanced.mdx b/src/content/docs/en/setup/post-advanced.mdx deleted file mode 100644 index 3f072a28..00000000 --- a/src/content/docs/en/setup/post-advanced.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Advanced Post-Installation Steps -description: Learn how to further configure your Ultramarine Linux installation. ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Use systemd-boot as the bootloader - -Ultramarine Linux currently still uses GRUB as the default bootloader for compatibility reasons. However, if you have a UEFI system, you can simply switch to -systemd-boot, which is a more modern bootloader. - - - This step is optional. You can skip this step if you don't want to use - systemd-boot. Make sure to back up your data and have a live USB ready in case - something goes wrong. Incorrectly configuring a new bootloader can make your - OS unbootable. - - -1. Make sure you turn off Secure Boot in your UEFI settings for now, You can re-enable it later after [Setting up Secure Boot](#set-up-secure-boot) -2. Remove GRUB from protected packages: - -```bash -sudo rm /etc/dnf/protected.d/grub* -``` - -3. Start uninstalling GRUB: - -```bash -sudo dnf remove -y grubby grub2\* memtest86\* && sudo rm -rf /boot/grub2 && sudo rm -rf /boot/loader -``` - -4. Install unsigned systemd-boot binaries and the `sdubby` tool: - -```bash -sudo dnf install systemd-boot-unsigned sdubby -``` - -5. Install systemd-boot to the ESP: - -```bash -# Copy your current cmdline options just in case -cat /proc/cmdline | cut -d ' ' -f 2- | sudo tee /etc/kernel/cmdline -# Install systemd-boot -sudo bootctl install -# Now, reinstall and regenerate the current kernel entry -sudo kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz -# Reinstall the kernel again, just in case we need to trigger some hooks -sudo dnf reinstall -y kernel-core -``` - -6. Reboot your system and make sure it boots correctly, run `sudo bootctl` to check if the boot process is correct. -7. (Optional) Proceed to [Set up Secure Boot](#set-up-secure-boot) if you want to re-enable Secure Boot. - -## Set up Secure Boot - -[Secure Boot] is a UEFI security protocol that secures the boot process by ensuring that -only signed executables are allowed to boot. While Ultramarine Linux's bootloader shim is signed by Microsoft and Red Hat, -you may want to use a different bootloader (i.e systemd-boot or rEFInd) or kernel. In that case, you will need to manually enroll -and sign the files with your own keys. - -Fortunately, there's a tool to automate this called [sbctl]. You can install it from the Terra repository: - - - `sbctl` is only available on Ultramarine/Fedora 40 and later. - - -```bash -sudo dnf install sbctl -``` - -After installing `sbctl`, you can use it to enroll, sign, and manage your Secure Boot keys. For example, to generate a new key and enroll it in your UEFI firmware: - -```bash -# Generate a new key -sudo sbctl create-keys -# Enroll the key -sudo sbctl enroll-keys -``` - -You can then use `sbctl sign` to sign your kernel, initramfs, and bootloader binaries. For example: - -```bash -# Sign the kernel -sudo sbctl sign /boot/vmlinuz-$(uname -r) -``` - -However, once you have installed sbctl, it should've already set up a hook to sign the kernel, initramfs and bootloader binaries automatically on kernel updates. - -After signing the necessary files and enrolling them in your firmware, you can re-enable Secure Boot in your UEFI settings. - -[Secure Boot]: https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-secure-boot -[sbctl]: https://github.com/Foxboron/sbctl - -#### [Next Up: Broadcom and Realtek Networking →](/en/setup/broadcom-realtek) - -#### [← Back To: Post-Installation](/en/setup/postinstall) diff --git a/src/content/docs/en/setup/postinstall.mdx b/src/content/docs/en/setup/postinstall.mdx deleted file mode 100644 index eea5ded1..00000000 --- a/src/content/docs/en/setup/postinstall.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Post-Installation -description: "Things to do after installing Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Creating a User Account - -After Ultramarine is installed and you've rebooted into it, you'll be greeted with the out of box experience, Taidan. - -You'll be guided through a setup process from here, configure your system as you please. -Welcome to Ultramarine Linux! - -## Install NVIDIA Drivers - -If you were connected to the Internet during installation NVIDIA drivers were installed automatically. -If this didn't happen or you missed the chance to enable them on first boot, you can install them with these commands: - -```bash -sudo dnf update # Update the system first, the drivers may not work if you don't. -sudo dnf install akmod-nvidia # Install the NVIDIA kernel module. -``` - -Then, reboot your system. - - - You MUST wait until the process is finished before rebooting. Rebooting too - early might result in a broken driver installation! This may take upwards of - 15 minutes! You can check the progress by running `sudo akmods` - - -### Use NVIDIA Graphics Card as the primary card on Optimus Laptops - -This change is is completely optional. You can skip this step if you don't -want to use your NVIDIA Graphics Card as the primary card, or you do not use a -dual-GPU laptop connected to an external monitor. It may also cause issues -with some applications, such as Steam and Bottles. - -Run the following commands to make your NVIDIA Graphics Card the primary Graphics Card: - -```bash -sudo cp -p /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf -sudo sed -i '10i\ Option "PrimaryGPU" "yes"' /etc/X11/xorg.conf.d/nvidia.conf # Add PrimaryGPU = yes to the 10th line of the file. -``` - -Then reboot your system. - -## Install Codecs - -Ultramarine Linux includes codecs for most of the media you'll come across. **You shouldn't need to install any additional codecs.** Most of these packages below should be installed by default, excluding -the VLC and MPV media players, and the `libdvdcss` library. - -However, if you find yourself in the situation where you do not have those codecs (if you converted for example), or require additional codecs other than we have provided (i.e obscure formats, or proprietary codecs not included in any repositories), you can look into the following packages: - -- `x264` and `x265` for better H.264 and HEVC video support - Developed by the VideoLAN (VLC) project. -- [FFmpeg](https://ffmpeg.org/) (`ffmpeg`) - A cross-platform multimedia framework that can manipulate, convert and transcode to and from various media formats. -- [VLC Media Player](https://www.videolan.org/vlc/) (`vlc`) - A free and open-source media player that can play most multimedia files, can also be used to test out the codecs' functionality. -- [MPV](https://mpv.io/) (`mpv`) - A free and open-source media player that can also play most multimedia files. Can be used as a lightweight alternative to VLC. -- [libvpx](https://www.webmproject.org/) (`libvpx`) - A free and open-source codec for VP8 and VP9 video formats. -- [libdvdcss](https://www.videolan.org/developers/libdvdcss.html) (`libdvdcss`) - A library that can be used to read encrypted DVDs. This is not legal in some countries, so please check your local laws before using it. We also do not provide decryption keys for any encrypted DVDs. -- [Opus](https://opus-codec.org/) (`opus`) - A free and open-source audio codec that can be used for both speech and music. Should be installed by default. -- [OpenH264](https://www.openh264.org/) (`openh264`) - A free and open-source codec for H.264 video formats. Should be installed by default, required for WebRTC and partially Firefox. -- [aptX](https://www.aptx.com/) (`pipewire-codec-aptx`) - A proprietary codec for high-quality audio streaming over Bluetooth. Required for wireless Bluetooth audio devices that support it. -- `nv-codec-headers` - NVIDIA's codec headers for encoding and decoding video on NVIDIA GPUs. Required for hardware-accelerated video encoding and decoding on NVIDIA GPUs. May not be used by default assuming you do not have an NVIDIA GPU. -- [LAME](https://lame.sourceforge.io/) (`lame`) - A free and open-source MP3 encoder. Required for encoding MP3 files. -- `PackageKit-gstreamer-plugin` - PackageKit plugin that helps you install the above codec packages using GNOME Software/KDE Discover. - -## Set up Backups - -You may want to back up your files to an external volume, you can use [Pika Backup] or [Déjà Dup] to do so. - -Instructions are available on the [Pika Backup] and [Déjà Dup] websites. - -[Déjà Dup]: https://wiki.gnome.org/Apps/DejaDup -[Pika Backup]: https://apps.gnome.org/PikaBackup/ - -# Advanced Tweaks - -These are tweaks that you probably don't care about, if you don't know what you're doing, skip this section. - -## Use systemd-boot as the Bootloader - -Ultramarine uses GRUB as its bootloader for compatibility reasons. However, if you have a UEFI system, you may switch to -systemd-boot, a modern bootloader. It may even speed up boot! - - - This step is optional. You can skip this step if you don't want to use - systemd-boot. Make sure to back up your data and have a live USB ready in case - something goes wrong. Incorrectly configuring a new bootloader can make your - OS unbootable. - - -1. Make sure you turn off Secure Boot in your UEFI settings for now, You can re-enable it later after you [sign systemd-boot with your own keys.](#secure-boot-with-systemd-boot) -2. Remove GRUB from protected packages: - -```bash -sudo rm /etc/dnf/protected.d/grub* -``` - -3. Start uninstalling GRUB: - -```bash -sudo dnf remove -y grubby grub2\* memtest86\* && sudo rm -rf /boot/grub2 && sudo rm -rf /boot/loader -``` - -4. Install unsigned systemd-boot binaries and the `sdubby` tool: - -```bash -sudo dnf install systemd-boot-unsigned sdubby -``` - -5. Install systemd-boot to the ESP: - -```bash -# Copy your current cmdline options just in case -cat /proc/cmdline | cut -d ' ' -f 2- | sudo tee /etc/kernel/cmdline -# Install systemd-boot -sudo bootctl install -# Now, reinstall and regenerate the current kernel entry -sudo kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz -# Reinstall the kernel again, just in case we need to trigger some hooks -sudo dnf reinstall -y kernel-core -``` - -6. Reboot your system and make sure it boots correctly, run `sudo bootctl` to check if the boot process is correct. -7. (Optional) proceed to [Set up Secure Boot](#secure-boot-with-systemd-boot) if you want to re-enable Secure Boot. - -### Secure Boot with systemd-boot - -If you switch to systemd-boot your bootloader will no longer have Red Hat's signing keys, breaking secure boot. If you'd like to keep using secure boot, you can sign systemd-boot with your own keys. - -Fortunately, there's a tool to automate this called sbctl. You can install it from the Terra repository: - -```bash -sudo dnf install sbctl -``` - -After installing `sbctl`, you can use it to enroll, sign, and manage your Secure Boot keys. For example, to generate a new key and enroll it in your UEFI firmware: - -```bash -# Generate a new key -sudo sbctl create-keys -# Enroll the key -sudo sbctl enroll-keys -``` - -You can then use `sbctl sign` to sign your kernel, initramfs, and bootloader binaries. For example: - -```bash -# Sign the kernel -sudo sbctl sign /boot/vmlinuz-$(uname -r) -``` - -However, once you have installed sbctl, it should've already set up a hook to sign the kernel, initramfs and bootloader binaries automatically on kernel updates. - -After signing the necessary files and enrolling them in your firmware, you can re-enable Secure Boot in your UEFI settings. - -#### [Next Up: Broadcom and Realtek Networking →](/en/setup/broadcom-realtek) - -#### [← Back To: Installation](/en/setup/installation) diff --git a/src/content/docs/en/setup/readymade.mdx b/src/content/docs/en/setup/readymade.mdx deleted file mode 100644 index 1b79da59..00000000 --- a/src/content/docs/en/setup/readymade.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Installation with Readymade Preview -description: "A guide on how to install Ultramarine Linux with the upcoming new installer " ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -After booting into the live system, you will see a dialog box asking you whether to start the installer or continue with the live system. - -![The Welcome Dialog box](/assets/welcome-window.png) - -You can pick whichever you want, and you'll be able to start the installer later by opening the `Install to Hard Drive` application. - -#### [Next Up: Post-installation →](/en/setup/postinstall) - -#### [← Back To: Getting Ultramarine](/en/setup/getting) diff --git a/src/content/docs/en/setup/requirements.mdx b/src/content/docs/en/setup/requirements.mdx deleted file mode 100644 index b7eaf1aa..00000000 --- a/src/content/docs/en/setup/requirements.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: System Requirements -description: "Minimum Requirements for Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Recommended Specifications for Standard PCs - -These are our suggestions for the most basic (daily-driveable) system: - -- 4GB of RAM (8GB or more recommended) -- 64-bit processor (x86_64/amd64) -- 20GB of free disk space (32GB or more recommended) -- Internet connection (for downloading the ISO image, updates, and additional drivers) -- A computer that supports booting from a USB drive -- A USB drive (for creating the bootable media) - -## Minimum Specifications for Raspberry Pi - -- Raspberry Pi 3 or newer -- 4GB of RAM **OR** 1GB of RAM without a desktop environment -- 16GB Class 10 MicroSD Card -- See the [anywhere page](/en/anywhere/rpi) - -## Minimum Specifications for ARM Devices Using UEFI - -- 64-bit processor (aarch64) -- 4GB of RAM -- 16GB of Storage - -## Minimum Requirements - -These requirements are the **_bare minimum_** to run Ultramarine Linux. Using Ultramarine on a computer of this caliber will not be a good time. - -- 1gb of RAM -- 64-bit processor (x86_64 **OR** aarch64) -- 10GB of disk space - -#### [Next Up: Getting Ultramarine →](/en/setup/getting) - -#### [← Back To: Code of Conduct](/en/community/codeofconduct) diff --git a/src/content/docs/en/usage/gaming.mdx b/src/content/docs/en/usage/gaming.mdx deleted file mode 100644 index a8970c28..00000000 --- a/src/content/docs/en/usage/gaming.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Gaming on Ultramarine -description: "Extra instructions for gaming on Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -While Ultramarine Linux is not primarily optimized for gaming, it is still a great platform for gaming, as it already has some performance optimizations applied out of the box, and can be further optimized with some tweaks. - -# Performance - -Gaming performance on Linux will usually be similar (or sometimes even faster) than on Windows, as the Linux kernel is more lightweight and has better memory management. However, some games may not run as well on Linux due to poor optimization or lack of support for Linux. - -Running games under Wine/Proton may help in some cases, but it may also causes issues. Your mileage may vary depending on the game. - -You can refer to [ProtonDB](https://www.protondb.com) to check if your game is compatible with Proton, and to see what tweaks are needed to make it work. - -# Gaming Platforms - -There are several gaming platforms available on Linux. But the most supported one is Steam, which comes with a native Linux client and has a large library of games that support Linux, as well as Proton for running some Windows-only games. - -## Steam - -[Steam](https://steampowered.com) is a great PC gaming platform, and it has native support for Linux. Many game publishers publish their games on Steam, and some even natively support Linux. Steam offers discounts for games published on their platform, and also has a built-in overlay for chatting with friends, taking screenshots, and more. - -Steam runs on the Chromium Embedded Framework (CEF), which essentially means that most of the UI is created using web technologies. - -You can install Steam in 2 ways: - -1. Install the `steam` package from the RPM Fusion repository. (system-wide) -2. Install the Steam flatpak from Flathub. (user-only) - -The first option is recommended, as it has better system integration. However, the second option is also available if you are running Ultramarine OSTree/Kanopy/CoreOS, or if you want to keep Steam isolated from the rest of the system. - -## itch.io - -[itch.io](https://itch.io) is a platform for indie games, and it has a native Linux client. It has a large library of indie games, and some of them are available for free. You can install the itch.io client as a Flatpak from [Flathub](https://flathub.org/apps/io.itch.itch). - -## Epic Games Store, GOG, and Amazon Games - -The Epic Games Store, GOG, and Amazon Games do not have native Linux clients, but you can use the [Heroic Games Launcher](#heroic-games-launcher) to install and run games from these platforms on Linux. - -## EA Desktop/Origin - -EA Desktop (formerly known as Origin) does not have a native Linux client, but you can either use the [Lutris](#lutris) client to install and run games from EA Desktop, or manually install the EA Desktop client using Wine/Proton. - -Using a [Bottles](#bottles) prefix is recommended for EA Desktop, as it allows you to manage a dedicated prefix for all your EA games. - -## Ubisoft Connect/Uplay - -If you still own games on Ubisoft Connect (formerly known as Uplay), you may be able to run some of them on Linux using Wine/Proton. However, some games may not work due to Ubisoft's anti-cheat software. - -See the [Lutris](#lutris) or [Bottles](#bottles) sections for more information on running Ubisoft Connect games on Linux. - -Simply download the Ubisoft Connect client from the official website, and try running it using Wine/Proton. - -### Proton - -If your game does not support Linux, or the Linux version happens to be inferior to the Windows version, you can use Steam's Proton compatibility layer to run Windows games on Linux. Proton is based on Wine, and it is developed by Valve. - -If the game you're trying to play doesn't work on Proton, check back in a week, it's quite possible that it will work after Proton updates or active work from Valve. - -### Slow Download Speeds - -There have been recent reports of slow download speeds on Steam due to issues with the Steam client and HTTP/2, see the relevant [Steam for Linux issue](https://github.com/ValveSoftware/steam-for-linux/issues/10248) for more information. - -If you are experiencing slow download speeds and aren't sure why, you can try disabling HTTP/2 in Steam by adding the following lines to the `~/.steam/steam/steam_dev.cfg` file and restarting steam: - -```plaintext -@nClientDownloadEnableHTTP2PlatformLinux 0 -@fDownloadRatelmprovement ToAddAnother Connection 1.0 -``` - -## Heroic Games Launcher - -The Heroic Games Launcher is a native Linux client for the Epic Games Store and GOG Galaxy. It supports downloading and installing native Linux games from GOG, and running Windows-only games from both GOG and Epic Games Store using Wine/Proton. - -## Lutris - -Lutris is a game launcher for Linux. It supports installing and managing your game library from various sources, including Steam, GOG, EA Origin, and its own community-provided installers. It also supports running Windows-only games using Wine/Proton. - -### EA Desktop - -Games that use EA's Origin platform or EA Desktop can be run using Lutris. You can install the EA Desktop client using the Lutris installer, and then install your games from there. - -### Epic Games Store - -Please refer to the [Heroic Games Launcher](#heroic-games-launcher) section. - -## Bottles - -Bottles is a tool for managing Wine prefixes. It is similar to Lutris, but is more focused on creating and managing Wine prefixes for multiple applications rather than creating each prefix for a single game or application. - -Installing Bottles is only supported as a Flatpak. Any other version of bottles is not supported by the Ultramarine Linux Team. - -## Known Incompatible Games - -These games are known to not work on Ultramarine due to various reasons, such as anti-cheat software, DRM, or API incompatibilities: - -| Game | Anti-Cheat implementation | Reason (if applicable) | Notes | -| --------------------------------------------------- | ------------------------- | ------------------------------- | ---------------------------------------------- | -| _Apex Legends_ | Easy Anti-Cheat | - | Support for Proton recently removed | -| _Fortnite_ | Easy Anti-Cheat, BattlEye | - | Officially unsupported according to Epic Games | -| _Honkai Impact 3rd_ | Tencent Anti-Cheat Expert | - | [^1] | -| _Honkai: Star Rail_ | HoYoProtect | - | [^1] | -| _Infinity Nikki_ | Tencent Anti-Cheat Expert | - | [^1] [^2] | -| _Strinova_ | Tencent Anti-Cheat Expert | - | [^1] [^2] | -| _Phantasy Star Online 2: New Genesis_ (Japan) | Easy Anti-Cheat | - | [^2] | -| _Tom Clancy's Rainbow Six Siege_ | BattlEye, MouseTrap | - | - | -| _The Crew 2_ | Easy Anti-Cheat | - | - | -| _Watch_Dogs_ | Easy Anti-Cheat | - | Single-Player only | -| _Watch_Dogs 2_ | Easy Anti-Cheat | - | Single-Player only | -| _Watch_Dogs: Legion_ | Easy Anti-Cheat | - | Single-Player only | -| _Valorant_ | Vanguard | - | - | -| _League of Legends_ | Vanguard | - | - | -| _Battlefield V_ | EA Anti-Cheat | - | - | -| _Battlefield 2042_ | EA Anti-Cheat | - | - | -| _Need for Speed Unbound_ | EA Anti-Cheat | - | - | -| _Command & Conquer Red Alert 3 & Uprising_ | - | SAGE 2 Path resolver is broken | [^3] | -| _Command & Conquer 3: Tiberium Wars & Kane's Wrath_ | - | SAGE 2 Path resolver is broken | [^3] | -| _Command & Conquer_ games up to _Yuri's Revenge_ | - | DirectDraw compatibility issues | [^4] | - -For more information on other games, you can refer to the [ProtonDB](https://www.protondb.com) website for compatibility reports. - -[^1]: There may be workarounds for these games, but they are not officially supported and you may risk getting banned for its use. The recommended way to play these games is to play on a mobile device or a Windows machine. -[^2]: These games have a known whitelist for the Steam Deck specifically, but does not guarantee that it will work on other Linux systems. -[^3]: You may run this game if you install the game in a path that does not contain periods (e.g. `~/Games/` instead of `~/.local/share/Steam/`). -[^4]: You may need to install DDrawCompat or CnC-DDraw to run this game properly, as it has compatibility issues even with Windows systems. You may also use CnCNet to apply the aforementioned fixes and enable multiplayer. - -#### [Next Up: Localization →](/en/usage/l10n) - -#### [← Back To: Ultramarine Anywhere, Windows Subsystem for Linux](/en/anywhere/wsl) diff --git a/src/content/docs/en/usage/hop.mdx b/src/content/docs/en/usage/hop.mdx deleted file mode 100644 index 1951d302..00000000 --- a/src/content/docs/en/usage/hop.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Switching Desktop Editions -description: "Add/remove the DE/edition with Ultramarine Hop." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Hop is a graphical application -that enables users of Ultramarine to switch between editions or install -multiple desktop environments on their system. - -The source code is available on [GitHub]. - -## Installation - -The package name is `ultramarine-hop` but it is also aliased as `hop`. This -package is available directly in Ultramarine repositories. - -```sh -sudo dnf install hop -``` - -## Using Hop - -1. Open the launcher (usually by pressing `winkey`/`Meta`/`Super`). -2. Type `hop`. `Ultramarine Hop` should pop up as the first option. -3. Select the option. A dialog asking for privileges will pop out. Type in your - password to continue. -4. Select the corresponding action you would like to perform. - - if you would like to add a new desktop environment to your system, click - the first option. This will download and install an extra desktop - environment onto your system. - - if you would like to remove an existing desktop environment on your - system, click the middle option. This will remove the selected desktop - environment from your system. You may only select this option if you have - more than 2 desktop environments installed, otherwise this option will be - greyed out. - - if you would like to switch to another edition, select the last option. -5. Select the corresponding desktop environment / edition. - -[GitHub]: https://github.com/Ultramarine-Linux/hop - -#### [Next Up: umcli →](/en/usage/umcli) - -#### [← Back To: Keyboard Configuration](/en/usage/keyboard-cfg) diff --git a/src/content/docs/en/usage/keyboard-cfg.mdx b/src/content/docs/en/usage/keyboard-cfg.mdx deleted file mode 100644 index 9b96d658..00000000 --- a/src/content/docs/en/usage/keyboard-cfg.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Keyboard Configuration -description: How you may configure your keyboard. ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Layouts - -The default keyboard layout is English (US). You may change the keyboard layout in your desktop's settings. - -If you would like to type in another language, we have a dedicated [localization guide](/en/usage/l10n#inputting-in-another-language). - -## Key remapping - -`keyd` is a key remapping daemon that remaps keys at the kernel level, allowing it to be desktop agnostic and even work in TTY. - -### Steps for simple configuration - -1. Make sure you are a system administrator (i.e. you can run sudo) -2. Create a file `/etc/keyd/default.conf` and paste the example configuration below into it. Save the file. -3. Install `keyd` (from [Terra]): `sudo dnf install keyd` - -Every time you have changed your configurations, you will need to reload them using `sudo keyd reload` - -### Example configuration - -```ini -[ids] - -* - -[main] - -# Maps capslock to escape when pressed and control when held. -capslock = overload(control, esc) - -# Remaps the escape key to capslock -esc = capslock -``` - -Lines starting with a `#` are comments, they will be ignored by `keyd`. - -For more information, read the [Quickstart](https://github.com/rvaiya/keyd?tab=readme-ov-file#quickstart) section from upstream. - -### Advanced configurations - -`keyd` supports more advanced configurations, including - -- Mapping macros -- Key timeouts -- Custom layers / modifier keys (keys that can change behaviours of other keys when held, like shift, ctrl, alt, meta/winkey) - -[Learn More at keyd's Documentation ->](https://github.com/rvaiya/keyd/blob/master/docs/keyd.scdoc) - -[Terra]: https://terra.fyralabs.com - -#### [Next Up: Switching Desktop Editions →](/en/usage/hop) - -#### [← Back To: Localization](/en/usage/l10n) diff --git a/src/content/docs/en/usage/um40-dnf5.mdx b/src/content/docs/en/usage/um40-dnf5.mdx deleted file mode 100644 index d2bc1e4e..00000000 --- a/src/content/docs/en/usage/um40-dnf5.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Dnf5 Is The Default Package Manager In Ultramarine Linux 40 -description: dnf5 is the default package manager in Ultramarine Linux 40 ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Starting with UM40, `dnf5` will replace `dnf-3` as the default package manager. -This is done via the `dnf5-default-package-manager` package provided by the UM40 repositories. - -## Technical Details - -The `dnf5-default-package-manager` package has a `%triggerin` script for `dnf` and `yum`. When these -2 packages get installed/updated, the script will be executed, which will replace `/usr/bin/dnf` and -`/usr/bin/yum` symlinks to point to `/usr/bin/dnf5` instead of `/usr/bin/dnf-3`. - -This change has been proposed on upstream Fedora, but has been delayed to Fedora 41. However, we've -decided this change should be worth a try on UM40. - -## Effects - -By using `dnf5`, users will be able to install, remove and upgrade packages much faster. End-users -shouldn't need to do anything to adapt to this change. - -Since `dnf5` isn't bug-for-bug compatible with `dnf-3`, programs that rely on `dnf-3` should use the -`dnf-3` or `dnf4` command to use the older version of `dnf`. If you are facing compatibility issues -with some apps that rely on the `dnf` symlink instead of the actual `/usr/bin/dnf-3` binary, you are -advised to report this bug to upstreams (i.e. the apps in concern), not `dnf5` or Ultramarine. - -## FAQ - -### Why `dnf5`? - -- `dnf5` provides better performance over `dnf-3` because it's written in C++ instead of Python. -- We hope this change will push apps in the Fedora neighborhood to switch to `dnf5` and at the same - time discover apps that are poorly maintained/written and rely on `dnf`/`dnf-3`. - -### Does UM40 Remove `dnf`? - -- We do not remove `dnf-3`. We only replace the symlinks for `dnf` and `yum` to point to `dnf5`. - -### Wouldn't that Break Compatiblility? - -- If changing only 2 symlinks actually breaks your workflows, either your workflows are poorly made, - or there are some apps you use that rely on the 2 symlinks, which evinces that those apps are - unfortunately poorly made. Change your workflows to adapt to `dnf5` or replace `dnf` with the - actual `dnf-3` binary; or in the latter case, report the issue to the upstream apps in concern. - -- We expect `dnf5` in the future to be supposedly much more compatible with `dnf-3`. Upstream Fedora - has been working hard on making `dnf5` the replacement for `dnf-3`. There are works in progress to - adapt GNOME software for `dnf5`, and to make `dnf5` much more feature-complete. - -### But Some Features are Missing in `dnf5`! - -- There are efforts on making `dnf5` more feature-complete compared with `dnf-3`. You may help speed - this up by [contributing to upstream](https://github.com/rpm-software-management/dnf5/). diff --git a/src/content/docs/en/usage/umcli.mdx b/src/content/docs/en/usage/umcli.mdx deleted file mode 100644 index 60a74306..00000000 --- a/src/content/docs/en/usage/umcli.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: umcli -description: "How to use umcli" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -umcli is a utility included in Ultramarine. It has many planned features, and this is a list of current and planned ones. - -## Current Features - -Syntax: `um` [global options] command [command options] - -#### Global Options - -`-h`, `--help` -- Display the `um` help screen if not attached to commands. Displays the Command's help page if run before a command. Just running `um` will also show the base `um` help screen. - -#### Commands/Features - -`status` -- Displays information about the system. This includes system version info, hardware overview, disk information, system status, network information, and more. - -- `--upload` -- Creates a shareable link to view your system specs online. This information is end-to-end encrypted, auto-expires in 7 days, and not tied to you in any way. -- `--json` -- Outputs status in JSON format. - -`tweaks` -- Manage Ultramarine Tweaks. Tweaks are Ansible playbooks or arbitrary shell scripts that modify the system following a preset. This can be used to configure specific software, change system settings, and more. - -- `list` -- Lists all available tweaks. -- `enable TWEAK` -- Enables a tweak. -- `disable TWEAK` -- Disables a tweak. -- `run TWEAK` -- Runs a script tweak -- `--yes`, `-y` -- Automatically answer yes to all prompts. Use with caution. - -List of umcli Tweaks: - -| Tweak | Type | Function | Notes | -| -------------------------- | ------ | ----------------------------------------- | ------------------------------------------- | -| cleanup-old-kernels | Oneshot | Remove all but the 2 most recent kernels | | -| mtu-probing | Toggleable | Enable MTU probing | | -| openssl-legacy-negotiation | Toggleable | Use unsafe legacy negotiation for OpenSSL | Should only be used if absolutely necessary | -| sudo-pwfeedback | Toggleable | Add `*` feedback when entering in password during a sudo prompt | | -| cachyos-kernel | Toggleable | Install the [CachyOS kernel](https://wiki.cachyos.org/features/kernel/) via the COPR, and enable as default kernel entry | If you are using Secure Boot, you will need to set up `sbctl` according to the CachyOS specification. More info can be found when enabling the tweak | - -## Planned Features - -- umcli wrapper around the Nix language installer. Also pre-configure nix to instantly be able to have an easy to use experience. -- `umcli upgrade`, potentially a wrapper around the `topgrade` package. Would update everything on the system (system packages, flatpaks, firmware, etc.). -- `um get PACKAGE`. A way to easily install packages that are not in a common package repository, but do distribute their own RPMs, or their own repositories. Based on [deb-get](https://github.com/wimpysworld/deb-get) -- And more! - -#### [Next Up: eduroam →](/en/usage/eduroam) - -#### [← Back To: Switching Ultramarine Desktop Editions](/en/usage/hop) diff --git a/src/content/docs/hi/anywhere/android.mdx b/src/content/docs/hi/anywhere/android.mdx deleted file mode 100644 index ecbe9507..00000000 --- a/src/content/docs/hi/anywhere/android.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Android (Anywhere)" -description: "Android Devices in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change - - -Android Devices are very common, and (most of the time) extremely customizable. We do not have a target release or full plan at this time, but we will support in the (hopefully) near future. - -## Implementation - -We are actively debating wether to do pmOS style ports or Halium (like Ubuntu Touch). Join our [community](/en/community/community) if you wanna discuss this! \ No newline at end of file diff --git a/src/content/docs/hi/anywhere/anywhere.mdx b/src/content/docs/hi/anywhere/anywhere.mdx deleted file mode 100644 index 20acab54..00000000 --- a/src/content/docs/hi/anywhere/anywhere.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Ultramarine Anywhere -description: "Our goal is to run Ultramarine Linux on as many devices as possible" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -One of the major focuses of the Ultramarine project is to bring Linux to as many people as possible. -A major part of this is supporting as many devices as possible, through our Ultramarine Anywhere Initiative. -By contributing to Ultramarine Anywhere, you can help us bring Linux to more devices and more people. - - - The pages about this program are more technical than the rest of the wiki. Do - not follow the instructions on these pages unless you know what you're doing. - - -#### If you have any suggestions or comments regarding these pages, don't hesitate to [reach out](/en/community/community). - -## Completed - -Platforms in the **Completed** category are fully supported in Ultramarine and available to use right now! - -- [Microsoft Surface](/en/anywhere/surface) -- [Raspberry Pi 3, 4, and 400](/en/anywhere/rpi) -- [Windows Subsystem for Linux](/en/anywhere/wsl) - -## In Progress - -Platforms in the **In Progress** category are being actively worked on, and will be released soon. For more updates or contributions, check out our [socials](https://fyralabs.com/contact/). - -- [Chromebooks](/en/anywhere/chromebook) -- [XR and Spatial Computing](/en/anywhere/xr) -- [Raspberry Pi 5](/en/anywhere/rpi) -- [Apple Silicon Macs](/en/anywhere/applesilicon) - -## Planned - -Devices in the **Planned** category are being brainstormed, researched, or experimented with, and will (probably) be worked on in the near future. - -- [Android Devices](/en/anywhere/android) -- [Data Centre, Enterprise, and HPC](/en/anywhere/enterprise) -- [RISC-V](/en/anywhere/riscv) - -## Wishlist - -Devices in the **Wishlist** category are platforms we would like to support one day, but are very much up in the air and have not been worked on. - -- [Smart TV Devices](/en/anywhere/ott) -- [Thin Clients](/en/anywhere/thin) -- [Steam Deck](/en/anywhere/steamdeck) -- [Nintendo Switch](/en/anywhere/tegra) -- [NVIDIA Shield](/en/anywhere/tegra) -- [NVIDIA Jetson Microcomputers](/en/anywhere/tegra) - -#### [Next Up: Microsoft Surface →](/en/anywhere/surface) - -#### [← Back To: Ultramarine Contributions, Mirroring](/en/contributing/mirroring) diff --git a/src/content/docs/hi/anywhere/applesilicon.mdx b/src/content/docs/hi/anywhere/applesilicon.mdx deleted file mode 100644 index 0ff33784..00000000 --- a/src/content/docs/hi/anywhere/applesilicon.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Apple Silicon Macs (Anywhere)" -description: "Apple Silicon in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change - - -We are working on porting the Asahi Linux installer to work with Ultramarine. Images that can boot from an external drive that already has Asahi installed are also being worked on. - -## Implementation - -- Potential GUI installer (Readymade from inside macOS?) diff --git a/src/content/docs/hi/anywhere/chromebook.mdx b/src/content/docs/hi/anywhere/chromebook.mdx deleted file mode 100644 index 0f5bdbdf..00000000 --- a/src/content/docs/hi/anywhere/chromebook.mdx +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: "Chromebook (Anywhere)" -description: "Chromebooks in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **In Progress Phase**. All information on - this page is subject to change. Do not follow any instructions unless you know - what you're doing. - - -Chromebooks were an obvious target for Ultramarine Anywhere, despite being mostly -standard hardware, they have custom EC and strange firmware. - -Chromebook support in Ultramarine Linux is provided in partnership with the [Chrultrabook Project](https://chrultrabook.com). - -# x86 - -## How it Works - -Ultramarine Chromebook Edition uses a special bootloader called [Submarine](https://developer.fyralabs.com/submarine) to load the kernel. - -Under the hood, Submarine is an incredibly minimal Linux OS based on [u-root](https://github.com/u-root/u-root), it's only really usable for debug and booting a full distribution. Once Submarine is loaded, we use [LinuxBoot](https://www.linuxboot.org/) to boot a full copy of Ultramarine (and hopefully more distros in the future). - -Now for the big question, how do we do this without modifying the firmware? We take advantage of the way Depthcharge (the ChromeOS firmware) works. We store Submarine in a 16MiB partition on disk, this is normally used by ChromeOS to store a full ChromeOS Kernel and initramfs. Depthcharge doesn't actually check if the contents of the partition are a valid kernel, it just checks for a GPT Header and runs whatever code is found in the partition, in our case, Submarine. - -By default, Depthcharge will only boot code with Google's signing keys, we get around this by enabling the built-in ChromeOS developer mode. - -To summarise, we boot a tiny Linux distribution (Submarine) and use it to launch Ultramarine's vmlinuz and initramfs using kexec. - -## Userland Changes - -Devices in Ultramarine Anywhere try to stick very closely to the standard Ultramarine userland, sometimes we have to deviate from this to make the experience better. - -### Audio Support - -We use WeirdTreeThing's [audio script](https://github.com/WeirdTreeThing/chromebook-linux-audio) and kernel patch to make audio work properly. - -### Default Partitions - -On Chromebooks, we disable swap to extend the life of the eMMC found in most Chromebooks. We create a 16MiB partition containing [Submarine](https://developer.fyralabs.com/submarine) at the start of the disk instead of `/boot/EFI` and `/boot` - -### Keyboard Mapping - -We use [keyd](https://github.com/rvaiya/keyd) to map keys on Chromebooks. - -## Feature Matrix - -| Feature | Functionality | Notes | -| ----------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| Booting | Working | With [Submarine](https://developer.fyralabs.com/submarine) or [UEFI](https://docs.chrultrabook.com/docs/firmware/) | -| WiFi | Working | | -| Ethernet | Working | | -| Bluetooth | Working | | -| Display | Working | | -| Graphics | Working | | -| Storage | Working | | -| USB | Working | | -| SD | Working | | -| Ports | Working | | -| Power | Working | | -| Touch | Working | | -| Pen | Partial | USI and Wacom Pens work, others may not | -| Audio | Partial | May require [additional setup](https://github.com/WeirdTreeThing/chromebook-linux-audio). Some Chromebooks may not work due to controller issues | -| Keyboard | Working | Some models may have issues on older kernels | -| Touchpad | Working | | -| Webcam | Working | | -| Lid Switch | Partial | Some models may have issues | -| Tablet Mode | Partial | Same reason as lid switch | - -## Unsupported Devices - -| Device | Reason | -| --------- | ------------------------------------------------------------------------------------------------------ | -| Mario | Firmware limitations | -| Alex | Firmware limitations | -| ZGB | Firmware limitations | -| Stumpy | Boot partition size limitation (this can be [corebooted](https://docs.chrultrabook.com/docs/firmware/)) | -| Lumpy | Boot partition size limitation (this can be [corebooted](https://docs.chrultrabook.com/docs/firmware/)) | -| Parrot | Boot partition size limitation (this can be [corebooted](https://docs.chrultrabook.com/docs/firmware/)) | -| Butterfly | Boot partition size limitation (this can be [corebooted](https://docs.chrultrabook.com/docs/firmware/)) | -| Link | Boot partition size limitation (this can be [corebooted](https://docs.chrultrabook.com/docs/firmware/)) | -| Stout | Boot partition size limitation (this can be [corebooted](https://docs.chrultrabook.com/docs/firmware/)) | - -These are among the first few generations of Chromebooks, and either use an unsupported firmware, or have limitations preventing us from booting a partition large enough to fit Submarine. - -## Installation - -Ultramarine on Chromebook will be released soon, installation guide for that will be found on a separate menu in this wiki at the time of release. - -## Manual Installation - Note that Ultramarine Chromebook Edition will be a much easier experience once released - - - This method is more technical than our usual wiki content, proceed if you know what you're - doing. We are not responsible for brickage, thermonuclear war, the death of a - pet, etc. - - -This guide assumes you are on x86 and have [Developer Mode](https://chromium.googlesource.com/chromiumos/docs/+/main/developer_mode.md#dev-mode) and [USB Booting Enabled](https://chromium.googlesource.com/chromiumos/docs/+/main/developer_guide.md#boot-from-your-usb-disk). We also assume you are using GParted for partitioning tasks. There are alterations you could make to these instructions and still get the same result, this is just what we think is the easiest way. - -### Raw (.img) images: - -1. Download, decompress, and flash an [Ultramarine Raw Image](https://images.fyralabs.com/images/ultramarine/) with a desktop environment (for example, flagship-base-disk-x86_64.img), to a USB Drive or SD Card smaller then the internal disk of your Chromebook. -2. Create a 16MB partition at the END of the disk (for proper resizing after installation). In GParted, do this by making a new partition in the unallocated space, and dragging it all the way to the right while still in the 'Create new Partition' menu. If GParted gives you a 'Libparted Warning,' select 'Fix.' -3. Flash the [submarine-x86.kpart](https://nightly.link/FyraLabs/submarine/workflows/build/main/submarine-x86_64.zip) file to the new partition. -4. Set the partition flags with cgpt (may have to install `vboot-utils`). - -``` -sudo cgpt add -i -t kernel -P 15 -T 1 -S 1 /dev/sdX -``` - -5. Boot the image on the Chromebook. - -You're now inside the Ultramarine install on your USB/SD card. Slowness and lag is expected behavior and does not reflect how Ultramarine will run from internal storage. - -6. Use `dd` to copy the contents of the USB/SD card to the internal storage of the Chromebook. - - - You do NOT need to resize the root filesystem, it should do this automatically upon first boot. Depending on the size of your Chromebook's internal storage, you may need to move the Submarine partition to the end of the disk again, after it is copied to internal. - - -If you need help with `dd` syntax, here are some pointers - - -You're most likely using a USB stick to install to an eMMC Chromebook, which is the command listed below. If you would like to see what devices you have, run `lsblk` in the terminal. If both show as the same device type, remember the USB/SD Card should be the smaller one. To see what different devices present as, go [here](/en/linux/devicefiles/#block-devices). - -``` -dd if=/dev/sda of=/dev/mmcblk0 bs=4M status=progress -``` - -'if' is the input file. '/dev/sda' is the USB stick. 'of' is the output file. '/dev/mmcblk0' is the Chromebook's internal eMMC storage. 'bs=4M' changes the block size from the default 512Bs to 4MBs (makes it transfer faster). 'status=progress' shows the transfer progress in real time. - -If you're using other devices, adjust accordingly. If your're using an SD card to install to eMMC, or a USB stick to install to UFS, both devices will show as 'mmcblkX' (mmcblk 0/1/2), and 'sdX' (sd a/b/c). Adjust the numbers/letters accordingly. - -7. Once `dd` is done, verify the Submarine partition on the internal storage shows 'ChromeOS Kernel' as a flag. You can use the Disks app on Flagship, GNOME, and Xfce, or, KDE Partition Manager on KDE. Simply select the disk and partition, the label should appear under the logical view. - -### ISO Images: - -1. Flash an [Ultramarine ISO Image](https://ultramarine-linux.org/download/) to a USB Drive or SD Card. -2. Flash submarine.bin to another USB Drive or SD Card. -3. Plug in both drives you just flashed to the Chromebook (a USB hub works!). -4. Boot to the installer's live emvironment by pressing Ctrl+U (You shouldn't boot to a boot option that lists a kernel version (ex ultramarine-linux-6.10.0-X-X-X), just boot to 'Ultramarine Linux _EDITION_.' If you still have ChromeOS on the internel disk, it is likely that this will be the 14th entry, if not, it may be the 3rd). If it does not boot, restart and try a different Ultramarine Linux entry. -5. In the live enviornment of the ISO, install as normal. -6. Once the install is done, return to the live environment desktop. Make a new 16MiB ext4 partition, this can be done by resizing the 'root' partition (the largest one). -7. flash [submarine.kpart](https://nightly.link/FyraLabs/submarine/workflows/build/main/submarine-x86_64.zip) to the new partition, and set flags with cgpt (may have to install `vboot-utils`). - -``` -cgpt add -i -t kernel -P 15 -T 1 -S 1 /dev/sdX -``` - -11. Done! - - - Once Ultramarine has been successfully installed onto your Chromebook's internal disk, rebooting will take you back to the ChromeOS recovery screen. To boot to Ultramarine, select 'Boot to Internal Disk' or press Ctrl+D - - -## ARM - -ARM Chromebooks are in heavy development. If you'd like to help test, check out the [ARM Beta Program](/en/chromebook/armbeta). diff --git a/src/content/docs/hi/anywhere/ott.mdx b/src/content/docs/hi/anywhere/ott.mdx deleted file mode 100644 index 6d7d45a2..00000000 --- a/src/content/docs/hi/anywhere/ott.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Smart TV Devices" -description: "Smart TV Devices in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -Smart TV boxes often run Android, which means we can use Halium to port Ultramarine to the unlockable ones. See [the Android page.](/en/anywhere/android) - -This may be limited to FireOS devices as many of them are vulnerable to [mtk-su](https://xdaforums.com/t/amazing-temp-root-for-mediatek-armv8-2020-08-24.3922213/). If you are knowledgable about Smart TV modding/running alternative operating systems, please reach out [here](/en/community/community). diff --git a/src/content/docs/hi/anywhere/riscv.mdx b/src/content/docs/hi/anywhere/riscv.mdx deleted file mode 100644 index 370a12ad..00000000 --- a/src/content/docs/hi/anywhere/riscv.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "RISC-V (Anywhere)" -description: "RISC-V Devices in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -We plan to port to RISC-V architecture as soon as we can get the hardware. If you are a hardware vendor producing RISC-V devices or have a spare RISC-V device, please [reach out](mailto:contact@fyralabs.com) if you'd like to support the Ultramarine RISC-V port. diff --git a/src/content/docs/hi/anywhere/rpi.mdx b/src/content/docs/hi/anywhere/rpi.mdx deleted file mode 100644 index 5d9e6597..00000000 --- a/src/content/docs/hi/anywhere/rpi.mdx +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: "Raspberry Pi (Anywhere)" -description: "Raspberry Pi in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -### Ultramarine Linux currently supports the Raspberry Pi 3 and 4/400. For information on other Pis, see [below](/en/anywhere/rpi#raspberry-pi-5). - -## Selecting a Drive - -The drive you use deeply affects the experience you will have on Ultramarine. - -### Raspberry Pi 3 Series - -Raspberry Pi 3 Series support only microSD cards. Your storage device must be 16GB or larger. - -You should also look for a class 10 SDHC or SDXC microSD. - -### Raspberry Pi 4 Series - -Raspberry Pi 4 Series support microSD cards and USB storage. Your storage device must be 16GB or larger. - -The best experience will be with an SSD connected over an adapter. A USB 3.0 flash drive will be on-par to slightly better then a microSD card. All of the options are good, it's up to your needs. - -## Flashing the Image - -If you're using a Raspberry Pi 4/400, you can skip these steps and use -[Raspberry Pi Imager instead](/en/anywhere/rpi#raspberry-pi-imager). -First, you will need to decompress it. - -- On Linux, run `unzstd *FILENAME.img.zst*`, you may need to install the `zstd` package -- On Windows 11 or ChromeOS, zstd is natively supported. Decompress like you would a Zip file. -- On Windows 10, use 7zip or WinRaR -- On macOS, install `zstd` from [Homebrew](https://brew.sh/) (`brew install zstd`), then `unzstd *FILENAME.img.zst*`. - -Grab a USB stick or SD Card! Use a flasher program to flash Ultramarine to your storage device. [balenaEtcher](https://www.balena.io/etcher/) is an easy cross-platform choice. - -![](/assets/balenaetcher.png) - -Simply select the .img file, the device you're using, and click flash. - -You can also use the Disks application on Flagship, Xfce, and GNOME editions. - -## Raspberry Pi Imager - -- Install [Raspberry Pi Imager](https://www.raspberrypi.com/software/). Note that this should be packaged in your distribution, and it also available on other operating systems, and the Raspberry Pi firmware. We also do not recommend using the flatpak, since it can have permissions trouble when flashing the disk. -- Open Raspberry Pi Imager, select 'Choose Device,' then select 'Raspberry Pi 4.' -- Select 'Choose OS' then scroll down to 'Other General-Purpose OS,' select 'Ultramarine Linux,' then select your edition of choice. -- Select 'Choose Storage,' and select your storage device you would like to flash to. Double check you have the correct device selected, as this is a destructive operation. -- Select 'Next,' then select 'Yes.' -- Once the flash and validation is complete, remove your disk, and insert it into your Raspberry Pi 4. - -![](/assets/rpi-imager.png) - -Your Imager app should look something like this when ready to flash. - -## First Boot - -On first boot, the root file system will automatically be expanded, and you’ll be prompted with a user creation screen. Create your user and you’ll be ready to go! - -That’s it! You’re ready to enjoy Ultramarine on your Raspberry Pi! We’re working hard on making the experience better so stay tuned! - -Raspberry Pi is a very popular series of SBCs. They are cheap, easy to get, run Linux well, and have a large ecosystem of expansion cards (Hats and Bonnets) and accessories. - -Fedora has upstream support for the Pi 4, 400, and 3. Ultramarine Anywhere intends to extend support to the Zero 2 and 5. - -## Packages - -We have Raspberry Pi packages packaged in [Terra](https://terra.fyralabs.com/). We are working on packaging as many as we can, currently included packages: - -- [rpi-utils](https://github.com/raspberrypi/utils), a collection of miscellaneous tools for Raspberry Pis. You may install these individually, or all together as `rpi-utils` -- [rpi-update](https://github.com/raspberrypi/rpi-update), a script to update Raspberry Pi firmware. -- [Picotool](https://github.com/raspberrypi/picotool), a tool for working with RP2040/RP2350 devices. - -We also have a collection of Raspberry Pi's desktop application: - -- [Piclone](https://github.com/raspberrypi-ui/piclone), Utility to back up a Raspberry Pi to an SD card. -- [Bookshelf](https://github.com/raspberrypi-ui/bookshelf), A browser for Raspberry Pi Press publications. -- [Raindrop](https://github.com/raspberrypi-ui/raindrop), Graphical display configurator for Raspberry Pi, using arandr and wlrandr. - -To install any of these: - -``` -dnf install PACKAGENAME -``` - -### Notes - -- RPi4B has a 1GB and 2GB model, we suggest against running a desktop environment on these (Xfce may be alright). -- RPi3B has only 1GB of RAM, and the 3A only has 512MB, we suggest against running a desktop environment (Xfce may be alright). -- The Pi 4 series has native USB boot support. Your experience may be better with a fast USB Drive or SSD connected through an adapter. See [this article](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-mass-storage-boot) for more info. -- If using a USB drive on a Pi 4, ensure it's USB 3.0 or newer and plugged into a USB 3.0 (blue) port. 2.0 will be a significantly worse experience than a microSD. -- If using a microSD card, we recommend using a Class 10 microSD card, your experience will be significantly better than lower classes. -- Your storage device will need to be larger than 9GB (the image is 8.59GB). We suggest 16GB so you have space for software. - -# (Currently) Unsupported Raspberry Pi Devices - -## Raspberry Pi 5 - -The Raspberry Pi 5 is not currently supported in Fedora. We are packaging the official Raspberry Pi kernel (which will also provide a better experience on the other Pi models). - -## Raspberry Pi Zero, 1, and 2 - - - These devices are **Not Supported** due to 32bit CPUs. - - -#### [Next Up: Windows Subsystem for Linux →](/en/anywhere/wsl) - -#### [← Back To: Microsoft Surface](/en/anywhere/surface) diff --git a/src/content/docs/hi/anywhere/steamdeck.mdx b/src/content/docs/hi/anywhere/steamdeck.mdx deleted file mode 100644 index 95a37316..00000000 --- a/src/content/docs/hi/anywhere/steamdeck.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Valve Steam Deck (Anywhere)" -description: "Steam Deck in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -We don't have any handhelds. So for now (and potentially forever) we recommend checking out [Bazzite](https://bazzite.gg/), it shares a base with Ultramarine, has Terra, and is made by our partners at Universal Blue. diff --git a/src/content/docs/hi/anywhere/thin.mdx b/src/content/docs/hi/anywhere/thin.mdx deleted file mode 100644 index b66e279d..00000000 --- a/src/content/docs/hi/anywhere/thin.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Thin Clients (Anywhere)" -description: " Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -Thin client images would be fun, and frankly pretty easy. - -## Implementation - -Very minimal environment with only required packages. OOTB connection protocols (ICA, RDP/VNC, SNMP...) and easy to use installer with connection options built in. - -Minimal login screen with an option for branding, might include device management software. - -Tools and encouragement for enthusiasts. diff --git a/src/content/docs/hi/anywhere/wsl.mdx b/src/content/docs/hi/anywhere/wsl.mdx deleted file mode 100644 index 70ca451f..00000000 --- a/src/content/docs/hi/anywhere/wsl.mdx +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: "Windows Subsystem for Linux" -description: "Ultramarine for Windows Subsystem for Linux (WSL)" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -[Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/about) is a feature in Windows 10 and 11 that, in essence, is a Linux system as a Windows application. - -Ultramarine only supports WSL2. WSL2 is essentially a "lightweight utility virtual machine" running through Hyper-V, Microsoft's hypervisor. This gives Ultramarine full access to the Windows filesystem, and direct hardware access, with performance similar to that of bare metal Linux. - -It is possible to install and run graphical Linux applications, and even full desktop environments. We plan to make running a desktop environment through Ultramarine WSL easier in the future. - -## System Requirements - -WSL2, and by extension Ultramarine WSL, needs the following: - -- Windows 10 (Version 2004/Build 19041), or Windows 11. IPv6 may have issues in Windows 10. -- Hardware Virtualization enabled. All pre-installed Windows 11 computers come with Virtualization enabled. - -To determine your virtualization status, look in Task Manager -> Performance tab -> CPU, and find virtualization information. You can also open a command prompt or PowerShell window and run the following command: - -``` -systeminfo.exe -``` - -Locate the 'Hyper-V Requirements' section, near the bottom. Within that section, locate 'Virtualization Enabled In Firmware: yes/no.' If yes, you are good to go. If no, you will need to enable it in your UEFI/BIOS. - -## Enabling Virtualization - -- Power off your device. -- Press the power button, then press your [BIOS key](/en/setup/bioskeys). -- Locate the virtualization option. This can be in various places depending on the motherboard/manufacturer. Typically, this will be in the CPU configuration menu. Check with your manufacturer if you need help. -- Save and exit. There will typically be a dedicated key to do this, or a select option on the main or exit page. - -Hardware virtualization should now be enabled, and you can proceed to installation. - -## Installing Ultramarine WSL - -### Install using the Microsoft Store - -Open the Microsoft Store, and search 'Ultramarine Linux' in the Microsoft Store app, or use [this link](https://apps.microsoft.com/detail/9PBPG2RDMZB9?hl=en-us&gl=US&ocid=pdpshare) - -Select 'Ultramarine Linux,' verify the author is Fyra Labs, and then select 'Get.' - -After this, Ultramarine WSL will appear as a Windows app. You can select 'Open' from the Microsoft Store window. - -You're now ready for the [Post-Installation](/en/anywhere/wsl#post-installation) section! - -### Install with WinGet - -Before installing with WinGet, you must install WSL itself. To do this, run the following command in an Administrator PowerShell Window or Windows Command Prompt: - -``` -wsl --install -``` - -Note — this will also install the default Ubuntu WSL distribution. - -After WSL is installed, we can install Ultramarine. Open a PowerShell Window or Windows Command Prompt, and enter the following command: - -``` -winget install ultramarine -``` - -After this, Ultramarine WSL will appear as a Windows application. This will install everything needed for WSL, and Ultramarine WSL, assuming the requirements are met. - -You're now ready for the [Post-Installation](/en/anywhere/wsl#post-installation) section! - -### Install from the Command Line - -Before installing through the command line, you must install WSL itself. To do this, run the following command in an Administrator PowerShell Window or Windows Command Prompt: - -``` -wsl --install -``` - -Note — this will also install the default Ubuntu WSL distribution. - -After WSL is installed, we can install Ultramarine. Open a non-admin PowerShell Window or Windows Command Prompt, and enter the following command (for x86_64 users): - -``` -curl https://images.fyralabs.com/images/ultramarine/42/ports-wsl-wsl-x86_64.tar.gz -o ultramarine.wsl; wsl --install --from-file ultramarine.wsl -``` - -For aarch64 users: - -``` -curl https://images.fyralabs.com/images/ultramarine/42/ports-wsl-wsl-aarch64.tar.gz -o ultramarine.wsl; wsl --install --from-file ultramarine.wsl -``` - -This command will download the latest available Ultramarine WSL build, output the file as `ultramarine.wsl`, then install `ultramarine.wsl` with WSL. - -Be sure to replace the file name in the URL to match your architecture. If you are on x86_64, you don't need to change anything. If you're using AArch64 (Windows on ARM), change to `wsl-wsl-aarch64.wsl`. - -After this, Ultramarine WSL will appear as a Windows application. This will install everything needed for WSL, and Ultramarine WSL, assuming the requirements are met. - -You're now ready for the [Post-Installation](/en/anywhere/wsl#post-installation) section! - -## Post-installation - -Ultramarine WSL may take a few minutes to start up for the first time, as Windows installs the required files. - -### Creating a User and Password - -When WSL finishes starting. you will be prompted to enter a username and password. This does not need to be the same as your Windows username and password. - -### Updating - -It is always recommended to update a fresh install. To do this, please run the following command: - -``` -sudo dnf upgrade -``` - -### Setting your Default WSL Distro as Ultramarine - -To change your default WSL distro to Ultramarine, run the following command: - -``` -wsl --setdefault Ultramarine -``` - -If Ultramarine is not detected, you can run the following command to list all installed WSL distros: - -``` -wsl -l -``` - -Then, replace `Ultramarine` in the setdefault command with the listed name. - -### Hardware Acceleration - -Starting with Ultramarine WSL 42, hardware acceleration packages are included by default. - -If you upgraded from 41 to 42, you may need to enable the terra-mesa repository to install the needed packages. -Run the following command to enable the repo: - -```sh -sudo sed -i '0,/enabled=0/s/enabled=0/enabled=1/' /etc/yum.repos.d/terra-mesa.repo -``` - -And then install the `mesa-vulkan-drivers` package: - -```sh -sudo dnf install mesa-vulkan-drivers -``` - -This will install everything you need for hardware acceleration through Ultramarine WSL. - -### Version Upgrading - -To version upgrade Ultramarine WSL, check the instructions [here](/en/release/42-upgrades#upgrading-ultramarine-wsl-system-versions). - -## More Information - -Microsoft has vast resources about WSL, here are some helpful links: - -General WSL information: https://learn.microsoft.com/en-us/windows/wsl/about - -Basic WSL commands: https://learn.microsoft.com/en-us/windows/wsl/basic-commands#set-default-wsl-version - -Best Practices: https://learn.microsoft.com/en-us/windows/wsl/setup/environment - -Frequently Asked Questions: https://learn.microsoft.com/en-us/windows/wsl/faq - -#### [Next Up: Gaming on Ultramarine →](/en/usage/gaming) - -#### [← Back To: Raspberry Pi](/en/anywhere/rpi) diff --git a/src/content/docs/hi/anywhere/xr.mdx b/src/content/docs/hi/anywhere/xr.mdx deleted file mode 100644 index c3477099..00000000 --- a/src/content/docs/hi/anywhere/xr.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: "XR and Spatial Computing" -description: "XR and Spatial Computing in the Ultramarine Anywhere Initiative" ---- - -We are working on providing full support for [Stardust XR](https://stardustxr.org/). - -### Packages - -All core Stardust XR components are packaged in the [Terra repository](https://terra.fyralabs.com/) (shipped with Ultramarine): - -- [stardust-xr-armillary](https://repology.org/project/stardust-xr-armillary/versions) -- [stardust-xr-atmosphere](https://repology.org/project/stardust-xr-atmosphere/versions) -- [stardust-xr-black-hole](https://repology.org/project/stardust-xr-black-hole/versions) -- [stardust-xr-comet](https://repology.org/project/stardust-xr-comet/versions) -- [stardust-xr-flatland](https://repology.org/project/stardust-xr-flatland/versions) -- [stardust-xr-gravity](https://repology.org/project/stardust-xr-gravity/versions) -- [stardust-xr-magnetar](https://repology.org/project/stardust-xr-magnetar/versions) -- [stardust-xr-non-spatial-input](https://repology.org/project/stardust-xr-non-spatial-input/versions) -- [stardust-xr-protostar](https://repology.org/project/stardust-xr-protostar/versions) -- [stardust-xr-server](https://repology.org/project/stardust-xr-server/versions) -- [stardust-xr-telescope](https://repology.org/project/stardust-xr-telescope/versions) - -To install all of these packages: - -``` -sudo dnf group install stardust-xr -``` -To install these packages on an RPM-OSTree/bootc based system: -``` -sudo rpm-ostree install stardust-xr-armillary stardust-xr-atmosphere stardust-xr-black-hole stardust-xr-comet stardust-xr-flatland stardust-xr-gravity stardust-xr-magnetar stardust-xr-non-spatial-input stardust-xr-protostar stardust-xr-server stardust-xr-telescope -``` - -Then, run `telescope` in your terminal, or `telescope -f` for flatscreen mode. - -For further information, check out [the Stardust XR docs](https://stardustxr.org/docs/get-started/What-is-Stardust). diff --git a/src/content/docs/hi/chromebook/armbeta.mdx b/src/content/docs/hi/chromebook/armbeta.mdx deleted file mode 100644 index 174ef8f3..00000000 --- a/src/content/docs/hi/chromebook/armbeta.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: ARM Chromebook Beta Program -description: "Closed program for running our beta images for certain ARM chromebooks" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -NOTE - Not all ARM devices are currently supported. This is a Beta program, proceed at your own risk. - -Welcome to the ARM Chromebook Beta Program! We are looking for technically-versed people to test our Ultramarine Chromebook beta images for ARM. - -This is a closed program, please join and ping @Owen in the [Discord](https://discord.com/invite/5fdPuxTg5Q) or [Matrix](https://matrix.to/#/#hub:fyralabs.com) (most prefered), or email him at owen@fyralabs.com, to apply. - -Currently supported ARM Chromebook beta devices (if you have an unsupported device and are willing to use it for image testing, let us know!): - -All Kukui (mt8183) family Chromebooks: - -| Model name/number | Codename | -| ------------------------------------------ | -------- | -| Acer Chromebook 311 (C722/C722T) | willow | -| Acer Chromebook 311 (CB311-11H/CB311-11HT) | kenzo | -| Acer Chromebook 314 (CB314-2H/CB314-2HT) | cozmo | -| Acer Chromebook Spin 311 (CP311-3H) | juniper | -| Acer Chromebook Spin 311 (R722T) | pico | -| Asus Chromebook CZ1 | cerise | -| Asus Chromebook Detachable CM3 (CM3000) | kakadu | -| Asus Chromebook Detachable CZ1 | katsu | -| Asus Chromebook Flip CM3 (CM3200, MT8183) | damu | -| Asus Chromebook Flip CZ1 | stern | -| HP Chromebook 11a | kappa | -| HP Chromebook 11MK G9 EE | esche | -| HP Chromebook x360 11MK G3 EE | burnet | -| Lenovo 100e Chromebook 2nd Gen MTK 2 | makomo | -| Lenovo 10e Chromebook Tablet | kodama | -| Lenovo IdeaPad 3 Chromebook (MT8183) | fennel14 | -| Lenovo IdeaPad Duet Chromebook | krane | -| Lenovo IdeaPad Flex 3 Chromebook (MT8183) | fennel | - -Source: https://wiki.postmarketos.org/wiki/Google_Kukui_Chromebook_(google-kukui) - -All Asurada (mt8192) family Chromebooks: - -| Model name/number | Codename | -| ------------------------------------------ | -------- | -| Acer Chromebook 514 (CB514-2H / CB514-2HT) | spherion | -| ASUS Chromebook Flip CM3 (CM3200, MT8192) | hayato | - -Source: https://wiki.postmarketos.org/wiki/Google_Asurada_Chromebook_(google-asurada) - -All Trogdor (sc7180) family Chromebooks: - -| Model name/number | Codename | -| --------------------------------------------- | ------------- | -| Acer Chromebook 511 | limozeen | -| Acer Chromebook Spin 513 | lazor | -| Dynabook Chromebook C1 | pompom | -| HP Fortis 11 G9 Q Chromebook | kingoftown | -| Libera-Merdeka Chromebook C100/C110/C120/C150 | pazquel | -| Orbic Chromebook 4G | pazquel | -| Acer Chromebook Tab 510 | quackingstick | -| HP Chromebook X2 | coachz | -| Lenovo IdeaPad Duet 3 | wormdingler | -| Lenovo IdeaPad Duet 5 | homestar | - -Source: https://wiki.postmarketos.org/wiki/Google_Trogdor_Chromebook_(google-trogdor) - -Follow-up instructions, guide, and dedicated discord channel will be provided after acceptance. diff --git a/src/content/docs/hi/chromebook/getting.mdx b/src/content/docs/hi/chromebook/getting.mdx deleted file mode 100644 index 5529745e..00000000 --- a/src/content/docs/hi/chromebook/getting.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Getting Chromebook Edition -description: "Getting started with installing Ultramarine Chromebook Edition" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Minimum System Requirements - -1GB RAM, 8GB storage, 16MB boot partition (essentially any 2017 or newer ChromeOS device). List of ChromeOS device boot partition sizes can be found [here](https://raw.githubusercontent.com/alpernebbi/depthcharge-tools/master/depthcharge_tools/boards.ini) - -## Choosing Your Edition - -Ultramarine Chromebook comes in 4 variants: - -- **Flagship Edition**: Our default and most popular variant. Choose Flagship if you'd like a familiar and stylish experience. -- **KDE Edition**: Our second most popular variant. Choose KDE if you'd like a simply customisable experience. -- **GNOME Edition**: Elegant and Modern. Choose GNOME if you'd like a simple, unique experience. -- **Pantheon Edition**: Thoughtful and graceful. Choose Pantheon if you'd like a refined experience. - -Ultramarine Linux is distributed with image files available for download from [our website](https://ultramarine-linux.org/download/chromebook). - - - Fyra Labs cannot guarantee the safety or quality of images downloaded from - sites other than our website or FOSSTorrents - - -## Verifying the Safety of an Ultramarine ISO (Recommended) - -Ultramarine ISO images have a matching `CHECKSUM` file that can be checked against the image itself. - -They can be downloaded by clicking the `View Checksum` button on the [download page](https://ultramarine-linux.org/download/chromebook). - -### Verifying the Checksum on Linux and macOS - -You can use the following commands to check the integrity of the images: - -```bash -sha256sum -b /path/to/ultramarine.img # Generate the checksum for the image -cat /path/to/CHECKSUM # Check the checksum - -# Now you can compare the checksum -``` - -### Verifying the Checksum on ChromeOS - -You can use the [ChromeOS Linux Container](https://chromeos.dev/en/linux) to verify the image on ChromeOS - -```bash -sha256sum -b /path/to/ultramarine.img # Generate the checksum for the image -cat /path/to/CHECKSUM # Check the checksum - -# Now you can compare the checksum -``` - -### Verifying the Checksum on Windows - -In Powershell, run this command: - -```powershell -CertUtil -hashfile PATH\TO\ULTRAMARINE.ISO SHA256 -# Open the CHECKSUM file with Notepad and compare the checksum -``` - -## Creating the Installer - -### Download [balenaEtcher](https://www.balena.io/etcher/) to create a bootable media from the img image. - -![](/assets/balenaetcher.png) - -Simply select the img file, a device to use for the installer, and click flash. - -#### [Next Up: Installing to a Chromebook →](preparing) - -#### [← Back To: Getting Started](chromebook) - -## Footnotes - -- The Anaconda installer is very complex and hard to work with, we are working on a new installer that is easier to use and more reliable. -- Since Fedora 37, Fedora's official support for the Pantheon desktop environment has been dropped due to compatibility issues and the Pantheon port is now maintained by the Ultramarine Linux team. This means that the Pantheon desktop environment is only available through Ultramarine Linux, or Fedora with Terra enabled. -- Ultramarine's Budgie edition provides a close to stock Budgie experience, with a custom theme. Unlike Fedora's Budgie Spin, which provides a completely custom layout and experience. diff --git a/src/content/docs/hi/chromebook/postinstall.mdx b/src/content/docs/hi/chromebook/postinstall.mdx deleted file mode 100644 index 0f043330..00000000 --- a/src/content/docs/hi/chromebook/postinstall.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Post-Installation -description: "Things to do after installing Ultramarine Chromebook Edition" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -#### [Next Up: ARM Chromebooks (Beta) →](armbeta) - -#### [← Back To: Installing to a Chromebook](preparing) diff --git a/src/content/docs/hi/chromebook/preparing.mdx b/src/content/docs/hi/chromebook/preparing.mdx deleted file mode 100644 index 56f27d94..00000000 --- a/src/content/docs/hi/chromebook/preparing.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Installing to a Chromebook -description: "Steps to be done on the Chromebook" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Before we insert the installer, we will need to do a few things with your ChromeOS device. - -### 1. Back up your data (optional) - -Step 2 will wipe all local data from your device, If you have any files you wish to save or move to Ultramarine Chromebook, back up your data off the device, either to the cloud or locally. For a small number of files, we recommend backing up to Google Drive, or another cloud storage provider. For a larger number of files, we recommend backing up to an external storage medium, such as a USB flash drive or other external drive. - -If you choose to back up with Google Drive, you will be prompted to add your Google Drive to the Ultramarine Chromebook file explorer during setup to easily access and redownload your data. - -### 2. Enable developer mode - -Enabling developer mode will wipe your data - -#### Developer mode on Chromebooks (ChromeOS laptops only): - -1. Shut down the device, then hold Esc + + ⏻ [power] to enter Recovery mode. -2. When you see a screen that says 'ChromeOS is missing or damaged,' press Ctrl+D. -3. You may be prompted with 'To turn OS verification off, press enter,' press Enter. -4. A screen saying 'OS verification is off, press space to re-enable' should appear, press Ctrl+D. - Your system is now transitioning into Developer Mode! (This may take a few minutes) -5. After it has transitioned, press Control+D to boot back into ChromeOS as a developer. You are now ready for step 3 - -#### Developer Mode on Chromeboxes and Chromebases (ChromeOS Desktops and All-in-ones): - - - Not all monitors will work with the Chromebox OS Verification screens. This - typically happens if the monitor has a resolution greater then 1080p. If your - Chromebox appeared to boot (lights on) but does not output anything, you can - attempt to continue without a display. - - -1. Shut down the device, then insert a paper clip (SIM ejector tool works great too!) into the RECOVERY BUTTON (small hole usually near the I/O, see your hardware documentation for exact location) and reboot. You will then be greeted with the "OS Verification is turned off" screen. -2. Plug in a keyboard and press Ctrl+D. You may be prompted with 'To turn OS verification off, press RECOVERY BUTTON,' press RECOVERY BUTTON. -3. A screen saying 'OS verification is off, press space to re-enable' should appear, press Ctrl+D. - Your system is now transitioning into Developer Mode! (This may take a few minutes). -4. After it has transitioned, press Control+D to boot back into ChromeOS as a developer. You are now ready for step 3. - -#### Developer Mode on ChromeOS Tablets: - -1. Shut down the device, then press and hold Power+Volume-Up+Volume-Down for 3-5 seconds, then release to invoke recovery mode. This is a bit finicky, and may take a few tries, but the screen will turn white and display a screen saying "Please insert a recovery USB stick." soon after button release. -2. To boot to Developer mode, simultaneously press Volume-Up+Volume-Down, or navigate to 'Developer Options' with the volume buttons, and select it with the power button. then select 'Boot From Internal Disk using the volume buttons and power button.' - Your system is now transitioning into Developer Mode! (This may take a few minutes). -3. After it has transitioned, again navigate to 'Developer Options,' then 'Boot From Internal Disk.' Plug in a keyboard, and you are now ready for step 3. - -If you have any problems with these steps, refer to [this guide](https://chromium.googlesource.com/chromiumos/docs/+/main/debug_buttons.md#Firmware-Keyboard-Interface) or request support in our [discord](https://discord.com/invite/5fdPuxTg5Q). - -### 3. Enable USB booting - -1. In Developer mode ChromeOS, press Ctrl+Alt+F2 [right arrow key]. -2. Type in 'Chronos' for the login (there is no password). -3. Enter this command: - -``` -enable_dev_usb_boot -``` - -4. You should have an output saying 'SUCCESS: Booting and self-assigned kernel from SSD/USB/SDCard slot in enabled.' Plug in your Ultramarine Chromebook installer and restart the device. If needed, press Ctrl+alt+F1 [Left arrow key] to leave the terminal. -5. The device will boot to the recovery screen. Upon reaching it, press ctrl+U> to boot from USB/SD. - -### 4. Boot from USB/SD - -#### [Next Up: Post-Install →](postinstall) - -#### [← Back To: Getting Chromebook Edition](getting) diff --git a/src/content/docs/hi/chromebook/terminology.mdx b/src/content/docs/hi/chromebook/terminology.mdx deleted file mode 100644 index 4a6fd3dd..00000000 --- a/src/content/docs/hi/chromebook/terminology.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Chromebook Terminology -description: "Get to Know Chromebook Terms" ---- - -The Chromebook Community, (and Google themselves) have made terminology for many of the practices and quirks of Chrome hardware. - -### Chromium OS - -Where the magic happens. Just like Chrome proper, Chrome OS is a derivative of the open source Chromium OS. - -### Chrome OS - -The consumer variant of Chromium OS found on all Chrome devices. - -### Write Protect (WP) - -Usually refers to Firmware Write Protect (FW_WP), a feature of Chromebooks that marks a region of the ROM that holds firmware as read-only. It is possible (and rather easy) to remove the protection on most Chromebooks. [1] - -#### Cr50/Battery WP - -One of the methods for implementing write protect, WP is enabled when a battery is connected, and disabled when the battery is removed. [1] - -#### WP Switch - -This is just a toggle, not much to explain here. [1] - -#### WP Screw - -The primary implementation of write protect on older devices, a screw shorts a connection, WP can be disabled by removing the short. Most of the time the screw is removed, but you could in theory place Kapton tape over the pad. [1] - -### Closed Case Debugging (CCD) - -Allows people with cr50 to disable WP without opening the device. This requires a special cable called suzyQ. [1] [2] - -### Verified Boot - -Tamper protection, it's signing essentially. [3] - -### Developer Mode - -Loosens verified boot and gives you the ability to enable USB/SD boot and elevate to root. - -### ChromeEC - -EC Refers to a lot of things, and it's honestly better to read the [official docs](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/README.md#Terminology) on this one. - -### Depthcharge - -Depthcharge is the stock firmware on your Chromebook. Unless you somehow have an original Chromebook - -#### Depthcharge Manipulation - -A method to run Linux on Chromebooks without modifying the stock firmware by tricking said firmware (Depthcharge) into booting a Linux kernel. This is what we are using. - -### altFW/Custom Firmware [5] - -altFW is the Chrultrabook Project's name for custom firmware. - -#### Coreboot/Full ROM - -Coreboot replaces the original firmware on your Chromebook with full UEFI. - -#### RW_Legacy - -RW_Legacy allows you to use the included BIOS on your Chromebook. - -#### Firmware Utility Script/MrChromebox's Script - -A popular tool used to manage and install custom firmware - -### Auto Update Expiration - -When Google stops providing updates for a Chromebook. Usually 10 years after the release. You can see a list of [AUE Dates here](https://support.google.com/chrome/a/answer/6220366?hl=en). - -### Codename - -Refers to a specific Chromebook, this may be the same as the board name (For example: Caroline and Chell are also the board name for their respective models) - -### Board Name - -Refers to the motherboard, these may be shared across Chromebooks (For example: Hana (board) is used on hana, maple, sycamore, and telesu) - -### Baseboard - -Exactly what it sounds like, a board that acts as the base for others (For example: Caroline, Chell, and Cave are all based on Glados, see the reference) - -### Chrultrabook - -Our partners in crime. Chrultrabook builds drivers and other tools for Chrome hardware. The name is a portmanteau from "*Chr*omebook to *Ultra*book" - -### Chromebook Plus - -Google's branding for Chromebooks at what would be the entry level for standard laptops [4] - -### Premium Chromebook - -Kinda official term to refer to higher spec Chromebooks. The Pixelbooks, Framework, and some of the nicer HPs fall into this category - -### Gaming Chromebook - -No real definition besides an RGB keyboard, specs and price are all over the place - -#### [← Back To: ARM Chromebooks (Beta)](armbeta) - -### Footnotes - -[1: Firmware Overview and Porting Guide > Firmware / EC Write Protection](https://www.chromium.org/chromium-os/firmware-porting-guide/firmware-ec-write-protection/) - -[2: CrOS EC > Google Security Chip (GSC) Case Closed Debugging (CCD)](https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_gsc.md) - -[3: Design Documents > Verified Boot](https://www.chromium.org/chromium-os/chromiumos-design-docs/verified-boot/) - -[4: Chromebook Plus: more performance and AI capabilities](https://blog.google/products/chromebooks/chromebook-plus/) - -[5: Chrultrabook Docs > Firmware > Types of Firmware](https://docs.chrultrabook.com/docs/firmware/about.html) diff --git a/src/content/docs/hi/contributing/contributorguide.mdx b/src/content/docs/hi/contributing/contributorguide.mdx deleted file mode 100644 index 125cb86f..00000000 --- a/src/content/docs/hi/contributing/contributorguide.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Contributing -description: "Getting started with contributing to Ultramarine Linux" ---- - -Ultramarine is built with our community. From polls and community engagement to community-built software, we involve our community in everything we do. - -## Code - -Ultramarine Linux is open source. Because of this, anyone can add to, copy, or distribute the code that makes up Ultramarine. - -This applies to all of the code that Fyra Labs writes with the community, and most of the code from Fedora. - -Sadly, some components, especially device drivers, may be (in a way) held hostage by their authors. This means we cannot see or fix the code. - -Check out the [Development Page](/en/contributing/hacking) to get started! - -## Packaging - -Ultramarine includes the Terra repository, which is a community collection of software that isn't in Fedora's repositories. Contributing packages for Terra allows you to help Ultramarine and other Fedora-based distro users get the software they need. To get started, see the [Terra documentation](https://developer.fyralabs.com/terra/contributing). - -## Bug Hunting - -This part is easy, just use Ultramarine and report bugs as you find them. You can report general issues to [Ultramarine-Linux/ultramarine](https://github.com/Ultramarine-Linux/ultramarine), or ask in [one of our chats] where to report. - -## Design - -New and existing Ultramarine-specific components require user-friendly and visually appealing designs. If you would like to help out with design, join [one of our chats] and ask where you can help. - -## Documentation - -Documentation allows people to understand how to use Ultramarine. Our main source of documentation is the wiki you're currently reading. If you would like to contribute to the wiki, you can make a pull request to the [Ultramarine-Linux/wiki](https://github.com/Ultramarine-Linux/wiki) repository. If you need help or want to discuss changes, please join [one of our chats]. - -## Testing - -Many parts of Ultramarine need testing before release. Here's a list of our current pre-release programs: - -- [ARM Chromebook Beta Program](/en/chromebook/armbeta) -- [Ultramarine Atomic Open Beta](https://github.com/ultramarine-linux/ostree-config) - -We announce new programs frequently, [join our chat] or [follow us on socials] to stay up to date. - -## Finance - -You can [sponsor us on Github](https://github.com/sponsors/FyraLabs)! - -Your sponsorship helps us continue and dedicate more time to our work, allowing us to develop and ship technology that can make a difference for you (and many others.) Now, of course, don't forget there's also some sweet and useful benefits (with even more coming soon) in it for you :3 - -For those without a GitHub account, we also have [a PayPal page where you can sponsor us](https://www.paypal.com/donate/?hosted_button_id=FE3SHU5U4CL5C). Please note that because we can't reward perks automatically via PayPal, you'll need to ping staff in our chats, so we can manually award them. - -## Outreach - -Ultramarine is always looking for new users, contributors, and community members. -We employ a variety of channels to reach out to new people, including social media, events, and partnerships. -If you'd like to help us grow, join [one of our chats] and ask where you can help. - -## Hardware - -One of Ultramarine's major focuses is to support as many hardware platforms as possible, our formal initiative for this is [Ultramarine Anywhere](/en/hardware/anywhere). -We're always looking for people with knowledge of different and niche hardware platforms to help us expand our support. -Hardware donations are also appreciated, especially Chromebooks and RISC-V boards, as they're a major focus of this program. - -If you'd like to help out in this area please join [one of our chats] and ask where you can help. - -## Translations - -Translations allow Ultramarine to be used by people around the world. You can lend us your expertise to get Ultramarine in your language. - -### This Wiki - -Reach out in [one of our chats] and we'll make you a branch. - -### The Installer and other Ultramarine Components - -Head to [Fyra Weblate](https://weblate.fyralabs.com) to get started translating. - -### Desktops - -Each desktop environment handles their own translations for the desktop itself and their included apps. Please see the [Upstream Contributions](#upstream-contributions) section for more information. - -## Upstream Contributions - -Ultramarine is built on top of many open source and libre software projects, with similar goals and contribution needs to Ultramarine. Our community regularly contributes to these upstream projects, and we encourage you to do the same. - -Here is a list of important upstream projects to Ultramarine, with links to their contribution pages: - -- [Fedora](https://docs.fedoraproject.org/en-US/project/join/) -- [Budgie](https://docs.buddiesofbudgie.org/organization/getting-involved/) -- [GNOME](https://welcome.gnome.org/) -- [KDE](https://community.kde.org/Get_Involved) -- [XFCE](https://docs.xfce.org/contribute/start) - -[one of our chats]: /en/community/community -[join our chat]: /en/community/community -[follow us on socials]: /en/community/community - -#### [Next Up: Code Contributions →](/en/contributing/hacking) - -#### [← Back To: NVIDIA](/en/setup/nvidia) diff --git a/src/content/docs/hi/contributing/hacking.mdx b/src/content/docs/hi/contributing/hacking.mdx deleted file mode 100644 index ebb5ef41..00000000 --- a/src/content/docs/hi/contributing/hacking.mdx +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Code Contributions -description: "A step-by-step guide to hacking on Ultramarine Linux components" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -One of the most noticeable contributions you can make is code contributions. Whether it's building a new feature or fixing a bug, contributing code is a great way to make a noticeable difference to the operating system itself. - -This page serves as a step-by-step guide to hacking on Ultramarine Linux components. - -## Find Something to Work On - -There's no shortage of things to work on in Ultramarine Linux. From a feature you think would be cool, to something on our issue tracker, to an entirely new project in the Ultramarine ecosystem. - -For example, Nvidia drivers, this is an issue with most Linux distributions that Ultramarine solves. - -This problem can be anything from a tiny papercut to a massive structural change. There's no such thing as a bad idea. If you're having trouble finding something to work on, [ask around in our community](/en/community/community), we're always happy to help. - -## Gather Information - -If you're fixing an issue, what's the cause? If you're building a feature, what's the goal? What's the best way to implement it? - -A great place to gather information is within our [community](/en/community/community), simply ask and see what users, contributors, and developers think. - -## Getting the Ultramarine Toolchain - -If you're contributing to an existing component, simply get the tools needed for it (we're slowly adding a list to our repositories.) - -If you're building a completely new feature, we recommend [Rust](https://www.rust-lang.org/) or [Go](https://go.dev) for features without a GUI. - -If you're building with a GUI, we recommend using [libhelium](https://github.com/tau-os/libhelium), you can find more information here. - -Get to work! Make a fork of a project and tinker away! - - -
-**Big Changes** - -For especially big changes, or, major features, ask for help. We'll help you refine and build your idea. - -
-
- -## Writing the Code - -Write the code! Make sure to continuously test your solution as you go. This will help you catch bugs early and make sure your changes are on the right track. It's also important to document your code when you're done, as this will help other contributors understand your changes. - -Remember, you're not alone, no problem is too big or too small to ask for help. If you have a question or want to work with another contributor, ask in our [community](/en/community/community). - -## Getting into Ultramarine - -After you've tested, it's time to contribute. Simply open a pull request to the appropriate repository and we'll review it. Make sure your pull request is descriptive, outlining the motivation, scope, and implementation of your changes. - -There's three possible outcomes - -- **Approval** - -We approve your solution, be proud as very few PRs get merged without changes. - -- **Request for Changes** - -Something needs to change! Fix a problem or two and you're golden! Most PRs go through this process. - -- **Denial** - -This doesn't happen very often, sometimes a feature just doesn't align with our plan. It's more likely that we'll simply ask you for changes. - -#### [Next Up: Mirroring →](/en/contributing/mirroring) - -#### [← Back To: Contributing](/en/contributing/contributorguide) diff --git a/src/content/docs/hi/linux/devicefiles.mdx b/src/content/docs/hi/linux/devicefiles.mdx deleted file mode 100644 index 0c9ca3a9..00000000 --- a/src/content/docs/hi/linux/devicefiles.mdx +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Device Files -description: "Overview of various device files in /dev" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - These files are an actual representation of all your hardware devices - according to how your drivers see them. Please do not modify or delete these - files unless you know what you are doing. - - -Device files are special files that exist as an interface for your system to interact with hardware. -They are located in the `/dev` directory, which is a temporary virtual filesystem that is created by Linux on boot. - -## Block Devices - -Block devices are devices that store buffered data as [blocks](). - -These files are essentially the low-level interface to your storage devices. They are usually to be mounted to a directory in order to be used, -similarly to how Windows automatically assigns drive letters to storage devices. - -Newer Windows versions also support mounting devices as directories, but they are not commonly used. - -There are various types of block devices, but the most common ones are: - -- SATA, PATA/IDE, SAS, SCSI, UFS, or USB devices (`/dev/sd*`) -- NVMe Drives (`/dev/nvme*`) -- MMC devices (`/dev/mmcblk*`) - Memory cards that use the MultiMediaCard standard, such as SD cards or eMMC. -- Device mappers (`/dev/mapper/*`) - A special feature of the Linux kernel that allows you to create virtual block devices from other block devices. -- Loop devices (`/dev/loop*`) - Virtual loopback devices that allow you to mount files as block devices. - -## Pseudo-devices - -Pseudo-devices are devices that do not actually exist but are used by the kernel to provide an interface for various features. - -The most common pseudo-devices are: - -- `/dev/null` - A special empty file that discards all data written to it. -- `/dev/zero` - A special file that returns an infinite stream of null bytes when read. -- `/dev/random`, `/dev/urandom` - Special files that return an infinite stream of random data. -- `/dev/full` - A special empty file that always returns a "disk full" error when written to. -- `/dev/ptmx` - A pseudo-terminal master used to create virtual terminals. -- `/dev/tty*` - A virtual terminal that is used to interact with the system. Back in the day, there were also actual [physical terminals](https://en.wikipedia.org/wiki/Computer_terminal) that were connected to the system via a serial port. Nowadays, these files are used to represent virtual terminals, as computer terminals were replaced by actual computers running remote desktop software such as SSH, VNC or RDP. -- `/dev/pts/*` - A virtual terminal slave used to create virtual terminals. -- `/dev/shm/*` - A shared memory segment used by the kernel to share data between processes. -- `/dev/stdin`, `/dev/stdout`, `/dev/stderr` - Standard input, output and error streams. Used to redirect input and output from and to other files, similar to how programs output data directly to the terminal. Can be redirected using [pipelines](/en/linux/shell#the-pipeline). - -# Interacting with Devices - -You can interact with device files like you would with any other file, but there are also special tools that are used to interact with them. - -The `cat` command can be used to read data from a file and output it to `/dev/stdout` (standard output), which is usually the terminal. - -```sh -cat /dev/urandom -``` - -This will output an infinite stream of random garbage to the terminal, which will make it unusable until you press `Ctrl+C` to stop the command. You might also need to restart your terminal emulator if it happens to output -a specific combination of characters that breaks it. - -## Block Devices - -To list all block devices, you can use `lsblk` to list them in a tree-like format: - -```sh -$ lsblk -NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS -sda 8:0 0 931.5G 0 disk -├─sda1 8:1 0 600M 0 part /boot/efi -├─sda2 8:2 0 1G 0 part /boot -└─sda3 8:3 0 929.9G 0 part -zram0 252:0 0 8G 0 disk [SWAP] -nvme0n1 259:0 0 119.2G 0 disk -└─nvme0n1p1 259:1 0 119.2G 0 part /var/lib/docker/btrfs - /home - /var - / -``` - -## Explaining the Output: - -`sda*` is the main disk of the system, which is a 1TB SATA SSD. It has 3 partitions, `sda1`, `sda2` and `sda3`. `sda1` is the EFI partition, `sda2` is the boot partition and `sda3` is the root partition. - -In this specific case, it is configured in a Btrfs spanned (JBOD) volume, which in this case combines both `sda3` and `nvme0n1p1` into a single volume. - - - Ultramarine Linux's installer, *Anaconda* will automatically configure your - disks in a Btrfs spanned volume by default when multiple disks are selected. - - -`nvme0n1` is a 128GB NVMe SSD that is used as a cache for the Btrfs volume. It has a single partition, `nvme0n1p1`, which is mounted to `/var/lib/docker/btrfs`, `/home`, `/var` and `/`. - -`zram0` is a special ramdisk that is used as a pagefile (swap) for the system. It makes uses of the [zram](https://en.wikipedia.org/wiki/Zram) kernel module to create a compressed RAM disk. - -The mountpoints at `/boot` is used for storing Linux kernel images, and `/boot/efi` is used for storing EFI bootloaders. - -`/var` stores extra variable data, `/home` is a dedicated partition for storing user data and `/` is the root partition, which can be compared to the `C:\` drive on Windows. - -`/var/lib/docker/btrfs` is the directory where [Docker] stores its data. Docker is a containerization software that allows you to run applications in isolated environments. -Since we are using Btrfs, Docker will use Btrfs subvolumes to store its data. For other filesystems, Docker will use other methods to store its data. - -### Manipulating Block Devices - -You can use `fdisk` to do various operations on block devices, such as creating partitions, formatting them and more. - -```sh -fdisk /dev/sda -``` - - - **NEVER** run the following commands on any actual systems! These commands **ANNIHILATE your system WITHOUT CONFIRMATION**, - causing **IRREVERSIBLE DAMAGES** to your system! - -If you want to test out these commands for whatever reason, please _make sure (and double check) you are ONLY doing this in a virtual environment._ - - - -As an example, you can use the following command to do a zero-filled format of a disk called `/dev/sda` by simply using a pipe: - -```sh -cat /dev/zero > /dev/sda -``` - -...Or shred the entire disk with random data: - -```sh -cat /dev/urandom > /dev/sda -``` - -All of these commands will do destructive operations on your disk, so please be careful when using them. - -You can also use the [`dd`]() tool to read and write data to block devices, create disk images and even clone disks directly. - -For example, you can create a backup image (ghost image) of your disk by using the following command: - -```sh -dd if=/dev/sda of=/path/to/backup.img -``` - -...Or clone your disk to another disk: - -```sh -dd if=/dev/sda of=/dev/sdb -``` - -You can find more information about `dd` [here](https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html). - -#### [Next Up: Permissions →](/en/linux/permissions) - -#### [← Back To: The Filesystem](/en/linux/filesystem) - -[Docker]: https://en.wikipedia.org/wiki/Docker_(software) diff --git a/src/content/docs/hi/linux/overview.mdx b/src/content/docs/hi/linux/overview.mdx deleted file mode 100644 index b48f0b2b..00000000 --- a/src/content/docs/hi/linux/overview.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: What is Linux? -description: "A general overview of Linux concepts." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Linux refers to a family of operating systems with one common feature: the Linux kernel. - -Linux is distributed differently than Windows or macOS. Multiple (separate) groups take the Linux kernel and combine it with other software before distributing it as a distinct operating system. These compilations are called "distributions" (but we'll shorten that to distro.) - -Ultramarine Linux is based on another distribution of Linux called Fedora. See ["Why does this distro exist?"](/en/welcome#why-does-this-distro-exist-what-difference-does-it-have-other-than-just-fedora-with-rpmfusion) for more on that. - -## Why use Linux? - -People use Linux on the desktop for all sorts of reasons. For our purposes, we'll split this into four categories: Customization, Freedom, Security, Privacy. - -### Customization - -Linux is incredibly customizable. You can change anything from the way your desktop icons look to the way apps load and the behavior of the device itself. Ultramarine provides easy ways to do this, like theme support, power management profiles (in most editions) and in [umcli](/en/usage/umcli/). - -### Freedom - -When we say freedom, we mean it in two ways. This is often described as "free as in beer" V.S. "free as in speech". Linux will cost you no money, and will allow you to do essentially whatever you'd like. - -For example: Edge cannot be removed from a Windows computer. Meanwhile on Linux, there is no such limitation. Essential apps like the file manager can be exchanged for one of many alternatives. Complete freedom. - -### Security - -Linux is more secure by design, with features like mandatory access controls (MACs) and stricter permissions, you can learn more about those features on the [Permissions](/en/linux/securityprivacy) page. - -Linux is also resistant to many common viruses due to these features (and inexperienced developers.) While it can be argued that developers simply do not target Linux, it's actually because most software comes from moderated collections (repositories) rather than the internet. - -### Privacy - -It's no secret that the big three of operating systems are watching what you do in some way. Linux vendors tend not to do this, and even if they do, you can easily switch to an alternative or simply disable the telemetry. - -## How is Ultramarine Different? - -Ultramarine Linux is designed to get a lot of the configuration out of the way. We include extra components (like media codecs and drivers) that many other distributions don't include. - -Ultramarine is built on Fedora, the base for Red Hat's Enterprise Linux. This means that the software backing Ultramarine has been built with the stability needed for mission critical systems. - - -
- If you'd like a crash course on the basics, this video should cover a lot of - what the following pages will cover - -
-
- -#### [Next Up: The Filesystem →](/en/linux/filesystem) - -#### [← Back To: eduroam](/en/usage/eduroam/) diff --git a/src/content/docs/hi/release/41-upgrades.mdx b/src/content/docs/hi/release/41-upgrades.mdx deleted file mode 100644 index 1d265d83..00000000 --- a/src/content/docs/hi/release/41-upgrades.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Early Upgrades for Ultramarine 41 -description: "A temporary notice for the 40 to 41 upgrade path." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -We're proud to announce that upgrades to Ultramarine Linux 41 (Cyberia) are ready right now in your edition's app store! - - - In Ultramarine 40, the `dnf` command uses dnf5, which may break certain - release upgrades. Upgrade graphically, or use `dnf4`. - - - - Raspberry Pi users should wait to upgrade, we will have more information for - you soon. - - -Ultramarine 41 comes with the usual desktop and under-the-hood changes for our existing users. In addition, Flagship and Xfce Edition are switching to Slick greeter from LightDM-GTK, this will happen automatically when you upgrade. - -This release also comes with umcli, more information to come! - -We know this seems lackluster, but a lot of our changes are for new installs and hardware enablement this time around, so stay tuned! - -## Upgrading - -Unlike previous releases, everything is now handled in your edition's app store. If you're on Flagship, GNOME, or Xfce, it's called Software. On Plasma, it's called Discover. - -You may need to update your copy of Ultramarine 40 before the upgrade will become available. - -## Command Line - -In case the above doesn't work, you can always upgrade through the command line, using `dnf4 system-upgrade`. - -Run the following and follow the prompts: - -```sh -sudo dnf4 upgrade --refresh -sudo dnf4 install dnf-plugin-system-upgrade -sudo dnf4 system-upgrade download --releasever=41 -sudo dnf4 system-upgrade reboot -``` - -## Wallpaper Contest - -Congratulations to im.j for submitting the team's favorite wallpaper, and winning the community wallpaper contest with 'Paradise'! This wallpaper will be available after you upgrade. - -![](/assets/paradise.png) - -Left: Light Mode | Right: Dark Mode - -If your favourite submission didn't win, don't fret, they'll be available in an extras package soon! - -## Getting Support - -If you need any help please reach out in [one of our chats.](/en/community/community/) diff --git a/src/content/docs/hi/release/42-upgrades.mdx b/src/content/docs/hi/release/42-upgrades.mdx deleted file mode 100644 index dce818d4..00000000 --- a/src/content/docs/hi/release/42-upgrades.mdx +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Upgrades for Ultramarine 42 -description: "A temporary notice for the 41 to 42 upgrade path." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -We're proud to announce that upgrades to Ultramarine Linux 42 (Heart of Gold) are ready right now in your edition's app store! - -Ultramarine 42 comes with the usual desktop and under-the-hood changes for our existing users. - -## Upgrading - -Per usual, everything is handled in your edition's app store. If you're on Flagship, GNOME, or Xfce, it's called Software. On Plasma, it's called Discover. - -You may need to update your copy of Ultramarine 41 before the upgrade will become available. - -## Command Line - -In case the above doesn't work, you can always upgrade through the command line, using `dnf system-upgrade`. - -Run the following and follow the prompts: - -```sh -sudo dnf upgrade --refresh -sudo dnf install dnf-plugin-system-upgrade -sudo dnf system-upgrade download --releasever=42 -sudo dnf offline reboot -``` - -### Upgrading Ultramarine WSL System Versions - -WSL works a bit differently, to upgrade Ultramarine 41 WSL, run the following and follow the prompts: - -```sh -sudo dnf upgrade --refresh -sudo dnf distro-sync --releasever=42 -``` - -## Getting Support - -If you need any help please reach out in [one of our chats.](/en/community/community/) - -#### [Next Up: Errata →](/en/release/errata) - -#### [← Back To: Linux Concepts, Security and Privacy →](/en/linux/securityprivacy) diff --git a/src/content/docs/hi/release/diff-fedora.mdx b/src/content/docs/hi/release/diff-fedora.mdx deleted file mode 100644 index c3410550..00000000 --- a/src/content/docs/hi/release/diff-fedora.mdx +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Differences with Fedora -description: "Known differences and changes compared with Fedora" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -This page documents Ultramarine Linux's significant changes compared with a typical Fedora workstation setup. - -Changes listed below are non-exhaustive and cumulative, meaning each section contains changes from all the sections below it. - -### Emoji meanings - -- 📦 This is packaged in [Terra] -- 🛳️ This ships existing Fedora packages -- 🔥 This is a significant change/improvement - -## Ultramarine 42 - -- 🔥 Many Taidan fixes and new pages/features -- 📦 Use netto for network connection in Taidan -- Properly enable terra-mesa repo for all images -- 📦 `umcli` tweaks feature included ootb -- 📦 Surface images switch to upstream surface-dtx-daemon package -- WSL gains hardware acceleration, proper Ultramarine shell configs, and some packages ported over from Ultramarine proper. -- Update preset systemd services -- A towel is included with every install -- Reduce initramfs size -- Only keep 2 kernel versions at a time - -## Ultramarine 41 - -- 🔥 Switched to Taidan, our out-of-box experience -- 🔥 All raw images (including Pi) switched to Btrfs -- 🔥 Move many core desktop apps to Flatpak -- 🔥 WSL support -- 🔥 Surface Images -- 🛳️ `fastfetch` -- 🛳️ `zstd` -- 📦 `umcli` -- 📦 NVIDIA drivers shipped in [Terra] -- 📦 Codecs shipped in [Terra] - -## Ultramarine 40 - -- 🔥 [Change default package manager to `dnf5`](/en/usage/um40-dnf5) (`dnf5-default-package-manager`) -- Drop Pantheon Edition -- `ultramarine-fun` -- 🛳️ `git` -- 🛳️ XFCE Edition -- Improve key bindings for `zsh` -- Supported by [Raspberry Pi Imager](https://github.com/raspberrypi/rpi-imager) -- Use `ext4` instead of `btrfs` for Raspberry Pis - -## Before Ultramarine 40 - -- Out of box repositories: [Terra], full set of [RPM Fusion], [Flathub] -- IP MTU probing enabled (which fixes [Ubisoft Connect](https://en.wikipedia.org/wiki/Ubisoft_Connect) games) -- [Custom wallpapers](https://github.com/Ultramarine-Linux/backgrounds) 🌇 by Aikoyori -- 📦 [System76 Scheduler](https://github.com/pop-os/system76-scheduler) (significantly better scheduling for low-end devices) - - 📦 [KWin Script for system76-scheduler Integration](https://github.com/maxiberta/kwin-system76-scheduler-integration) -- Numerous popular GNOME extensions - - 🛳️ [AppIndicator/KStatusNotifierItem support](https://github.com/ubuntu/gnome-shell-extension-appindicator) (`gnome-shell-extension-appindicator`) - - 🛳️ [Pop shell extension](https://github.com/pop-os/shell) (`gnome-shell-extension-pop-shell`) - - 🛳️ Support for keyboard selection of windows and workspaces in GNOME Shell (`gnome-shell-extension-windowsNavigator`) - - 🛳️ [Bringing back the app menu](https://github.com/fthx/appmenu-is-back) (`gnome-shell-extension-appmenu-is-back`) - - 📦 [Pop Launcher](https://github.com/pop-os/launcher) (`pop-launcher`) -- 🛳️ Most drivers and codecs -- 🛳️ Guest Desktop Agents (`@guest-desktop-agents`) -- 📦 `sipa-fonts` ([Thai National Fonts](https://en.wikipedia.org/wiki/National_Fonts)) -- 🛳️ Mozc (Japanese Input Method Editor) -- 📦 ~~Pantheon Edition (`@pantheon-desktop`)~~ (deprecated since UM40) -- 📦 [Starship](https://starship.rs) -- Custom Budgie Layout that focuses on simplicity - -(Last Updated October 2025) - -[Terra]: https://terra.fyralabs.com -[RPM Fusion]: https://rpmfusion.org -[Flathub]: https://flathub.org - -#### [← Back To: Errata](/en/release/errata) diff --git a/src/content/docs/hi/release/errata.mdx b/src/content/docs/hi/release/errata.mdx deleted file mode 100644 index a3e0413e..00000000 --- a/src/content/docs/hi/release/errata.mdx +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: Errata -description: "Various known bugs and other issues in Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -This page contains bugs that we can't solve or that are easily solvable by users. We remove them as they are resolved. - -Releases older than 37 will not have their eratta modified as we do not have records of fixing the issues. - -## All Versions - -- Installer scripts may not work - -This is solved by distributors including Ultramarine as a synonym to Fedora. - -## Ultramarine Linux 42 - -### All Editions - -- Nvidia and Surface users may experience a kernel panic after upgrade. - - This is caused by the boot partition running out of space, you can boot into the previous kernel entry and either install `dracut-strip-trigger` (which will break moving drives to another device) or [tell DNF to keep less kernels](https://discussion.fedoraproject.org/t/how-can-i-change-the-number-of-kernels-retained-when-updating-in-fedora/73863/2). - - Since Ultramarine 42, only 2 kernel versions are kept, and `dracut-strip-trigger` should be installed by default. - -- Taidan language switching does not work - -### Plasma Edition - -- Login/Lockscreen wallpaper is white - - This appears to be an upstream issue. Switch the SDDM theme from "Fedora" to anything else (such as Breeze). - -### Flagship Edition - -- Install icon may not be using the Ultramarine icon. - -## Ultramarine Linux 41 - -### All Editions - -- Taidan (out-of-box app) won't launch on VirtualBox and VMWare virtual machines. - - We are [aware of this issue](https://blog.fyralabs.com/advisory-ultramarine-41-and-vmware/) and are solving it in UM42. - -- Taidan won't run again if you power off during or before setup. - -- Nvidia and Surface users may experience a kernel panic after upgrade. - - This is caused by the boot partition running out of space, you can boot into the previous kernel entry and either install `dnf-strip-trigger` (which will break moving drives to another device) or [tell DNF to keep less kernels](https://discussion.fedoraproject.org/t/how-can-i-change-the-number-of-kernels-retained-when-updating-in-fedora/73863/2). - - -## Ultramarine Linux 40 - -### Xfce Edition - -- Login screen wallpaper is Fedora's - - This is a small issue with our tweaks not being applied. We should have this fixed in an update soon. - -### Pantheon Edition - -- Pantheon is upgraded but login does not work - - We are still debating Pantheon's fate, but as of now Pantheon is not included in Ultramarine 40 and probably will stay that way. - -### All Editions - -- Flathub not included in new installs - - Our builder had dnf weakdeps disabled, causing `ultramarine-repos-extras` to not be installed. This was fixed in UM40.1. - -- Raw images don't have a Plymouth theme - - Fixed in UM40.1. - -- Manpages not included - - Our builder follows the dnf config of the host system. Fedora container images have a dnf flag enabled that removes manpages, this was inherited by Ultramarine images. This was fixed in UM40.2. - -- Translation and Localization issues - - Similarly to the last issue, Fedora containers only include English locale data, this was inherited by UM images and fixed in UM40.2. - -- Fedora bookmarks still included - - We removed the Fedora bookmarks and replaced them with `ultramarine-phony-bookmarks`. As the name implies, there are no bookmarks. - -- dnf5 not set as default - - We intended to switch to dnf5 with UM40, but something went wrong and the change wasn't shipped. This was fixed in UM40.2 - -- Firmware missing on GNOME Edition - - A team member erroneously pushed a flag that disabled the installation of weak dependencies, and forgot to remove the flag later. - -[Instructions for getting 40.1 and 40.2 fixes ->](https://blog.fyralabs.com/ultramarine-linux-40-hotfixes/) - -## Ultramarine Linux 39 (EOL) - -### Pre-release Images - -- We accidentally released pre-release versions of Ultramarine. - - A small handful of users and reviewers got their hands on these images. These images do not reflect the final release, if you used one and it was buggy, we invite you to try the final release, as many of the bugs were fixed. - -### Budgie Edition - -- Budgie wallpapers may be installed instead of Ultramarine wallpapers. - -### Package Groups - -- Misspelled "environment" as "enviroment". - -This is now fixed in Ultramarine 39 and has been backported to 38. - -## Ultramarine Linux 37 (EOL) - -### Pantheon - -- The wallpaper is not set by default. Please set your own wallpaper. - -## Ultramarine 36 (EOL) - -### Applications - -- Firefox Still Includes Fedora Bookmarks - - Firefox depends on fedora-bookmarks. You can simply remove the bookmarks yourself - -### Installer - -- Anaconda Shows a Warning about the System Being Pre-Release - -Anaconda can't find product information about Ultramarine and assumes it's a pre-release version of Fedora or RHEL. - -### Package Management - -- DNF Tells the User There Are No Repositories Available for a COPR Project - -This is due to the fact that the DNF Copr plugin detects the OS ID `/etc/os-release` file, and Ultramarine uses a custom code instead of `fedora`. - -A workaround is to also specify the Fedora buildroot when trying to add a Copr repository. - -### GNOME Edition - -- Pop!\_Shell launcher - -The Pop!\_Shell launcher is not included. This can be fixed by installing the `pop-launcher` package. - -### Cutefish Edition - -- SDDM Displaying Black Screen - -SDDM may display a black screen when starting up. This is a known issue, but there is no known fix as of yet. (Possibly an upstream bug, help needed.) - -### Pantheon Edition - -- Missing Switchboard (Settings) menus - -This was caused by missing Pantheon Switchboard modules, which are not included in Ultramarine Linux due to time constraints. - -You can help us fix this issue by offering to maintain these packages ourselves, or by [contributing to help submit them to upstream Fedora.](https://fedoraproject.org/wiki/SIGs/Pantheon) - -### OSTree Edition (EOL) - -- Missing Tweaks from the Standard Releases - -As the standard release includes a script to modify the system, due to the nature of OSTree, we are unable to include these tweaks unless we rebuild all major packages with our custom patches. - -#### [Next Up: Differences with Fedora →](/en/release/diff-fedora) - -#### [← Back To: Ultramarine 42 Upgrades →](/en/release/42-upgrades) diff --git a/src/content/docs/hi/release/upgrade-to-ultramarine-40.mdx b/src/content/docs/hi/release/upgrade-to-ultramarine-40.mdx deleted file mode 100644 index 5bad807c..00000000 --- a/src/content/docs/hi/release/upgrade-to-ultramarine-40.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Upgrade to Ultramarine 40 -description: "A temporary notice for the 39 to 40 upgrade path." ---- - -This page is a temporary notice for upgrading Ultramarine 39 to 40. -For this release cycle, we've decided to release an upgrade path before the full distribution release. -This should let existing users enjoy the new set of packages in 40 sooner. -A full blog post detailing changes will be published for the full distribution release. - -## Flagship, GNOME, and KDE Editions - -You can use the editon's graphical app store to upgrade your system to 40. -On Flagship and GNOME, this will be GNOME Software, while on KDE, this will be Plasma Discover. - -You might need to update your system normally before the upgrade to 40 shows up in the app store. - -## Pantheon Edition - -The Pantheon upgrade path isn't ready yet. -While all of the required packages are in the UM and Terra repositories, the Pantheon desktop environment is broken for a variety of reasons. -We are currently working with upstream and other partners to resolve this, but it's possible that Pantheon may be skipped, deprecated, or deferred until mid-cycle. -If you are interested in contributing to Ultramarine Pantheon, please join [our chats](en/community/community) and let us know! - -## Command line - -In case the above doesn't work, you can always upgrade through the command line, using `dnf system-upgrade`. - -Run the following and follow the prompts: - -```sh -sudo dnf upgrade --refresh -sudo dnf install dnf-plugin-system-upgrade -sudo dnf system-upgrade download --releasever=40 -sudo dnf system-upgrade reboot -``` diff --git a/src/content/docs/hi/setup/broadcom-realtek.mdx b/src/content/docs/hi/setup/broadcom-realtek.mdx deleted file mode 100644 index 5f7dc33e..00000000 --- a/src/content/docs/hi/setup/broadcom-realtek.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Broadcom and Realtek Networking -description: "Information about Broadcom and Realtek Networking on Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Some computers with specific Broadcom or Realtek chipsets may require additional drivers to be installed. These should be automatically installed if you were connected to the internet during installation. - -We can't include these by default as they may break other WiFi devices. - -You'll need to connect to the internet, you can do this via Ethernet or USB tethering from your phone. iPhones will automatically tether over USB when connected, Android phones may require you to switch the USB mode. - -On Broadcom, install `broadcom-wl` and `kmod-wl` - -```shell -sudo dnf install kmod-wl broadcom-wl -``` - -On Realtek, install `kmod-wl` only - -```shell -sudo dnf install kmod-wl -``` - -Then reboot! - -#### [Next Up: NVIDIA →](/en/setup/nvidia) - -#### [← Back To: Post-Installation](/en/setup/postinstall) diff --git a/src/content/docs/hi/setup/getting.mdx b/src/content/docs/hi/setup/getting.mdx deleted file mode 100644 index 1ba4d4ba..00000000 --- a/src/content/docs/hi/setup/getting.mdx +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Getting Ultramarine Linux -description: "Getting started with installing Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## System Requirements - -If your computer could run Windows 7 well, chances are it'll run Ultramarine Linux. You should check the [System Requirements](/en/hardware/requirements) to make sure - -## Choosing Your Edition - -Ultramarine Linux comes in 4 variants: - -- **Flagship Edition**: Our default and most popular variant. Choose Flagship if you'd like a familiar and stylish experience. -- **Plasma Edition**: Our second most popular variant. Choose Plasma if you'd like a simply customisable experience. -- **GNOME Edition**: Elegant and Modern. Choose GNOME if you'd like a simple, unique experience. -- **Xfce Edition**: Lightweight and Configurable. Choose Xfce if you'd like a lighter experience. - -Check the [System Requirements](/en/hardware/requirements) to make sure your hardware is supported. - -Ultramarine Linux is distributed in various formats available for download from [our website](https://ultramarine-linux.org). - - - Fyra Labs cannot guarantee the safety or quality of images downloaded from - sites other than our website or FOSSTorrents - - -### Microsoft Surface Devices - -Ultramarine is available with Microsoft Surface support out of the box. -Downloads can be found on our website, and more information can be found [here](../anywhere/surface). - -### Windows Subsystem for Linux - -Ultramarine offers a WSL build/application. -This can be found on the microsoft store, with `winget`, or can be installed with an offline script found on it's anywhere page [here](../anywhere/wsl). - -### Raw Images and Raspberry Pi - -Ultramarine is also available as a raw (or preinstalled) image. These images come with a desktop preinstalled and are intended to be flashed directly to the drive your device will boot from (like an SSD or an SD card.) - -These can be found in the [Raw Image](https://images.fyralabs.com/images/ultramarine) sections of the download page. - - - If you're using a Raspberry Pi 4, you can skip these steps and use Raspberry - Pi Imager! Either insert an empty microSD and press shfit at startup, or use - it on another device. - - -## Verifying the Safety of an Ultramarine Image (Recommended) - -Ultramarine images have a matching checksum file that can be checked against the image itself. - -They can be downloaded by clicking the `View checksum` button on the [download page](https://ultramarine-linux.org/download/). - -### Verifying the Checksum on Linux and macOS - -You can use the following commands to check the integrity of the image: - -```bash -sha256sum -b /path/to/ultramarine.iso # Generate the checksum for the image -cat /path/to/checksum # Check the checksum - -# Now you can compare the checksum -``` - -### Verifying the Checksum on Windows - -In Powershell, run this command: - -```powershell -CertUtil -hashfile PATH\TO\ULTRAMARINE.ISO SHA256 -# Open the checksum file with Notepad and compare the checksum -``` - - - If you're using a Raspberry Pi, stop here and go to the [Raspberry Pi - instructions](/en/anywhere/rpi) - - -## Creating the Installer - -Grab a USB stick! Use a flasher program to create an installer from the image. [balenaEtcher](https://www.balena.io/etcher/) is an easy cross-platform choice. - -![](/assets/balenaetcher.png) - -You can also use [Fedora Media Writer](https://github.com/FedoraQt/MediaWriter), or the Disks application on Flagship, Xfce, and GNOME editions. - - - Rufus has been known to cause issues with Ultramarine images. - - -## Booting the Installer - -After flashing the image to your installer, you can boot to Ultramarine Linux by plugging in the installer and restarting your computer. - -Most computers have a special key that can be used to select a boot device, or to enter the setup screen. This varies from brand to brand, check the [BIOS Keys Page](/en/hardware/bioskeys) for how to enter the boot menu on your machine. - - - If you're currently using Windows 10 (or newer) head to the recovery section - of settings and select "Advanced Restart". Once there, select "Use a Device". - - - - If you're currently using Linux, you may be able to enter the BIOS by running - `sudo systemctl reboot --firmware` - - -## Footnotes - -- The Anaconda installer is very complex and hard to work with, we are working on a new installer that is easier to use and more reliable. -- Ultramarine's Budgie edition provides a close to stock Budgie experience, with a custom theme. Unlike Fedora's Budgie Spin, which provides a completely custom layout and experience. - -#### [Next Up: BIOS Keys →](/en/setup/bioskeys) - -#### [← Back To: System Requirements](/en/setup/requirements) - diff --git a/src/content/docs/hi/setup/installation.mdx b/src/content/docs/hi/setup/installation.mdx deleted file mode 100644 index 99b839ac..00000000 --- a/src/content/docs/hi/setup/installation.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Installation -description: "A guide on how to install Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -After booting into the live system, you will see a dialog box asking you whether to start the installer or continue with the live system. - -![The Welcome Dialog box](/assets/welcome-window.png) - -You can pick whichever you want, and you'll be able to start the installer later by opening the `Install to Hard Drive` application. - -## Language Selection - -![The Language Selection Screen](/assets/anaconda-1.png) - -After starting the installer, you will be greeted with a language selection screen. Simply choose the language and keyboard layout you would like to use. - -## The Anaconda Hub & Spoke Model - -![Anaconda Hub](/assets/anaconda-2.png) - -Anaconda uses a hub and spoke model. You can configure your installation in any order you want, but you will need to complete all the options before you can continue. - -### Keyboard Layouts - -![Anaconda Keyboard Layout](/assets/anaconda-3.png) - -Press the `+` button to add a new keyboard layout, then pick and search for the keyboard layout you prefer. - -Once you have selected the keyboard layout, you can press the `Done` button on the top left to go back to the hub. - -### Time & Date - -![](/assets/anaconda-4.png) - -The Time & Date selection screen has a world map where you can click on your location on the map to set your timezone. - - - -By default, the time is set from your IP address geolocation. If you're using a VPN or proxy this may not be accurate. - - - -### Storage - -![](/assets/anaconda-5.png) - -This is where you select where you want Ultramarine to be installed, you can have the installer automatically partition your disk, or, select a custom layout. - -By default, Ultramarine uses [Btrfs](https://en.wikipedia.org/wiki/Btrfs) on standard computers. - - - We recommend encrypting your disk for added security. Simply select the - "Encrypt" checkbox, you will be prompted to enter a new password after - pressing done, and the password you provided to the installer on every boot. - - -#### Custom Partitioning - -![](/assets/anaconda-6.png) - -In this mode, you can have Anaconda automatically setup partitions for you, or, manually configure the layout of the disk. - -On UEFI-based systems, you need a partition mounted as `/boot/EFI` and another mounted as `/`. - -On BIOS-based systems, you need a `BIOSBoot` partition, a partition mounted as `/boot` and another mounted as `/`. - -#### Advanced Partitioning - -![](/assets/anaconda-7.png) - -In this mode, Anaconda uses a tool called blivet-gui for you to manually partition your drive. This mode provides more freedom, so make sure you know what you're doing. - ---- - -After completing your system configuration, press the `Begin Installation` button to continue. The installation process will start and may take a few minutes. - - - This process is **IRREVERSIBLE**. If you manage to stop the installer before - it finishes, you will end up with a broken system.
To fix this, you - will have to reinstall Ultramarine Linux or your preferred operating system. -
- -After the installation process is complete, Anaconda will prompt you to exit. You can reboot your device from the live environment. - -Next you'll set up your system. - -#### [Next Up: Post-Installation →](/en/setup/postinstall) - -#### [← Back To: BIOS Keys](/en/setup/bioskeys) diff --git a/src/content/docs/hi/setup/nvidia.mdx b/src/content/docs/hi/setup/nvidia.mdx deleted file mode 100644 index ac291cbc..00000000 --- a/src/content/docs/hi/setup/nvidia.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: NVIDIA Drivers -description: "Information about NVIDIA Graphics on Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -For computers with NVIDIA graphics cards, you have two choices for drivers. - -#### Noveau Driver - -[The Noveau driver](https://nouveau.freedesktop.org/) is a fully open-source driver for NVIDIA graphics cards. It's built into Ultramarine so you can use your GPU instantly. - -Despite how good this sounds, modern NVIDIA GPUs will suffer performance issues and screen tearing under the Noveau driver. - -Older NVIDIA GPUs work well with the Noveau driver (and may only work with Noveau.) - -#### Proprietary Driver - -This is our recommended solution. Proprietary drivers support all of the features and performance of your GPU. They are automatically installed during installation if you are connected to the internet. - -If drivers weren't installed, or you switched to an NVIDIA GPU, you can install drivers by opening the "Software" app and searching for "NVIDIA" or by running the following commands in terminal: - -```bash -sudo dnf update # Update the system first, the drivers may not work right if you don't. -sudo dnf install akmod-nvidia # Install the NVIDIA kernel module. -``` - - - You MUST wait until the process is finished before rebooting. Rebooting too - early might result in a broken installation! This may take upwards of 15 - minutes! - - -#### [Next Up: Contributing →](/en/contributing/contributorguide) - -#### [← Back To: Broadcom and Realtek Networking](/en/setup/broadcom-realtek) diff --git a/src/content/docs/hi/setup/post-advanced.mdx b/src/content/docs/hi/setup/post-advanced.mdx deleted file mode 100644 index 3f072a28..00000000 --- a/src/content/docs/hi/setup/post-advanced.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Advanced Post-Installation Steps -description: Learn how to further configure your Ultramarine Linux installation. ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Use systemd-boot as the bootloader - -Ultramarine Linux currently still uses GRUB as the default bootloader for compatibility reasons. However, if you have a UEFI system, you can simply switch to -systemd-boot, which is a more modern bootloader. - - - This step is optional. You can skip this step if you don't want to use - systemd-boot. Make sure to back up your data and have a live USB ready in case - something goes wrong. Incorrectly configuring a new bootloader can make your - OS unbootable. - - -1. Make sure you turn off Secure Boot in your UEFI settings for now, You can re-enable it later after [Setting up Secure Boot](#set-up-secure-boot) -2. Remove GRUB from protected packages: - -```bash -sudo rm /etc/dnf/protected.d/grub* -``` - -3. Start uninstalling GRUB: - -```bash -sudo dnf remove -y grubby grub2\* memtest86\* && sudo rm -rf /boot/grub2 && sudo rm -rf /boot/loader -``` - -4. Install unsigned systemd-boot binaries and the `sdubby` tool: - -```bash -sudo dnf install systemd-boot-unsigned sdubby -``` - -5. Install systemd-boot to the ESP: - -```bash -# Copy your current cmdline options just in case -cat /proc/cmdline | cut -d ' ' -f 2- | sudo tee /etc/kernel/cmdline -# Install systemd-boot -sudo bootctl install -# Now, reinstall and regenerate the current kernel entry -sudo kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz -# Reinstall the kernel again, just in case we need to trigger some hooks -sudo dnf reinstall -y kernel-core -``` - -6. Reboot your system and make sure it boots correctly, run `sudo bootctl` to check if the boot process is correct. -7. (Optional) Proceed to [Set up Secure Boot](#set-up-secure-boot) if you want to re-enable Secure Boot. - -## Set up Secure Boot - -[Secure Boot] is a UEFI security protocol that secures the boot process by ensuring that -only signed executables are allowed to boot. While Ultramarine Linux's bootloader shim is signed by Microsoft and Red Hat, -you may want to use a different bootloader (i.e systemd-boot or rEFInd) or kernel. In that case, you will need to manually enroll -and sign the files with your own keys. - -Fortunately, there's a tool to automate this called [sbctl]. You can install it from the Terra repository: - - - `sbctl` is only available on Ultramarine/Fedora 40 and later. - - -```bash -sudo dnf install sbctl -``` - -After installing `sbctl`, you can use it to enroll, sign, and manage your Secure Boot keys. For example, to generate a new key and enroll it in your UEFI firmware: - -```bash -# Generate a new key -sudo sbctl create-keys -# Enroll the key -sudo sbctl enroll-keys -``` - -You can then use `sbctl sign` to sign your kernel, initramfs, and bootloader binaries. For example: - -```bash -# Sign the kernel -sudo sbctl sign /boot/vmlinuz-$(uname -r) -``` - -However, once you have installed sbctl, it should've already set up a hook to sign the kernel, initramfs and bootloader binaries automatically on kernel updates. - -After signing the necessary files and enrolling them in your firmware, you can re-enable Secure Boot in your UEFI settings. - -[Secure Boot]: https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/oem-secure-boot -[sbctl]: https://github.com/Foxboron/sbctl - -#### [Next Up: Broadcom and Realtek Networking →](/en/setup/broadcom-realtek) - -#### [← Back To: Post-Installation](/en/setup/postinstall) diff --git a/src/content/docs/hi/setup/postinstall.mdx b/src/content/docs/hi/setup/postinstall.mdx deleted file mode 100644 index eea5ded1..00000000 --- a/src/content/docs/hi/setup/postinstall.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Post-Installation -description: "Things to do after installing Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Creating a User Account - -After Ultramarine is installed and you've rebooted into it, you'll be greeted with the out of box experience, Taidan. - -You'll be guided through a setup process from here, configure your system as you please. -Welcome to Ultramarine Linux! - -## Install NVIDIA Drivers - -If you were connected to the Internet during installation NVIDIA drivers were installed automatically. -If this didn't happen or you missed the chance to enable them on first boot, you can install them with these commands: - -```bash -sudo dnf update # Update the system first, the drivers may not work if you don't. -sudo dnf install akmod-nvidia # Install the NVIDIA kernel module. -``` - -Then, reboot your system. - - - You MUST wait until the process is finished before rebooting. Rebooting too - early might result in a broken driver installation! This may take upwards of - 15 minutes! You can check the progress by running `sudo akmods` - - -### Use NVIDIA Graphics Card as the primary card on Optimus Laptops - -This change is is completely optional. You can skip this step if you don't -want to use your NVIDIA Graphics Card as the primary card, or you do not use a -dual-GPU laptop connected to an external monitor. It may also cause issues -with some applications, such as Steam and Bottles. - -Run the following commands to make your NVIDIA Graphics Card the primary Graphics Card: - -```bash -sudo cp -p /usr/share/X11/xorg.conf.d/nvidia.conf /etc/X11/xorg.conf.d/nvidia.conf -sudo sed -i '10i\ Option "PrimaryGPU" "yes"' /etc/X11/xorg.conf.d/nvidia.conf # Add PrimaryGPU = yes to the 10th line of the file. -``` - -Then reboot your system. - -## Install Codecs - -Ultramarine Linux includes codecs for most of the media you'll come across. **You shouldn't need to install any additional codecs.** Most of these packages below should be installed by default, excluding -the VLC and MPV media players, and the `libdvdcss` library. - -However, if you find yourself in the situation where you do not have those codecs (if you converted for example), or require additional codecs other than we have provided (i.e obscure formats, or proprietary codecs not included in any repositories), you can look into the following packages: - -- `x264` and `x265` for better H.264 and HEVC video support - Developed by the VideoLAN (VLC) project. -- [FFmpeg](https://ffmpeg.org/) (`ffmpeg`) - A cross-platform multimedia framework that can manipulate, convert and transcode to and from various media formats. -- [VLC Media Player](https://www.videolan.org/vlc/) (`vlc`) - A free and open-source media player that can play most multimedia files, can also be used to test out the codecs' functionality. -- [MPV](https://mpv.io/) (`mpv`) - A free and open-source media player that can also play most multimedia files. Can be used as a lightweight alternative to VLC. -- [libvpx](https://www.webmproject.org/) (`libvpx`) - A free and open-source codec for VP8 and VP9 video formats. -- [libdvdcss](https://www.videolan.org/developers/libdvdcss.html) (`libdvdcss`) - A library that can be used to read encrypted DVDs. This is not legal in some countries, so please check your local laws before using it. We also do not provide decryption keys for any encrypted DVDs. -- [Opus](https://opus-codec.org/) (`opus`) - A free and open-source audio codec that can be used for both speech and music. Should be installed by default. -- [OpenH264](https://www.openh264.org/) (`openh264`) - A free and open-source codec for H.264 video formats. Should be installed by default, required for WebRTC and partially Firefox. -- [aptX](https://www.aptx.com/) (`pipewire-codec-aptx`) - A proprietary codec for high-quality audio streaming over Bluetooth. Required for wireless Bluetooth audio devices that support it. -- `nv-codec-headers` - NVIDIA's codec headers for encoding and decoding video on NVIDIA GPUs. Required for hardware-accelerated video encoding and decoding on NVIDIA GPUs. May not be used by default assuming you do not have an NVIDIA GPU. -- [LAME](https://lame.sourceforge.io/) (`lame`) - A free and open-source MP3 encoder. Required for encoding MP3 files. -- `PackageKit-gstreamer-plugin` - PackageKit plugin that helps you install the above codec packages using GNOME Software/KDE Discover. - -## Set up Backups - -You may want to back up your files to an external volume, you can use [Pika Backup] or [Déjà Dup] to do so. - -Instructions are available on the [Pika Backup] and [Déjà Dup] websites. - -[Déjà Dup]: https://wiki.gnome.org/Apps/DejaDup -[Pika Backup]: https://apps.gnome.org/PikaBackup/ - -# Advanced Tweaks - -These are tweaks that you probably don't care about, if you don't know what you're doing, skip this section. - -## Use systemd-boot as the Bootloader - -Ultramarine uses GRUB as its bootloader for compatibility reasons. However, if you have a UEFI system, you may switch to -systemd-boot, a modern bootloader. It may even speed up boot! - - - This step is optional. You can skip this step if you don't want to use - systemd-boot. Make sure to back up your data and have a live USB ready in case - something goes wrong. Incorrectly configuring a new bootloader can make your - OS unbootable. - - -1. Make sure you turn off Secure Boot in your UEFI settings for now, You can re-enable it later after you [sign systemd-boot with your own keys.](#secure-boot-with-systemd-boot) -2. Remove GRUB from protected packages: - -```bash -sudo rm /etc/dnf/protected.d/grub* -``` - -3. Start uninstalling GRUB: - -```bash -sudo dnf remove -y grubby grub2\* memtest86\* && sudo rm -rf /boot/grub2 && sudo rm -rf /boot/loader -``` - -4. Install unsigned systemd-boot binaries and the `sdubby` tool: - -```bash -sudo dnf install systemd-boot-unsigned sdubby -``` - -5. Install systemd-boot to the ESP: - -```bash -# Copy your current cmdline options just in case -cat /proc/cmdline | cut -d ' ' -f 2- | sudo tee /etc/kernel/cmdline -# Install systemd-boot -sudo bootctl install -# Now, reinstall and regenerate the current kernel entry -sudo kernel-install add $(uname -r) /lib/modules/$(uname -r)/vmlinuz -# Reinstall the kernel again, just in case we need to trigger some hooks -sudo dnf reinstall -y kernel-core -``` - -6. Reboot your system and make sure it boots correctly, run `sudo bootctl` to check if the boot process is correct. -7. (Optional) proceed to [Set up Secure Boot](#secure-boot-with-systemd-boot) if you want to re-enable Secure Boot. - -### Secure Boot with systemd-boot - -If you switch to systemd-boot your bootloader will no longer have Red Hat's signing keys, breaking secure boot. If you'd like to keep using secure boot, you can sign systemd-boot with your own keys. - -Fortunately, there's a tool to automate this called sbctl. You can install it from the Terra repository: - -```bash -sudo dnf install sbctl -``` - -After installing `sbctl`, you can use it to enroll, sign, and manage your Secure Boot keys. For example, to generate a new key and enroll it in your UEFI firmware: - -```bash -# Generate a new key -sudo sbctl create-keys -# Enroll the key -sudo sbctl enroll-keys -``` - -You can then use `sbctl sign` to sign your kernel, initramfs, and bootloader binaries. For example: - -```bash -# Sign the kernel -sudo sbctl sign /boot/vmlinuz-$(uname -r) -``` - -However, once you have installed sbctl, it should've already set up a hook to sign the kernel, initramfs and bootloader binaries automatically on kernel updates. - -After signing the necessary files and enrolling them in your firmware, you can re-enable Secure Boot in your UEFI settings. - -#### [Next Up: Broadcom and Realtek Networking →](/en/setup/broadcom-realtek) - -#### [← Back To: Installation](/en/setup/installation) diff --git a/src/content/docs/hi/setup/readymade.mdx b/src/content/docs/hi/setup/readymade.mdx deleted file mode 100644 index 1b79da59..00000000 --- a/src/content/docs/hi/setup/readymade.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Installation with Readymade Preview -description: "A guide on how to install Ultramarine Linux with the upcoming new installer " ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -After booting into the live system, you will see a dialog box asking you whether to start the installer or continue with the live system. - -![The Welcome Dialog box](/assets/welcome-window.png) - -You can pick whichever you want, and you'll be able to start the installer later by opening the `Install to Hard Drive` application. - -#### [Next Up: Post-installation →](/en/setup/postinstall) - -#### [← Back To: Getting Ultramarine](/en/setup/getting) diff --git a/src/content/docs/hi/setup/requirements.mdx b/src/content/docs/hi/setup/requirements.mdx deleted file mode 100644 index b7eaf1aa..00000000 --- a/src/content/docs/hi/setup/requirements.mdx +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: System Requirements -description: "Minimum Requirements for Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Recommended Specifications for Standard PCs - -These are our suggestions for the most basic (daily-driveable) system: - -- 4GB of RAM (8GB or more recommended) -- 64-bit processor (x86_64/amd64) -- 20GB of free disk space (32GB or more recommended) -- Internet connection (for downloading the ISO image, updates, and additional drivers) -- A computer that supports booting from a USB drive -- A USB drive (for creating the bootable media) - -## Minimum Specifications for Raspberry Pi - -- Raspberry Pi 3 or newer -- 4GB of RAM **OR** 1GB of RAM without a desktop environment -- 16GB Class 10 MicroSD Card -- See the [anywhere page](/en/anywhere/rpi) - -## Minimum Specifications for ARM Devices Using UEFI - -- 64-bit processor (aarch64) -- 4GB of RAM -- 16GB of Storage - -## Minimum Requirements - -These requirements are the **_bare minimum_** to run Ultramarine Linux. Using Ultramarine on a computer of this caliber will not be a good time. - -- 1gb of RAM -- 64-bit processor (x86_64 **OR** aarch64) -- 10GB of disk space - -#### [Next Up: Getting Ultramarine →](/en/setup/getting) - -#### [← Back To: Code of Conduct](/en/community/codeofconduct) diff --git a/src/content/docs/hi/usage/eduroam.mdx b/src/content/docs/hi/usage/eduroam.mdx deleted file mode 100644 index 9ce6e972..00000000 --- a/src/content/docs/hi/usage/eduroam.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: eduroam -description: "Extra instructions for getting Eduroam working." ---- - -eduroam is a federated identity service for WiFi networks at universities, colleges, and research institutions. Many schools around the world offer eduroam, meaning that a student from Thailand can pay a visit to a university in the US and have free internet without getting new credentials. - -## Configuring eduroam on Ultramarine - -We recommend using eduroam's CAT tool, as it simplifies setup and automatically connects you to hotspots outside of your home institution. - -Go to the [eduroam CAT website](https://cat.eduroam.org) and press the large download button, you'll be presented with a list of suggested institutions and a search bar, find your institution and select it. -![Download Page](/assets/eduroam/selectschool.png) -If your institution is a part of a larger system, it may not be listed on it's own. Like in this example, Minnesota State is comprised of many institutions, and acts as one for eduroam. - -Now you can press the eduroam button to download your installer. -![Download Page](/assets/eduroam/download.png) - -Your download should start automatically, and you'll be presented with helpdesk information just in case. -![Download Page](/assets/eduroam/downloaded.png) - -Now that CAT is downloaded, open a terminal and run the downloaded file with `python3 eduroam-linux-xxxxx.py`. -![Running CAT](/assets/eduroam/terminal.png) - -The installer may look different depending on what edition you're on, but all of them look the same. It may present you with policy and other information, if it goes off the screen, you can use Vim bindings or the tab key to highlight a button, and enter to select it. -![Running CAT](/assets/eduroam/installer.png) - -Final step! Enter your credentials (usually your institution-issued email address). -![Running CAT](/assets/eduroam/creds.png) - -You're done! Just visit any eduroam hotspot and you'll be automatically connected. -![Running CAT](/assets/eduroam/done.png) - -If you need further support, we recommend contacting your institution's helpdesk, or hopping into one of [our chats](/en/community/community/). - -#### [Next Up: Linux Concepts: What is Linux? →](/en/linux/overview) - -#### [← Back To: umcli](/en/usage/umcli) diff --git a/src/content/docs/hi/usage/gaming.mdx b/src/content/docs/hi/usage/gaming.mdx deleted file mode 100644 index a8970c28..00000000 --- a/src/content/docs/hi/usage/gaming.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Gaming on Ultramarine -description: "Extra instructions for gaming on Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -While Ultramarine Linux is not primarily optimized for gaming, it is still a great platform for gaming, as it already has some performance optimizations applied out of the box, and can be further optimized with some tweaks. - -# Performance - -Gaming performance on Linux will usually be similar (or sometimes even faster) than on Windows, as the Linux kernel is more lightweight and has better memory management. However, some games may not run as well on Linux due to poor optimization or lack of support for Linux. - -Running games under Wine/Proton may help in some cases, but it may also causes issues. Your mileage may vary depending on the game. - -You can refer to [ProtonDB](https://www.protondb.com) to check if your game is compatible with Proton, and to see what tweaks are needed to make it work. - -# Gaming Platforms - -There are several gaming platforms available on Linux. But the most supported one is Steam, which comes with a native Linux client and has a large library of games that support Linux, as well as Proton for running some Windows-only games. - -## Steam - -[Steam](https://steampowered.com) is a great PC gaming platform, and it has native support for Linux. Many game publishers publish their games on Steam, and some even natively support Linux. Steam offers discounts for games published on their platform, and also has a built-in overlay for chatting with friends, taking screenshots, and more. - -Steam runs on the Chromium Embedded Framework (CEF), which essentially means that most of the UI is created using web technologies. - -You can install Steam in 2 ways: - -1. Install the `steam` package from the RPM Fusion repository. (system-wide) -2. Install the Steam flatpak from Flathub. (user-only) - -The first option is recommended, as it has better system integration. However, the second option is also available if you are running Ultramarine OSTree/Kanopy/CoreOS, or if you want to keep Steam isolated from the rest of the system. - -## itch.io - -[itch.io](https://itch.io) is a platform for indie games, and it has a native Linux client. It has a large library of indie games, and some of them are available for free. You can install the itch.io client as a Flatpak from [Flathub](https://flathub.org/apps/io.itch.itch). - -## Epic Games Store, GOG, and Amazon Games - -The Epic Games Store, GOG, and Amazon Games do not have native Linux clients, but you can use the [Heroic Games Launcher](#heroic-games-launcher) to install and run games from these platforms on Linux. - -## EA Desktop/Origin - -EA Desktop (formerly known as Origin) does not have a native Linux client, but you can either use the [Lutris](#lutris) client to install and run games from EA Desktop, or manually install the EA Desktop client using Wine/Proton. - -Using a [Bottles](#bottles) prefix is recommended for EA Desktop, as it allows you to manage a dedicated prefix for all your EA games. - -## Ubisoft Connect/Uplay - -If you still own games on Ubisoft Connect (formerly known as Uplay), you may be able to run some of them on Linux using Wine/Proton. However, some games may not work due to Ubisoft's anti-cheat software. - -See the [Lutris](#lutris) or [Bottles](#bottles) sections for more information on running Ubisoft Connect games on Linux. - -Simply download the Ubisoft Connect client from the official website, and try running it using Wine/Proton. - -### Proton - -If your game does not support Linux, or the Linux version happens to be inferior to the Windows version, you can use Steam's Proton compatibility layer to run Windows games on Linux. Proton is based on Wine, and it is developed by Valve. - -If the game you're trying to play doesn't work on Proton, check back in a week, it's quite possible that it will work after Proton updates or active work from Valve. - -### Slow Download Speeds - -There have been recent reports of slow download speeds on Steam due to issues with the Steam client and HTTP/2, see the relevant [Steam for Linux issue](https://github.com/ValveSoftware/steam-for-linux/issues/10248) for more information. - -If you are experiencing slow download speeds and aren't sure why, you can try disabling HTTP/2 in Steam by adding the following lines to the `~/.steam/steam/steam_dev.cfg` file and restarting steam: - -```plaintext -@nClientDownloadEnableHTTP2PlatformLinux 0 -@fDownloadRatelmprovement ToAddAnother Connection 1.0 -``` - -## Heroic Games Launcher - -The Heroic Games Launcher is a native Linux client for the Epic Games Store and GOG Galaxy. It supports downloading and installing native Linux games from GOG, and running Windows-only games from both GOG and Epic Games Store using Wine/Proton. - -## Lutris - -Lutris is a game launcher for Linux. It supports installing and managing your game library from various sources, including Steam, GOG, EA Origin, and its own community-provided installers. It also supports running Windows-only games using Wine/Proton. - -### EA Desktop - -Games that use EA's Origin platform or EA Desktop can be run using Lutris. You can install the EA Desktop client using the Lutris installer, and then install your games from there. - -### Epic Games Store - -Please refer to the [Heroic Games Launcher](#heroic-games-launcher) section. - -## Bottles - -Bottles is a tool for managing Wine prefixes. It is similar to Lutris, but is more focused on creating and managing Wine prefixes for multiple applications rather than creating each prefix for a single game or application. - -Installing Bottles is only supported as a Flatpak. Any other version of bottles is not supported by the Ultramarine Linux Team. - -## Known Incompatible Games - -These games are known to not work on Ultramarine due to various reasons, such as anti-cheat software, DRM, or API incompatibilities: - -| Game | Anti-Cheat implementation | Reason (if applicable) | Notes | -| --------------------------------------------------- | ------------------------- | ------------------------------- | ---------------------------------------------- | -| _Apex Legends_ | Easy Anti-Cheat | - | Support for Proton recently removed | -| _Fortnite_ | Easy Anti-Cheat, BattlEye | - | Officially unsupported according to Epic Games | -| _Honkai Impact 3rd_ | Tencent Anti-Cheat Expert | - | [^1] | -| _Honkai: Star Rail_ | HoYoProtect | - | [^1] | -| _Infinity Nikki_ | Tencent Anti-Cheat Expert | - | [^1] [^2] | -| _Strinova_ | Tencent Anti-Cheat Expert | - | [^1] [^2] | -| _Phantasy Star Online 2: New Genesis_ (Japan) | Easy Anti-Cheat | - | [^2] | -| _Tom Clancy's Rainbow Six Siege_ | BattlEye, MouseTrap | - | - | -| _The Crew 2_ | Easy Anti-Cheat | - | - | -| _Watch_Dogs_ | Easy Anti-Cheat | - | Single-Player only | -| _Watch_Dogs 2_ | Easy Anti-Cheat | - | Single-Player only | -| _Watch_Dogs: Legion_ | Easy Anti-Cheat | - | Single-Player only | -| _Valorant_ | Vanguard | - | - | -| _League of Legends_ | Vanguard | - | - | -| _Battlefield V_ | EA Anti-Cheat | - | - | -| _Battlefield 2042_ | EA Anti-Cheat | - | - | -| _Need for Speed Unbound_ | EA Anti-Cheat | - | - | -| _Command & Conquer Red Alert 3 & Uprising_ | - | SAGE 2 Path resolver is broken | [^3] | -| _Command & Conquer 3: Tiberium Wars & Kane's Wrath_ | - | SAGE 2 Path resolver is broken | [^3] | -| _Command & Conquer_ games up to _Yuri's Revenge_ | - | DirectDraw compatibility issues | [^4] | - -For more information on other games, you can refer to the [ProtonDB](https://www.protondb.com) website for compatibility reports. - -[^1]: There may be workarounds for these games, but they are not officially supported and you may risk getting banned for its use. The recommended way to play these games is to play on a mobile device or a Windows machine. -[^2]: These games have a known whitelist for the Steam Deck specifically, but does not guarantee that it will work on other Linux systems. -[^3]: You may run this game if you install the game in a path that does not contain periods (e.g. `~/Games/` instead of `~/.local/share/Steam/`). -[^4]: You may need to install DDrawCompat or CnC-DDraw to run this game properly, as it has compatibility issues even with Windows systems. You may also use CnCNet to apply the aforementioned fixes and enable multiplayer. - -#### [Next Up: Localization →](/en/usage/l10n) - -#### [← Back To: Ultramarine Anywhere, Windows Subsystem for Linux](/en/anywhere/wsl) diff --git a/src/content/docs/hi/usage/l10n.mdx b/src/content/docs/hi/usage/l10n.mdx deleted file mode 100644 index a28749e0..00000000 --- a/src/content/docs/hi/usage/l10n.mdx +++ /dev/null @@ -1,321 +0,0 @@ ---- -title: Localization, Internationalization and Multilingualization -description: How to make your system support other languages and even improve the support ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Localization (l10n) and internationalization (i18n) support in Ultramarine Linux is crucial as -half of the project team speaks something other than English natively. This page contains details on -how i18n works and how it can be set up on Ultramarine. - -## Fonts - -Ultramarine should come with fonts for most if not all languages by default. Fonts for CJKV, Thai, -Indic languages are installed out of the box. If you find any glyphs supported by Unicode not -rendered correctly, [file a bug report]. - -### Font Priorities - -Chinese users might experience issues where Japanese fonts are preferred over Chinese ones simply -because the locale code `ja_JP` is before `zh_*` when sorted alphabetically. To solve this issue, -edit `~/.config/fontconfig/fonts.conf` (or `/etc/fonts/local.conf` for global changes): - -```xml - - - - - sans-serif - - Noto Sans CJK TW - Noto Sans - HanaMinA - - - - serif - - Noto Serif CJK TW - Noto Serif - HanaMinA - - - -``` - -## Inputting in Another Language - -You may change your key maps / keyboard layout in the settings applet. Refer to documentations for -your chosen Desktop Environment (DE) or Window Manager (WM) for more details. - -### IMFs, IMEs and IMs - -Special tools are required to type in CJKV (Chinese, Japanese, Korean and Vietnamese) and other -specific languages. - -**Input Method Frameworks (IMFs)** are software that enable users to type in numerous different input -methods. They provide a unified experience and user interface between IMEs and the DE/WM. - -**Input Method Editors (IMEs)** are software that convert user inputs into actual texts in different -languages. - -**Input Methods (IMs)** refer to the actual conversion between the input keys and the output text. IMs -are not actual software; there must be an IME that intercepts the inputted keys and map them into -output texts, where the mapping is specified by the IM. - -As an example, a Japanese KDE user would install `fcitx5-mozc` in order to type Japanese. In this -case, Fcitx5 is the IMF, Mozc is the IME, and the IM can be Romaji or Kana input depending on the -user's preference. - -A Cantonese GNOME user from Hong Kong learning Korean would install `ibus-rime` with Jyutping and -Cangjie support alongside `ibus-hangul` for Korean support. Here, IBus is the IMF, Rime IME provides -support for the Jyutping IM and Cangjie IM, while libhangul IME provides support for the Hangul IM. - -In most typical cases, only 1 IMF is installed in a system. However, multilingual users may choose -to install multiple IMEs so that they can type in multiple languages. - -### Fcitx5 vs IBus - -**IBus** (Intelligent Input Bus) is an IMF usually used in GTK-based desktop environments. If you -are using GNOME/Budgie, you most likely will choose IBus over Fcitx5 due to GNOME Desktop's tight -integration with IBus. Even though IBus's initial release was back in August 2008, releases are -still rather frequent and the project is still being maintained. - -**Fcitx5** is a newer IMF implementation and provides support for many different languages with a -slim core extensible with different addons and IMEs. It is the successor to Fcitx. If you are using -DEs that are not GTK-based (such as KDE Plasma which uses Qt) or any WMs, you should choose Fcitx5. - -There are no strict rules on which one to choose, you can install Fcitx5 even though you use GNOME, -and you can also install IBus on a KDE system. Things come down to personal preferences. - -IBus will not work inside Window Managers. - -### Setting up Fcitx5 on KDE - -1. Install your chosen IMEs (see the table below) alongside `kcm-fcitx5` and `fcitx5-configtool`. - - - Install `fcitx5-qt` and `fcitx5-gtk` for Qt/GTK support. - -2. Enable Fcitx 5: - - - On Wayland (default), go to _Settings > Input Devices > Virtual Keyboard_, and select _Fcitx 5_. - - If Fcitx 5 does not work even after a reboot, try running `im-chooser` and select _Fcitx 5_. - - On X11, install `fcitx5-autostart`. - - If Fcitx 5 does not work even after a reboot, try setting the following in `/etc/environment`: - ``` - GTK_IM_MODULE=fcitx - QT_IM_MODULE=fcitx - ``` - -3. Head to _Settings > Regional Settings > Input Method_, then start configuring Fcitx 5. - -### Setting up Fcitx5 on Other DEs/WMs - -1. Install your chosen IMEs (see the table below) alongside `fcitx5-configtool`, `fcitx5-autostart`. - - Install `fcitx5-qt` and `fcitx5-gtk` for Qt/GTK support. -2. Fcitx 5 should be enabled via the autostart package. If not, - - - try running `im-chooser` and select _Fcitx 5_. - - try setting the following in `/etc/environment`: - ``` - GTK_IM_MODULE=fcitx - QT_IM_MODULE=fcitx - ``` - -3. When Fcitx 5 is running, right click on the new "en" icon on the system tray > Settings. -4. Start configuring Fcitx5. - -### Setting up IBus - -1. Install your chosen IMEs (see the table below). -2. On GNOME, Budgie/Flagship and similar DEs, go into Settings > Keyboard. -3. On other DEs, run `ibus-setup`. -4. If IBus does not work correctly, - - try running `im-chooser` and select _IBus_. - - try setting the following in `/etc/environment`: - ``` - GTK_IM_MODULE=ibus - QT_IM_MODULE=ibus - ``` - -### List of IMEs and IMs - -Credits to Arch Wiki contributors for a [complete list of IMs]. The table is filtered and amended -such that it better represents Ultramarine's support on different IMs: - -``` - ┌─────────────────────┬─────────────────────┐ - ↓IM/IME IMF→ │ Fcitx5 │ IBus │ -┌──────────────┴─────────────────────┴─────────────────────┤ -│ CHINESE │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Rime │ fcitx5-rime │ ibus-rime │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Pinyin │fcitx5-chinese-addons│ ibus-pinyin │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Zhuyin │ fcitx5-chewing │ ibus-chewing │ -│ Libzhuyin │ fcitx5-zhuyin │ ibus-libzhuyin │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Cangjie │ │ ibus-table-chinese- │ -│ Sucheng/Quick│ fcitx5-table-extra⁵ │ {cangjie,quick,scj} │ -│ SmartCangjie │ (and More…) │ /ibus-table-chinese │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Haifeng Wubi │ fcitx5-table-extra⁵ │ ibus-table-chinese- │ -│ Jidian Wubi │ (and More…) │wubi-{haifeng,jidian}│ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Others │ fcitx5-table-extra? │ ibus-table-chinese? │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ JAPANESE │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Mozc │ fcitx5-mozc │ ibus-mozc │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Anthy¹ │ fcitx5-anthy │ ibus-anthy │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ SKK² │ fcitx5-skk │ ibus-skk │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ KKC³ │ fcitx5-kkc │ ibus-kkc │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ KOREAN │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Libhangul │ fcitx5-hangul │ ibus-hangul │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ VIETNAMESE │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Unikey │ fcitx5-unikey │ ibus-unikey │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ ViQR │ fcitx5-m17n │ ibus-table-tv │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ INDIC │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ m17n │ fcitx5-m17n │ ibus-m17n │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ OpenBangla │ fcitx5-openbangla │ ibus-openbangla │ -├──────────────┼─────────────────────┼─────────────────────┤ -│Sayura Sinhara│ fcitx5-sayura │ ibus-sayura │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ OTHERS │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Thai │ fcitx5-libthai │ ibus-table-tv │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Math Symbols │ Compose Key⁴? │ibus-table-mathwriter│ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Completion │ *builtin* │ ibus-typing-booster │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Everything │ fcitx5-m17n │ ibus-m17n │ -└──────────────┴─────────────────────┴─────────────────────┘ -``` - -**Notes**: - -1. Anthy (the IM, not IME) is unmaintained, Mozc is usually preferred. -2. https://github.com/ueno/libskk -3. https://github.com/ueno/libkkc -4. See [#Compose Key](#compose-key). There is also LaTeX support in `fcitx5-m17n`. -5. See below for more IMs supported by `fcitx5-table-extra`. - -#### List of IMs Supported by `fcitx5-table-extra` - - - Due to a bug in Fedora packaging, you need to also install - `fcitx5-chinese-addons` alongside `fcitx5-table-extra` in order for things to - take effect. - - -- boshiamy -- cangjie-large -- cangjie3 -- cangjie5 -- cantonese -- cantonhk -- easy-large -- jyutping-table -- quick-classic -- quick3 -- quick5 -- scj6 -- stroke5 -- t9 -- wu -- wubi-large -- wubi98-large -- wubi98-pinyin -- wubi98-single -- wubi98 -- zhengma-large -- zhengma-pinyin -- zhengma - -#### List of Packages for `ibus-table*` - -- `ibus-table-code`: Ibus-Tables for Latex, CNS11643 & Emoticons -- `ibus-table-cyrillic`: Ibus-Tables for Cyrillic -- `ibus-table-extraphrase`: Extra phrase for ibus-table -- `ibus-table-latin`: Ibus-Tables for Latin -- `ibus-table-mathwriter`: Ibus-Tables for Unicode mathematics symbols -- `ibus-table-mongol`: Ibus-Tables for Mongol Script -- `ibus-table-others`: Various tables for IBus-Table -- `ibus-table-translit`: Ibus-Tables for Russian Translit -- `ibus-table-tv`: Ibus-Tables for Thai and Viqr (Vietnamese) -- `ibus-table-chinese`: Chinese input tables for IBus -- `ibus-table-chinese-array`: Array input methods -- `ibus-table-chinese-cangjie`: Cangjie based input methods -- `ibus-table-chinese-cantonese`: Cantonese input methods -- `ibus-table-chinese-cantonyale`: Cantonese input method based on yale romanization -- `ibus-table-chinese-easy`: Easy input method -- `ibus-table-chinese-erbi`: Erbi input method -- `ibus-table-chinese-quick`: Quick-to-learn input methods -- `ibus-table-chinese-scj`: Smart Cangjie -- `ibus-table-chinese-stroke5`: Stroke 5 input method -- `ibus-table-chinese-wu`: Wu pronunciation input method -- `ibus-table-chinese-wubi-haifeng`: Haifeng Wubi input method -- `ibus-table-chinese-wubi-jidian`: Jidian Wubi 86 input method, JiShuang 6.0 -- `ibus-table-chinese-yong`: YongMa input method - -#### Rime - -[Rime](https://rime.im/) is an input method engine / IME for typing Chinese. It supports a wide -range of IMs and is highly customizable. - -You may refer to [ArchWiki](https://wiki.archlinux.org/title/Rime) regarding how Rime could be -configured. Note that Fedora/Ultramrine does not provide `rime-*` packages in our repositories. -You will need to use [plum](https://github.com/rime/plum) (aka. `rime-install`) to install schemas. -`rime-install` defaults to `ibus`; append `rime_frontend=fcitx-rime` to the front of the command if -you are using Fcitx5: - -``` -rime_frontend=fcitx-rime bash rime-install rime-aca/rime-cangjie6 -``` - -### Compose Key - -See [Compose Key on Wikipedia](https://en.wikipedia.org/wiki/Compose_key) and -[on ArchWiki](https://wiki.archlinux.org/title/Compose_key). - -## Translations - -Users that speak less popular languages might face issues where their system shows text in English -even though the language settings are configured properly. Do not report this issue to us. This is -due to lack of translation efforts from upstream (either the DE/WM or the app in concern). You may -help by visiting the translation platform provided by upstream and be a translator. Your -contributions would improve the entire Linux ecosystem experience for minorities. - -### Ultramarine Components - -If projects/software provided by Ultramarine (such as the Readymade installer) are untranslated -in your language, or you would likt to provide them, please visit -[our Weblate translation platform](https://weblate.fyralabs.com/). - -There are cases where your language is not shown in the list of languages. This might be because no -one has made efforts on translating the software, or it is not supported by the i18n libraries used -by the software. For example, there is no Cantonese language option in Readymade because the i18n -library provided by GNOME desktop does not support it. In this case, you should report this issue -to the upstream library. If you have a hard time determining where to report, you may join one of -our communities and reach out. - -[file a bug report]: https://github.com/Ultramarine-Linux/ultramarine/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=%5BBUG%5D+Issue+Report -[complete list of IMs]: https://wiki.archlinux.org/title/Input_method#List_of_available_input_method_editors - -#### [Next Up: Keyboard Configuration →](/en/usage/keyboard-cfg) - -#### [← Back To: Gaming](/en/usage/gaming) diff --git a/src/content/docs/hi/usage/um40-dnf5.mdx b/src/content/docs/hi/usage/um40-dnf5.mdx deleted file mode 100644 index d2bc1e4e..00000000 --- a/src/content/docs/hi/usage/um40-dnf5.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Dnf5 Is The Default Package Manager In Ultramarine Linux 40 -description: dnf5 is the default package manager in Ultramarine Linux 40 ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Starting with UM40, `dnf5` will replace `dnf-3` as the default package manager. -This is done via the `dnf5-default-package-manager` package provided by the UM40 repositories. - -## Technical Details - -The `dnf5-default-package-manager` package has a `%triggerin` script for `dnf` and `yum`. When these -2 packages get installed/updated, the script will be executed, which will replace `/usr/bin/dnf` and -`/usr/bin/yum` symlinks to point to `/usr/bin/dnf5` instead of `/usr/bin/dnf-3`. - -This change has been proposed on upstream Fedora, but has been delayed to Fedora 41. However, we've -decided this change should be worth a try on UM40. - -## Effects - -By using `dnf5`, users will be able to install, remove and upgrade packages much faster. End-users -shouldn't need to do anything to adapt to this change. - -Since `dnf5` isn't bug-for-bug compatible with `dnf-3`, programs that rely on `dnf-3` should use the -`dnf-3` or `dnf4` command to use the older version of `dnf`. If you are facing compatibility issues -with some apps that rely on the `dnf` symlink instead of the actual `/usr/bin/dnf-3` binary, you are -advised to report this bug to upstreams (i.e. the apps in concern), not `dnf5` or Ultramarine. - -## FAQ - -### Why `dnf5`? - -- `dnf5` provides better performance over `dnf-3` because it's written in C++ instead of Python. -- We hope this change will push apps in the Fedora neighborhood to switch to `dnf5` and at the same - time discover apps that are poorly maintained/written and rely on `dnf`/`dnf-3`. - -### Does UM40 Remove `dnf`? - -- We do not remove `dnf-3`. We only replace the symlinks for `dnf` and `yum` to point to `dnf5`. - -### Wouldn't that Break Compatiblility? - -- If changing only 2 symlinks actually breaks your workflows, either your workflows are poorly made, - or there are some apps you use that rely on the 2 symlinks, which evinces that those apps are - unfortunately poorly made. Change your workflows to adapt to `dnf5` or replace `dnf` with the - actual `dnf-3` binary; or in the latter case, report the issue to the upstream apps in concern. - -- We expect `dnf5` in the future to be supposedly much more compatible with `dnf-3`. Upstream Fedora - has been working hard on making `dnf5` the replacement for `dnf-3`. There are works in progress to - adapt GNOME software for `dnf5`, and to make `dnf5` much more feature-complete. - -### But Some Features are Missing in `dnf5`! - -- There are efforts on making `dnf5` more feature-complete compared with `dnf-3`. You may help speed - this up by [contributing to upstream](https://github.com/rpm-software-management/dnf5/). diff --git a/src/content/docs/hi/welcome.mdx b/src/content/docs/hi/welcome.mdx deleted file mode 100644 index 8df69a5a..00000000 --- a/src/content/docs/hi/welcome.mdx +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: "स्वागत है" -description: "यह विकी एंड यूज़र्स और डेवलपर्स दोनों के लिए एक्स्टेंडेड डॉक्यूमेंटेशन है, इसलिए इसे दो कैटेगॉरीज में अलग किया गया है।" ---- - -import Alert from "../../../components/Docs/Alert.astro"; - -ultramarine विकी में आपका स्वागत है! यह विकी उपयोगकर्ताओं को ultramarine linux में सहज होने में मदद करने के लिए डिज़ाइन की गई है। - -डेवलपर और पैकेज मेंटेनर डॉक्यूमेंटेशन अब [Fyra Developer](https://developer.fyralabs.com) पर है। - -यदि आप योगदान करना चाहते हैं, तो [Contributing Section](/en/contributing/contributorguide) पर जाएँ। - -इस पेज पर आप प्रोजेक्ट के बारे में पढ़ सकते हैं, इसलिए अगर आप महत्वपूर्ण कॉन्सेप्ट्स और हमारी फिलॉसॉफी से परिचित होना चाहते हैं, तो इसे पहले पढ़ें! - -अगर आप ultramarine linux इंस्टॉल करना चाहते हैं, तो [Getting Ultramarine](/en/setup/getting) सेक्शन पर जाएँ। - -## जनरल फिलॉसॉफी - -ultramarine linux का मुख्य लक्ष्य तुरंत उपयोग करने योग्य अनुभव प्रदान करना है, जबकि तकनीकी नवाचारों के साथ अपडेट रहना है। ये मानक हैं जिनका हम पालन करने की कोशिश करते हैं: - -### ultramarine प्रैक्टिकल है। - -कई डिस्ट्रो के विपरीत, जो अपने आइडियोलॉजी के साथ कड़ा पालन करते हैं (जो पूरी तरह ठीक है), ultramarine एक (लगभग) पूरी तरह से फ्री सिस्टम भेजते हुए भी सबसे आसान मॉडल पर काम करता है। इसका मतलब है कि हम यूज़र के लिए इसे आसान बनाने की कोशिश करते हैं, भले ही हमें कुछ प्रॉपायटरी ड्राइवर्स और कोडेसेस भेजने पड़ें, जिन्हें कुछ डिस्ट्रो आउट-ऑफ-बॉक्स comfortable नहीं मानते। - -### ultramarine प्रोग्रेसिव है। - -हम मानते हैं कि linux क्षेत्र में हालिया नवाचार उपयोगकर्ता और डेवलपर अनुभव को काफी बेहतर बनाने में सहायक हैं। Flatpak और XDG Portals जैसी तकनीकें डेवलपर्स को हमारे उपयोगकर्ताओं के लिए बेहतर अनुभव प्रदान करने में मदद करती हैं। अपस्ट्रीम में किया गया काम हमारे उपयोगकर्ताओं के अनुभव को बेहतर बनाता है, और ultramarine इकोसिस्टम में किया गया काम; जैसे कि ऐक्सेंट रंग और Chromebook समर्थन, बड़े linux इकोसिस्टम को बेहतर बनाता है। यह एक जीत-जीत की स्थिति है। - -### ultramarine फ्रेंडली है। - -जबकि एडवांस यूज़र्स के लिए कुछ सेटिंग्स ट्वीक करना और 3rd पार्टी रिपॉजिटरीज से कुछ पैकेज इंस्टॉल करना ट्रिवियल लग सकता है, linux (या केवल Fedora) में नए लोगों को यह पता लगाने में कई घंटे लग सकते हैं कि उन्हें कौनसे पैकेज चाहिए और उन्हें कहां से ढूंढना है। ultramarine नए और पुराने यूज़र्स को जल्दी से सेटअप और रन करने की सुविधा देता है। - -### ultramarine एक्सेसिबल है। - -हम मानते हैं कि सॉफ़्टवेयर को आपको वहीं मिलना चाहिए जहां आप हैं। ultramarine इसे बेहतर अनुभव बनाकर, अपने सॉफ़्टवेयर को स्थानीयकृत करके और आपके मौजूदा हार्डवेयर पर चलाकर पूरा करता है। - -## FAQ - -### माइग्रेशन स्क्रिप्ट क्या करती है? - -माइग्रेशन स्क्रिप्ट RPMFusion, Terra रिपॉजिटरी और हमारे साइनिंग कीज़ इंस्टॉल करती है, फिर एक मौजूदा Fedora इंस्टॉलेशन के ऊपर ultramarine linux इंस्टॉलेशन का बेयर मिनिमम इंस्टॉल करती है (Fedora रिलीज़ पैकेजेस को ultramarine वाले पैकेजेस से स्वैप करते हुए)। - -स्क्रिप्ट केवल ultramarine linux को काम करने के लिए जरूरी बेयर मिनिमम इंस्टॉल करती है, क्योंकि हम आपके वर्तमान सिस्टम में अतिरिक्त ब्लोट नहीं जोड़ना चाहते। - -माइग्रेट होने के बाद, आप ultramarine की लेटेस्ट और बेहतरीन फीचर्स पाएंगे जैसे ही हम उन्हें बिल्ड करेंगे! - -### क्या ultramarine सिर्फ Fedora है अतिरिक्त डेस्कटॉप एन्वायरमेंट्स के साथ? - -नहीं, ultramarine सिर्फ Fedora नहीं है अतिरिक्त डेस्कटॉप एन्वायरमेंट्स के साथ। हमारा लक्ष्य यूज़र एक्सपीरियंस को बेहतर बनाना है ताकि नए और एडवांस यूज़र्स के लिए सही तरीके से काम करे। - -### Cutefish का क्या हुआ? - -Cutefish अब अपस्ट्रीम में मेंटेन नहीं होता। इसी कारण हमने ultramarine 37 में Cutefish का सपोर्ट बंद करने का फैसला किया। - -### Pantheon का क्या हुआ? - -Pantheon एडिशन UM40 में हटा दिया गया। डाउनलोड्स कुछ समय से लगातार घट रहे थे और डेस्कटॉप बस स्टार्ट नहीं हो रहा था, इसलिए इसे अफसोस के साथ हटा दिया गया। - -### क्या आप (यहाँ डेस्कटॉप डालें) एडिशन जोड़ सकते हैं? - -सरल शब्दों में कहें तो, शायद। हमें नई एडिशन को निम्नलिखित कुछ आवश्यकताओं को पूरा करना होता है: - -- सक्रिय रूप से मेंटेन किया जा रहा हो (पिछले एक साल में रिलीज़ हुआ हो, और अगली रिलीज़ की योजना हो) -- सक्रिय रूप से मेंटेन किया जा रहा हो (पिछले एक साल में रिलीज़ हुआ हो, और अगली रिलीज़ की योजना हो) -- एक काम करने वाला Wayland सेशन या उसे लागू करने की एक उचित योजना हो - -आदर्श रूप से, किसी भी नई एडिशन में निम्नलिखित भी होना चाहिए: - -- एक्सेसेबिलिटी टूलिंग्स -- डिस्ट्रीब्यूशन अपग्रेड्स के लिए सपोर्ट वाला एक नेटिव ऐप स्टोर -- एक्सेंट कलर और कलर स्कीम सेटिंग पोर्टल्स के लिए सपोर्ट - -अगर fedora में डेस्कटॉप एनवायरनमेंट उपलब्ध है, तो आप उसे मैन्युअली भी इंस्टॉल कर सकते हैं - -#### लेकिन (Cutefish का पुनरुद्धार डालें) के बारे में क्या? - -हम Cutefish के पुनरुद्धारों को शामिल करने का इरादा नहीं रखते क्योंकि वे आमतौर पर बहुत कम समय तक टिकते हैं। - -### क्या ultramarine मेरा डेटा ट्रैक या कलेक्ट करता है? - -अभी के लिए, हम जो एकमात्र डेटा कलेक्ट करते हैं वह यह है कि किसी पैकेज को Terra या ultramarine रिपॉजिटरी से [DNF Counting](https://docs.fedoraproject.org/en-US/infra/sysadmin_guide/dnf-counting/) का उपयोग करके कितनी बार डाउनलोड किया गया है। यह जानकारी आप या आपके कंप्यूटर से जुड़ी नहीं होती। - -Fyra Labs (जो ultramarine के पीछे की कंपनी है) किसी भी यूज़र की स्पष्ट अनुमति के बिना ऐसा कोई डेटा कलेक्ट नहीं करती जिसे किसी व्यक्ति से जोड़ा जा सके। - -### क्या ultramarine सेमी-रोलिंग है? - -नहीं। ultramarine और fedora सेमी-रोलिंग या रोलिंग नहीं हैं। इसके बजाय, वे स्थिर (stable) रिलीज़ स्कीम का उपयोग करते हैं। -ब्रेकिंग चेंजेज़ वाले अपडेट मुख्य रिलीज़ के लिए रोल आउट किए जाते हैं। माइनर अपडेट/पॉइंट अपडेट बैकवर्ड-कम्पैटिबल होते हैं। सरल शब्दों में, ultramarine में सिस्टम कॉम्पोनेंट्स तभी अपडेट किए जाते हैं जब वे कम्पैटिबिलिटी को ब्रेक न करें। - -हालाँकि, ultramarine Linux में Terra, RPM Fusion और Flathub शामिल हैं। - -- Terra एक RPM रिपॉजिटरी है जिसे Fyra Labs प्रदान करती है, और यह मुख्य रूप से रोलिंग रिलीज़ स्कीम का उपयोग करती है। -- RPM Fusion fedora के लिए एक और (बहुत लोकप्रिय) थर्ड-पार्टी रिपॉजिटरी है। यह स्थिर रिलीज़ स्कीम का उपयोग करती है। -- Flathub एक क्रॉस-डिस्ट्रो Flatpak रिपॉजिटरी है। इस रिपॉजिटरी के अपडेट का fedora/ultramarine के रिलीज़ साइकिल से कोई लेना-देना नहीं है। सख्ती से कहें तो, Flathub के पैकेज रोलिंग हैं क्योंकि उन्हें अपस्ट्रीम द्वारा एक संस्करण जारी करने पर अपडेट किया जाता है। - -### अगर कुछ पैकेजेज़ मिड-साइकिल में अपडेट होते हैं, तो क्या इसका मतलब है कि ultramarine अस्थिर या असुरक्षित है (जैसे कि Debian की तुलना में)? - -नहीं। ultramarine में पैकेजेज़ मिड-साइकिल में अपडेट होते हैं, लेकिन ये अपडेट्स सिर्फ नॉन-ब्रेकिंग चेंजेज़ शामिल करते हैं। किसी अपडेट के कारण आपका कंप्यूटर मिड-साइकिल में टूटने की संभावना लगभग शून्य है। - -- fedora/ultramarine में पैकेजेज़ मिड-रिलीज़ के दौरान अपडेट होते हैं, लेकिन ये अपडेट्स सिर्फ नॉन-ब्रेकिंग चेंजेज़ ही शामिल करते हैं। आपके कंप्यूटर के मिड-रिलीज़ में किसी अपडेट से टूटने की संभावना लगभग शून्य है। -- यह सच है कि ultramarine और fedora में डेबियन जैसी डिस्ट्रोज़ की तुलना में अपडेट्स अधिक बार आते हैं, और कुछ हद तक वे थोड़ा अधिक अस्थिर हो सकते हैं। लेकिन fedora/ultramarine का रिलीज़ साइकिल ऐसा बनाया गया है कि ऑपरेटिंग सिस्टम सामान्य उपयोग के लिए पर्याप्त रूप से स्थिर बना रहे। दुनिया भर में लाखों fedora डिवाइसेज़ बिना टूटे सही से काम कर रहे हैं, जो fedora की उच्च स्थिरता को दर्शाता है। डेबियन का रिलीज़ साइकिल इसके विपरीत बहुत धीमा है, जो कई बार अनावश्यक झंझटें पैदा कर सकता है। -- कुछ डिस्ट्रोज़ स्थिर रिलीज़ साइकिल को चरम तक ले जाते हैं। ये डिस्ट्रोज़ सर्वर्स के लिए डिज़ाइन किए गए हैं जो कई सालों तक चलते हैं, और अपडेट्स को महीनों या सालों तक विलंबित करते हैं। ऐसे डिस्ट्रोज़ का उपयोग करने वाले पीसी यूज़र्स कई चीज़ों से वंचित रह सकते हैं — जैसे नए फीचर्स, बग फिक्सेस, और सिक्योरिटी पैचेस। उचित ज्ञान और प्रबंधन के बिना, ये सिस्टम fedora/ultramarine से भी अधिक असुरक्षित हो सकते हैं। - -### ultramarine को अपडेट्स लागू करने के लिए मुझे रीबूट क्यों करना पड़ता है? - -ultramarine को वास्तव में अपडेट्स लागू करने के लिए रीबूट करने की आवश्यकता नहीं है। आप अधिकांश सिस्टम अपडेट्स बिना रीबूट किए आसानी से लागू कर सकते हैं, बस यह कमांड चलाकर: - -```bash -sudo dnf upgrade -``` - -हालांकि, कुछ अपडेट्स को प्रभावी होने के लिए रीबूट की आवश्यकता हो सकती है। ये आमतौर पर क्रिटिकल पाथ अपडेट्स होते हैं जो प्रमुख सिस्टम कॉम्पोनेंट्स को प्रभावित कर सकते हैं, जैसे कि कर्नेल, स्टैंडर्ड लाइब्रेरी, ग्राफिकल शेल, या आवश्यक सिस्टम सर्विसेज़। - -डिफ़ॉल्ट रूप से, ultramarine _PackageKit_ का उपयोग करके ऑटोमेटिक अपडेट करेगा, जो _Offline Updates_ फीचर का उपयोग करके अपडेट्स लागू करेगा, और इसके लिए रीबूट आवश्यक हो सकता है। ultramarine अपडेट्स लागू करने के बाद आपको रीबूट करने का संकेत दे सकता है ताकि सभी अपडेट सही ढंग से लागू हों, लेकिन आप बाद में किसी भी समय रीबूट करने का विकल्प चुन सकते हैं। - - - -यह अभी भी सलाह दी जाती है कि अपडेट्स लागू करने के बाद अपने सिस्टम को रीबूट करें ताकि यह सुनिश्चित हो सके कि सभी अपडेट्स सही ढंग से लागू हुए हैं, खासकर यदि आपने कुछ समय से अपने सिस्टम को रीबूट नहीं किया है। - - - -### ultramarine क्यों (अन्य डिस्ट्रो के बजाय) - -- पर्फ़ॉर्मेंस - - fedora(जिस डिस्ट्रो पर ultramarine आधारित है) में अन्य डिस्ट्रो की तुलना में बेहतरीन IO प्रदर्शन होता है। - - BTRFS डिफ़ॉल्ट फाइल सिस्टम है, एक अपेक्षाकृत उच्च प्रदर्शन वाला फाइल सिस्टम जिसमें स्नैपशॉट जैसी सुविधाएँ हैं। आप अपनी फाइलें एक सेकंड से भी कम समय में बैकअप कर सकते हैं (अन्य फाइल सिस्टम जैसे ext4 के विपरीत)। - - हम हल्के डेस्कटॉप एनवायरनमेंट्स जैसे Budgie (Flagship Edition) और Xfce शामिल करते हैं। ये सुंदर दिखते हैं, अच्छी तरह काम करते हैं और तेज़ हैं। -- प्राइवेसी - - हम आपका निजी/व्यक्तिगत डेटा ट्रैक या इकट्ठा नहीं करते। - - हमें यह भी नहीं पता कि कितने Ultramarine डिवाइस हैं (कुछ कंपनियों के विपरीत)। -- सिक्योरिटी - - सिक्योरिटी अपडेट जल्दी प्रदान किए जाते हैं (कुछ अन्य डिस्ट्रो की तुलना में)। - - SELinux डिफ़ॉल्ट रूप से सक्रिय है। -- कस्टमाइजेशन - - आपके लिए चुनने के लिए कई डेस्कटॉप एनवायरनमेंट्स उपलब्ध हैं। - - हमारे पास डिफ़ॉल्ट रूप से ऐसे ऐपलेट्स इंस्टॉल किए गए हैं जो आपके डेस्कटॉप कस्टमाइजेशन में मदद करते हैं। -- यूज़ेबिलिटी - - आपको कभी भी कमांड लाइन छूने की आवश्यकता नहीं है। - - यदि कुछ स्थितियों में कमांड लाइन की आवश्यकता हो और ऐसी स्थितियाँ अन्य सामान्य उपयोगकर्ताओं में भी उत्पन्न हो सकती हैं, तो आपको [इस बग की रिपोर्ट](https://github.com/Ultramarine-Linux/ultramarine) करनी चाहिए। - - ultramarine के डिफ़ॉल्ट सेटिंग्स समझदारी से चुने गए हैं। - - लोकप्रिय प्रोग्राम जो आपको शायद चाहिए, डिफ़ॉल्ट रूप से इंस्टॉल किए गए हैं, जैसे LibreOffice, Firefox, ड्राइवर्स आदि। - - हम ऐसे रिपॉजिटरीज शामिल करते हैं जो लोकप्रिय सॉफ़्टवेयर प्रदान करते हैं। - - आप ऐप स्टोर से और भी कई ऐप्स इंस्टॉल कर सकते हैं। इन्हें समर्पित टीमों द्वारा सावधानीपूर्वक सत्यापित किया गया है। - - Fedora और RPM Fusion रिपॉजिटरीज का उपयोग किया जाता है और लाखों लोगों द्वारा भरोसेमंद हैं। - - Terra की समीक्षा Fyra Labs और Ultramarine Project द्वारा की जाती है। [आप हमारी सुरक्षा नीति](https://github.com/terrapkg/packages/blob/f39/SECURITY.md) - - Flathub का उपयोग पूरे Linux/BSD इकोसिस्टम के उपयोगकर्ता करते हैं। यदि आप ऐप स्टोर से ऐप्स इंस्टॉल करते हैं, तो आप शायद Flathub से ऐप्स इंस्टॉल कर रहे हैं, जो रन होने पर आपके सिस्टम एनवायरनमेंट से अलग रहते हैं, जिससे हमले कम सफल होते हैं। - - -### ultramarine क्यों (Windows की बजाय) - -- परफॉर्मेंस - - Windows आपके कंप्यूटर को कई अलग-अलग संभावित रूप से अनचाहे प्रोग्राम्स से भर देता है जो आपके कंप्यूटर को धीमा कर देते हैं। ultramarine ऐसा नहीं करता। - - Ultramarine कुछ हल्के डेस्कटॉप एनवायरनमेंट्स (जैसे Budgie/Flagship और Xfce) प्रदान करता है, जो तेज चलते हैं। - - Ultramarine नई टेक्नोलॉजीज़ का उपयोग करता है जो बैकवर्ड्स कंपैटिबिलिटी के कारण Windows में उपलब्ध नहीं हैं। ये टेक्नोलॉजीज़ बेहतर परफॉर्मेंस देती हैं। - - उदाहरण के लिए, टास्क शेड्यूलर्स, फाइल सिस्टम्स, शेल्स आदि। - - अधिकांश आधुनिक सर्वर (जिनमें बड़े वेब सर्वर भी शामिल हैं) Linux का उपयोग करते हैं क्योंकि यह बहुत तेज है। -- प्राइवेसी - - हम आपके निजी डेटा को कभी भी कलेक्ट या ट्रैक नहीं करते क्योंकि वह स्टोरेज की बर्बादी है। - - हमें यह भी नहीं पता कि कितने Ultramarine डिवाइस हैं (कुछ कंपनियों के विपरीत)। - - जब आप Windows सेटअप करते हैं, तो आपको एक बहुत लंबा लाइसेंस स्वीकार करना पड़ता है। जबकि हमारे इंस्टॉलर में लाइसेंस एग्रीमेंट का कोई पेज ही नहीं है। - - Ultramarine ओपन सोर्स है। कोई भी सोर्स कोड की समीक्षा करके देख सकता है कि हम आपका डेटा ट्रैक या कलेक्ट करते हैं या नहीं। हम ऐसा नहीं करते। -- सिक्योरिटी - - सिक्योरिटी अपडेट्स Windows की तुलना में कहीं अधिक तेज होते हैं। - - अपडेट्स के लिए रीबूट की आवश्यकता नहीं होती। - - वर्तमान कम लोकप्रियता के कारण मालवेयर, वायरस आदि द्वारा Linux को निशाना बनाए जाने की संभावना बहुत कम होती है। - - हमारा ओपन सोर्स मॉडल किसी के लिए भी बग्स या वल्नरेबिलिटीज़ को पहचानना और उन्हें जल्दी ठीक करना बहुत आसान बनाता है। -- स्टेबिलिटी - - Ultramarine एक स्टेबल रिलीज़ साइकिल का उपयोग करता है। अपडेट्स आपके कंप्यूटर को खराब नहीं करेंगे। - - जब सिस्टम अपग्रेड से आपके कंप्यूटर को नुकसान पहुंचने की संभावना होती है, तो हम आपको इसके बारे में चेतावनी देते हैं। - - हम लोगों को सलाह देते हैं कि वे सपोर्ट से संपर्क करें ताकि यह जांच सकें कि अपग्रेड वास्तव में सिस्टम को नुकसान पहुंचा सकता है या नहीं। - - हमारी सपोर्ट टीम सिस्टम अपग्रेड के दौरान किसी भी संभावित समस्या को हल करने में आपकी मदद कर सकती है। - - और सबसे महत्वपूर्ण बात, आप चाहें तो बिल्कुल अपग्रेड न करने का विकल्प भी चुन सकते हैं! निर्णय आपका है। - - लाखों IoT डिवाइस Linux का उपयोग करते हैं। यदि कुछ खराब हो जाए, तो पूरा इंटरनेट प्रभावित हो सकता है। इंटरनेट Linux की स्टेबिलिटी पर भरोसा करता है, आपको भी करना चाहिए। -- कस्टमाइजेशन और यूज़ेबिलिटी - - आपके पास चुनने के लिए कई डेस्कटॉप एनवायरनमेंट्स हैं। उनमें से कुछ हल्के हैं और कुछ आकर्षक हैं। - - Ultramarine आपके पूरे डेस्कटॉप अनुभव को कस्टमाइज करने के कई तरीके प्रदान करता है। आपके कंप्यूटर पर आपका पूरा नियंत्रण होता है। - - हम आपसे विकल्प कभी नहीं छिपाते — बल्कि हम उन्हें आपके लिए और आसान बनाते हैं। - - यदि आपको Ultramarine पर कुछ विशेष कस्टमाइजेशन करना कठिन लगता है, तो यह एक डिज़ाइन की कमी है और आपको हमें अपना फीडबैक भेजना चाहिए (जैसे [GitHub](https://github.com/Ultramarine-Linux/ultramarine) के माध्यम से)।) - - हम पुराने और नए हार्डवेयर दोनों का उचित रूप से सपोर्ट करते हैं, और आपके कंप्यूटर पर एक परफॉर्मेंट और पर्सनलाइज्ड सिस्टम सेटअप करने के लिए कई टूल्स प्रदान करते हैं। - - Ultramarine की डिफॉल्ट सेटिंग्स इस तरह बनाई गई हैं कि आप अपने कंप्यूटर का उपयोग जितनी जल्दी हो सके शुरू कर सकें। - - Ultramarine एक ऐप स्टोर के साथ आता है। आप समर्पित टीमों द्वारा रिव्यू किए गए प्रोग्राम्स को बहुत आसानी से इंस्टॉल कर सकते हैं। - - यदि आप चाहते हैं कि कुछ प्रोग्राम्स ऐप स्टोर में शामिल किए जाएं, तो आपको हमें फीडबैक भेजना चाहिए। - -## Team - -इन लोगों और कम्युनिटी के साथ मिलकर बनाया गया! - -- Pornpipat "Cappy" Popum -- Lleyton "Lea" Gray -- Madomado -- Jaiden Riordan -- Owen Zimmerman -- June Fish -- Aikoyori -- Trobonox -- Mo -- Toru Ishikawa - -[टीम से मिलें →](https://fyralabs.com/about/#Meet:~:text=benefit%20of%20all.-,Meet%20the%20Team) - -#### [अगला: Join the Community →](/en/community/community) - - diff --git a/src/content/docs/zh_hant/anywhere/android.mdx b/src/content/docs/zh_hant/anywhere/android.mdx deleted file mode 100644 index a23190a6..00000000 --- a/src/content/docs/zh_hant/anywhere/android.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Android (Anywhere)" -description: "Android Devices in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change - - -Android Devices are very common, and (most of the time) extremely customiseable. We do not have a target release or full plan at this time, but we will support in the (hopefully) near future. - -## Implementation - -We intend to use Halium for porting as it provides better hardware support. diff --git a/src/content/docs/zh_hant/anywhere/applesilicon.mdx b/src/content/docs/zh_hant/anywhere/applesilicon.mdx deleted file mode 100644 index 027a299f..00000000 --- a/src/content/docs/zh_hant/anywhere/applesilicon.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: "Apple Silicon Macs (Anywhere)" -description: "Apple Silicon in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change - - -We plan to use the Asahi script/patches from upstream. This will happen sometime in the near future. - -## Implementation - -- Potential GUI installer (Readymade from inside macOS) diff --git a/src/content/docs/zh_hant/anywhere/chromebook.mdx b/src/content/docs/zh_hant/anywhere/chromebook.mdx deleted file mode 100644 index 28ed1a96..00000000 --- a/src/content/docs/zh_hant/anywhere/chromebook.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: "Chromebook (Anywhere)" -description: "Chromebooks in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **In Progress Phase**. All information on - this page is subject to change. Do not follow any instructions unless you know - what you're doing. - - -Chromebooks were an obvious target for Ultramarine Anywhere, despite being mostly -standard hardware, they have custom EC and strange firmware. - -Chromebook support in Ultramarine Linux is provided in partnership with the [Chrultrabook Project](https://chrultrabook.com). - -# x86 - -All x86 Chromebooks that use Depthcharge are supported by Ultramarine Chromebook Edition. - -## How it Works - -Ultramarine Chromebook Edition uses a special bootloader called [Submarine](https://developer.fyralabs.com/submarine) to load the kernel. - -Under the hood, Submarine is an incredibly minimal Linux OS based on [u-root](https://github.com/u-root/u-root), it's only really usable for debug and booting a full distribution. Once Submarine is loaded, we use [LinuxBoot](https://www.linuxboot.org/) to boot a full copy of Ultramarine (and hopefully more distros in the future). - -Now for the big question, how do we do this without modifying the firmware? We take advantage of the way Depthcharge (the ChromeOS firmware) works. We store Submarine in a 16MiB partition on disk, this is normally used by ChromeOS to store a full ChromeOS Kernel and initramfs. Depthcharge doesn't actually check if the contents of the partition are a valid kernel, it just checks for a GPT Header and runs whatever code is found in the partition, in our case, Submarine. - -By default, Depthcharge will only boot code with Google's signing keys, we get around this by enabling the built-in ChromeOS developer mode. - -To summarise, we boot a tiny Linux distribution (Submarine) and use it to launch Ultramarine's vmlinuz and initramfs using kexec. - -## Userland Changes - -Devices in Ultramarine Anywhere try to stick very closely to the standard Ultramarine userland, sometimes we have to deviate from this to make the experience better. - -### Audio Support - -We use WeirdTreeThing's [audio script](https://github.com/WeirdTreeThing/chromebook-linux-audio) to make audio work properly. - -### Default Partitions - -On Chromebooks, we use F2FS (in lieu of Btrfs) and disable swap to extend the life of the eMMC storage found in many Chromebooks. We also create one 16MiB partition containing [Submarine](https://developer.fyralabs.com/submarine) at the start of the disk instead of `/boot/EFI`. - -### Keyboard Mapping - -We use [keyd](https://github.com/rvaiya/keyd) to map keys on Chromebooks. - -## Feature Matrix - -| Feature | Functionality | Notes | -| ----------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| Booting | Working | With [Submarine](https://developer.fyralabs.com/submarine) or [UEFI](https://docs.chrultrabook.com/docs/firmware/) | -| WiFi | Working | | -| Ethernet | Working | | -| Bluetooth | Working | | -| Display | Working | | -| Graphics | Working | | -| Storage | Working | | -| USB | Working | | -| SD | Working | | -| Ports | Working | | -| Power | Working | | -| Touch | Working | | -| Pen | Partial | USI and Wacom Pens work, others may not | -| Audio | Partial | May require [additional setup](https://github.com/WeirdTreeThing/chromebook-linux-audio). Some Chromebooks may not work due to controller issues | -| Keyboard | Working | Some models may have issues on older kernels | -| Touchpad | Working | | -| Webcam | Working | | -| Lid Switch | Partial | Some models may have issues | -| Tablet Mode | Partial | Same reason as lid switch | - -## Unsupported Devices - -| Device | Reason | -| --------- | ----------------------------------------------------------------------------------------- | -| Mario | Firmware Limitations | -| Alex | Firmware Limitations | -| ZGB | Firmware Limitations | -| Stumpy | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) | -| Lumpy | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) | -| Parrot | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) | -| Butterfly | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) | -| Link | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) | -| Stout | Boot Partition Size Limitation (This can be [Corebooted](https://docs.chrultrabook.com/)) | - -These are among the first few generations of Chromebooks, and either use an unsupported proprietary firmware, or have firmware limitations which prevents booting a partition large enough to fit submarine (newer Chromebooks have larger size limitations). - -## Installation - -Prebuilt images with userland tweaks will be available in the near future - -## Manual Installation - NOT RECOMMENDED - - - This method is **NOT RECOMMENDED**. Only do this if you know what you're doing - and need to test. We are not responsible for brickage, thermonuclear war, the - death of a pet, etc. - - -This guide assumes you have [Developer Mode](https://chromium.googlesource.com/chromiumos/docs/+/main/developer_mode.md#dev-mode) and [USB Booting Enabled](https://chromium.googlesource.com/chromiumos/docs/+/main/developer_guide.md#boot-from-your-usb-disk) - -1. Flash an [Ultramarine Raw Image](https://images.fyralabs.com/images/ultramarine/39/) to a USB Drive -2. Delete the first partition on the disk -3. Create a 16MB ext4 partition -4. Flash the submarine.kpart file to the partition -5. Set the partition flags with cgpt - -``` -cgpt add -i -t kernel -P 15 -T 1 -S 1 /dev/sdX -``` - -6. Boot the image on the Chromebook - -You're now inside a minimal Ultramarine system, from here you can install a desktop (also `NetworkManager-wifi`) and use Ultramarine from the external disk. If you'd like to install, you'll need to install and configure Anaconda. [Our Kickstarts can be found on Github.](https://github.com/Ultramarine-Linux/build-scripts/tree/main/kickstarts) - -7. On the internal disk, create a 16MiB ext4 partition BEFORE the standard partitions -8. Install Ultramarine normally -9. After the installation is complete, flash the submarine.kpart file to the 16MiB partition you created -10. Set the partition flags with cgpt - -``` -cgpt add -i -t kernel -P 15 -T 1 -S 1 /dev/sdX -``` - -11. Done! - -## ARM - -ARM Chromebooks are in heavy development. If you'd like to help test, check out the [ARM Beta Program](/en/chromebook/armbeta). diff --git a/src/content/docs/zh_hant/anywhere/enterprise.mdx b/src/content/docs/zh_hant/anywhere/enterprise.mdx deleted file mode 100644 index b60369e4..00000000 --- a/src/content/docs/zh_hant/anywhere/enterprise.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Data Centre, Enterprise, and HPC (Anywhere)" -description: "Data Centre, Enterprise, and HPC in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change. - - -We plan on making server images, GUI and CLI. These images will be built for constant runtime, and include/exclude fitting packages for server usecases. If you'd like to suggest a platform, drop us a line in [our chats](/en/community/community). - -## Implementation - -- Refined OOTB cockpit excperience -- CLI only option -- Advanced installer features -- Advanced networking options -- Package suite more attuned to a server usecase -- Default filesystem changed to ZFS -- Potential improved RAID and non-RAID architecture implementation... -- Cluster support -- A whole lot more... diff --git a/src/content/docs/zh_hant/anywhere/ott.mdx b/src/content/docs/zh_hant/anywhere/ott.mdx deleted file mode 100644 index 0f10673b..00000000 --- a/src/content/docs/zh_hant/anywhere/ott.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Smart TV Devices" -description: "Smart TV Devices in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -Smart TV boxes often run Android, which means we can use Halium to port Ultramarine to the unlockable ones. - -This may be limited to FireOS devices as many of them are vulnerable to [mtk-su](https://xdaforums.com/t/amazing-temp-root-for-mediatek-armv8-2020-08-24.3922213/). If you are knowledgable about Smart TV modding/running alternative operating systems, please reach out [here](/en/community/community). diff --git a/src/content/docs/zh_hant/anywhere/riscv.mdx b/src/content/docs/zh_hant/anywhere/riscv.mdx deleted file mode 100644 index 370a12ad..00000000 --- a/src/content/docs/zh_hant/anywhere/riscv.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "RISC-V (Anywhere)" -description: "RISC-V Devices in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -We plan to port to RISC-V architecture as soon as we can get the hardware. If you are a hardware vendor producing RISC-V devices or have a spare RISC-V device, please [reach out](mailto:contact@fyralabs.com) if you'd like to support the Ultramarine RISC-V port. diff --git a/src/content/docs/zh_hant/anywhere/rpi.mdx b/src/content/docs/zh_hant/anywhere/rpi.mdx deleted file mode 100644 index acfd1a18..00000000 --- a/src/content/docs/zh_hant/anywhere/rpi.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: "Raspberry Pi (Anywhere)" -description: "Raspberry Pi in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Raspberry Pi is a very popular series of SBCs. They are cheap, easy to get, run Linux well, and have a large ecosystem of expansion cards (Hats and Bonnets) and accessories. - -Fedora has upstream support for the Pi 4, 400, and 3. Ultramarine Anywhere intends to extend support to the Zero 2 and 5. - -## Raspberry Pi 5 - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change. - - -The Raspberry Pi 5 is not currently supported in Fedora. We intend to package the official Raspberry Pi kernel (which should also provide a better experience on the other Pi models.) - -## Raspberry Pi 4 and 400 - -The Raspberry Pi 4 and 400 have had support in Ultramarine Linux since UM39, and desktop images since UM40. We use the Fedora kernels and boot proccess. - -### Notes - -- RPi4B has a 1GB and 2GB model, we suggest against running a desktop environment on these (Xfce may be alright.) -- RPi400 does not have support for WiFi in Ultramarine, this is an upstream issue. -- The Pi 4 series has native USB boot support. Your experience may be better with a fast USB Drive or SSD connected through an adapter. See [this article](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-mass-storage-boot) for more info. -- If using a microSD card, we reccomend using a Class 10 microSD card, your experience will be signifcantly better than lower classes. -- If using a USB drive, ensure it's USB 3.0 or newer, 2.0 will be a signifcantly worse experience than a microSD. -- Your storage device will need to be larger than 9GB (the image is 8.59GB) We suggest 16GB so you have space for software. - -### Installing - -1. Grab any aarch64 [Raw Image](TBD) from our downloads page. -2. Flash it to your microSD card or drive with [balenaEtcher](https://etcher.io) or [Raspberry Pi Imager](https://flathub.org/apps/org.raspberrypi.rpi-imager) -3. Expand the root partition to fill the entire storage device. We reccomend using Gparted, get it from your edition's app store. -4. Insert the storage device into your Pi and boot up! The default login is ultramarine (password is the same.) Please change your password once logged in. - -## Raspberry Pi 3 - -The Raspberry Pi 3 has had support in Ultramarine Linux since UM39, and desktop images since UM40. We use the Fedora kernels and boot proccess. - -### Notes - -- RPi3B has only 1GB of RAM, and the 3A only has 512MB, we suggest against running a desktop environment (Xfce may be alright.) -- Your microSD card will need to be larger than 9GB (the image is 8.59GB) We suggest 16GB so you have space for software. -- We reccomend using a Class 10 microSD card, your experience will be signifcantly better than lower classes. - -### Installing - -1. Grab any aarch64 [Raw Image](TBD) from our downloads page. -2. Flash it to your microSD card with [balenaEtcher](https://etcher.io) or [Raspberry Pi Imager](https://flathub.org/apps/org.raspberrypi.rpi-imager) -3. Expand the root partition to fill the entire microSD. We reccomend using Gparted, get it from your edition's app store. -4. Insert the microSD card into your Pi and boot up! The default login is ultramarine (password is the same.) Please change your password once logged in. - -## Raspberry Pi Zero 2 - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change. - - -## Raspberry Pi 1, 2, and Zero - - - These devices are **Not Supported** due to 32bit CPUs. We include them in this - page to avoid questions. - diff --git a/src/content/docs/zh_hant/anywhere/steamdeck.mdx b/src/content/docs/zh_hant/anywhere/steamdeck.mdx deleted file mode 100644 index 69592f22..00000000 --- a/src/content/docs/zh_hant/anywhere/steamdeck.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Valve Steam Deck (Anywhere)" -description: "Steam Deck in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -We plan to make Steam Deck images, as well as other handhelds and HTPCs. Work will begin once we have the hardware needed. Maybe a custom UI is in order... diff --git a/src/content/docs/zh_hant/anywhere/thin.mdx b/src/content/docs/zh_hant/anywhere/thin.mdx deleted file mode 100644 index fc29ef3a..00000000 --- a/src/content/docs/zh_hant/anywhere/thin.mdx +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Thin Clients (Anywhere)" -description: " Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Wishlist Phase**. All information on this - page is subject to change. - - -Thin client images would be fun, and frankly pretty easy. - -## Implementation - -Very minimal environment with only required packages. OOTB connection protocols (ICA, RDP/VNC, SNMP...) and easy to use installer with connection options built in. - -Minimal login screen with an option for branding, might include device managment software. - -Tools and encouragment for enthusiasts. diff --git a/src/content/docs/zh_hant/anywhere/xr.mdx b/src/content/docs/zh_hant/anywhere/xr.mdx deleted file mode 100644 index 98f685a4..00000000 --- a/src/content/docs/zh_hant/anywhere/xr.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "XR and Spatial Computing" -description: "XR and Spatial Computing in the Ultramarine Anywhere Initiative" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - This device type is still in the **Planning Phase**. All information on this - page is subject to change. - - -Would use [StardustXR](https://stardustxr.org/). Our packaging effort can be found [here.](https://github.com/Ultramarine-Linux/stardustxr) diff --git a/src/content/docs/zh_hant/chromebook/armbeta.mdx b/src/content/docs/zh_hant/chromebook/armbeta.mdx deleted file mode 100644 index 7db29178..00000000 --- a/src/content/docs/zh_hant/chromebook/armbeta.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: ARM Chromebook Beta Program -description: "Closed program for running our beta images for certain ARM chromebooks" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -NOTE - Not all ARM devices are currently supported. This is a Beta program, proceed at your own risk. - -Welcome to the ARM Chromebook Beta Program! We are looking for technically-versed people to test our Ultramarine Chromebook beta images for ARM. - -This is a closed program, please contact Owen Zimmerman at owen@fyralabs.com, or join and ping @Owen in the [discord](https://discord.com/invite/5fdPuxTg5Q) to apply. - -Currently supported ARM Chromebook beta devices (if you have an unsupported device and are willing to use it for image testing, let us know!): - -All Kukui family Chromebooks: - -| Model name/number | Codename | -| ------------------------------------------ | -------- | -| Acer Chromebook 311 (C722/C722T) | willow | -| Acer Chromebook 311 (CB311-11H/CB311-11HT) | kenzo | -| Acer Chromebook 314 (CB314-2H/CB314-2HT) | cozmo | -| Acer Chromebook Spin 311 (CP311-3H) | juniper | -| Acer Chromebook Spin 311 (R722T) | pico | -| Asus Chromebook CZ1 | cerise | -| Asus Chromebook Detachable CM3 (CM3000) | kakadu | -| Asus Chromebook Detachable CZ1 | katsu | -| Asus Chromebook Flip CM3 (CM3200, MT8183) | damu | -| Asus Chromebook Flip CZ1 | stern | -| HP Chromebook 11a | kappa | -| HP Chromebook 11MK G9 EE | esche | -| HP Chromebook x360 11MK G3 EE | burnet | -| Lenovo 100e Chromebook 2nd Gen MTK 2 | makomo | -| Lenovo 10e Chromebook Tablet | kodama | -| Lenovo IdeaPad 3 Chromebook (MT8183) | fennel14 | -| Lenovo IdeaPad Duet Chromebook | krane | -| Lenovo IdeaPad Flex 3 Chromebook (MT8183) | fennel | - -Source: https://wiki.postmarketos.org/wiki/Google_Kukui_Chromebook_(google-kukui) - -All Oak family Chromebooks: - -| Model name/number | Codename | -| -------------------------------------------- | -------- | -| Acer Chromebook R13 | elm | -| Asus Chromebook C202X | hana | -| Lenovo 100e Chromebook 2nd Gen (MTK) | hana | -| Lenovo 300e Chromebook | hana | -| Lenovo 300e Chromebook 2nd Gen (MTK) | hana | -| Lenovo Chromebook C330 | hana | -| Lenovo Chromebook S330 | hana | -| Lenovo Flex 11 Chromebook | hana | -| Lenovo IdeaPad Flex 3 Chromebook (CB-11M735) | hana | -| Lenovo N23 Yoga Chromebook | hana | -| Poin2 Chromebook 11C | hana | -| Poin2 Chromebook 14 | hana | - -Source: https://wiki.postmarketos.org/wiki/Google_Oak_Chromebook_(google-oak) - -All Asurada family Chromebooks: - -| Model name/number | Codename | -| ------------------------------------------ | -------- | -| Acer Chromebook 514 (CB514-2H / CB514-2HT) | spherion | -| ASUS Chromebook Flip CM3 (CM3200, MT8192) | hayato | - -Source: https://wiki.postmarketos.org/wiki/Google_Asurada_Chromebook_(google-asurada) - -Follow-up instructions and guide will be provided after acceptance. - -Contact [Owen Zimmerman](mailto:owen@fyralabs.com) for additional information - -#### [Next Up: Terminology →](terminology) - -#### [← Back To: Post-Install](postinstall) diff --git a/src/content/docs/zh_hant/chromebook/chromebook.mdx b/src/content/docs/zh_hant/chromebook/chromebook.mdx deleted file mode 100644 index a9c544e9..00000000 --- a/src/content/docs/zh_hant/chromebook/chromebook.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Getting Started with Chromebook Edition -description: "Introduction to Chromebook Edition" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -### Welcome to Ultramarine Chromebook Edition! - -With the help from out friends over at the [Chrultrabook Project](https://docs.chrultrabook.com/), we built a no-hassle way to boot full Ultramarine Linux onto your Chromebook! - -These pages will get you everything you need to know about what Ultramarine Chromebook is, how it works, how you can install it, and even how you can help us out. - -If you would like more info about Ultramarine Chromebook and it's release, take a peak at the [Release post](link) - -#### [Next Up: Getting Chromebook Edition →](getting) diff --git a/src/content/docs/zh_hant/chromebook/getting.mdx b/src/content/docs/zh_hant/chromebook/getting.mdx deleted file mode 100644 index 5529745e..00000000 --- a/src/content/docs/zh_hant/chromebook/getting.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Getting Chromebook Edition -description: "Getting started with installing Ultramarine Chromebook Edition" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Minimum System Requirements - -1GB RAM, 8GB storage, 16MB boot partition (essentially any 2017 or newer ChromeOS device). List of ChromeOS device boot partition sizes can be found [here](https://raw.githubusercontent.com/alpernebbi/depthcharge-tools/master/depthcharge_tools/boards.ini) - -## Choosing Your Edition - -Ultramarine Chromebook comes in 4 variants: - -- **Flagship Edition**: Our default and most popular variant. Choose Flagship if you'd like a familiar and stylish experience. -- **KDE Edition**: Our second most popular variant. Choose KDE if you'd like a simply customisable experience. -- **GNOME Edition**: Elegant and Modern. Choose GNOME if you'd like a simple, unique experience. -- **Pantheon Edition**: Thoughtful and graceful. Choose Pantheon if you'd like a refined experience. - -Ultramarine Linux is distributed with image files available for download from [our website](https://ultramarine-linux.org/download/chromebook). - - - Fyra Labs cannot guarantee the safety or quality of images downloaded from - sites other than our website or FOSSTorrents - - -## Verifying the Safety of an Ultramarine ISO (Recommended) - -Ultramarine ISO images have a matching `CHECKSUM` file that can be checked against the image itself. - -They can be downloaded by clicking the `View Checksum` button on the [download page](https://ultramarine-linux.org/download/chromebook). - -### Verifying the Checksum on Linux and macOS - -You can use the following commands to check the integrity of the images: - -```bash -sha256sum -b /path/to/ultramarine.img # Generate the checksum for the image -cat /path/to/CHECKSUM # Check the checksum - -# Now you can compare the checksum -``` - -### Verifying the Checksum on ChromeOS - -You can use the [ChromeOS Linux Container](https://chromeos.dev/en/linux) to verify the image on ChromeOS - -```bash -sha256sum -b /path/to/ultramarine.img # Generate the checksum for the image -cat /path/to/CHECKSUM # Check the checksum - -# Now you can compare the checksum -``` - -### Verifying the Checksum on Windows - -In Powershell, run this command: - -```powershell -CertUtil -hashfile PATH\TO\ULTRAMARINE.ISO SHA256 -# Open the CHECKSUM file with Notepad and compare the checksum -``` - -## Creating the Installer - -### Download [balenaEtcher](https://www.balena.io/etcher/) to create a bootable media from the img image. - -![](/assets/balenaetcher.png) - -Simply select the img file, a device to use for the installer, and click flash. - -#### [Next Up: Installing to a Chromebook →](preparing) - -#### [← Back To: Getting Started](chromebook) - -## Footnotes - -- The Anaconda installer is very complex and hard to work with, we are working on a new installer that is easier to use and more reliable. -- Since Fedora 37, Fedora's official support for the Pantheon desktop environment has been dropped due to compatibility issues and the Pantheon port is now maintained by the Ultramarine Linux team. This means that the Pantheon desktop environment is only available through Ultramarine Linux, or Fedora with Terra enabled. -- Ultramarine's Budgie edition provides a close to stock Budgie experience, with a custom theme. Unlike Fedora's Budgie Spin, which provides a completely custom layout and experience. diff --git a/src/content/docs/zh_hant/chromebook/postinstall.mdx b/src/content/docs/zh_hant/chromebook/postinstall.mdx deleted file mode 100644 index 0f043330..00000000 --- a/src/content/docs/zh_hant/chromebook/postinstall.mdx +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Post-Installation -description: "Things to do after installing Ultramarine Chromebook Edition" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -#### [Next Up: ARM Chromebooks (Beta) →](armbeta) - -#### [← Back To: Installing to a Chromebook](preparing) diff --git a/src/content/docs/zh_hant/chromebook/preparing.mdx b/src/content/docs/zh_hant/chromebook/preparing.mdx deleted file mode 100644 index 56f27d94..00000000 --- a/src/content/docs/zh_hant/chromebook/preparing.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Installing to a Chromebook -description: "Steps to be done on the Chromebook" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Before we insert the installer, we will need to do a few things with your ChromeOS device. - -### 1. Back up your data (optional) - -Step 2 will wipe all local data from your device, If you have any files you wish to save or move to Ultramarine Chromebook, back up your data off the device, either to the cloud or locally. For a small number of files, we recommend backing up to Google Drive, or another cloud storage provider. For a larger number of files, we recommend backing up to an external storage medium, such as a USB flash drive or other external drive. - -If you choose to back up with Google Drive, you will be prompted to add your Google Drive to the Ultramarine Chromebook file explorer during setup to easily access and redownload your data. - -### 2. Enable developer mode - -Enabling developer mode will wipe your data - -#### Developer mode on Chromebooks (ChromeOS laptops only): - -1. Shut down the device, then hold Esc + + ⏻ [power] to enter Recovery mode. -2. When you see a screen that says 'ChromeOS is missing or damaged,' press Ctrl+D. -3. You may be prompted with 'To turn OS verification off, press enter,' press Enter. -4. A screen saying 'OS verification is off, press space to re-enable' should appear, press Ctrl+D. - Your system is now transitioning into Developer Mode! (This may take a few minutes) -5. After it has transitioned, press Control+D to boot back into ChromeOS as a developer. You are now ready for step 3 - -#### Developer Mode on Chromeboxes and Chromebases (ChromeOS Desktops and All-in-ones): - - - Not all monitors will work with the Chromebox OS Verification screens. This - typically happens if the monitor has a resolution greater then 1080p. If your - Chromebox appeared to boot (lights on) but does not output anything, you can - attempt to continue without a display. - - -1. Shut down the device, then insert a paper clip (SIM ejector tool works great too!) into the RECOVERY BUTTON (small hole usually near the I/O, see your hardware documentation for exact location) and reboot. You will then be greeted with the "OS Verification is turned off" screen. -2. Plug in a keyboard and press Ctrl+D. You may be prompted with 'To turn OS verification off, press RECOVERY BUTTON,' press RECOVERY BUTTON. -3. A screen saying 'OS verification is off, press space to re-enable' should appear, press Ctrl+D. - Your system is now transitioning into Developer Mode! (This may take a few minutes). -4. After it has transitioned, press Control+D to boot back into ChromeOS as a developer. You are now ready for step 3. - -#### Developer Mode on ChromeOS Tablets: - -1. Shut down the device, then press and hold Power+Volume-Up+Volume-Down for 3-5 seconds, then release to invoke recovery mode. This is a bit finicky, and may take a few tries, but the screen will turn white and display a screen saying "Please insert a recovery USB stick." soon after button release. -2. To boot to Developer mode, simultaneously press Volume-Up+Volume-Down, or navigate to 'Developer Options' with the volume buttons, and select it with the power button. then select 'Boot From Internal Disk using the volume buttons and power button.' - Your system is now transitioning into Developer Mode! (This may take a few minutes). -3. After it has transitioned, again navigate to 'Developer Options,' then 'Boot From Internal Disk.' Plug in a keyboard, and you are now ready for step 3. - -If you have any problems with these steps, refer to [this guide](https://chromium.googlesource.com/chromiumos/docs/+/main/debug_buttons.md#Firmware-Keyboard-Interface) or request support in our [discord](https://discord.com/invite/5fdPuxTg5Q). - -### 3. Enable USB booting - -1. In Developer mode ChromeOS, press Ctrl+Alt+F2 [right arrow key]. -2. Type in 'Chronos' for the login (there is no password). -3. Enter this command: - -``` -enable_dev_usb_boot -``` - -4. You should have an output saying 'SUCCESS: Booting and self-assigned kernel from SSD/USB/SDCard slot in enabled.' Plug in your Ultramarine Chromebook installer and restart the device. If needed, press Ctrl+alt+F1 [Left arrow key] to leave the terminal. -5. The device will boot to the recovery screen. Upon reaching it, press ctrl+U> to boot from USB/SD. - -### 4. Boot from USB/SD - -#### [Next Up: Post-Install →](postinstall) - -#### [← Back To: Getting Chromebook Edition](getting) diff --git a/src/content/docs/zh_hant/chromebook/terminology.mdx b/src/content/docs/zh_hant/chromebook/terminology.mdx deleted file mode 100644 index 4a6fd3dd..00000000 --- a/src/content/docs/zh_hant/chromebook/terminology.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Chromebook Terminology -description: "Get to Know Chromebook Terms" ---- - -The Chromebook Community, (and Google themselves) have made terminology for many of the practices and quirks of Chrome hardware. - -### Chromium OS - -Where the magic happens. Just like Chrome proper, Chrome OS is a derivative of the open source Chromium OS. - -### Chrome OS - -The consumer variant of Chromium OS found on all Chrome devices. - -### Write Protect (WP) - -Usually refers to Firmware Write Protect (FW_WP), a feature of Chromebooks that marks a region of the ROM that holds firmware as read-only. It is possible (and rather easy) to remove the protection on most Chromebooks. [1] - -#### Cr50/Battery WP - -One of the methods for implementing write protect, WP is enabled when a battery is connected, and disabled when the battery is removed. [1] - -#### WP Switch - -This is just a toggle, not much to explain here. [1] - -#### WP Screw - -The primary implementation of write protect on older devices, a screw shorts a connection, WP can be disabled by removing the short. Most of the time the screw is removed, but you could in theory place Kapton tape over the pad. [1] - -### Closed Case Debugging (CCD) - -Allows people with cr50 to disable WP without opening the device. This requires a special cable called suzyQ. [1] [2] - -### Verified Boot - -Tamper protection, it's signing essentially. [3] - -### Developer Mode - -Loosens verified boot and gives you the ability to enable USB/SD boot and elevate to root. - -### ChromeEC - -EC Refers to a lot of things, and it's honestly better to read the [official docs](https://chromium.googlesource.com/chromiumos/platform/ec/+/HEAD/README.md#Terminology) on this one. - -### Depthcharge - -Depthcharge is the stock firmware on your Chromebook. Unless you somehow have an original Chromebook - -#### Depthcharge Manipulation - -A method to run Linux on Chromebooks without modifying the stock firmware by tricking said firmware (Depthcharge) into booting a Linux kernel. This is what we are using. - -### altFW/Custom Firmware [5] - -altFW is the Chrultrabook Project's name for custom firmware. - -#### Coreboot/Full ROM - -Coreboot replaces the original firmware on your Chromebook with full UEFI. - -#### RW_Legacy - -RW_Legacy allows you to use the included BIOS on your Chromebook. - -#### Firmware Utility Script/MrChromebox's Script - -A popular tool used to manage and install custom firmware - -### Auto Update Expiration - -When Google stops providing updates for a Chromebook. Usually 10 years after the release. You can see a list of [AUE Dates here](https://support.google.com/chrome/a/answer/6220366?hl=en). - -### Codename - -Refers to a specific Chromebook, this may be the same as the board name (For example: Caroline and Chell are also the board name for their respective models) - -### Board Name - -Refers to the motherboard, these may be shared across Chromebooks (For example: Hana (board) is used on hana, maple, sycamore, and telesu) - -### Baseboard - -Exactly what it sounds like, a board that acts as the base for others (For example: Caroline, Chell, and Cave are all based on Glados, see the reference) - -### Chrultrabook - -Our partners in crime. Chrultrabook builds drivers and other tools for Chrome hardware. The name is a portmanteau from "*Chr*omebook to *Ultra*book" - -### Chromebook Plus - -Google's branding for Chromebooks at what would be the entry level for standard laptops [4] - -### Premium Chromebook - -Kinda official term to refer to higher spec Chromebooks. The Pixelbooks, Framework, and some of the nicer HPs fall into this category - -### Gaming Chromebook - -No real definition besides an RGB keyboard, specs and price are all over the place - -#### [← Back To: ARM Chromebooks (Beta)](armbeta) - -### Footnotes - -[1: Firmware Overview and Porting Guide > Firmware / EC Write Protection](https://www.chromium.org/chromium-os/firmware-porting-guide/firmware-ec-write-protection/) - -[2: CrOS EC > Google Security Chip (GSC) Case Closed Debugging (CCD)](https://chromium.googlesource.com/chromiumos/platform/ec/+/cr50_stab/docs/case_closed_debugging_gsc.md) - -[3: Design Documents > Verified Boot](https://www.chromium.org/chromium-os/chromiumos-design-docs/verified-boot/) - -[4: Chromebook Plus: more performance and AI capabilities](https://blog.google/products/chromebooks/chromebook-plus/) - -[5: Chrultrabook Docs > Firmware > Types of Firmware](https://docs.chrultrabook.com/docs/firmware/about.html) diff --git a/src/content/docs/zh_hant/community/codeofconduct.mdx b/src/content/docs/zh_hant/community/codeofconduct.mdx deleted file mode 100644 index 1f89fbc2..00000000 --- a/src/content/docs/zh_hant/community/codeofconduct.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Code of Conduct -description: "Rules for interacting in the Ultramarine Community" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Summary - -Community members are expected to treat each other with the utmost respect, regardless of sexuality, gender, race, creed, nationality, or caste. - -Essentially, if you wouldn't say or do it to someone close to you, don't say or do it here. - -If you don't follow the rules, Fyra Labs reserves the right to ban you (temporarily or permanently) from participating in the project or community. - -If you need to report an incident, contact [**Cappy Ishihara.**](mailto:cappy@fyralabs.com) - -## 0. Employee Conduct - -Employees of Fyra Labs are held to a higher standard than outlined by this document. Employees should review the policy in their onboarding packet, or internal Outline instance for more details. - -## 1. Purpose - -A major goal of Fyra Labs is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). - -This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. - -We invite all those who participate in this community to help us create safe and positive experiences for everyone. - -## 2. Open [Source/Culture/Tech] Citizenship - -A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. - -Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. - -If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know. - -## 3. Expected Behavior - -The following behaviors are expected and requested of all community members: - -- Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. -- Exercise consideration and respect in your speech and actions. -- Attempt collaboration before conflict. -- Refrain from demeaning, discriminatory, or harassing behavior and speech. -- Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. -- Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations. - -## 4. Unacceptable Behavior - -The following behaviors are considered harassment and are unacceptable within our community: - -- Violence, threats of violence or violent language directed against another person. -- Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. -- Posting or displaying sexually explicit or violent material. -- Posting or threatening to post other people's personally identifying information ("doxing"). -- Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. -- Inappropriate photography or recording. -- Inappropriate physical contact. You should have someone's consent before touching them. -- Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. -- Deliberate intimidation, stalking or following (online or in person). -- Advocating for, or encouraging, any of the above behavior. -- Sustained disruption of community events, including talks and presentations. - -## 5. Weapons Policy - -No weapons will be allowed at Fyra Labs events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter. - -## 6. Consequences of Unacceptable Behavior - -Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. - -Anyone asked to stop unacceptable behavior is expected to comply immediately. - -If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). - -## 7. Reporting Guidelines - -If you are subject to or witness unacceptable behavior from employees of Fyra Labs, or have any other concerns, please use the [External Human Resources Form](https://airtable.com/shrCMi4X3Xp3ITMJz) - -If you are subject to or witness unacceptable behavior from other members of this community, or have any other concerns, you should email [Fyra Labs Contact](mailto:contact@fyralabs.com). - -Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. - -## 8. Addressing Grievances - -If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should contact us with a concise description of your grievance, contact information can be found below. Your grievance will be decided at the sole discretion of Fyra Labs. - -## 9. Scope - -We expect all community participants who are not employed by or independent contractors of Fyra Labs to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business. - -This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members. - -## 10. Contact info - -[**Cappy Ishihara, Product Lead**](mailto:cappy@fyralabs.com) - -Cappy is your first point of contact if an incident is not handled as it happens. - -[**Owen Zimmerman, Ultramarine Chromebook Project Manager**](mailto:owen@fyralabs.com) - -Contact Owen if the grievance occurred in a pre-release space. - -[**Jaiden Riordan, COO**](mailto:jade@fyralabs.com) - -If your grievance requires additional attention, or you wish to appeal an earlier decision, please contact Jaiden. - -[**Legal Email**](mailto:legal@fyralabs.com) - -Legal concerns and documents should be sent to this address, we will not accept legal documents in any way except to this address or by US Mail. - -## 11. License and attribution - -The Code of Conduct for Fyra Labs Projects is derived from the Citizen Code of Conduct distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). - -Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). diff --git a/src/content/docs/zh_hant/community/community.mdx b/src/content/docs/zh_hant/community/community.mdx deleted file mode 100644 index 31bb873a..00000000 --- a/src/content/docs/zh_hant/community/community.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: 參與社羣! -description: "Community Information" ---- -import Alert from "../../../../components/Docs/Alert.astro"; - -Ultramarine Linux 有一個積極的社羣,包括不同的使用者、開發人員等。 - -正如我們的軟件,我們的社羣也是開發的。以下是我們其中官方的空間: - -### Discord - -我們所有的開發項目都在 Fyra Labs Discord。這裏有活躍交流,我們都在這裏做不同的東西。使用者、貢獻人員及開發者都可以在此得到支援。 - -[加入 Fyra Labs Discord →](https://discord.gg/5fdPuxTg5Q) - -### Matrix - -同樣地,您可以到 Matrix 參與 Fyra Labs 的社羣! - -所有的貢獻頻道亦已經被同步,您可以在這裏加入我們,一起貢獻社羣。 - -[加入 Fyra Labs Space →](https://matrix.to/#/#hub:fyralabs.com) - -### Reddit - -Ultramarine Subreddit 是一個比較非同步的社羣參與方式。 - -[加入 r/ultramarine →](https://reddit.com/r/ultramarine) - -### 其他 - -Ultramarine Linux 也在 Twitter 和 Fediverse (聯邦宇宙)中。這些帳號會有重要的即時資訊,例如下網情況、新功能和錯誤等。 - -[在聯邦宇宙跟蹤 Ultramarine →](https://fedi.fyralabs.com/@ultramarine) - -[在 Twitter 跟蹤 Ultramarine →](https://twitter.com/UltramarineProj) - -## 我們的準則 - -我們認為 Fyra 社羣遠比 Fyra Labs 的個體大。我們的社羣正是在與其他相關的社羣有不同的交流。我們覺得這可以令我們更容易判別使用者的慾望及需要(我們也很喜歡跟您們談談)。 diff --git a/src/content/docs/zh_hant/contributing/contributorguide.mdx b/src/content/docs/zh_hant/contributing/contributorguide.mdx deleted file mode 100644 index c879c98b..00000000 --- a/src/content/docs/zh_hant/contributing/contributorguide.mdx +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: 貢獻指南 -description: "Getting started with contributing to Ultramarine Linux" ---- - -Ultramarine 是我們的社羣所建立的。從選票到社羣交流甚至社羣所建立的軟件,社羣永遠都在我們心目中。 - -## 原碼 - -Ultramarine Linux 的原碼是開放的——所有人都能夠更改,複製或發佈屬於 Ultramarine 的原碼。 - -這亦包括 Fyra Labs 與其社羣,以及 Fedora 所建立的原始碼。 - -可惜,一些組件(例如驅動程式)可能由它們的原創者所擁有,導致我們無法改善它們的原碼。 - -詳請可到[原碼貢獻](/zh_hant/contributing/hacking)開始您的旅程! - -## 軟件包 - -Ultramarine 的系統裏已安裝了 Terra,這是一個社羣維護的軟件庫,裏面有 Fedora 本來沒有的軟件包。 -貢獻至 Terra 能讓您令 Ultramarine 及其他 Fedora 的系統使用者更容易得到需要的軟件。 -詳請可到 [Terra 文檔(英)](https://developer.fyralabs.com/terra/contributing)。 - -## 錯誤及問題回報 - -這部分最容易了,您只需要使用 Ultramarine 的時候找到問題就可以在 [Ultramarine-Linux/ultramarine](https://github.com/Ultramarine-Linux/ultramarine) 或者以其他[聯絡]方式向我們報告。 - -## 設計 - -新的以及現有的 Ultramarine 組件亦需要有好的使用者體驗及良好的設計。若果想幫忙設計,請[聯絡]我們。 - -## 文檔 - -文檔能讓使用者了解如何使用 Ultramarine。我們主要的文檔正正就是您現在正在閱讀的 wiki。 -若果想向此 wiki 貢獻,可以到 [Ultramarine-Linux/wiki]。您亦可以以不同[聯絡]方式跟我們討論。 - -## 測試 - -Ultramarine 有很多不同的部件(由其在發佈前)需要林林總總的測試。以下是我們的發佈前程式: - -- [ARM Chromebook Beta Program](/zh_hant/chromebook/armbeta) -- [Ultramarine Atomic Open Beta](https://github.com/ultramarine-linux/ostree-config) - -我們亦會經常宣佈新的程式,您可以以不同的[聯絡]方式得到最新資訊。 - -## 資金 - -您可以在 GitHub [資助我們](https://github.com/sponsors/FyraLabs)。 - -您的資助可以令我們繼續獻出更多時間工作,促使我們開發並發佈更好的技術,改善不少人的生活。資助人亦會得到不同的福利。 - -## 擴展 - -Ultramarine 亦不斷尋找更多使用者、貢獻人員以及社羣成員。 -我們以不同方式向不同人溝通,包括社交媒體、參與項目、合夥等。 -有興趣幫忙擴展 Ultramarine 的可以[聯絡]我們。 - -## 硬件 - -Ultramarine 的其中一個目標正是要支持更多的平台,詳見 [Ultramarine Anywhere](/zh_hant/hardware/anywhere)。 -我們正在尋找對其他較小人用的平台有較深了解、有不同學問的不同人士,以助我們擴展平台支持。 -我們亦非常感謝硬件捐贈,由其是 Chromebook 和 RISC-V,因為它們是這個項目的焦點之一。 - -有興趣的人請[聯絡]我們。 - -## 翻譯 - -翻譯可令 Ultramarine 能夠被世界各地不同人士使用。您可以令 Ultramarine 得到不同語言的支援。 - -### 這個 wiki - -你可以[聯絡]我們,或者到 [Ultramarine-Linux/wiki]。 - -### 安裝應用程式及其他部件 - -請到 [Fyra Weblate](https://weblate.fyralabs.com) 進行翻譯。 - -### 桌面 - -每一個桌面環境有他們各自的翻譯的地方。請查看[#上流貢獻]。 - -## 上流貢獻 - -Ultramarine 是建於很多不同開放原碼、非專利、有近似或共同目標及需要的軟件項目。我們的社羣會定期貢獻至這些上流項目。 - -以下是一些對 Ultramarine 較重要的上流項目: - -- [Fedora](https://docs.fedoraproject.org/en-US/project/join/) -- [Budgie](https://docs.buddiesofbudgie.org/organization/getting-involved/) -- [GNOME](https://welcome.gnome.org/) -- [Pantheon](https://docs.elementary.io/contributor-guide) -- [KDE](https://community.kde.org/Get_Involved) -- [XFCE](https://docs.xfce.org/contribute/start) - -[聯絡]: /zh_hant/community/community -[Ultramarine-Linux/wiki]: https://github.com/Ultramarine-Linux/wiki diff --git a/src/content/docs/zh_hant/development/developing-for-ultramarine.mdx b/src/content/docs/zh_hant/development/developing-for-ultramarine.mdx deleted file mode 100644 index e518ab72..00000000 --- a/src/content/docs/zh_hant/development/developing-for-ultramarine.mdx +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Developing for Ultramarine -description: "Things to get started on developing in Ultramarine." ---- -### This Page Will Be Moving to [**Fyra Developer**](https://developer.fyralabs.com) Soon! - -Ultramarine Linux aims to be a developer-friendly environment for all kinds of developers. In this article, we will cover the basics of how to get started developing in Ultramarine. - -If you would like to develop your own software, you can get started with the section below. - -If you would like to develop **for** Ultramarine, you can get started with the [Developing for Ultramarine](#developing-for-ultramarine) section. - -## Getting Started - -Ultramarine comes with the [Python programming language](https://www.python.org/) out of the box, which is also required for most Fedora -software, including the DNF package manager itself. - -### Setting up Rust - -To set up Rust in your environment, you can install the Rust and Cargo package from the Fedora repositories. - -```zsh -sudo dnf install rustc cargo -``` - -You can also use the `rustup` installer from the [Rust website](https://www.rust-lang.org/tools/install). This will install Rust in your local environment. - -## Developing for Ultramarine - -Our team uses [Visual Studio Code](https://code.visualstudio.com/), which is an open-source (mostly source-available) IDE that is available for both Windows, macOS, and Linux. - -If you, however, do not prefer to use the official Microsoft distribution of Visual Studio Code, you can also use [VSCodium](https://www.vscodium.com/), which is a free alternative distribution of Visual Studio Code. Or you can also use the [Official open-source build of Visual Studio Code](https://github.com/microsoft/vscode) here. - -There are also other supported IDEs and software we recommend using for development, such as: - -- [JetBrains CLion](https://www.jetbrains.com/clion/) (Native applications with C/C++, or Rust) -- [JetBrains PyCharm](https://www.jetbrains.com/pycharm/) for Python development. -- [GNOME Builder](https://wiki.gnome.org/Apps/Builder) for GNOME and GTK development. -- [Qt Creator](https://www.qt.io/product/development-tools) for Qt development. - -And other text editors you can use, such as: - -- [VIM](https://www.vim.org/) -- [Emacs](https://www.gnu.org/software/emacs/) -- [Micro](https://micro-editor.github.io/) -- [Neovim](https://neovim.io/) -- [Helix](https://helix-editor.com/) - -These text editors come with a minimal set of features, so you may want to install plugins for them, and configure them to your liking. - -Our preferred programming languages are Python, Vala, and Rust, and our preferred GUI library is Helium. - -To build packages for Ultramarine, see [Using Andaman](/en/development/anda). - -### UI development - -It is recommended to follow the [Helium Human Interface Guidelines](https://developer.fyralabs.com/helium/hig/introduction) for UI development for Ultramarine apps. These guidelines should not be considered a be-all end-all, it is perfectly acceptable to deviate from the guidelines (or not follow them at all) if it limits aspects of your app. - -### Build systems - -For build systems, we prefer using the programming language's native build system. For example, if you're using Rust, you can use the Rust's native Cargo build system. And in the case of Python, you can use the standard Python setuptools, which consists of either a `setup.py` file or a `pyproject.toml` file. - -For cases where using a native build system does not fit the needs of the application, we have a prioritized list of build systems that we recommend using: - -- [Meson](https://mesonbuild.com/) -- [CMake](https://cmake.org/) -- [GNU Autotools](https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html) -- A written makefile or simple shell script diff --git a/src/content/docs/zh_hant/development/ux-guide.mdx b/src/content/docs/zh_hant/development/ux-guide.mdx deleted file mode 100644 index 87844502..00000000 --- a/src/content/docs/zh_hant/development/ux-guide.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: UX Guidelines -description: "Guidelines for how the Ultramarine Linux experience should be designed." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -### The Helium Human Interface Guidelines Can Be Found on [**Fyra Developer**](https://developer.fyralabs.com/helium/hig) - -We recommend the Helium Human Interface Guidelines. They're built in house to provide a modern and friendly experience. They were originally designed for the Helium UI Library but you can apply the principles to any UI libraries nonetheless. - -These guidelines are not a be-all-end-all and you are free to ignore parts or add your own ideals. It's your app after all :P diff --git a/src/content/docs/zh_hant/hardware/anywhere.mdx b/src/content/docs/zh_hant/hardware/anywhere.mdx deleted file mode 100644 index 04a2d805..00000000 --- a/src/content/docs/zh_hant/hardware/anywhere.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Ultramarine Anywhere -description: "Our goal is to run Ultramarine Linux on as many devices as possible" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -One of the major focuses of the Ultramarine project is to bring Linux to as many people as possible. -A major part of this is supporting as many devices as possible, through our Ultramarine Anywhere program. -By contributing to Ultramarine Anywhere, you can help us bring Linux to more devices and more people. - - - The pages about this program are more technical than the rest of the wiki. Do - not follow the instructions on these pages unless you know what you're doing. - - -#### If you have any suggestions or comments regarding these pages, don't hesitate to [reach out](/en/community/community). - -## In Progress - -- [Ultramarine Chromebook Edition](/en/anywhere/chromebook) - -## Planned - -- [Raspberry Pi 5](/en/anywhere/rpi) -- [Apple Silicon Macs](/en/anywhere/applesilicon) -- [XR and Spatial Computing](/en/anywhere/xr) -- [Android Devices](/en/anywhere/android) -- [Data Centre, Enterprise, and HPC](/en/anywhere/enterprise) - -## Completed - -- [Raspberry Pi 3, 4, and 400](/en/anywhere/rpi) - -## Wishlist - -- [Smart TV Devices](/en/anywhere/ott) -- [Thin Clients](/en/anywhere/thin) -- [RISC-V](/en/anywhere/riscv) -- [Steam Deck](/en/anywhere/steamdeck) diff --git a/src/content/docs/zh_hant/hardware/bioskeys.mdx b/src/content/docs/zh_hant/hardware/bioskeys.mdx deleted file mode 100644 index 7f306873..00000000 --- a/src/content/docs/zh_hant/hardware/bioskeys.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: BIOS Keys -description: "How to enter the BIOS or Boot Menu on various Computers" ---- - -These are the keys (or combination of keys) used to enter the boot menu or UEFI/BIOS settings on different computers. - -| Manufacturer | UEFI/BIOS | Boot Menu | Notes | -| ----------------- | --------------------- | ------------------------ | ------------------------------------------------------------------------------------------ | -| Acer | F2 or Del | Esc, F9, F12 | | -| Aorus | Del, F2 | F12 | | -| ASRock | Del, F2 | F11 | | -| ASUS | F2 or Del | Esc, F8 | | -| Compaq | F10 | F9 | | -| Dell | F12 | F11 | | -| Dell (Tablets) | Volume Down+Power | Volume Up+Power | | -| ECS | Del | F7 | | -| EVGA | Del | F7 | | -| Gateway | Del, F1, F2 | F12 | | -| Gigabyte | Del, F2 | F12 | | -| HP | ESC, F10 | Esc, F9 | | -| Intel | F2 | F10 | | -| ThinkPads | - | F12, Enter, ThinkVantage | You can access the BIOS or UEFI menu from the boot menu | -| Lenovo (Desktops) | F1 | F12 | | -| Lenovo (Laptops) | F1+Enter, Novo Button | F12, Novo Button | | -| MSI | Del | F11 | | -| Microsoft | Volume Up+Power | - | There is a boot menu available in the UEFI Settings | -| Origin PC | F2 | F2 | | -| Samsung | F2 | F10 | | -| Toshiba | F2 | F12 | | -| Intel Macs | - | Hold Option (⌥) or Alt | You can change NVRAM variables inside the OS. If you know what you're doing, power to you. | -| Zotac | Del | F8 | | diff --git a/src/content/docs/zh_hant/hardware/nvidia.mdx b/src/content/docs/zh_hant/hardware/nvidia.mdx deleted file mode 100644 index d5833de2..00000000 --- a/src/content/docs/zh_hant/hardware/nvidia.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: NVIDIA Drivers -description: "Information about NVIDIA Graphics on Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -For computers with NVIDIA graphics cards, you have two choices for drivers. - -#### Noveau Driver - -[The Noveau driver](https://nouveau.freedesktop.org/) is a fully open-source driver for NVIDIA graphics cards. It's built into Ultramarine so you can use your GPU instantly. - -Despite how good this sounds, modern NVIDIA GPUs will suffer performance issues and screen tearing under the Noveau driver. - -Older NVIDIA GPUs work well with the Noveau driver (and may only work with Noveau.) - -#### Proprietary Driver - -This is our recommended solution. Proprietary drivers support all of the features and performance of your GPU. They are automatically installed during installation if you are connected to the internet. - -If drivers weren't installed, or you switched to a NVIDIA GPU, you can install drivers by opening the "Software" app and searching for "NVIDIA" or by running the following commands in terminal: - -```bash -sudo dnf update # Update the system first, the drivers may not work right if you don't. -sudo dnf install akmod-nvidia # Install the NVIDIA kernel module. -``` - - - You MUST wait until the process is finished before rebooting. Rebooting too - early might result in a broken installation! This may take upwards of 15 - minutes! - diff --git a/src/content/docs/zh_hant/hardware/requirements.mdx b/src/content/docs/zh_hant/hardware/requirements.mdx deleted file mode 100644 index 37e0c450..00000000 --- a/src/content/docs/zh_hant/hardware/requirements.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: System Requirements -description: "Minimum Requirements for Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Recommended Requirements for Standard PCs - -These are our suggestions for the most basic (daily-driveable) system: - -- 4GB of RAM (8GB or more recommended) -- 64-bit processor (x86_64/amd64) -- 16GB of free disk space (24GB or more recommended) -- Internet connection (for downloading the ISO image, updates, and additional drivers) -- A computer that supports booting from a USB drive -- A USB drive (for creating the bootable media) - -## Minimum Requirements for Raspberry Pi - -- Raspberry Pi 3 or newer -- 4GB of RAM **OR** 2GB of RAM without a desktop environment -- 9GB Class 10 MicroSD Card -- See the [anywhere page](/en/anywhere/rpi) - -## Minimum Requirements for ARM Devices Using UEFI - -- 64-bit processor (aarch64) -- 4GB or RAM -- 16GB of Storage - -## Minimum Requirements - -These requirements are the **_bare minimum_** to run Ultramarine Linux. Using Ultramarine on a computer of this caliber will not be a good time. - -- 1gb of RAM -- 64-bit processor (x86_64 **OR** aarch64) -- 10GB of disk space diff --git a/src/content/docs/zh_hant/hardware/surface.mdx b/src/content/docs/zh_hant/hardware/surface.mdx deleted file mode 100644 index a5d0c8a8..00000000 --- a/src/content/docs/zh_hant/hardware/surface.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Microsoft Surface -description: "Information about Ultramarine Linux on Microsoft Surfaces" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Surfaces require a special kernel to work properly under Ultramarine. - -These are currently provided by the Surface Linux team, start by adding their repository - -```shell -sudo dnf config-manager \ - --add-repo=https://pkg.surfacelinux.com/fedora/linux-surface.repo -``` - -Then, install the kernel and it's dependencies - -```shell -sudo dnf install --allowerasing kernel-surface iptsd libwacom-surface -``` - -If you want to use secure boot, you need to install `surface-secureboot`, enable 3rd party keys in the EFI settings, and enroll the key in cert-manager. This does not work well on some devices, so we recommend disabling secure boot. - -We intend to make this easier in future releases. - -Some Surface models may not boot with a stock copy of Ultramarine Linux. If this is the case for your device, you have to install the kernel before leaving the live environment. - -1. Ensure your internal storage is mounted, Anaconda should leave it mounted by default. - -2. Check the root partition, it should be mounted as `/mnt/sysroot` - -3. Chroot into the installed system - -``` -sudo chroot /mnt/sysroot -``` - -4. Follow the above instructions - -5. Run `dracut -f` to make sure the new kernel is installed as the initramfs. - -6. Exit the chroot and reboot! diff --git a/src/content/docs/zh_hant/installation/getting.mdx b/src/content/docs/zh_hant/installation/getting.mdx deleted file mode 100644 index 2cef7e71..00000000 --- a/src/content/docs/zh_hant/installation/getting.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: 取得 Ultramarine Linux -description: "Getting started with installing Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## 系統要求 - -若果您的電腦能夠運行微軟的 Windows 7,它很大可能亦能運行 Ultramarine Linux。您可以檢查電腦是否符合[硬件要求](/zh_hant/hardware/requirements)。 - -## 版本 - -Ultramarine Linux 有 4 個版本︰ - -- **Budgie**(即 Budgie)︰我們最受歡迎的版本,適合追求一個熟悉及酷的系統的使用者。 -- **Plasma**︰我們第二最受歡迎的版本,適合追求一個容易改製的體驗的使用者。 -- **GNOME**︰優雅而新淨,適合追求一個簡單而獨特的體驗的使用者。 -- **Xfce**︰輕便而容易改製,適合追求一個輕快的體驗的使用者。 - -您可以檢查[系統要求](/zh_hant/hardware/requirements)以確認您的裝置是否被支持。 - -[我們的網站](https://ultramarine-linux.org)裏提供不同格式及不同版本的 Ultramarine Linux。 - - - Fyra Labs 並不能確保上述網站及 FOSSTorrents 以外所提供的映射的安全性。 - - -{/* ### Atomic - -Ultramarine Linux also comes in Atomic versions. Ultramarine Atomic works similarly to Fedora Silverblue, CoreOS, and other OSTree-based operating systems. This variant is made for users who want a stable, immutable system that is easy to recover from. -We see immutability as the future of Linux systems. Ideally, this will become the standard edition in the future. - -These builds are currently in beta. If you are planning to test them, please join our [Discord](https://discord.gg/5fdPuxTg5Q) or [Matrix](https://matrix.to/#/#hub:fyralabs.com) community first and let us know. We'll be happy to receive feedback and assist you. - -[Try Ultramarine Atomic →](https://nightly.link/Ultramarine-Linux/ostree-config/workflows/ci-isos.yaml/main?preview) - -(The "Home" and "Base" images are copies of [tauOS](https://tauos.co) - These **ARE NOT READY FOR DAILY USE!!**) - -### Raw Images and Raspberry Pi - -Ultramarine is also availible as a raw (or preinstalled) image. These images come with a desktop preinstalled and are intended to be flashed directly to the drive your device will boot from (like an SSD or an SD card.) - -These can be found in the [Raw Image](https://images.fyralabs.com/images/ultramarine/40/) sections of the download page. */} - -{/* ### Chromebook Edition */} - -{/* Ultramarine is available for most x86 ChromeOS devices. See the [Chromebook Edition section](/en/chromebook/chromebook) for more information. */} - -{/* ### Kanopy */} - -{/* **Ultramarine Kanopy** is an upcoming variant of Ultramarine Linux, which is made for servers and cloud computing. It is currently in development and does not have a release date yet, but we plan to target Qx '2x */} -{/* It will be based on Ultramarine OSTree and is designed as a simple and easy-to-use server operating system, with a focus on containerized applications with a simple, easy-to-use web interface as a competitor to TrueNAS SCALE, OpenMediaVault, and other similar operating systems. */} - -## 確認映射安全性(建議) - -每一個映像都各自有一個*核對和*(checksum),供下載後可作映射核對之用。 - -在[下載頁](https://ultramarine-linux.org/download/)按下`View checksum`後即可下載核對和。 - -### 在 Linux 和 MacOS 核對 - -以下的指令能夠檢查映射是否完整無誤: - -```bash -sha256sum -b /path/to/ultramarine.iso -cat /path/to/checksum -``` - -### 在 Windows 核對 - -以 Powershell 執行下列指令: - -```powershell -CertUtil -hashfile PATH\TO\ULTRAMARINE.ISO SHA256 -``` -再利用 Notepad 打開核對和的檔案進行比較。 - - - Raspberry Pi 的使用者請至:[Raspberry Pi 安裝過程](/zh_hant/installation/rpi) - - -## 製造安裝介質 - -利用一個映射寫入工具,將已下載的映射寫入一個 USB 記憶棒(或其他方便的媒體),以製造安裝介質。建議使用適合不同平台的 [balenaEtcher](https://www.balena.io/etcher/)。 - -![](/assets/balenaetcher.png) - -您亦可以使用 [Fedora Media Writer](https://github.com/FedoraQt/MediaWriter),或在 Budgie、Xfce 及 GNOME 版本上的硬盤工具。 - - - 已知 Rufus 並不能寫入 Ultramarine 的映射。 - - -## 啟動安裝介質 - -寫入映射後,您可以插入媒體並重啟電腦,以啟動安裝介質。 - -大部分電腦有特別的按鍵,以讓使用者選取作啟動用的媒體或進入初始化介面。不同牌子會有不同的按鍵,詳請請至:[BIOS 按鍵](/zh_hant/hardware/bioskeys)以了解如何進入上述畫面。 - - - 如果您正在使用 Windows 10 或更加新的版本,請進入設定中的復原畫面並選擇「進階重啟」。重啟後,請選擇「使用其他媒體」。 - - - - Linux 的使用者可能可以執行以下指令進入 BIOS︰ - `sudo systemctl reboot --firmware` - - -#### [下一頁:安裝過程 →](/zh_hant/installation/installation) - -## Footnotes - -- The Anaconda installer is very complex and hard to work with, we are working on a new installer that is easier to use and more reliable. -- Since Fedora 37 the Ultramarine team has maintained Pantheon, in Ultramarine 40 we will be dropping Pantheon due to major issues with the experience. -- Ultramarine's Budgie edition provides a close to stock Budgie experience, with a custom theme. Unlike Fedora's Budgie Spin, which provides a completely custom layout and experience. diff --git a/src/content/docs/zh_hant/installation/installation.mdx b/src/content/docs/zh_hant/installation/installation.mdx deleted file mode 100644 index c6e9781c..00000000 --- a/src/content/docs/zh_hant/installation/installation.mdx +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: 安裝過程 -description: "A guide on how to install Ultramarine Linux" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -電腦啟動至安裝介質後,您會看見一個視窗詢問您要開始安裝還是要試用 Ultramarine。 - -![The Welcome Dialog box](/assets/welcome-window.png) - -若果選擇試用,您可以之後開啟「Install to Hard Drive」的應用開始安裝。 - -## 語言 - -![The Language Selection Screen](/assets/anaconda-1.png) - -開啟安裝應用後,你可以選擇您想使用的語言及鍵盤配置。 - -## The Anaconda Hub & Spoke Model - -![Anaconda Hub](/assets/anaconda-2.png) - -Anaconda uses a hub and spoke model. You can configure your installation in any order you want, but you will need to complete all the options before you can continue. - -### Keyboard Layouts - -![Anaconda Keyboard Layout](/assets/anaconda-3.png) - -Press the `+` button to add a new keyboard layout, then pick and search for the keyboard layout you prefer. - -Once you have selected the keyboard layout, you can press the `Done` button on the top left to go back to the hub. - -### Time & Date - -![](/assets/anaconda-4.png) - -The Time & Date selection screen has a world map where you can click on your location on the map to set your timezone. - - - -By default, the time is set from your IP address geolocation. If you're using a VPN or proxy this may not be accurate. - - - -### 系統存放位置 - -![](/assets/anaconda-5.png) - -您可以在這裏選擇 Ultramarine 的安裝位置,或者讓安裝應用自動選擇安裝的設定,或者自己設定安裝的配置。 - -Ultramarine 預設使用 [Btrfs](https://en.wikipedia.org/wiki/Btrfs)。Chromebook 電腦的預設為 ext4,因為 Btrfs 有機會縮短 Chromebook 裏面 EMMC 的壽命。 - - - 建議加密硬盤,以加強安全。選取「Encrypt」之後,再輸入一個新的密碼並按「Done」後,你的硬盤就會被加密。 - 每次啟動電腦時,使用者就需要輸入密碼。 - - -#### 自定義硬盤分割 - -![](/assets/anaconda-6.png) - -在這個模式中,您可以自行更改硬盤分區的設定。 - -在 UEFI 的系統裏,您需要一個分別掛載到 `/boot/EFI` 和 `/` 的分區。 - -在 BIOS 的系統裏,您需要一個 `BIOSBoot` 的分區掛載到 `/boot`,以及另一個掛載到 `/` 的分區。 - -#### 進階分割 - -![](/assets/anaconda-7.png) - -這個模式允許您利用 blivet-gui 手動分割您的硬盤。這給您更大自由,所以請確保您知道您在做甚麼! - -### 網絡 - -![](/assets/anaconda-8.png) - -您可以在這裏設定您的主機名,即是一個網絡中唯一標識您這台機器的名稱。 - -### 用戶 - -![](/assets/anaconda-9.png) - -您必須在這裏設定您的用戶。安裝後這將會是系統的管理員。 - -您亦可以按「Advanced」以進行進階設定,包括您的資料位罝、用戶 ID 等。 - - - -您必須輸入一個密碼,否則一些應用會不能正常運行。 - - - - - -輸入了不安全的密碼就需要按兩次「Done」以繼續。 - - - ---- - -完成上述設定後就可以按「Begin Installation」繼續。安裝的過程大約需要幾分鐘。 - - - 這是**不可逆轉**的:在安裝過程中強制停止安裝應用會令你得到一個不能正常運作的系統。
- 你將會需要重新安裝 Ultramarine Linux 或其他系統,以取得一個正常運行的系統。 -
- -安裝完成後,你就可以直接重啟電腦。 - -歡迎使用 Ultramarine Linux! - -#### [下一頁:安裝之後… →](/en/installation/postinstall) - -#### [← 上一頁:取得 Ultramarine Linux](/en/installation/getting) diff --git a/src/content/docs/zh_hant/installation/readymade.mdx b/src/content/docs/zh_hant/installation/readymade.mdx deleted file mode 100644 index 502306c3..00000000 --- a/src/content/docs/zh_hant/installation/readymade.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Installation with Readymade Preview -description: "A guide on how to install Ultramarine Linux with the upcoming new installer " ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -After booting into the live system, you will see a dialog box asking you whether to start the installer or continue with the live system. - -![The Welcome Dialog box](/assets/welcome-window.png) - -You can pick whichever you want, and you'll be able to start the installer later by opening the `Install to Hard Drive` application. - -#### [Next Up: Post-installation →](/en/installation/postinstall) - -#### [← Back To: Getting Ultramarine](/en/installation/getting) diff --git a/src/content/docs/zh_hant/installation/rpi.mdx b/src/content/docs/zh_hant/installation/rpi.mdx deleted file mode 100644 index 90c0858c..00000000 --- a/src/content/docs/zh_hant/installation/rpi.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Raspberry Pi 安裝過程 -description: "How to install Ultramarine Linux on the Raspberry Pi" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## System Requirements - -Ultramarine Linux supports the Raspberry Pi 3 and 4. Please see the [Anywhere page](/en/anywhere/rpi) for more information. - -## Selecting a Drive - -The drive you use deeply affects the experience you will have on Ultramarine. - -### Raspberry Pi 3 - -Raspberry Pi 3 supports only microSD cards. Your microSD card must be 9GB or larger, but we suggest 16GB or more so you'll have some space for software. - -You should also look for a class 10 SDHC or SDXC microSD. - -### Raspberry Pi 4 and 400 - -Raspberry Pi 4 supports microSD cards and USB storage. Your storage device must be 9GB or larger, but we suggest 16GB or more so you'll have some space for software. - -The best experience will be with a SATA SSD connected over an adapter. A USB 3.0 flash drive will be slightly better to on-par with a nice microSD card. All of the options are good, it's up to your needs. - -## Flashing the Image - -Grab a USB stick! Use a flasher program to flash Ultramarine to your storage device. [balenaEtcher](https://www.balena.io/etcher/) is an easy cross-platform choice. - -![](/assets/balenaetcher.png) - -Simply select the raw.xz file (you don't need to decompress it), the device you're using, and click flash. - -You can also use the Disks application on Budgie, Xfce, and GNOME editions. - - - Ultramarine will be available in Raspberry Pi Imager and the Network Install - feature in the near furure. - - -## Expanding the Root Filesystem - - - This is not possible on Windows or macOS. We are figuring out a way to do this - on first boot. - - -If you haven't already, install GParted as an RPM [from your app store](/en/linux/software). - -Start by opening GParted, it may prompt you to fix the GPT, make sure you select "Fix." If you don't the expand will fail. -![](/assets/gparted/gpt.png) - -Now select the device you just flashed. -![](/assets/gparted/disk.png) - -Then, right click the last partition on the disk, and select "Resize/Move." -![](/assets/gparted/part.png) - -You'll be presented with this menu, you can change partition sizes from here. -![](/assets/gparted/resizemenu.png) - -Simply drag the right side of the partition as far right as you can, then click done. -![](/assets/gparted/fillwhole.png) - -Now, check your work, make sure you used the right disk. -![](/assets/gparted/checkwork.png) - -Then click the green check in the top menu and confirm the changes. -![](/assets/gparted/apply.png) - -Sit back and wait, this may take upwards of five minutes. -![](/assets/gparted/progress.png) - -You're done now! You can exit this menu and eject your drive, you're ready to plug it into your Pi! -![](/assets/gparted/done.png) - -## First Boot - -On first boot, you'll be prompted with a user creation screen. Create your user and you'll be ready to go! - -That's it! You're ready to enjoy Ultramarine on your Raspberry Pi! We're working hard on making the experience better so stay tuned! diff --git a/src/content/docs/zh_hant/linux/devicefiles.mdx b/src/content/docs/zh_hant/linux/devicefiles.mdx deleted file mode 100644 index bff43af2..00000000 --- a/src/content/docs/zh_hant/linux/devicefiles.mdx +++ /dev/null @@ -1,154 +0,0 @@ ---- -title: Device Files -description: "Overview of various device files in /dev" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - - - These files are an actual representation of all your hardware devices - according to how your drivers see them. Please do not modify or delete these - files unless you know what you are doing. - - -Device files are special files that exist as an interface for your system to interact with hardware. -They are located in the `/dev` directory, which is a temporary virtual filesystem that is created by Linux on boot. - -## Block Devices - -Block devices are devices that store buffered data as [blocks](). - -These files are essentially the low-level interface to your storage devices. They are usually to be mounted to a directory in order to be used, -similarly to how Windows automatically assigns drive letters to storage devices. - -Newer Windows versions also support mounting devices as directories, but they are not commonly used. - -There are various types of block devices, but the most common ones are: - -- SATA, PATA/IDE, SAS, SCSI or USB disks (`/dev/sd*`) -- NVMe Drives (`/dev/nvme*`) -- Device mappers (`/dev/mapper/*`) - A special feature of the Linux kernel that allows you to create virtual block devices from other block devices. -- Loop devices (`/dev/loop*`) - Virtual loopback devices that allow you to mount files as block devices. -- MMC devices (`/dev/mmcblk*`) - Memory cards that use the MultiMediaCard standard, such as SD cards. - -## Pseudo-devices - -Pseudo-devices are devices that do not actually exist but are used by the kernel to provide an interface for various features. - -The most common pseudo-devices are: - -- `/dev/null` - A special empty file that discards all data written to it. -- `/dev/zero` - A special file that returns an infinite stream of null bytes when read. -- `/dev/random`, `/dev/urandom` - Special files that return an infinite stream of random data. -- `/dev/full` - A special empty file that always returns a "disk full" error when written to. -- `/dev/ptmx` - A pseudo-terminal master used to create virtual terminals. -- `/dev/tty*` - A virtual terminal that is used to interact with the system. Back in the day, there were also actual [physical terminals](https://en.wikipedia.org/wiki/Computer_terminal) that were connected to the system via a serial port. Nowadays, these files are used to represent virtual terminals, as computer terminals were replaced by actual computers running remote desktop software such as SSH, VNC or RDP. -- `/dev/pts/*` - A virtual terminal slave used to create virtual terminals. -- `/dev/shm/*` - A shared memory segment used by the kernel to share data between processes. -- `/dev/stdin`, `/dev/stdout`, `/dev/stderr` - Standard input, output and error streams. Used to redirect input and output from and to other files, similar to how programs output data directly to the terminal. Can be redirected using [pipelines](/en/linux/shell#the-pipeline). - -# Interacting with Devices - -You can interact with device files like you would with any other file, but there are also special tools that are used to interact with them. - -The `cat` command can be used to read data from a file and output it to `/dev/stdout` (standard output), which is usually the terminal. - -```sh -cat /dev/urandom -``` - -This will output an infinite stream of random garbage to the terminal, which will make it unusable until you press `Ctrl+C` to stop the command. You might also need to restart your terminal emulator if it happens to output -a specific combination of characters that breaks it. - -## Block Devices - -To list all block devices, you can use `lsblk` to list them in a tree-like format: - -```sh -$ lsblk -NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS -sda 8:0 0 931.5G 0 disk -├─sda1 8:1 0 600M 0 part /boot/efi -├─sda2 8:2 0 1G 0 part /boot -└─sda3 8:3 0 929.9G 0 part -zram0 252:0 0 8G 0 disk [SWAP] -nvme0n1 259:0 0 119.2G 0 disk -└─nvme0n1p1 259:1 0 119.2G 0 part /var/lib/docker/btrfs - /home - /var - / -``` - -## Explaining the Output: - -`sda*` is the main disk of the system, which is a 1TB SATA SSD. It has 3 partitions, `sda1`, `sda2` and `sda3`. `sda1` is the EFI partition, `sda2` is the boot partition and `sda3` is the root partition. - -In this specific case, it is configured in a Btrfs spanned (JBOD) volume, which in this case combines both `sda3` and `nvme0n1p1` into a single volume. - - - Ultramarine Linux's installer, *Anaconda* will automatically configure your - disks in a Btrfs spanned volume by default when multiple disks are selected. - - -`nvme0n1` is a 128GB NVMe SSD that is used as a cache for the Btrfs volume. It has a single partition, `nvme0n1p1`, which is mounted to `/var/lib/docker/btrfs`, `/home`, `/var` and `/`. - -`zram0` is a special ramdisk that is used as a pagefile (swap) for the system. It makes uses of the [zram](https://en.wikipedia.org/wiki/Zram) kernel module to create a compressed RAM disk. - -The mountpoints at `/boot` is used for storing Linux kernel images, and `/boot/efi` is used for storing EFI bootloaders. - -`/var` stores extra variable data, `/home` is a dedicated partition for storing user data and `/` is the root partition, which can be compared to the `C:\` drive on Windows. - -`/var/lib/docker/btrfs` is the directory where [Docker] stores its data. Docker is a containerization software that allows you to run applications in isolated environments. -Since we are using Btrfs, Docker will use Btrfs subvolumes to store its data. For other filesystems, Docker will use other methods to store its data. - -### Manipulating Block Devices - -You can use `fdisk` to do various operations on block devices, such as creating partitions, formatting them and more. - -```sh -fdisk /dev/sda -``` - - - **NEVER** run the following commands on any actual systems! These commands **ANNIHILATE your system WITHOUT CONFIRMATION**, - causing **IRREVERSIBLE DAMAGES** to your system! - -If you want to test out these commands for whatever reason, please _make sure (and double check) you are ONLY doing this in a virtual environment._ - - - -As an example, you can use the following command to do a zero-filled format of a disk called `/dev/sda` by simply using a pipe: - -```sh -cat /dev/zero > /dev/sda -``` - -...Or shred the entire disk with random data: - -```sh -cat /dev/urandom > /dev/sda -``` - -All of these commands will do destructive operations on your disk, so please be careful when using them. - -You can also use the [`dd`]() tool to read and write data to block devices, create disk images and even clone disks directly. - -For example, you can create a backup image (ghost image) of your disk by using the following command: - -```sh -dd if=/dev/sda of=/path/to/backup.img -``` - -...Or clone your disk to another disk: - -```sh -dd if=/dev/sda of=/dev/sdb -``` - -You can find more information about `dd` [here](https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html). - -#### [← Back To: The Filesystem](/en/linux/filesystem) - -#### [Next Up: Permissions →](/en/linux/permissions) - -[Docker]: https://en.wikipedia.org/wiki/Docker_(software) diff --git a/src/content/docs/zh_hant/linux/filesystem.mdx b/src/content/docs/zh_hant/linux/filesystem.mdx deleted file mode 100644 index 5f471cfe..00000000 --- a/src/content/docs/zh_hant/linux/filesystem.mdx +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: The File System -description: "An overview of the file system in Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -There are a few notable differences in how files work on Linux when compared to Windows or macOS. - -The most noticeable difference is case sensitivity. Windows and macOS are case-insensitive, meaning that `FOLDER` and `Folder` are the same folder. Linux on the other hand is case-sensitive, so `FOLDER` and `Folder` are two different folders. - -In Linux, and more widely, UNIX, everything is a file. Unlike Windows which has other object types to represent physical devices. - -## The File System Hierarchy - -Unlike Windows, Linux has a standardized file system hierarchy (FSH.) The FSH is contained within `/` (often called root.) They not only contain normal files, but also physical devices, virtual devices, and various other special files that control the system itself. - -It should also be noted that Linux uses a forward slash (`/`) to represent going deeper in a directory, unlike Windows which uses a backslash (`\`) - -The directory structure is as follows: - -| Directory | Description | -| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| / | The root directory with the all the other directories and files. This is as far back as you can go | -| /bin | Executables and command binares required for a functioning system. Most applications installed from RPM end up here. | -| /boot | The bootloader and files used during early boot process. May usually be in a seperate partition. | -| /dev | Special device files for various purposes (`/dev/sda` for a drive, `/dev/null` for blank data, `/dev/random` for pseudo-random data, `/dev/tty` for terminal sessions, etc). | -| /etc | System-wide settings and configuration files. | -| /home | User files. This is where your stuff lives! | -| /lib | Libraries required for executables in `/bin` to function. May be also named `/lib`. | -| /media | Mount points for when the system mounts removable media, such as USB drives, SD cards, etc. | -| /mnt | Temporary mount points for media. Usually used when manually mounting a drive. | -| /opt | Optional packages that may be installed by the user. Most packages don't actually install here. | -| /proc | Process data and kernel information for inter-process communication managed by the kernel. | -| /root | User data for the root user. Don't confuse this with `/` (root) | -| /sbin | Executables for system tasks. | -| /srv | Shared service data used by server processes, such as web servers and NAS/File servers. | -| /tmp | Temporary data. | -| /usr | Shared application data used by all users. | -| /var | Variable data used by system processes. | - -## The Home Directory - -The home folder is the place where all your personal data, and most of your apps are stored. It is a directory that is located under the `/home` directory, followed by your username. It is similar to the `Users` folder in Windows. - -In Linux, the home folder is usually more extensively used than in Windows, as it stores all user-specific data, settings, and the majority of your applications (Flatpaks). The system folders are only used when making system-wide changes or installing applications from DNF or an RPM File. - -## Virtual Memory - -[Virtual memory](https://en.wikipedia.org/wiki/Virtual_memory) is a feature in Linux and other operating systems that allows the system to use a portion of the disk as RAM. This is useful when the system runs out of RAM and needs to use the disk as a temporary storage for data. - -On Windows, this is called a "Page file", and on Linux, it is called a "Swap file". The swap file is usually located at `/swapfile` or as a dedicated partition on the disk. - -Swap comes with many issues, for example, it can reduce the lifespan of lower-cost SSDs, and may be too slow on hard drives. To combat this Ultramarine uses memory compression [(zram specifically)](https://en.wikipedia.org/wiki/Zram). - -By default, we match the amount of physical memory you have. (Which is the maximum) - -Although this may sound magical, it does come at the cost of your CPU working a little bit harder. Luckily this is not very noticeable on modern computers. - -[Learn more about zram →](https://en.wikipedia.org/wiki/Zram) - -## File system formats - -Ultramarine Linux supports a wide variety of file systems, and can be configured to use any of them during installation. - -It currently supports most file systems that are supported by the Linux kernel, including: - -- ext2, ext3, ext4 -- Btrfs -- XFS -- NTFS -- FAT32 - -And extra file system drivers can be installed, such as: - -- ZFS - -The Ultramarine Linux installer will be configured to use the BTRFS file system by default, as it is the most modern file system that is supported by the Linux kernel, and has many features that are useful for desktop users, such as snapshots, virtual volumes, journalling, error correction and compression. - -By default, it will use up all the available space on the disk. It uses a small portion of the spaces for the EFI bootloader partition, and create a BTRFS JBOD array using the rest of all the available space on all selected disks. -It then creates 2 subvolumes, one for the root directory `/`, and one for the home directory `/home`, which will share the same space but have different filesystem settings. - -So unless specified otherwise, the installer will use all your disks to create a JBOD (spanned) array, which may be undesirable if you do not want to risk losing all your data if one of the disks fail. - -Most server installations will use XFS or ZFS, as they have better performance and reliability for servers, and are more suitable for RAID arrays. - -### Remote Filesystems - -Ultramarine Linux can also mount remote file systems from a remote server or NAS, using the NFS, (S)FTP, SMB, and WebDAV protocols. - -#### [← Back To: What is Linux?](../overview) - -#### [Next Up: Device Files →](../devicefiles) diff --git a/src/content/docs/zh_hant/linux/overview.mdx b/src/content/docs/zh_hant/linux/overview.mdx deleted file mode 100644 index e2f804a4..00000000 --- a/src/content/docs/zh_hant/linux/overview.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: What is Linux? -description: "A general overview of Linux concepts." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Linux refers to a family of operating systems with one common feature: the Linux kernel. - -Linux is distributed uniquely compared to Windows or macOS. Multiple (seperate) groups take the Linux kernel and combine it with tons of other software before distrbuting it as a distinct operating system. These compilations are called "distributions" (but we'll shorten that to distro.) - -Ultramarine Linux is based on another disribution of Linux called Fedora. See ["Why does this distro exist?"](/en/welcome#why-does-this-distro-exist-what-difference-does-it-have-other-than-just-fedora-with-rpmfusion) for more on that. - -## Why use Linux? - -People use Linux on the desktop for all sorts of reasons. For our purposes, we'll split this into four categories: Customization, Freedom, Security, Privacy. - -### Customization - -Linux is incredibly customizable. You can change anything from the way your desktop icons look to the way apps load and the behavior of the device itself. Ultramarine provides easy ways to do this, like theme support, power management profiles (in most editions) and the upcoming tweak tool. - -### Freedom - -When we say freedom, we mean it in two ways. This is often described as "free as in beer" V.S. "free as in speech". Linux will cost you no money, and will allow you to do essentially whatever you'd like. - -For example: Edge cannot be removed from a Windows computer. Meanwhile on Linux, there is no such limitation. Essential apps like the file manager can be exchanged for one of many alternatives. Complete freedom. - -### Security - -Linux is more secure by design, with features like Mandatory Access Controls and stricter permissions, you can learn more about those features on the [Permissions](/en/linux/securityprivacy) page. - -Linux is also resistant to many common viruses due to these features (and inexperienced developers.) This is becoming less true as Linux marketshare grows, but you are significantly less likely to get an incidental virus on Linux than Windows. - -### Privacy - -It's no secret that the big three of operating systems are watching what you do in some way. Linux vendors tend not to do this, and even if they do, you can easily switch to a compatible alternative or simply disable the telemetry. - -## How is Ultramarine Different? - -Ultramarine Linux is designed to get a lot of the configuration out of the way. We include extra components (like media codecs and drivers) that many other distrbutions don't include. - -Ultramarine is built on Fedora, the base for Red Hat's Enterprise Linux. This means that the software backing Ultramarine has been built with the stability needed for mission critical systems. - - -
- If you'd like a crash course on the basics, this video should cover a lot of - what the following pages will cover - -
-
- -#### [Next Up: The Filesystem →](../filesystem) diff --git a/src/content/docs/zh_hant/linux/permissions.mdx b/src/content/docs/zh_hant/linux/permissions.mdx deleted file mode 100644 index c0c76b34..00000000 --- a/src/content/docs/zh_hant/linux/permissions.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Permissions -description: "How permissions work on Linux." ---- - -On Linux, permissions are used to determine who can read, write, and execute files, or do certain actions. - -Users are separated into various groups with different IDs, and each file or action can be assigned a permission level. - -A user can be assigned a permission level that is higher than the permission level of the group they are in. And users in a group can do certain things that other users cannot. - -However, users in UNIX-like operating are more akin to a principal, as these "users" may not actually be a person, but a program. - -Files are owned by a user and can be assigned a permission level. The user who owns the file can modify the file and modify the permissions of the file. - -Permission levels are displayed in octal and are represented by several digits. The first digit is the owner, the second is the group, and the third is the other users. Permissions range from 0 to 7, with 0 being no access, and 7 being full access. - -## The Root User - -The root user (or the superuser) is a special user that grants access to all files and actions. It is akin to the Administrator on Windows. - -To execute commands as the root user, use the `sudo` command, followed by the command you want to execute. - -```bash -sudo dnf install vim # This will install vim as the root user -``` - -#### [← Back To: Device Files](/en/linux/devicefiles) - -#### [Next Up: Software and Package Management →](/en/linux/software) diff --git a/src/content/docs/zh_hant/linux/securityprivacy.mdx b/src/content/docs/zh_hant/linux/securityprivacy.mdx deleted file mode 100644 index 1f1e6526..00000000 --- a/src/content/docs/zh_hant/linux/securityprivacy.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Security and Privacy -description: "How Ultramarine keeps you safe" ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -## Mandatory Access Controls - -Ultramarine Linux uses SELinux, a software that implements Mandatory Access Control. This prevents applications (and users) from accessing files they shouldn't be able to. - -Users will usually be required to have root access to modify system files, and even then, SELinux may prevent you from doing so unless you have set the correct contexts for the files. - -By default, SELinux is in "Enforcing" mode, which means that it will prevent you from modifying system files unless you have the correct permissions. This shouldn't cause any issues. If you would like to disable SELinux you can run`sudo setenforce 0`. We don't recommend this as it makes your system less secure. - -[Learn more about SELinux →](https://www.redhat.com/en/topics/linux/what-is-selinux) - -[Learn more about Permissions →](/en/linux/permissions) - -## Privilege Control - -Ultramarine Linux includes polkit, a tool used to manage privilege elevation. If you've ever gotten a graphical password prompt on your system, you've interacted with polkit. - - - -Use the `pkexec` command instead of `sudo` to give polkit a try. - - - -polkit also manages communication between privileged and non privileged applications. - -## Disk Encryption - -Ultramarine Linux offers the option to encrypt your entire disk at install time. This protects your data from physical attacks and theft. - -## Sandboxing - -When you install an app as a Flatpak, it's contained within a sandbox, meaning it can't see what other apps are doing, and can't see files it isn't allowed to. - -## Restricted Memory Access - -Ultramarine Linux and Fedora restrict access to physical memory. This should prevent most memory injection attacks. - -#### [← Back To: The Shell](/en/linux/shell) diff --git a/src/content/docs/zh_hant/linux/shell.mdx b/src/content/docs/zh_hant/linux/shell.mdx deleted file mode 100644 index 93181051..00000000 --- a/src/content/docs/zh_hant/linux/shell.mdx +++ /dev/null @@ -1,202 +0,0 @@ ---- -title: The Shell -description: "How the shell works in Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -The shell is a command line interface to the operating system. It is a program that allows you to directly execute commands and interact on deeper level. - -You may be familiar with Bash from other Linux distributions. Ultramarine uses the [zsh](https://en.wikipedia.org/wiki/Z_shell) instead of bash. We also use [Starship Prompt](https://starship.rs/) to provide additional convenience features like displaying the current git branch. - - -
- To learn more about shell scripting, you can watch this Bash introduction - video by Fireship here: - - NOTE: The Z shell is mostly compatible with Bash, so most of the knowledge you - will learn will be mostly applicable in Ultramarine Linux. -
-
- -## Interacting with the Shell - -To start using the shell, open the Terminal app. - -![The GNOME Terminal](/assets/terminal.png) - -You will be greeted with a prompt, simply type in the command you want to execute, and press `Enter⏎`. - -To change directories, type `cd` followed by the path you want to change to. - -```zsh -cd /home/user/Documents -``` - -To list the contents of a directory, type `ls` followed by the path of the directory of which you want to list the contents of. - -```zsh -ls /home/user/Documents -``` - -The directory path is an optional argument. Running `ls` with no arguments will print the contents of the current working directory (the folder you `cd`ed into). - -The `ls` command, especially, has a lot of useful flags (i.e. execute `ls -a`, `-a` being the flag). Below is a table of the most important flags for `ls`. - -| Flag | Modification | -| :--- | :---------------------------------------------------------------------------- | -| `-a` | List all files in a directory, including hidden files which begin with a `.`. | -| `-d` | List specified directories without listing their content (try `ls -d /`). | -| `-t` | Sort the output in the order of modification time; latest first. | -| `-r` | Sort output in reverse order. | -| `-l` | List one file per line. Also display information about the files listed. | - -The output of `ls -l` includes columns of information about each file in the following order: file type, permissions, number of symlinks, file owner, file size, date of last modification, and file name. - -``` -total 4 -drwxr-xr-x 2 bob bob 4096 Jan 1 13:00 dir --rw-r--r-- 1 bob bob 0 Jan 1 12:00 file --rwxrwxrwx 1 ann ann 1337 Jan 1 11:00 file2 -``` - -Symbolic links (symlinks) are, as the name would imply, links between files. Changes to files are synced between symlinks. To create a symlink between two files, type `ln`, followed by the `-s` flag and two arguments: one being the original file, and the other being the path to the new symlink. - -```zsh -ln -s file newfile -``` - -From now on, when `file` is changed, the change will also be applied to the linked `newfile`. - -To read a file to the terminal, type `cat` followed by the path to the file. - -```zsh -cat /home/user/Documents/README.md -``` - -To delete a file, type `rm` followed by the path to the file. - -```zsh -rm /home/user/Documents/README.md -``` - -To delete a full directory, recursively delete it by typing `rm -r` followed by the path to the directory. - -```zsh -rm -r /home/user/Documents -``` - - - Most users will usually execute `rm -rf` instead of `rm -r`. The `-f` flag is - used to force the deletion of a file or directory. - - -To create a new file, type `touch` followed by the path to the file. - -```zsh -touch /home/user/Documents/newfile.txt -``` - -To create a new directory, type `mkdir` followed by the path to the directory. - -```zsh -mkdir /home/user/Documents/newdir -``` - - - To create a new directory inside of another new directory (i.e. - `.../newdir/newdir2`), execute `mkdir` with the `-p` flag. - - -To move or rename a file or directory, type `mv` followed by the path to the file or directory, and then the new path. - -```zsh -mv /home/user/Documents/newfile.txt /home/user/Documents/newfile2.txt -``` - -To copy a file and optionally rename the copy, type `cp` followed by the path of the file, and then the path to the new file. - -```zsh -cp file newfile -``` - - - To copy a directory, type `cp` with the `-r` (recursive) flag. - - -For both the `cp` and `mv` commands, you may move multiple files into a directory at once. The target directory must exist. - -```zsh -mv file file2 dir dir2 /path/to/target/dir/ -cp -r file file2 dir dir2 /path/to/target/dir/ -``` - -To know more about each command, open the manual by typing `man` followed by what you want to learn about - -``` -man sudo -``` - -This will open `less`, an app that allows you to read through long lines of text as a scrollable page. - -To exit `less` press `q`. - -Most commands will also have a `-h` or `--help` flag, which tells you more about the command. - -## The Pipeline - -Linux offers a way for inter-process communication through pipes. - -The pipeline you to transfer data from one process to another, and is used to execute commands in parallel. - -```zsh -echo "Hello World" | wc -w -``` - -This calls the `wc` (word count) command, which counts the number of words in the text. Then pipes the output of `echo` to it, which then outputs the number of words. This is a very simple example of a pipeline. - -A named pipe is created by using `>` instead of `|`. - -```zsh -echo "Hello World" > pipe.txt -``` - -This pipes the output of `echo` to the named pipe `pipe.txt`, which is now a file. - -## Executing a File - -To execute a program, you must first make sure that the file is executable. This is done by using the `chmod` command. - -```bash -chmod +x /path/to/exec -``` - -Then you can execute the file by directly pointing to it. - -```bash -/path/to/exec -``` - -For files in your current folder, you must use `./` before the file name. - -```bash -./exec -``` - - - Executables are often moved into a directories listed in the `$PATH` variable - (run `echo $PATH`). The filenames of executables in `$PATH` can be executed as - commands (i.e. `custom-command` will run `/usr/local/bin/custom-command`) - - -#### [← Back To: Software and Package Management](/en/linux/software) - -#### [Next Up: Security and Privacy →](/en/linux/securityprivacy) diff --git a/src/content/docs/zh_hant/linux/software.mdx b/src/content/docs/zh_hant/linux/software.mdx deleted file mode 100644 index 77a1f005..00000000 --- a/src/content/docs/zh_hant/linux/software.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -title: Software and Package Management -description: "How to manage software on Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -There are many different ways to install software on Linux. - -## The Package Manager - -Unlike Windows, most software for Ultramarine Linux is stored in online collections of software called repositories. You can browse and install software (packages) from these repositories using something called a package manager. - -### Flatpaks - -Flatpak is the primary package manager for regular apps. It installs applications in a sandbox, keeping them separate from anything they don't need to access. - -Flatpaks can be installed from **Software** on Budgie and GNOME, **AppCenter** on Pantheon, and **Discover** on KDE. - -You can browse the available software in one of these app stores, or on the [Flathub website](https://flathub.org/). - -Despite most applications being installed from Flatpak, some apps may not work properly, or may not be available at all. The following sections will help with software in other formats. - -### Software Downloaded from the Internet - -Sometimes, the software you need may come as a package file downloaded from the internet. - -#### RPM Packages - -To install RPMs, simply double-click it. - -You can also open a Terminal and run: - -``` -sudo dnf localinstall /path/to/package.rpm -``` - -(Replacing `/path/to/package.rpm` with the real path, it's usually `~/Downloads/package.rpm`) - -#### AppImages - -1. Install AppImage Launcher from **Software** or **Discover**. On Pantheon Edition, run - -``` -sudo dnf install appimagelauncher -``` - -2. Double-click the file and you're done! - -We recommend avoiding AppImages as they are not automatically updated and may have compatibility issues. - -### Snap - -Snap is a package manager made by Canonical for Ubuntu. It contains a large amount of proprietary applications that you may not be able to find elsewhere. - - - -Snap may cause your system to run noticeably slower. - - - -To get started, install Snap. - -```bash -sudo dnf install snapd -``` - -Then, verify snap is working - -```bash -sudo snap install helloworld -helloworld -``` - - - -Snap packages load slowly and may not work at all on editions other than GNOME. We recommend avoiding Snaps. - - - -### DNF - -Ultramarine Linux uses the DNF package manager. While this package manager primarily handles system software (like the kernel, and your desktop environment) it can install user apps as well. - -```bash -sudo dnf install steam # Install Steam -``` - -You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf groupinstall` command. - -```bash -sudo dnf groupinstall "Audio Production" # installs multiple packages at once, in this case a suite of music/audio production tools -``` - -For a full list of available groups, run `sudo dnf group list` - -#### [← Back To: Permissions](/en/linux/permissions) - -#### [Next Up: The Shell →](/en/linux/shell) diff --git a/src/content/docs/zh_hant/release/errata.mdx b/src/content/docs/zh_hant/release/errata.mdx deleted file mode 100644 index 97cb2da1..00000000 --- a/src/content/docs/zh_hant/release/errata.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Errata -description: "Various known bugs and other issues in Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -This page contains bugs that we can't solve or that are easily solvable by users. We remove them as they are resolved. - -Releases older than 37 will not have their eratta modified as we do not have records of fixing the issues. - -## All Versions - -- Installer scripts may not work - -This is solved by distributors including Ultramarine as a synonym to Fedora. - -### Ultramarine Linux 40 - -### Xfce Edition - -- Login screen wallpaper is Fedora's - - This is a small issue with our tweaks not being applied. We should have this fixed in an update soon. - -### Pantheon Edition - -- Pantheon is upgraded but login does not work - - We are still debating Pantheon's fate, but as of now Pantheon is not included in Ultramarine 40 and probably will stay that way. - -## Ultramarine Linux 39 - -### Pre-release Images - -- We accidentally released pre-release versions of Ultramarine. - - A small handful of users and reviewers got their hands on these images. These images do not reflect the final release, if you used one and it was buggy, we invite you to try the final release, as many of the bugs were fixed. - -### Budgie Edition - -- Budgie wallpapers may be installed instead of Ultramarine wallpapers. - -### Package Groups - -- Misspelled "environment" as "enviroment". - -This is now fixed in Ultramarine 39 and has been backported to 38. - -## Ultramarine Linux 37 (EOL) - -### Pantheon - -- The wallpaper is not set by default. Please set your own wallpaper. - -## Ultramarine 36 (EOL) - -### Applications - -- Firefox Still Includes Fedora Bookmarks - - Firefox depends on fedora-bookmarks. You can simply remove the bookmarks yourself - -### Installer - -- Anaconda Shows a Warning about the System Being Pre-Release - -Anaconda can't find product information about Ultramarine and assumes it's a pre-release version of Fedora or RHEL. - -### Package Management - -- DNF Tells the User There Are No Repositories Available for a COPR Project - -This is due to the fact that the DNF Copr plugin detects the OS ID `/etc/os-release` file, and Ultramarine uses a custom code instead of `fedora`. - -A workaround is to also specify the Fedora buildroot when trying to add a Copr repository. - -### GNOME Edition - -- Pop!\_Shell launcher - -The Pop!\_Shell launcher is not included. This can be fixed by installing the `pop-launcher` package. - -### Cutefish Edition - -- SDDM Displaying Black Screen - -SDDM may display a black screen when starting up. This is a known issue, but there is no known fix as of yet. (Possibly an upstream bug, help needed.) - -### Pantheon Edition - -- Missing Switchboard (Settings) menus - -This was caused by missing Pantheon Switchboard modules, which are not included in Ultramarine Linux due to time constraints. - -You can help us fix this issue by offering to maintain these packages ourselves, or by [contributing to help submit them to upstream Fedora.](https://fedoraproject.org/wiki/SIGs/Pantheon) - -### OSTree Edition - -- Missing Tweaks from the Standard Releases - -As the standard release includes a script to modify the system, due to the nature of OSTree, we are unable to include these tweaks unless we rebuild all major packages with our custom patches. - -You can help us fix this issue by contributing and maintaining these packages yourself. diff --git a/src/content/docs/zh_hant/release/upgrade-to-ultramarine-40.mdx b/src/content/docs/zh_hant/release/upgrade-to-ultramarine-40.mdx deleted file mode 100644 index 0da11d0d..00000000 --- a/src/content/docs/zh_hant/release/upgrade-to-ultramarine-40.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Upgrade to Ultramarine 40 -description: "A temporary notice for the 39 to 40 upgrade path." ---- - -This page is a temporary notice for upgrading Ultramarine 39 to 40. -For this release cycle, we've decided to release an upgrade path before the full distrbution release. -This should let existing users enjoy the new set of packages in 40 sooner. -A full blog post detailing changes will be published for the full distrbution release. - -## Flagship, GNOME, and KDE Editions - -You can use the editon's graphical app store to upgrade your system to 40. -On Flagship and GNOME, this will be GNOME Software, while on KDE, this will be Plasma Discover. - -You might need to update your system normally before the upgrade to 40 shows up in the app store. - -## Pantheon Edition - -The Pantheon upgrade path isn't ready yet. -While all of the required packages are in the UM and Terra repositories, the Pantheon desktop enviroment is broken for a variety of reasons. -We are currently working with upstream and other partners to resolve this, but it's possible that Pantheon may be skipped, deprecated, or defered until mid-cycle. -If you are interested in contributing to Ultramarine Pantheon, please join [our chats](en/community/community) and let us know! - -## Command line - -In case the above doesn't work, you can always upgrade through the command line, using `dnf system-upgrade`. - -Run the following and follow the prompts: - -```sh -sudo dnf upgrade --refresh -sudo dnf install dnf-plugin-system-upgrade -sudo dnf system-upgrade download --releasever=40 -sudo dnf system-upgrade reboot -``` diff --git a/src/content/docs/zh_hant/usage/gaming.mdx b/src/content/docs/zh_hant/usage/gaming.mdx deleted file mode 100644 index 97cb1f12..00000000 --- a/src/content/docs/zh_hant/usage/gaming.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Gaming on Ultramarine -description: "Extra instructions for gaming on Ultramarine Linux." ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Sometimes, you may want some downtime from work and have fun. While Ultramarine Linux is not primarily optimized for gaming, it is still a great platform for gaming, as it already has some performance optimizations applied out of the box, and can be further optimized with some tweaks. - -# Performance - -# Gaming Platforms - -## Steam - -[Steam](https://steampowered.com) is a great PC gaming platform, and it has native support for Linux. Many game publishers publish their games on Steam, and some even natively support Linux. Steam offers discounts for games published on their platform, and also has a built-in overlay for chatting with friends, taking screenshots, and more. - -Steam runs on the Chromium Embedded Framework (CEF), which essentially means that most of the UI is created using web technologies. - -You can install Steam in 2 ways: - -1. Install the `steam` package from the RPM Fusion repository. (system-wide) -2. Install the Steam flatpak from Flathub. (user-only) - -The first option is recommended, as it has better system integration. However, the second option is also available if you are running Ultramarine OSTree/Kanopy/CoreOS, or if you want to keep Steam isolated from the rest of the system. - -### Proton - -If your game does not support Linux, or the Linux version happens to be inferior to the Windows version, you can use Steam's Proton compatibility layer to run Windows games on Linux. Proton is based on Wine, and it is developed by Valve. - -If the game you're trying to play doesn't work on Proton, check back in a week, it's quite possible that it will work after Proton updates or active work from Valve. - -### Slow Download Speeds - -There have been recent reports of slow download speeds on Steam due to issues with the Steam client and HTTP/2, see the relevant [Steam for Linux issue](https://github.com/ValveSoftware/steam-for-linux/issues/10248) for more information. - -If you are experiencing slow download speeds and aren't sure why, you can try disabling HTTP/2 in Steam by adding the following lines to the `~/.steam/steam/steam_dev.cfg` file and restarting steam: - -``` -@nClientDownloadEnableHTTP2PlatformLinux 0 -@fDownloadRatelmprovement ToAddAnother Connection 1.0 -``` - -### Apex Legends - -Apex Legends can run on Linux using Steam's Proton compatibility layer, plus the Easy Anti-Cheat runtime. The game has Linux support for anti-cheat, but the game binaries are Windows only. - -## Heroic Games Launcher - -The Heroic Games Launcher is a native Linux client for the Epic Games Store and GOG Galaxy. It supports downloading and installing native Linux games from GOG, and running Windows-only games from both GOG and Epic Games Store using Wine/Proton. - -## Lutris - -Lutris is a game launcher for Linux. It supports installing and managing your game library from various sources, including Steam, GOG, EA Origin, and its own community-provided installers. It also supports running Windows-only games using Wine/Proton. - -### League of Legends - -League of Legends is a popular MOBA game developed by Riot Games. It is available on Windows, macOS, and Android. It is not officially supported on Linux, but it can be run using a special build of Wine by GloriousEggroll. - -### EA Desktop - -Games that use EA's Origin platform or EA Desktop can be run using Lutris. You can install the EA Desktop client using the Lutris installer, and then install your games from there. - -### Epic Games Store - -Please refer to the [Heroic Games Launcher](#heroic-games-launcher) section. - -## Bottles - -Bottles is a tool for managing Wine prefixes. It is similar to Lutris, but is more focused on creating and managing Wine prefixes for multiple applications rather than creating each prefix for a single game or application. - -Installing Bottles is only supported as a Flatpak. Any other version of bottles is not supported by the Ultramarine Linux Team. - -### Overwatch - -Overwatch is a popular team-based FPS game developed by Blizzard Entertainment. It is available on Windows, macOS, PlayStation 4, Xbox One, and Nintendo Switch. It is not officially supported on Linux, but it can be run using Wine/Proton. - -Overwatch 2 can be run in a Bottles prefix, simply install the game using the Blizzard Battle.net app and run it from the Bottles launcher. - -Overwatch 2 is now also on Steam, and can be run using Proton. - -### Valorant - -Valorant is a popular FPS game developed by Riot Games. It is available on Windows. It will not run on Linux, as it uses a kernel-level anti-cheat software that is not compatible with Wine/Proton. diff --git a/src/content/docs/zh_hant/usage/l10n.mdx b/src/content/docs/zh_hant/usage/l10n.mdx deleted file mode 100644 index 9f31f978..00000000 --- a/src/content/docs/zh_hant/usage/l10n.mdx +++ /dev/null @@ -1,313 +0,0 @@ ---- -title: Localization, Internationalization and Multilingualization -description: How to make your Linux system support other languages and even improve the support ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Localization (l10n) and internationalization (i18n) support in Ultramarine Linux is crucial as -half of the project team speaks something other than English natively. This page contains details on -how i18n works and how it can be set up on Ultramarine. - -# Fonts - -Ultramarine should come with fonts for most if not all languages by default. Fonts for CJKV, Thai, -Indic languages are installed out of the box. If you find any glyphs supported by Unicode not -rendered correctly, [file a bug report]. - -## Font Priorities - -Chinese users might experience issues where Japanese fonts are preferred over Chinese ones simply -because the locale code `ja_JP` is before `zh_*` when sorted alphabetically. To solve this issue, -edit `~/.config/fontconfig/fonts.conf` (or `/etc/fonts/local.conf` for global changes): - -```xml - - - - - sans-serif - - Noto Sans CJK TW - Noto Sans - HanaMinA - - - - serif - - Noto Serif CJK TW - Noto Serif - HanaMinA - - - -``` - -# Inputting in another language - -You may change your key maps / keyboard layout in the settings applet. Refer to documentations for -your chosen Desktop Environment (DE) or Window Manager (WM) for more details. - -## IMFs, IMEs and IMs - -Special tools are required to type in CJKV (Chinese, Japanese, Korean and Vietnamese) and other -specific languages. - -**Input Method Frameworks (IMFs)** are software that enable users to type in numerous different input -methods. They provide a unified experience and user interface between IMEs and the DE/WM. - -**Input Method Editors (IMEs)** are software that convert user inputs into actual texts in different -languages. - -**Input Methods (IMs)** refer to the actual conversion between the input keys and the output text. IMs -are not actual software; there must be an IME that intercepts the inputted keys and map them into -output texts, where the mapping is specified by the IM. - -As an example, a Japanese KDE user would install `fcitx5-mozc` in order to type Japanese. In this -case, Fcitx5 is the IMF, Mozc is the IME, and the IM can be Romaji or Kana input depending on the -user's preference. - -A Cantonese GNOME user from Hong Kong learning Korean would install `ibus-rime` with Jyutping and -Cangjie support alongside `ibus-hangul` for Korean support. Here, IBus is the IMF, Rime IME provides -support for the Jyutping IM and Cangjie IM, while libhangul IME provides support for the Hangul IM. - -In most typical cases, only 1 IMF is installed in a system. However, multilingual users may choose -to install multiple IMEs so that they can type in multiple languages. - -## Fcitx5 vs IBus - -**IBus** (Intelligent Input Bus) is an IMF usually used in GTK-based desktop environments. If you -are using GNOME/Budgie, you most likely will choose IBus over Fcitx5 due to GNOME Desktop's tight -integration with IBus. Even though IBus's initial release was back in August 2008, releases are -still rather frequent and the project is still being maintained. - -**Fcitx5** is a newer IMF implementation and provides support for many different languages with a -slim core extensible with different addons and IMEs. It is the successor to Fcitx. If you are using -DEs that are not GTK-based (such as KDE Plasma which uses Qt) or any WMs, you should choose Fcitx5. - -There are no strict rules on which one to choose, you can install Fcitx5 even though you use GNOME, -and you can also install IBus on a KDE system. Things come down to personal preferences. - - - IBus will not work inside Window Managers. - - -## Setting up Fcitx5 on KDE - -1. Install your chosen IMEs (see the table below) alongside `kcm-fcitx5` and `fcitx5-configtool`. - - - Install `fcitx5-qt` and `fcitx5-gtk` for Qt/GTK support. - -2. Enable Fcitx 5: - - - On Wayland (default), go to _Settings > Input Devices > Virtual Keyboard_, and select _Fcitx 5_. - - If Fcitx 5 does not work even after a reboot, try running `im-chooser` and select _Fcitx 5_. - - On X11, install `fcitx5-autostart`. - - If Fcitx 5 does not work even after a reboot, try setting the following in `/etc/environment`: - ``` - GTK_IM_MODULE=fcitx - QT_IM_MODULE=fcitx - ``` - -3. Head to _Settings > Regional Settings > Input Method_, then start configuring Fcitx 5. - -## Setting up Fcitx5 on other DEs/WMs - -1. Install your chosen IMEs (see the table below) alongside `fcitx5-configtool`, `fcitx5-autostart`. - - Install `fcitx5-qt` and `fcitx5-gtk` for Qt/GTK support. -2. Fcitx 5 should be enabled via the autostart package. If not, - - - try running `im-chooser` and select _Fcitx 5_. - - try setting the following in `/etc/environment`: - ``` - GTK_IM_MODULE=fcitx - QT_IM_MODULE=fcitx - ``` - -3. When Fcitx 5 is running, right click on the new "en" icon on the system tray > Settings. -4. Start configuring Fcitx5. - -## Setting up IBus - -1. Install your chosen IMEs (see the table below). -2. On GNOME, Budgie, and similar DEs, go into Settings > Keyboard. -3. On other DEs, run `ibus-setup`. -4. If IBus does not work correctly, - - try running `im-chooser` and select _IBus_. - - try setting the following in `/etc/environment`: - ``` - GTK_IM_MODULE=ibus - QT_IM_MODULE=ibus - ``` - -## List of IMEs and IMs - -Credits to Arch Wiki contributors for a [complete list of IMs]. The table is filtered and amended -such that it better represents Ultramarine's support on different IMs: - -``` - ┌─────────────────────┬─────────────────────┐ - ↓IM/IME IMF→ │ Fcitx5 │ IBus │ -┌──────────────┴─────────────────────┴─────────────────────┤ -│ CHINESE │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Rime │ fcitx5-rime │ ibus-rime │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Pinyin │fcitx5-chinese-addons│ ibus-pinyin │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Zhuyin │ fcitx5-chewing │ ibus-chewing │ -│ Libzhuyin │ fcitx5-zhuyin │ ibus-libzhuyin │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Cangjie │ │ ibus-table-chinese- │ -│ Sucheng/Quick│ fcitx5-table-extra⁵ │ {cangjie,quick,scj} │ -│ SmartCangjie │ (and More…) │ /ibus-table-chinese │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Haifeng Wubi │ fcitx5-table-extra⁵ │ ibus-table-chinese- │ -│ Jidian Wubi │ (and More…) │wubi-{haifeng,jidian}│ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Others │ fcitx5-table-extra? │ ibus-table-chinese? │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ JAPANESE │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Mozc │ fcitx5-mozc │ ibus-mozc │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Anthy¹ │ fcitx5-anthy │ ibus-anthy │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ SKK² │ fcitx5-skk │ ibus-skk │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ KKC³ │ fcitx5-kkc │ ibus-kkc │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ KOREAN │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Libhangul │ fcitx5-hangul │ ibus-hangul │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ VIETNAMESE │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Unikey │ fcitx5-unikey │ ibus-unikey │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ ViQR │ fcitx5-m17n │ ibus-table-tv │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ INDIC │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ m17n │ fcitx5-m17n │ ibus-m17n │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ OpenBangla │ fcitx5-openbangla │ ibus-openbangla │ -├──────────────┼─────────────────────┼─────────────────────┤ -│Sayura Sinhara│ fcitx5-sayura │ ibus-sayura │ -├──────────────┴─────────────────────┴─────────────────────┤ -│ OTHERS │ -├──────────────┬─────────────────────┬─────────────────────┤ -│ Thai │ fcitx5-libthai │ ibus-table-tv │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Math Symbols │ Compose Key⁴? │ibus-table-mathwriter│ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Completion │ *builtin* │ ibus-typing-booster │ -├──────────────┼─────────────────────┼─────────────────────┤ -│ Everything │ fcitx5-m17n │ ibus-m17n │ -└──────────────┴─────────────────────┴─────────────────────┘ -``` - -**Notes**: - -1. Anthy (the IM, not IME) is unmaintained, Mozc is usually preferred. -2. https://github.com/ueno/libskk -3. https://github.com/ueno/libkkc -4. See [#Compose Key](#compose-key). There is also LaTeX support in `fcitx5-m17n`. -5. See below for more IMs supported by `fcitx5-table-extra`. - -### List of IMs supported by `fcitx5-table-extra` - -- boshiamy -- cangjie-large -- cangjie3 -- cangjie5 -- cantonese -- cantonhk -- easy-large -- jyutping-table -- quick-classic -- quick3 -- quick5 -- scj6 -- stroke5 -- t9 -- wu -- wubi-large -- wubi98-large -- wubi98-pinyin -- wubi98-single -- wubi98 -- zhengma-large -- zhengma-pinyin -- zhengma - -### List of packages for `ibus-table*` - -- `ibus-table-code`: Ibus-Tables for Latex, CNS11643 & Emoticons -- `ibus-table-cyrillic`: Ibus-Tables for Cyrillic -- `ibus-table-extraphrase`: Extra phrase for ibus-table -- `ibus-table-latin`: Ibus-Tables for Latin -- `ibus-table-mathwriter`: Ibus-Tables for Unicode mathematics symbols -- `ibus-table-mongol`: Ibus-Tables for Mongol Script -- `ibus-table-others`: Various tables for IBus-Table -- `ibus-table-translit`: Ibus-Tables for Russian Translit -- `ibus-table-tv`: Ibus-Tables for Thai and Viqr (Vietnamese) -- `ibus-table-chinese`: Chinese input tables for IBus -- `ibus-table-chinese-array`: Array input methods -- `ibus-table-chinese-cangjie`: Cangjie based input methods -- `ibus-table-chinese-cantonese`: Cantonese input methods -- `ibus-table-chinese-cantonyale`: Cantonese input method based on yale romanization -- `ibus-table-chinese-easy`: Easy input method -- `ibus-table-chinese-erbi`: Erbi input method -- `ibus-table-chinese-quick`: Quick-to-learn input methods -- `ibus-table-chinese-scj`: Smart Cangjie -- `ibus-table-chinese-stroke5`: Stroke 5 input method -- `ibus-table-chinese-wu`: Wu pronunciation input method -- `ibus-table-chinese-wubi-haifeng`: Haifeng Wubi input method -- `ibus-table-chinese-wubi-jidian`: Jidian Wubi 86 input method, JiShuang 6.0 -- `ibus-table-chinese-yong`: YongMa input method - -### Rime - -[Rime](https://rime.im/) is an input method engine / IME for typing Chinese. It supports a wide -range of IMs and is highly customizable. - -You may refer to [ArchWiki](https://wiki.archlinux.org/title/Rime) regarding how Rime could be -configured. Note that Fedora/Ultramrine does not provide `rime-*` packages in our repositories. -You will need to use [plum](https://github.com/rime/plum) (aka. `rime-install`) to install schemas. -`rime-install` defaults to `ibus`; append `rime_frontend=fcitx-rime` to the front of the command if -you are using Fcitx5: - -``` -rime_frontend=fcitx-rime bash rime-install rime-aca/rime-cangjie6 -``` - -## Compose Key - -See [Compose Key on Wikipedia](https://en.wikipedia.org/wiki/Compose_key) and -[on ArchWiki](https://wiki.archlinux.org/title/Compose_key). - -# Translations - -Users that speak less popular languages might face issues where their system shows text in English -even though the language settings are configured properly. Do not report this issue to us. This is -due to lack of translation efforts from upstream (either the DE/WM or the app in concern). You may -help by visiting the translation platform provided by upstream and be a translator. Your -contributions would improve the entire Linux ecosystem experience for minorities. - -## Ultramarine Components - -If projects / software provided by Ultramarine (such as the Readymade installer) are untranslated -in your language, or you would like to improve the translations, please visit -[our Weblate translation platform](https://weblate.fyralabs.com/). - -There are cases where your language is not shown in the list of languages. This might be because no -one has made efforts on translating the software, or it is not supported by the i18n libraries used -by the software. For example, there is no Cantonese language option in Readymade because the i18n -library provided by GNOME Desktop does not support it. In this case, you should report this issue -to the upstream library. If you have a hard time determining where to report, you may join one of -our communities and reach out. - -[file a bug report]: https://github.com/Ultramarine-Linux/ultramarine/issues/new?assignees=&labels=bug&projects=&template=bug_report.md&title=%5BBUG%5D+Issue+Report -[complete list of IMs]: https://wiki.archlinux.org/title/Input_method#List_of_available_input_method_editors diff --git a/src/content/docs/zh_hant/usage/um40-dnf5.mdx b/src/content/docs/zh_hant/usage/um40-dnf5.mdx deleted file mode 100644 index 0ec69a61..00000000 --- a/src/content/docs/zh_hant/usage/um40-dnf5.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Dnf5 Is The Default Package Manager In Ultramarine Linux 40 -description: dnf5 is the default package manager in Ultramarine Linux 40 ---- - -import Alert from "../../../../components/Docs/Alert.astro"; - -Starting with UM40, `dnf5` will replace `dnf-3` as the default package manager. -This is done via the `dnf5-default-package-manager` package provided by the UM40 repositories. - -## Technical details - -The `dnf5-default-package-manager` package has a `%triggerin` script for `dnf` and `yum`. When these -2 packages get installed/updated, the script will be executed, which will replace `/usr/bin/dnf` and -`/usr/bin/yum` symlinks to point to `/usr/bin/dnf5` instead of `/usr/bin/dnf-3`. - -This change has been proposed on upstream Fedora, but has been delayed to Fedora 41. However, we've -decided this change should be worth a try on UM40. - -## Effects - -By using `dnf5`, users will be able to install, remove and upgrade packages much faster. End-users -shouldn't need to do anything to adapt to this change. - -Since `dnf5` isn't bug-for-bug compatible with `dnf-3`, programs that rely on `dnf-3` should use the -`dnf-3` or `dnf4` command to use the older version of `dnf`. If you are facing compatiblility issues -with some apps that rely on the `dnf` symlink instead of the actual `/usr/bin/dnf-3` binary, you are -advised to report this bug to upstreams (i.e. the apps in concern), not `dnf5` or Ultramarine. - -## FAQ - -### Why `dnf5`? - -- `dnf5` provides better performance over `dnf-3` because it's written in C++ instead of Python. -- We hope this change will push apps in the Fedora neighbourhood to switch to `dnf5` and at the same - time discover apps that are poorly maintained/written and rely on `dnf`/`dnf-3`. - -### Does UM40 remove `dnf`? - -- We do not remove `dnf-3`. We only replace the symlinks for `dnf` and `yum` to point to `dnf5`. - -### Wouldn't that break compatiblility? - -- If changing only 2 symlinks actually breaks your workflows, either your workflows are poorly made, - or there are some apps you use that rely on the 2 symlinks, which evinces that those apps are - unfortunately poorly made. Change your workflows to adapt to `dnf5` or replace `dnf` with the - actual `dnf-3` binary; or in the latter case, report the issue to the upstream apps in concern. - -- We expect `dnf5` in the future to be supposedly much more compatible with `dnf-3`. Upstream Fedora - has been working hard on making `dnf5` the replacement for `dnf-3`. There are works in progress to - adapt GNOME software for `dnf5`, and to make `dnf5` much more feature-complete. - -### But some features are missing in `dnf5`! - -- There are efforts on making `dnf5` more feature-complete compared with `dnf-3`. You may help speed - this up by [contributing to upstream](https://github.com/rpm-software-management/dnf5/). diff --git a/src/content/docs/zh_hant/welcome.mdx b/src/content/docs/zh_hant/welcome.mdx deleted file mode 100644 index 8782cdf3..00000000 --- a/src/content/docs/zh_hant/welcome.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: 歡迎 -description: "This wiki is meant to be the extended documentation for both end users and developers, so it is separated in those two categories." ---- - -歡迎來臨 Ultramarine Wiki!這裏可以令使用者更快有效地使用 Ultramarine Linux。 - -本 Wiki 現正翻譯至中文。若果有興趣成為我們的一份子,請至[本 Wiki 的 GitHub 原碼庫](https://github.com/Ultramarine-Linux/wiki)。 - -開發者及安裝包製作者的檔案位於 [Fyra Developer](https://developer.fyralabs.com) (英)。 -若想開始為 Ultramarine Linux 社羣貢獻,請移玉步至[貢獻部分](/zh_hant/contributing/contributorguide)。 - -若想安裝 Ultramarine Linux,請閱讀:[取得 Ultramarine](/zh_hant/installation/getting)。 - -## 主要總準則 - -Ultramarine Linux 由 Korora Linux 啟發而成,目標是成為一個對不同的技術經驗的人也「總之行 (just works)」的作業系統。 - -為了達成這個目標,我們會遵循下列價值觀: - -### 實用 - -Fedora 比較遵循意識形態 (ideology) ——他們提供一個基本上沒有專利軟件的作業系統。 -相比之下,我們遵循「最少阻力」的運作模式——只要能夠改善使用者體驗,不論是否專利軟件,我們都會願意提供它們,讓使用者一開箱就可以享用。 - -### 創新 - -我們相信 Linux 近期的發展能夠大大改善使用者及開發者體驗:Flatpak、xdg-portals 等科技能讓開發者更容易並更快地提供更好的使用者體驗。 -上流的發展能改善使用者體驗的同時,下流我們的發展,包括主題顏色、Chromebook 支援等,能改善整體 Linux 的生態——這不正是雙贏嘛! - -### 使用者體驗 - -雖然對高階使用者來說,改幾個設定和安裝幾個第三者軟件庫的程式可能易如反掌; -但是對 Linux 甚至 Fedora 的新手來說可能就需要好幾個小時才能找到怎麼做。 -Ultramarine 能讓新和舊的使用者快速地準備一個新系統。 - -## 計劃功能 - -- 歡迎程式 (OOBE) -- 像 YaST 的系統設定程式 - -## 常見問題 - -### 遷徙腳本 (migration script) 具體做甚麼? - -它安裝 RPMFusion、Terra、我們的 PGP 證明鍵、並安裝 Ultramarine Linux 的系統基本組件,取代 Fedora 本身的 `release` 軟件包。 - -為了避免令使用者的系統多了不會用到的軟件,它並不會安裝 Ultramarine Linux 基本組件以外的軟件包。 - -遷徙後,您將會得到我們最新的功能! - -### 這不就是 Fedora 加上了 RPMFusion 嘛,又有甚麼存在價值! - -Ultramarine Linux 是對 Fedora 的法律限制下的沮喪,所衍生出來的產物。 -由於 Fedora (以及 Red Hat) 是一個美國實實,在美國的專利權制度下他們並不能提供一些軟件。 -相比之下,基於泰國的 Ultramarine 並沒有這些版權問題。 - -本團隊旨在令 Fedora 有更好的體驗:使用者可以在 FlatHub、RPMFusion 或 Terra 裏維護任何軟件。 - -我們建議使用者貢獻至本計劃,想了解更多請參考[貢獻指南](/zh_hant/contributing/contributorguide)。 - -### 這不就是 Fedora 加上了幾個新桌面環境嘛! - -不,我們還會在桌面環境上改善系統的使用者體驗,令 Ultramarine 無論是新手還是進階使用者都能用得上手。 - -### Ultramarine 會收集我的資料嗎? - -直至現在,使用者被收集的資料只限於從 Terra 以及 Ultramarine 的軟件庫下載安裝包的次數;這使用了 [DNF Counting](https://docs.fedoraproject.org/en-US/infra/sysadmin_guide/dnf-counting/)。 -這個資料並不會與使用者的電腦掛鉤。 - -Fyra Labs (Ultramarine 背後的團體) 並不會在沒有使用者的同意下收集任何掛鉤個人的資料。 - -### Is Ultramarine semi-rolling? - -**No**. Ultramarine and Fedora are not semi-rolling or rolling. Instead, they use a stable release scheme. -Updates with breaking changes are rolled out only for every stable release version. Minor updates / point updates are guaranteed to be backwards-compatible, i.e. system components in Ultramarine are updated if and only if they do not break compatibility. - -However, Ultramarine Linux includes Terra, RPM Fusion and Flathub. - -- Terra is an RPM repository provided by Fyra Labs, and it mainly uses a rolling release scheme. -- RPM Fusion is another (very popular) third party repository for Fedora. It uses a stable release scheme. -- Flathub is a cross-distro Flatpak repository. Updates in this repository have nothing to do with Fedora/Ultramarine's release cycles. Strictly speaking, packages in Flathub are rolling because they are updated once upstream releases a version. - -### If some packages are updated mid-release, doesn't that mean Ultramarine is unstable/insecure compared to, e.g. Debian? - -**No**. That's an incorrect approach to view if a distribution is secure/stable or not. - -- Packages in Fedora/Ultramarine are updated mid-release, but those updates **only include non-breaking changes**. Your computer has virtually a near-zero chance of breaking mid-release due to an update. -- Undeniably, Ultramarine and Fedora has much more frequent updates compared to distros like Debian, and to some extent, they might be more unstable. However, Fedora/Ultramarine's release cycle makes it so that the operating system is still stable enough for normal use. Millions of Fedora devices across the world run fine without breaking, which demonstrate Fedora's high stability. Debian's release cycle is also arguably too slow and can cause more hassles than necessary. -- Some distros choose to take stable release cycles to an extreme. These distros are designed for servers that will stay up for years by delaying updates for months or even a few years. PC users might miss out a lot by using these distros, including new features, bug fixes, security patches, etc. Without the proper knowledge and management, these systems could be even more insecure than Fedora/Ultramarine. - -### Why Ultramarine (instead of other distros) - -- Performance - - Fedora (the distro Ultramarine is based on) has some of the best IO performance over other distros. - - BTRFS is the default file system, a relatively performant file system with features like snapshots. You can backup your files in less than a second (unlike other file systems like ext4). - - We include lightweight desktop environments such as Budgie (Flagship Edition) and XFCE. They look great, work well and are snappy. -- Privacy - - We don't track/collect your private/personal data. - - We don't even know how many Ultramarine devices there are (unlike some companies). -- Security - - Security updates are provided quickly (unlike some other distros). - - SELinux is active by default. -- Customisations - - There are multiple desktop environments for you to choose from. - - We have applets installed out of the box that help you with further desktop customizations. -- Usability - - You never need to touch the command line. - - If there are cases that require the command line, and those situations might arise to other normal users too, you should [report this bug](https://github.com/Ultramarine-Linux/ultramarine). - - Ultramarine has sane defaults. - - Popular programs that you probably need are installed by default, including LibreOffice, Firefox, drivers, etc. - - We include repositories that provide popular software. - - There are many more apps you can installed from an app store. They are verified carefully by dedicated teams. - - The Fedora and RPM Fusion repositories are used and trusted by millions. - - Terra is reviewed by Fyra Labs and the Ultramarine Project. You can also [take a look at our security policy](https://github.com/terrapkg/packages/blob/f39/SECURITY.md). - - Flathub is used by users across the entire Linux/BSD ecosystem. If you install apps from an app store, you are most likely installing apps from Flathub, which are isolated from your system environment when run, making attacks less likely to succeed. - -### Why Ultramarine (instead of Windows) - -- Performance - - Windows bloats your computer with many different potentially unwanted programs that slow down your computer. Ultramarine does not. - - Ultramarine provides a few lightweight desktop environments (namely Budgie/Flagship and XFCE), which run faster and provide a snappier experience. - - Ultramarine uses newer technologies that are not available on Windows because of backwards compatibility. These technologies brings better performance. - - For example, task schedulers, file systems, shells, etc. - - Most modern servers (including giant web servers) use Linux simply because it's much faster. -- Privacy - - We do not collect/track your private data ever because that's a waste of storage. - - We don't even know how many Ultramarine devices there are (unlike some companies). - - When you setup Windows, you need to accept a very long license. Well, we don't even have a license agreement page in our installer. - - Ultramarine is open source. Anyone can check if we track/collect your data by reviewing the source code. We don't. -- Security - - Security updates are much quicker than Windows. - - Updates don't require reboots. - - It's much more unlikely for malware, viruses, etc. to target Linux due to its current low popularity. - - Our open source model makes it very easy for anyone to spot bugs/vulnerabilities and fix them quicker. -- Stability - - Ultramarine uses a stable release cycle. Updates will not break your computer. - - When there is a chance a system upgrade could break your computer, we warn you about it. - - We advise people to contact support to check if the upgrade could actually break the system. - - Our support team can help you solve any potential issues while performing a system upgrade. - - And most importantly, you could just choose not to upgrade at all! The choice is yours. - - Millions of IoT devices use Linux. If something breaks, the entire Internet collapses. If the Internet trusts Linux's stability, you should too. -- Customizations and Usability - - There are multiple desktop environments for you to choose from. Some of them are lightweight, some of them are fancy. - - Ultramarine provides many ways over how you can customize your entire desktop experience. You have full control over your computer. - - We never hide choices from you — in fact, we make it easier for you. - - If you find some specific customizations hard to perform on Ultramarine, it's a design flaw and you should send your feedback to us (e.g. via [GitHub](https://github.com/Ultramarine-Linux/ultramarine)). - - We support reasonably old and new hardware, and we provide many tools for you to setup a performant, personalized system on your computer. - - Default settings on Ultramarine makes it so that you can start using your computer as soon as possible. - - Ultramarine comes with an app store. You can install programs reviewed by dedicated teams very easily. - - If you want some programs to be included in the app stores, you should send us feedback. - -## Core Team - -- 🇹🇭 Pornpipat "Cappy" Popum - Chief Information Officer, Project Lead, Release Engineer -- 🇩🇪 Trobonox - Documentation, Web Developer, UI/UX Designer -- 🇮🇩 Mo - Low-level developer -- 🇵🇱 Toru Ishikawa - Infrastructure support -- 🇭🇰 Mado - VP of DevOps, Package Maintainer - -[Meet the team →](https://fyralabs.com/about/#Meet:~:text=benefit%20of%20all.-,Meet%20the%20Team) diff --git a/src/env.d.ts b/src/env.d.ts deleted file mode 100644 index b039e209..00000000 --- a/src/env.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -/// - -interface ImportMetaEnv { - readonly GITHUB_TOKEN: string | undefined; -} - -interface ImportMeta { - readonly env: ImportMetaEnv; -} diff --git a/src/languages.ts b/src/languages.ts deleted file mode 100644 index 1a45ceee..00000000 --- a/src/languages.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { KNOWN_LANGUAGES, KNOWN_LANGUAGE_CODES } from "./consts"; -export { KNOWN_LANGUAGES, KNOWN_LANGUAGE_CODES }; - -export const langPathRegex = /\/([a-z_]+)\//; - -export function getLanguageFromURL(pathname: string) { - const langCodeMatch = pathname.match(langPathRegex); - const langCode = langCodeMatch ? langCodeMatch[1] : "en"; - return langCode as (typeof KNOWN_LANGUAGE_CODES)[number]; -} diff --git a/src/layouts/MainLayout.astro b/src/layouts/MainLayout.astro deleted file mode 100644 index 8850c12b..00000000 --- a/src/layouts/MainLayout.astro +++ /dev/null @@ -1,177 +0,0 @@ ---- -import type { MarkdownHeading } from "astro"; -import type { CollectionEntry } from "astro:content"; -import HeadCommon from "../components/HeadCommon.astro"; -import HeadSEO from "../components/HeadSEO.astro"; -import Header from "../components/Header/Header.astro"; -import PageContent from "../components/PageContent/PageContent.astro"; -import LeftSidebar from "../components/LeftSidebar/LeftSidebar.astro"; -import RightSidebar from "../components/RightSidebar/RightSidebar.astro"; -import Footer from "../components/Footer/Footer.astro"; -import { GITHUB_EDIT_URL, SITE } from "../consts"; - -type Props = CollectionEntry<"docs">["data"] & { - headings: MarkdownHeading[]; -}; - -const { headings, ...data } = Astro.props; -const canonicalURL = new URL(Astro.url.pathname, Astro.site); -const currentPage = Astro.url.pathname; -const currentFile = `src/content/docs${currentPage.replace(/\/$/, "")}.mdx`; -const githubEditUrl = `${GITHUB_EDIT_URL}/${currentFile}`; ---- - - - - - - - {`${data.title} | ${SITE.title}`} - - - - - - -
-
- -
- - - -
- -
-
- - - diff --git a/src/pages/[...slug].astro b/src/pages/[...slug].astro deleted file mode 100644 index da234c82..00000000 --- a/src/pages/[...slug].astro +++ /dev/null @@ -1,22 +0,0 @@ ---- -import { CollectionEntry, getCollection } from "astro:content"; -import MainLayout from "../layouts/MainLayout.astro"; - -export async function getStaticPaths() { - const docs = await getCollection("docs"); - return docs.map((entry) => ({ - params: { - slug: entry.slug, - }, - props: entry, - })); -} -type Props = CollectionEntry<"docs">; - -const post = Astro.props; -const { Content, headings } = await post.render(); ---- - - - - diff --git a/src/pages/index.astro b/src/pages/index.astro deleted file mode 100644 index ecc91ce6..00000000 --- a/src/pages/index.astro +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/src/styles/index.css b/src/styles/index.css deleted file mode 100644 index 0e69bca6..00000000 --- a/src/styles/index.css +++ /dev/null @@ -1,493 +0,0 @@ -* { - box-sizing: border-box; - margin: 0; -} - -/* Global focus outline reset */ -*:focus:not(:focus-visible) { - outline: none; -} - -:root { - --user-font-scale: 1rem - 16px; - --max-width: calc(100% - 1rem); -} - -@media (min-width: 50em) { - :root { - --max-width: 46em; - } -} - -body { - display: flex; - flex-direction: column; - min-height: 100vh; - font-family: var(--font-body); - font-size: 1rem; - font-size: clamp(0.9rem, 0.75rem + 0.375vw + var(--user-font-scale), 1rem); - line-height: 1.5; - max-width: 100vw; -} - -nav ul { - list-style: none; - padding: 0; -} - -.content>section>*+* { - margin-top: 1.25rem; -} - -.content>section> :first-child { - margin-top: 0; -} - -/* Typography */ -h1, -h2, -h3, -h4, -h5, -h6 { - margin-bottom: 1rem; - font-weight: bold; - line-height: 1; -} - -h1, -h2 { - max-width: 40ch; -} - -:is(h2, h3):not(:first-child) { - margin-top: 3rem; -} - -:is(h4, h5, h6):not(:first-child) { - margin-top: 2rem; -} - -h1 { - font-size: 220%; - font-weight: 800; -} - -h2 { - font-size: 190%; -} - -h3 { - font-size: 160%; -} - -h4 { - font-size: 135%; -} - -h5 { - font-size: 110%; -} - -@media (min-width: 800px) { - h1 { - font-size: 3.25rem; - font-weight: 800; - } - - h2 { - font-size: 2.5rem; - } - - h3 { - font-size: 1.75rem; - } - - h4 { - font-size: 1.3rem; - } - - h5 { - font-size: 1rem; - } -} - -p { - line-height: 1.65em; -} - -.content ul { - line-height: 1.1em; -} - -p, -.content ul { - color: var(--theme-text-light); -} - -small, -.text_small { - font-size: 0.833rem; -} - -a { - color: var(--theme-text-accent); - font-weight: 400; - text-underline-offset: 0.08em; - align-items: center; - gap: 0.5rem; -} - -article>section :is(ul, ol)>*+* { - margin-top: 0.75rem; -} - -article>section nav :is(ul, ol)>*+* { - margin-top: inherit; -} - -article>section li> :is(p, pre, blockquote):not(:first-child) { - margin-top: 1rem; -} - -article>section :is(ul, ol) { - padding-left: 1em; -} - -article>section nav :is(ul, ol) { - padding-left: inherit; -} - -article>section nav { - margin-top: 1rem; - margin-bottom: 2rem; -} - -article>section ::marker { - font-weight: bold; - color: var(--theme-text-light); -} - -article>section iframe { - width: 100%; - height: auto; - aspect-ratio: 16 / 9; -} - -a>code { - position: relative; - color: var(--theme-text-accent); - background: transparent; - text-underline-offset: var(--padding-block); -} - -a>code::before { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: block; - background: var(--theme-accent); - opacity: var(--theme-accent-opacity); - border-radius: var(--border-radius); -} - -a:hover, -a:focus { - text-decoration: underline; -} - -a:focus { - outline: 2px solid currentColor; - outline-offset: 0.25em; -} - -strong { - font-weight: 600; - color: inherit; -} - -/* Supporting Content */ - -code { - --border-radius: 3px; - --padding-block: 0.2rem; - --padding-inline: 0.33rem; - - font-family: var(--font-mono); - font-size: 0.85em; - color: inherit; - background-color: var(--theme-code-inline-bg); - padding: var(--padding-block) var(--padding-inline); - margin: calc(var(--padding-block) * -1) -0.125em; - border-radius: var(--border-radius); - word-break: break-word; -} - -pre.astro-code>code { - all: unset; -} - -pre>code { - font-size: 1em; -} - -table, -pre { - position: relative; - --padding-block: 1rem; - --padding-inline: 2rem; - padding: var(--padding-block) var(--padding-inline); - padding-right: calc(var(--padding-inline) * 2); - margin-left: calc(var(--padding-inline) * -1); - margin-right: calc(var(--padding-inline) * -1); - font-family: var(--font-mono); - - line-height: 1.5; - font-size: 0.85em; - overflow-y: hidden; - overflow-x: auto; -} - -table { - width: 100%; - padding: var(--padding-block) 0; - margin: 0; - border-collapse: collapse; -} - -/* Zebra striping */ -tr:nth-of-type(odd) { - background: var(--theme-bg-hover); -} - -th { - background: var(--color-black); - color: var(--theme-color); - font-weight: bold; -} - -td, -th { - padding: 6px; - text-align: left; -} - -pre { - background-color: var(--theme-code-bg); - color: var(--theme-code-text); -} - -blockquote code { - background-color: var(--theme-bg); -} - -@media (min-width: 37.75em) { - pre { - --padding-inline: 1.25rem; - border-radius: 8px; - margin-left: 0; - margin-right: 0; - } -} - -blockquote { - margin: 2rem 0; - padding: 1.25em 1.5rem; - border-left: 3px solid var(--theme-text-light); - background-color: var(--theme-bg-offset); - border-radius: 0 0.25rem 0.25rem 0; - line-height: 1.7; -} - -kbd { - font-family: var(--font-mono); - font-size: 0.85em; - color: var(--theme-text-light); - background-color: var(--theme-bg-offset); - padding: 0.1em 0.4em; - border-radius: 3px; - border: 1px solid gray; -} - -img { - max-width: 100%; -} - -.flex { - display: flex; - align-items: center; -} - -button { - display: flex; - align-items: center; - justify-items: center; - gap: 0.25em; - padding: 0.33em 0.67em; - border: 0; - background: var(--theme-bg); - display: flex; - font-size: 1rem; - align-items: center; - gap: 0.25em; - border-radius: 99em; - color: var(--theme-text); - background-color: var(--theme-bg); -} - -h2.heading { - font-size: 1rem; - font-weight: 700; - padding: 0.1rem 1rem; - text-transform: uppercase; - margin-bottom: 0.5rem; -} - -.header-link { - font-size: 1em; - transition: - border-inline-start-color 100ms ease-out, - background-color 200ms ease-out; - border-left: 4px solid var(--theme-divider); -} - -.header-link a { - display: inline-flex; - gap: 0.5em; - width: 100%; - font: inherit; - padding: 0.4rem 0; - line-height: 1.3; - color: inherit; - text-decoration: none; - unicode-bidi: plaintext; -} - -@media (min-width: 50em) { - .header-link a { - padding: 0.275rem 0; - } -} - -.header-link:hover, -.header-link:focus, -.header-link:focus-within { - border-inline-start-color: var(--theme-accent-secondary); -} - -.header-link:hover a, -.header-link a:focus { - color: var(--theme-text); - text-decoration: underline; -} - -.header-link svg { - opacity: 0.6; -} - -.header-link:hover svg { - opacity: 0.8; -} - -/* Add line and padding on the left side */ -.header-link { - padding-inline-start: 1rem; -} - -.header-link.depth-3 { - padding-inline-start: 2rem; -} - -.header-link.depth-4 { - padding-inline-start: 3rem; -} - -/* Screenreader Only Text */ -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.focus\:not-sr-only:focus, -.focus\:not-sr-only:focus-visible { - position: static; - width: auto; - height: auto; - padding: 0; - margin: 0; - overflow: visible; - clip: auto; - white-space: normal; -} - -:target { - scroll-margin: calc(var(--theme-sidebar-offset, 5rem) + 2rem) 0 2rem; -} - -/* Highlight TOC header link matching the current scroll position */ -.current-header-link { - background-color: var(--theme-bg-accent); - /* Indicates the current heading for forced colors users in older browsers */ - outline: 1px solid transparent; -} - -@media (forced-colors: active) { - .current-header-link { - border: 1px solid CanvasText; - } -} - -.current-header-link a { - color: var(--theme-text); -} - -pre.astro-code { - position: relative; - margin: 5px 0; -} - -pre.astro-code button { - position: absolute; - top: 5px; - right: 5px; - display: none; - border-radius: 8px; -} - -pre.astro-code button:hover { - position: absolute; - top: 5px; - right: 5px; - display: none; - background-color: var(--theme-bg-hover); - cursor: pointer; -} - -pre.astro-code:hover button { - position: absolute; - top: 5px; - right: 5px; - display: block; -} - -.alert-base p { - color: #fefefe !important; -} - -.alert-base code { - color: var(--theme-text-light); -} - -.full-width { - width: 100%; -} \ No newline at end of file diff --git a/src/styles/theme.css b/src/styles/theme.css deleted file mode 100644 index 61986252..00000000 --- a/src/styles/theme.css +++ /dev/null @@ -1,115 +0,0 @@ -:root { - --font-fallback: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, - sans-serif, Apple Color Emoji, Segoe UI Emoji; - --font-body: system-ui, var(--font-fallback); - --font-mono: "IBM Plex Mono", Consolas, "Andale Mono WT", "Andale Mono", - "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", - "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, - "Courier New", Courier, monospace; - - /* - * Variables with --color-base prefix define - * the hue, and saturation values to be used for - * hsla colors. - * - * ex: - * - * --color-base-{color}: {hue}, {saturation}; - * - */ - - --color-base-white: 0, 0%; - --color-base-black: 240, 100%; - --color-base-gray: 220, 14%; - --color-base-blue: 220, 100%; - --color-base-blue-dark: 220, 72%; - --color-base-green: 158, 79%; - --color-base-orange: 22, 100%; - --color-base-purple: 269, 79%; - --color-base-red: 351, 100%; - --color-base-yellow: 41, 100%; - - /* - * Color palettes are made using --color-base - * variables, along with a lightness value to - * define different variants. - * - */ - - --color-gray-5: var(--color-base-gray), 5%; - --color-gray-10: var(--color-base-gray), 10%; - --color-gray-20: var(--color-base-gray), 20%; - --color-gray-30: var(--color-base-gray), 30%; - --color-gray-40: var(--color-base-gray), 40%; - --color-gray-50: var(--color-base-gray), 50%; - --color-gray-60: var(--color-base-gray), 60%; - --color-gray-70: var(--color-base-gray), 70%; - --color-gray-80: var(--color-base-gray), 80%; - --color-gray-90: var(--color-base-gray), 90%; - --color-gray-95: var(--color-base-gray), 95%; - - --color-blue: var(--color-base-blue), 61%; - --color-blue-dark: var(--color-base-blue-dark), 39%; - --color-green: var(--color-base-green), 42%; - --color-orange: var(--color-base-orange), 50%; - --color-purple: var(--color-base-purple), 54%; - --color-red: var(--color-base-red), 54%; - --color-yellow: var(--color-base-yellow), 59%; -} - -:root { - color-scheme: light; - --theme-accent: hsla(var(--color-blue), 1); - --theme-text-accent: hsla(var(--color-blue), 1); - --theme-accent-opacity: 0.15; - --theme-divider: hsla(var(--color-gray-95), 1); - --theme-text: hsla(var(--color-gray-10), 1); - --theme-text-light: hsla(var(--color-gray-40), 1); - /* @@@: not used anywhere */ - --theme-text-lighter: hsla(var(--color-gray-80), 1); - --theme-bg: hsla(var(--color-base-white), 100%, 1); - --theme-bg-hover: hsla(var(--color-gray-95), 1); - --theme-bg-offset: hsla(var(--color-gray-90), 1); - --theme-bg-accent: hsla(var(--color-blue), var(--theme-accent-opacity)); - --theme-code-inline-bg: hsla(var(--color-gray-95), 1); - --theme-code-inline-text: var(--theme-text); - --theme-code-bg: rgb(28, 32, 37); - --theme-code-text: hsla(var(--color-gray-95), 1); - --theme-navbar-bg: hsla(var(--color-base-white), 100%, 1); - --theme-navbar-height: 4rem; - --theme-selection-color: hsla(var(--color-blue), 1); - --theme-selection-bg: hsla(var(--color-blue), var(--theme-accent-opacity)); -} - -body { - background: var(--theme-bg); - color: var(--theme-text); -} - -:root.theme-dark { - color-scheme: dark; - --theme-accent-opacity: 0.15; - --theme-accent: hsla(var(--color-blue), 1); - --theme-text-accent: hsla(var(--color-blue), 1); - --theme-divider: hsla(var(--color-gray-10), 1); - --theme-text: hsla(var(--color-gray-90), 1); - --theme-text-light: hsla(var(--color-gray-80), 1); - - /* @@@: not used anywhere */ - --theme-text-lighter: hsla(var(--color-gray-40), 1); - --theme-bg: rgb(10, 12, 14); - --theme-bg-hover: hsla(var(--color-gray-20), 1); - --theme-bg-offset: hsla(var(--color-gray-5), 1); - --theme-code-inline-bg: hsla(var(--color-gray-10), 1); - --theme-code-inline-text: hsla(var(--color-base-white), 100%, 1); - --theme-code-bg: hsla(var(--color-gray-5), 1); - --theme-code-text: hsla(var(--color-base-white), 100%, 1); - --theme-navbar-bg: hsl(220, 16%, 7%); - --theme-selection-color: hsla(var(--color-base-white), 100%, 1); - --theme-selection-bg: hsla(var(--color-purple), var(--theme-accent-opacity)); -} - -::selection { - color: var(--theme-selection-color); - background-color: var(--theme-selection-bg); -} diff --git a/tsconfig.json b/tsconfig.json index be38226f..3838223c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,36 @@ { - "extends": "astro/tsconfigs/strict", "compilerOptions": { - "jsx": "preserve", + "baseUrl": ".", + "target": "ESNext", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, "skipLibCheck": true, - "strictNullChecks": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "paths": { + "@/*": ["./*"], + "fumadocs-mdx:collections/*": [".source/*"] + }, + "plugins": [ + { + "name": "next" + } + ] }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": ["node_modules"] } From 59425de60ef4b3e8e51e3f4dbb65b31a6620d89b Mon Sep 17 00:00:00 2001 From: Lleyton Gray Date: Wed, 25 Feb 2026 22:56:00 -0800 Subject: [PATCH 02/15] fix: duplicate homepage icons --- app/(home)/page.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/(home)/page.tsx b/app/(home)/page.tsx index 241f2c97..9e665e30 100644 --- a/app/(home)/page.tsx +++ b/app/(home)/page.tsx @@ -8,13 +8,13 @@ const START = [ title: "Get Started", href: "/docs/get-started", slug: "get-started", - icon: "sailboat", + icon: "Sailboat", }, { title: "Using Ultramarine", href: "/docs/usage", slug: "usage", - icon: "sailboat", + icon: "Workflow", }, ] as const; @@ -23,25 +23,25 @@ const LEARN = [ title: "Anywhere", href: "/docs/anywhere", slug: "anywhere", - icon: "microchip", + icon: "Microchip", }, { title: "Join the Community", href: "/docs/community", slug: "community", - icon: "message-circle-heart", + icon: "MessageCircleHeart", }, { title: "Linux Concepts", href: "/docs/linux", slug: "linux", - icon: "graduation-cap", + icon: "GraduationCap", }, { title: "About Ultramarine", href: "/docs/about", slug: "about", - icon: "graduation-cap", + icon: "Info", }, ] as const; From 0b47420a3185b4d56c9925c82f14d5508c408a82 Mon Sep 17 00:00:00 2001 From: Lleyton Gray Date: Wed, 25 Feb 2026 22:56:39 -0800 Subject: [PATCH 03/15] feat: use logo --- lib/layout.shared.tsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/layout.shared.tsx b/lib/layout.shared.tsx index 6baf51ef..c3e809b5 100644 --- a/lib/layout.shared.tsx +++ b/lib/layout.shared.tsx @@ -3,7 +3,22 @@ import type { BaseLayoutProps } from "fumadocs-ui/layouts/shared"; export function baseOptions(): BaseLayoutProps { return { nav: { - title: "Ultramarine Wiki", + title: ( +
+ + + + + + + + + + + + Ultramarine Wiki +
+ ), }, }; } From 421cb676a003133d43880e18b8baf989b000589c Mon Sep 17 00:00:00 2001 From: Lleyton Gray Date: Wed, 25 Feb 2026 22:59:17 -0800 Subject: [PATCH 04/15] fix: match home icons with section icons --- app/(home)/page.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/(home)/page.tsx b/app/(home)/page.tsx index 9e665e30..d3fd9bf0 100644 --- a/app/(home)/page.tsx +++ b/app/(home)/page.tsx @@ -8,13 +8,13 @@ const START = [ title: "Get Started", href: "/docs/get-started", slug: "get-started", - icon: "Sailboat", + icon: "CirclePower", }, { title: "Using Ultramarine", href: "/docs/usage", slug: "usage", - icon: "Workflow", + icon: "Sailboat", }, ] as const; @@ -23,7 +23,7 @@ const LEARN = [ title: "Anywhere", href: "/docs/anywhere", slug: "anywhere", - icon: "Microchip", + icon: "Cpu", }, { title: "Join the Community", @@ -41,7 +41,7 @@ const LEARN = [ title: "About Ultramarine", href: "/docs/about", slug: "about", - icon: "Info", + icon: "PawPrint", }, ] as const; From a73e5b8975753cc3069e774f3b249a24aee63e5c Mon Sep 17 00:00:00 2001 From: Lleyton Gray Date: Wed, 25 Feb 2026 22:59:23 -0800 Subject: [PATCH 05/15] chore: add favicon --- app/icon.svg | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 app/icon.svg diff --git a/app/icon.svg b/app/icon.svg new file mode 100644 index 00000000..78a87ee7 --- /dev/null +++ b/app/icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + From fb50a3535d738f5d956f36fa877ce07967c55698 Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:20:23 -0600 Subject: [PATCH 06/15] Update index.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/about/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/about/index.mdx b/content/docs/about/index.mdx index 2798bdfb..2d4c99b3 100644 --- a/content/docs/about/index.mdx +++ b/content/docs/about/index.mdx @@ -122,7 +122,7 @@ especially if you have not rebooted your system in a while. -### Why Ultramarine over other Distros? +### Why Ultramarine over other distros? - Performance - Fedora (the distro Ultramarine is based on) has some of the best IO performance over other distros. From cd9d83d59b70bad537f417b5d0831d696b8b8d02 Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:20:40 -0600 Subject: [PATCH 07/15] Update chromebook.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/anywhere/completed/chromebook.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/anywhere/completed/chromebook.mdx b/content/docs/anywhere/completed/chromebook.mdx index 4f8b46dc..ca55f963 100644 --- a/content/docs/anywhere/completed/chromebook.mdx +++ b/content/docs/anywhere/completed/chromebook.mdx @@ -12,7 +12,7 @@ Chromebook support in Ultramarine Linux is provided in partnership with the [Chr ## How it Works -Ultramarine for Chromebooks uses a special bootloader called [Submarine](https://developer.fyralabs.com/submarine) to load the kernel. +Ultramarine for Chromebooks uses the [Submarine](https://developer.fyralabs.com/submarine) bootloader to load the kernel. Under the hood, Submarine is an incredibly minimal Linux OS based on [u-root](https://github.com/u-root/u-root), it's only really usable for debug and booting a full distribution. Once Submarine is loaded, we use [LinuxBoot](https://www.linuxboot.org/) to boot a full copy of Ultramarine (and hopefully more distros in the future). From 8e88289f1689f519c9375110bd9d2b842f193559 Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:20:57 -0600 Subject: [PATCH 08/15] Update servers.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/anywhere/planned/servers.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/anywhere/planned/servers.mdx b/content/docs/anywhere/planned/servers.mdx index 539beb76..f1901da6 100644 --- a/content/docs/anywhere/planned/servers.mdx +++ b/content/docs/anywhere/planned/servers.mdx @@ -1,6 +1,6 @@ --- title: "Servers" -description: "Serversin the Ultramarine Anywhere Initiative" +description: "Servers in the Ultramarine Anywhere Initiative" --- From a564041b8e235b28791573ef96410aec05fb7c07 Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:21:41 -0600 Subject: [PATCH 09/15] Update broadcom-realtek.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/get-started/post-installation/broadcom-realtek.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/get-started/post-installation/broadcom-realtek.mdx b/content/docs/get-started/post-installation/broadcom-realtek.mdx index 5bd37d02..7c27e8b2 100644 --- a/content/docs/get-started/post-installation/broadcom-realtek.mdx +++ b/content/docs/get-started/post-installation/broadcom-realtek.mdx @@ -1,6 +1,6 @@ --- title: Broadcom and Realtek Drivers -description: "Get your Broadcom or Realtek WiFi card working" +description: "Get your Broadcom or Realtek wireless card working" --- From 7dc53a9ae3ee43a23cbb9e1de36d5337d2c1bb4e Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:23:47 -0600 Subject: [PATCH 10/15] Update filesystem.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/linux/filesystem.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/linux/filesystem.mdx b/content/docs/linux/filesystem.mdx index 45a52fe5..0d139407 100644 --- a/content/docs/linux/filesystem.mdx +++ b/content/docs/linux/filesystem.mdx @@ -12,7 +12,7 @@ In Linux, and more widely, UNIX, everything is a file. Unlike Windows which has ## The File System Hierarchy -Linux has a standardized file system hierarchy called the [*Filesystem Hierarchy Standard*](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) (FHS). The FHS is contained within `/` (called root, not to be confused with `/root`) Root doesn't only contain normal files, but also physical devices, virtual devices, and various other special files that control the system itself. +Linux has a standardized file system hierarchy called the [*Filesystem Hierarchy Standard*](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) (FHS). The FHS is contained within `/` (called root, not to be confused with `/root`). Root doesn't only contain normal files, but also physical devices, virtual devices, and various other special files that control the system itself. It should also be noted that Linux uses a forward slash (`/`) to represent going deeper in a directory, unlike Windows which uses a backslash (`\`) From a4c8435783d19dce36c4954fa3defa83acf37468 Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:23:58 -0600 Subject: [PATCH 11/15] Update filesystem.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/linux/filesystem.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/linux/filesystem.mdx b/content/docs/linux/filesystem.mdx index 0d139407..ad59ebb4 100644 --- a/content/docs/linux/filesystem.mdx +++ b/content/docs/linux/filesystem.mdx @@ -99,4 +99,4 @@ By default, the installer will use all the available space on the disk. ### Remote Filesystems -Ultramarine Linux can also mount remote file systems from a remote server or NAS, using the NFS, SFTP, SMB, and WebDAV protocols. You can connect with your edition's file manager. +Ultramarine Linux can also mount remote file systems from a remote server, using the NFS, SFTP, SMB, and WebDAV protocols. You can connect with your edition's file manager. From f6dc2a25b3e9a776972303cd1a7f344c47f03ddb Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:24:19 -0600 Subject: [PATCH 12/15] Update software.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/linux/software.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/linux/software.mdx b/content/docs/linux/software.mdx index 0a8ef334..8023b0a8 100644 --- a/content/docs/linux/software.mdx +++ b/content/docs/linux/software.mdx @@ -3,7 +3,7 @@ title: Software and Package Management description: "How to manage software on Linux." --- -You may have noticed package manager tags (like thisdnf and thisflatpak) across the wiki. This shows our reccomended way to get that software, either from `dnf` or as a `flatpak`. +You may have noticed package manager tags (like thisdnf and thisflatpak) across the wiki. This shows our recommended way to get that software, either using `dnf` or as a `flatpak`. This page goes more into depth about package managers, to help you make choices like this on your own. From f4412a66ae025fe727ce0464bed86f8016a8b7fc Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:24:57 -0600 Subject: [PATCH 13/15] Update software.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/linux/software.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/linux/software.mdx b/content/docs/linux/software.mdx index 8023b0a8..c3625011 100644 --- a/content/docs/linux/software.mdx +++ b/content/docs/linux/software.mdx @@ -32,7 +32,7 @@ Most desktop apps should be installed as a Flatpak, but in some cases, like with ### DNF -Ultramarine uses the DNF package manager. While this package manager primarily handles system software (like the kernel, and your desktop environment) it can install user apps as well. +Ultramarine uses the DNF package manager. While this package manager handles system software (like the kernel, and your desktop environment), it can install user apps as well. ```bash sudo dnf install steam # Install Steam From 49a307b38567fcb046798e3ccad9b67c121a18b9 Mon Sep 17 00:00:00 2001 From: nothingneko Date: Thu, 26 Feb 2026 12:25:12 -0600 Subject: [PATCH 14/15] Update software.mdx Co-authored-by: Owen Zimmerman <123591347+Owen-sz@users.noreply.github.com> --- content/docs/linux/software.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/docs/linux/software.mdx b/content/docs/linux/software.mdx index c3625011..eb6dac67 100644 --- a/content/docs/linux/software.mdx +++ b/content/docs/linux/software.mdx @@ -38,7 +38,7 @@ Ultramarine uses the DNF package manager. While this package manager handles sys sudo dnf install steam # Install Steam ``` -You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf groupinstall` command. +You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf group install` command. ```bash sudo dnf groupinstall "Audio Production" # installs multiple packages at once, in this case a suite of music/audio production tools From 90d52d8d0117ff3d4a410b4c29b2285cf6da98ea Mon Sep 17 00:00:00 2001 From: Jaiden Riordan Date: Mon, 30 Mar 2026 16:12:45 -0500 Subject: [PATCH 15/15] port over fixes --- .flox/.gitattributes | 1 + .flox/.gitignore | 5 + .flox/env.json | 4 + .flox/env/manifest.lock | 267 ++++++++++++++++++++++ .flox/env/manifest.toml | 28 +++ README.md | 63 +++-- content/docs/about/diff-fedora.mdx | 2 +- content/docs/about/index.mdx | 14 +- content/docs/anywhere/completed/wsl.mdx | 2 +- content/docs/get-started/requirements.mdx | 50 +--- content/docs/linux/software.mdx | 4 +- content/docs/usage/eduroam.mdx | 5 + docs-staging/fido-keys.mdx | 71 ------ 13 files changed, 361 insertions(+), 155 deletions(-) create mode 100644 .flox/.gitattributes create mode 100644 .flox/.gitignore create mode 100644 .flox/env.json create mode 100644 .flox/env/manifest.lock create mode 100644 .flox/env/manifest.toml delete mode 100644 docs-staging/fido-keys.mdx diff --git a/.flox/.gitattributes b/.flox/.gitattributes new file mode 100644 index 00000000..bb5491e1 --- /dev/null +++ b/.flox/.gitattributes @@ -0,0 +1 @@ +env/manifest.lock linguist-generated=true linguist-language=JSON diff --git a/.flox/.gitignore b/.flox/.gitignore new file mode 100644 index 00000000..8d211868 --- /dev/null +++ b/.flox/.gitignore @@ -0,0 +1,5 @@ +run/ +cache/ +lib/ +log/ +!env/ diff --git a/.flox/env.json b/.flox/env.json new file mode 100644 index 00000000..9702df48 --- /dev/null +++ b/.flox/env.json @@ -0,0 +1,4 @@ +{ + "name": "wiki", + "version": 1 +} diff --git a/.flox/env/manifest.lock b/.flox/env/manifest.lock new file mode 100644 index 00000000..cc11d3c2 --- /dev/null +++ b/.flox/env/manifest.lock @@ -0,0 +1,267 @@ +{ + "lockfile-version": 1, + "manifest": { + "schema-version": "1.10.0", + "install": { + "bun": { + "pkg-path": "bun" + }, + "nodejs": { + "pkg-path": "nodejs" + } + }, + "hook": { + "on-activate": "\n bun i\n echo \"\"\n echo \"run 'flox services start dev' to start the dev server at localhost:3000\"\n echo \"\"\n echo \"run 'flox services start dev-host' to start the dev server and expose to the LAN/Tailnet at hostname:300\"\n echo \"\"\n echo \"Contact Jaiden for help with Flox @ Fyra\"\n echo \"\"\n echo \"\"\n" + }, + "options": { + "systems": [ + "aarch64-darwin", + "aarch64-linux", + "x86_64-darwin", + "x86_64-linux" + ] + }, + "services": { + "dev": { + "command": "bun dev" + }, + "dev-host": { + "command": "bun dev --host" + } + } + }, + "packages": [ + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/923bn84szvvcjhy05226q05vr2ds847s-bun-1.3.11.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "bun-1.3.11", + "pname": "bun", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T03:37:19.688901Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.3.11", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/cgzjp11cgzg8n349rqmbqz46izm2kl2k-bun-1.3.11" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/qjvwg5k4mn20j9v1lhbvzyc0dl7r8jv3-bun-1.3.11.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "bun-1.3.11", + "pname": "bun", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T04:09:54.055855Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.3.11", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/n24wmwy3slpa1z9d5x6hyw9s2r41xjxm-bun-1.3.11" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/84icbf3f96islpxqvil7pb9rafwwbfdx-bun-1.3.11.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "bun-1.3.11", + "pname": "bun", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T04:40:38.923886Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.3.11", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/p03zpjl2i2f03pv7xd335cqv8w1qn6i8-bun-1.3.11" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "bun", + "broken": false, + "derivation": "/nix/store/64i3nhw4vszdmfkc8mja1g8v0gsfbps5-bun-1.3.11.drv", + "description": "Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one", + "install_id": "bun", + "license": "[ MIT, LGPL-2.1-only ]", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "bun-1.3.11", + "pname": "bun", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T05:16:14.376411Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "1.3.11", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/4b7jvqsqywnsb273svingfmpqschkszi-bun-1.3.11" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "nodejs", + "broken": false, + "derivation": "/nix/store/g2yfx00n1lp9i8ka7nbl11fawc0yfm7n-nodejs-24.14.0.drv", + "description": "Event-driven I/O framework for the V8 JavaScript engine", + "install_id": "nodejs", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "nodejs-24.14.0", + "pname": "nodejs", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T03:37:44.188491Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "24.14.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/d5hw52iialz64hvfzfp9qm1gr2fp43kx-nodejs-24.14.0" + }, + "system": "aarch64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "nodejs", + "broken": false, + "derivation": "/nix/store/jj8rw2gnisil7dw10xi2qdinad9jqp7s-nodejs-24.14.0.drv", + "description": "Event-driven I/O framework for the V8 JavaScript engine", + "install_id": "nodejs", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "nodejs-24.14.0", + "pname": "nodejs", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T04:10:33.055894Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "24.14.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/vs8zaq8fvbbjqfg4bzn424kn55sj7s7y-nodejs-24.14.0" + }, + "system": "aarch64-linux", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "nodejs", + "broken": false, + "derivation": "/nix/store/l9ksrfa960964gqf23yfr7a66a2n18c1-nodejs-24.14.0.drv", + "description": "Event-driven I/O framework for the V8 JavaScript engine", + "install_id": "nodejs", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "nodejs-24.14.0", + "pname": "nodejs", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T04:41:03.483286Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "24.14.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/70ypbaj273w2kk0nrs4vijizyqgbg48v-nodejs-24.14.0" + }, + "system": "x86_64-darwin", + "group": "toplevel", + "priority": 5 + }, + { + "attr_path": "nodejs", + "broken": false, + "derivation": "/nix/store/15s1kk2n6vg180wg04wj2wgnl19f03v7-nodejs-24.14.0.drv", + "description": "Event-driven I/O framework for the V8 JavaScript engine", + "install_id": "nodejs", + "license": "MIT", + "locked_url": "https://github.com/flox/nixpkgs?rev=8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "name": "nodejs-24.14.0", + "pname": "nodejs", + "rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685", + "rev_count": 971119, + "rev_date": "2026-03-28T14:48:23Z", + "scrape_date": "2026-03-30T05:16:55.941803Z", + "stabilities": [ + "unstable" + ], + "unfree": false, + "version": "24.14.0", + "outputs_to_install": [ + "out" + ], + "outputs": { + "out": "/nix/store/v2210ar51jddnrcx46m53ivv9palc26m-nodejs-24.14.0" + }, + "system": "x86_64-linux", + "group": "toplevel", + "priority": 5 + } + ] +} diff --git a/.flox/env/manifest.toml b/.flox/env/manifest.toml new file mode 100644 index 00000000..78d45dd5 --- /dev/null +++ b/.flox/env/manifest.toml @@ -0,0 +1,28 @@ +schema-version = "1.10.0" + +[install] +nodejs.pkg-path = "nodejs" +bun.pkg-path = "bun" + +[hook] +on-activate = """ + + bun i + echo "" + echo "run 'flox services start dev' to start the dev server at localhost:3000" + echo "" + echo "run 'flox services start dev-host' to start the dev server and expose to the LAN/Tailnet at hostname:300" + echo "" + echo "Contact Jaiden for help with Flox @ Fyra" + echo "" + echo "" +""" +[services.dev] +command = "bun dev" + +[services.dev-host] +command = "bun dev --host" + +## Other Environment Options ----------------------------------------- +[options] +systems = ["aarch64-darwin", "aarch64-linux", "x86_64-darwin", "x86_64-linux"] diff --git a/README.md b/README.md index 978b2b0e..fcadcaad 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,38 @@ -# wiki +# Ultramarine Linux Wiki -This is a Next.js application generated with -[Create Fumadocs](https://github.com/fuma-nama/fumadocs). +Welcome to the source repository behind the [Ultramarine Wiki]! We welcome any contributions and +you may freely send pull requests to this repository if you would like to modify any of the +content here! -It is a Next.js app with [Static Export](https://nextjs.org/docs/app/guides/static-exports) configured. +## Translations -Run development server: +TBD as we shift to our new docs site -```bash -npm run dev -# or -pnpm dev -# or -yarn dev -``` +## Hacking +### Dev Containers -Open http://localhost:3000 with your browser to see the result. +1. Install the Dev Containers extension in your IDE + - Zed comes with Dev Containers, see [this documentation](https://zed.dev/docs/dev-containers) -## Explore + - VSCode users need to install the Dev Containers extension -In the project, you can see: + - Podman users need to install `podman-docker` from their package manager + +2. Open your IDE and select the "Reopen in Dev Container" option +3. Run `bun i` to install deps +4. Run `bun dev` or `bun dev --host` to start the dev server + +### Flox +1. Get [Flox](https://flox.dev/docs/install-flox/install/) +2. Clone and enter this repo +3. Run `flox activate` -- `lib/source.ts`: Code for content source adapter, [`loader()`](https://fumadocs.dev/docs/headless/source-api) provides the interface to access your content. -- `lib/layout.shared.tsx`: Shared options for layouts, optional but preferred to keep. +You can run the dev server with `flox services start dev`, or to expose to LAN or Tailnet, run `flox services start dev-host` -| Route | Description | -| ------------------------- | ------------------------------------------------------ | -| `app/(home)` | The route group for your landing page and other pages. | -| `app/docs` | The documentation layout and pages. | -| `app/api/search/route.ts` | The Route Handler for search. | +### On the Host +1. Install `bun` and `nodejs` +2. Run `bun i` to install deps +3. Run `bun dev` or `bun dev --host` to start the dev server -### Fumadocs MDX -A `source.config.ts` config file has been included, you can customise different options like frontmatter schema. - -Read the [Introduction](https://fumadocs.dev/docs/mdx) for further details. - -## Learn More - -To learn more about Next.js and Fumadocs, take a look at the following -resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js - features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. -- [Fumadocs](https://fumadocs.dev) - learn about Fumadocs +[Ultramarine Wiki]: https://wiki.ultramarine-linux.org diff --git a/content/docs/about/diff-fedora.mdx b/content/docs/about/diff-fedora.mdx index 0c75acaa..9e36cc28 100644 --- a/content/docs/about/diff-fedora.mdx +++ b/content/docs/about/diff-fedora.mdx @@ -36,7 +36,7 @@ Changes listed below are non-exhaustive and cumulative, meaning each section con ## Ultramarine 41 -- 🔥 Switched to Taidandnf, our out-of-box experience +- 🔥 Switched to Taidan, our out-of-box experience - 🔥 All raw images (including Pi) switched to Btrfs - 🔥 Move many core desktop apps to Flatpak - 🔥 WSL support diff --git a/content/docs/about/index.mdx b/content/docs/about/index.mdx index 2d4c99b3..ba754fa6 100644 --- a/content/docs/about/index.mdx +++ b/content/docs/about/index.mdx @@ -15,12 +15,10 @@ However you use your system, we have you covered with tweaks and tools to make t Ultramarine Linux was founded as a spiritual succesor to Korora Linux, but has since come into its own and grown beyond this goal. -Our first release was Ultramarine 35 (Phing Kan), based on Fedora 35. Our latest is Ultramarine 43 (Gas Meter). +Our first release was Ultramarine 35 (Phing Kan), based on Fedora 35. Ultramarine joined Fyra Labs ahead of UM39, and has been maintained by Team Fyra ever since. -Our guiding idea (beyond the philisophy you'll read in a moment) is that the user opening a terminal is a failure of UX (unless they wanted to open the terminal). - ## General Philosophy Ultramarine Linux's primary goal is to create an instantly usable experience while keeping up with innovations in the space, these are the standards we try to hold ourselves to: @@ -39,7 +37,7 @@ While it may seem trivial to more advanced users to tweak a few settings and ins ### Ultramarine is Accesible. -We believe that software should meet you where you are. Ultramarine accomplishes this by making the experience better, localizing our software, providing a better input method experience, and running on the hardware you already have. +We believe that software should meet you where you are. Ultramarine accomplishes this by making the experience better, localizing our software, providing a better experience for languages with non-Latin characters, and running on the hardware you already have. ## FAQ @@ -55,6 +53,10 @@ After you're migrated, you'll get the latest and greatest Ultramarine features a No, Ultramarine is not just Fedora with extra desktop environments. We aim to improve the user experience by making the system "just work" for new and advanced users. +### What happened to Pantheon? + +Pantheon Edition was removed in UM40. Downloads had been steadily declining for some time and the desktop simply failed to start in UM40, which is why unfortunately it was dropped. + ### What happened to Cutefish? Cutefish is no longer maintained upstream. We decided to stop supporting Cutefish due to this in Ultramarine 37. @@ -182,3 +184,7 @@ especially if you have not rebooted your system in a while. - Default settings on Ultramarine makes it so that you can start using your computer as soon as possible. - Ultramarine comes with an app store. You can install programs reviewed by dedicated teams very easily. - If you want some programs to be included in the app stores, you should send us feedback. + +## Core Team + +[Learn more about the core team here ->](https://fyralabs.com/about/) diff --git a/content/docs/anywhere/completed/wsl.mdx b/content/docs/anywhere/completed/wsl.mdx index a498215d..4b175340 100644 --- a/content/docs/anywhere/completed/wsl.mdx +++ b/content/docs/anywhere/completed/wsl.mdx @@ -4,4 +4,4 @@ description: "Technical details about Ultramarine for Windows Subsystem for Linu --- If you want to learn about using Ultramarine WSL go [here](/docs/get-started/wsl). -Ultramarine WSL uses the [standard Microsoft distro launcher](https://github.com/Ultramarine-Linux/wsl), we add a few packages to keep WSL in sync and provide our userspace utilities. +Ultramarine WSL uses the [standard Microsoft distro launcher](https://github.com/Ultramarine-Linux/wsl), we add a few packages to keep WSL working properly and provide our userspace utilities. diff --git a/content/docs/get-started/requirements.mdx b/content/docs/get-started/requirements.mdx index 3bbd225d..df65669f 100644 --- a/content/docs/get-started/requirements.mdx +++ b/content/docs/get-started/requirements.mdx @@ -3,48 +3,18 @@ title: System Requirements description: "Minimum Requirements for Ultramarine Linux" --- -Ultramarine's requirements vary by Edition. So these requirements are by Edition. +Ultramarine's requirements are simple: -These are the minimum for a system that can handle opening a browser or a handful of native apps. You CAN run Ultramarine on lower specs, but you may run into a sluggish or unusable system. +- 64bit processor (x86_64 or aarch64) +- Compatible firmware (EFI, BIOS, etc) +- 1GB RAM +- 16GB disk space -## Plasma Edition -- 8GB of RAM -- 64-bit processor (x86_64/amd64/aarch64) -- Any GPU -- 20GB of free disk space (32GB or more recommended) -- Internet connection (for downloading the ISO image, updates, and additional drivers) -- A computer that supports booting from a USB drive -- A USB drive (for creating the bootable media) +If your device isn't a normal x86_64 computer, check out the [Anywhere section](/docs/anywhere) for more information about booting Ultramarine. -## Xfce Edition -- 2GB of RAM (At least 4GB recommended) -- 64-bit processor (x86_64/amd64/aarch64) -- 20GB of free disk space (32GB or more recommended) -- Internet connection (for downloading the ISO image, updates, and additional drivers) -- A computer that supports booting from a USB drive -- A USB drive (for creating the bootable media) +These are the recommended specs for a system that can handle opening a browser or a handful of native apps. You CAN run Ultramarine on lower specs, but you may run into a sluggish or unusable system. -## Budgie Edition -- 4GB of RAM -- 64-bit processor (x86_64/amd64/aarch64) -- 20GB of free disk space (32GB or more recommended) -- Internet connection (for downloading the ISO image, updates, and additional drivers) -- A computer that supports booting from a USB drive -- A USB drive (for creating the bootable media) +- 4GB of RAM (More recommended) +- 1st generation Intel Core (or Equivalent) or newer -## GNOME Edition -- 8GB of RAM -- 64-bit processor (x86_64/amd64/aarch64) -- Any GPU -- 20GB of free disk space (32GB or more recommended) -- Internet connection (for downloading the ISO image, updates, and additional drivers) -- A computer that supports booting from a USB drive -- A USB drive (for creating the bootable media) - -## Minimum Requirements - -These requirements are the **_bare minimum_** to run Ultramarine Linux. Using Ultramarine on a computer of this caliber will not be a good time. - -- 1GB of RAM -- 64-bit processor (x86_64 **OR** aarch64) -- 16GB of disk space +Xfce Edition can run with as little as 2GB of RAM. We suggest a minimum of 8GB of memory for Plasma and GNOME Editions, and 4GB for Budgie. You can run any Edition on less memory than we recommend, but your mileage may vary. diff --git a/content/docs/linux/software.mdx b/content/docs/linux/software.mdx index eb6dac67..307198cc 100644 --- a/content/docs/linux/software.mdx +++ b/content/docs/linux/software.mdx @@ -10,7 +10,7 @@ This page goes more into depth about package managers, to help you make choices ## Using the App Store Ultramarine comes with an app store. It's called "Discover" on Plasma Edition, and "Software" on GNOME, Budgie, and Xfce Edition. -You can search for and install all of the software available for Ultramarine in the app store, and it will handle installing RPMs and flatpakrefs from the internet. +You can search for and install the majority of software available for Ultramarine in the app store, and it will handle installing RPMs and flatpakrefs from the internet. You can also install software with the terminal, which we'll cover in the next section. @@ -41,7 +41,7 @@ sudo dnf install steam # Install Steam You can also install groups of packages, like full desktop environments or a suite of tools for music production, using the `dnf group install` command. ```bash -sudo dnf groupinstall "Audio Production" # installs multiple packages at once, in this case a suite of music/audio production tools +sudo dnf group install audio # installs multiple packages at once, in this case a suite of music/audio production tools ``` For a full list of available groups, run `sudo dnf group list` diff --git a/content/docs/usage/eduroam.mdx b/content/docs/usage/eduroam.mdx index 96e17f10..6ded21df 100644 --- a/content/docs/usage/eduroam.mdx +++ b/content/docs/usage/eduroam.mdx @@ -32,3 +32,8 @@ You're done! Just visit any eduroam hotspot and you'll be automatically connecte ![Running CAT](/assets/eduroam/done.png) If you need further support, we recommend contacting your institution's helpdesk, or hopping into one of [our chats](/docs/community/). + +### eduroam Tips +- Many insutitions require users from other institutions to use CAT, if you followed this guide you're already good to go +- If your institution uses SSO credentials for eduroam, you will need to repeat this guide when you reset your password +- Your device will automatically connect to eduroam at any institution offering it diff --git a/docs-staging/fido-keys.mdx b/docs-staging/fido-keys.mdx deleted file mode 100644 index 25cbbcf7..00000000 --- a/docs-staging/fido-keys.mdx +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Decrypting the Disk with a Security Key (Advanced) -description: "Decrypt your drive with a security key!" ---- - -If you [encrypted your setup during installation](/docs/get-started/installation/#luks-full-disk-encryption), you have the option -of using a FIDO2-Compliant security key (such as a Yubikey 5) to decrypt your disk upon boot. - -You'll need to find the encrypted disk name first: - -```bash -# Get the list of available block devices -lsblk -``` - -Find the entry with type `crypt` and mountpoint `/home` or `/`. The disk name should look something like `nvme0n1p3`, `sda3`, or `mmcblk0p2` - -Next, enroll your security key with the disk: - -```bash -# Enroll security key -sudo systemd-cryptenroll --fido2-device=auto /dev/your_disk_name -``` - -Replace the disk name with the name found previously. You'll be asked to input the security key PIN and activate the key, -refer to your key's documentation for information on how to do this. - -Once the disk has been enrolled, the initramfs must be told to use the security key. - -Open the file `/etc/crypttab` in your preferred terminal editor, and after the section labelled `none discard`, -add the line `fido2-device=auto`. It should appear similar to the following: - -```bash -# /etc/crypttab -luks-my-disk-id UUID=my-disk-id none discard,fido2-device=auto -``` - -Lastly, edit the bootloader configuration and specify to use FIDO2. The instructions for this will deviate depending on whether you use systemd-boot or GRUB. - -## GRUB - -Edit the file `/etc/default/grub` in your preferred terminal editor. - -On the line `GRUB_CMDLINE_LINUX`, add the option `rd.luks.fido2-device=auto` before the `rd.luks.uuid` line. An example is provided as follows: - -```bash -# /etc/default/grub -GRUB_CMDLINE_LINUX="rd.luks.fido2-device=auto rd.luks.uuid=luks-my-disk-id rhgb quiet" -``` - -## systemd-boot - -Find the loader file. Use `sudo bootctl status` to find all entries. Look for the entry titled "Ultramarine Linux", and note the source entry. It should appear similar to `/boot/efi//loader/entries/id-6.18.5-200.fc43.x86_64.conf` (In general, the format is id-kernel_version.fedora_version.arch.conf). Edit this file in your preferred terminal editor. - -On the line `options`, add the option `rd.luks.fido2-device=auto` before the `root=UUID=` line. An example is provided as follows: - -```bash -# /boot/efi//loader/entries/*.conf -options rd.luks.fido2-device=auto root=UUID=id ro ... -``` - -## Final Steps - -Regenerate the initramfs. - -```bash -# Regenerate dracut initramfs -sudo dracut --regenerate-all --force -``` - -If all went well, reboot the machine. When booting, you should be prompted to enter the PIN for your security key. This may not have any words, just a text box with a lock icon. Enter the PIN and press `Enter`. You will then be asked to activate the security key. Once activated, your drive will be properly decrypted and the boot will finish.

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