From 0482c040ec6495f1b5fafb78676f58193b383875 Mon Sep 17 00:00:00 2001 From: ajnart Date: Thu, 13 Aug 2026 19:59:46 +0200 Subject: [PATCH] chore: reconcile v2 after stack rebase --- .github/act/workshop.md | 19 - .github/workflows/ci.yml | 6 +- .github/workflows/deployment-docs.yml | 56 + .github/workflows/deployment-workshop.yml | 47 - AGENTS.md | 2 - apps/docs/.vscode/settings.json | 11 +- apps/docs/README.md | 26 +- .../advanced/command-line/_category_.json | 2 +- .../command-line/fix-usernames/index.mdx | 2 +- .../docs/docs/advanced/command-line/index.mdx | 10 +- .../command-line/integrations/index.mdx | 5 +- .../command-line/password-recovery/index.mdx | 4 +- .../advanced/command-line/users/index.mdx | 5 +- .../docs/advanced/development/_category_.json | 13 +- .../advanced/development/getting-started.mdx | 27 +- .../docs/advanced/development/kubernetes.mdx | 2 +- .../advanced/keyboard-shortcuts/index.mdx | 8 +- apps/docs/docs/advanced/proxy/index.mdx | 20 +- .../running-as-different-user/index.mdx | 20 +- .../docs/advanced/single-sign-on/index.mdx | 17 +- apps/docs/docs/advanced/styling/index.mdx | 30 +- apps/docs/docs/community/donate.mdx | 6 +- apps/docs/docs/community/get-in-touch.mdx | 4 +- apps/docs/docs/community/license.mdx | 3 +- apps/docs/docs/community/translations.mdx | 26 +- .../after-the-installation.mdx | 41 +- apps/docs/docs/getting-started/glossary.mdx | 3 +- apps/docs/docs/getting-started/index.mdx | 13 +- .../getting-started/installation/docker.mdx | 42 +- .../docs/getting-started/installation/helm.md | 98 +- .../installation/home-assistant.mdx | 2 +- .../installation/portainer.mdx | 13 +- .../getting-started/installation/proxmox.mdx | 6 +- .../getting-started/installation/qnap.mdx | 2 +- .../getting-started/installation/runtipi.mdx | 17 +- .../getting-started/installation/saltbox.mdx | 3 +- .../getting-started/installation/source.mdx | 26 +- .../getting-started/installation/unraid.mdx | 13 +- .../docs/integrations/adguard-home/index.mdx | 49 +- apps/docs/docs/integrations/anchor/index.mdx | 51 +- apps/docs/docs/integrations/aria2/index.mdx | 51 +- .../integrations/audiobookshelf/index.mdx | 51 +- apps/docs/docs/integrations/bazarr/index.mdx | 52 +- apps/docs/docs/integrations/beszel/index.mdx | 60 +- apps/docs/docs/integrations/coolify/index.mdx | 67 +- .../docs/docs/integrations/dash-dot/index.mdx | 39 +- apps/docs/docs/integrations/deluge/index.mdx | 45 +- apps/docs/docs/integrations/docker/index.mdx | 46 +- apps/docs/docs/integrations/emby/index.mdx | 44 +- apps/docs/docs/integrations/glances/index.mdx | 50 +- apps/docs/docs/integrations/gluetun/index.mdx | 56 +- apps/docs/docs/integrations/gotify/index.mdx | 42 +- .../integrations/home-assistant/index.mdx | 52 +- apps/docs/docs/integrations/ical/index.mdx | 44 +- apps/docs/docs/integrations/immich/index.mdx | 37 +- .../docs/docs/integrations/jellyfin/index.mdx | 51 +- .../docs/integrations/jellyseerr/index.mdx | 65 +- .../docs/integrations/kubernetes/index.mdx | 18 +- apps/docs/docs/integrations/lidarr/index.mdx | 43 +- .../docs/integrations/navidrome/index.mdx | 22 +- .../docs/integrations/nextcloud/index.mdx | 55 +- apps/docs/docs/integrations/ntfy/index.mdx | 49 +- apps/docs/docs/integrations/nzbget/index.mdx | 45 +- .../integrations/open-media-vault/index.mdx | 62 +- .../docs/docs/integrations/opnsense/index.mdx | 84 +- .../docs/integrations/overseerr/index.mdx | 65 +- .../docs/integrations/paperless-ngx/index.mdx | 51 +- .../docs/docs/integrations/patchmon/index.mdx | 51 +- apps/docs/docs/integrations/peanut/index.mdx | 57 +- apps/docs/docs/integrations/pi-hole/index.mdx | 65 +- apps/docs/docs/integrations/plex/index.mdx | 58 +- .../docs/docs/integrations/prowlarr/index.mdx | 38 +- apps/docs/docs/integrations/proxmox/index.mdx | 136 +- .../docs/integrations/q-bittorent/index.mdx | 48 +- apps/docs/docs/integrations/radarr/index.mdx | 39 +- apps/docs/docs/integrations/readarr/index.mdx | 39 +- apps/docs/docs/integrations/sabnzbd/index.mdx | 41 +- apps/docs/docs/integrations/seerr/index.mdx | 65 +- apps/docs/docs/integrations/slskd/index.mdx | 43 +- apps/docs/docs/integrations/sonarr/index.mdx | 39 +- .../integrations/speedtest-tracker/index.mdx | 45 +- .../docs/docs/integrations/synology/index.mdx | 6 +- apps/docs/docs/integrations/tdarr/index.mdx | 46 +- .../integrations/technitium-dns/index.mdx | 88 +- .../docs/docs/integrations/tracearr/index.mdx | 47 +- .../docs/integrations/transmission/index.mdx | 41 +- apps/docs/docs/integrations/truenas/index.mdx | 88 +- apps/docs/docs/integrations/umami/index.mdx | 73 +- .../integrations/unifi-controller/index.mdx | 42 +- apps/docs/docs/integrations/unraid/index.mdx | 94 +- .../docs/integrations/uptime-kuma/index.mdx | 47 +- apps/docs/docs/management/backup.mdx | 8 +- .../docs/management/certificates/index.mdx | 24 +- .../docs/management/integrations/index.mdx | 25 +- apps/docs/docs/management/media/index.mdx | 3 +- .../docs/management/search-engines/index.mdx | 24 +- apps/docs/docs/management/tasks/index.mdx | 3 - apps/docs/docs/management/users/index.mdx | 41 +- apps/docs/docs/widgets/anchor-note/index.mdx | 34 +- apps/docs/docs/widgets/app/index.mdx | 27 +- apps/docs/docs/widgets/bazarr/index.mdx | 36 +- .../docs/docs/widgets/beszel-alerts/index.mdx | 36 +- .../docs/widgets/beszel-system-grid/index.mdx | 36 +- .../widgets/beszel-system-table/index.mdx | 35 +- apps/docs/docs/widgets/bookmarks/index.mdx | 29 +- apps/docs/docs/widgets/calendar/index.mdx | 97 +- apps/docs/docs/widgets/clock/index.mdx | 34 +- apps/docs/docs/widgets/coolify/index.mdx | 39 +- .../docs/widgets/dns-hole-controls/index.mdx | 54 +- .../docs/widgets/dns-hole-summary/index.mdx | 59 +- .../docs/widgets/docker-containers/index.mdx | 38 +- apps/docs/docs/widgets/downloads/index.mdx | 11 +- apps/docs/docs/widgets/firewall/index.mdx | 34 +- apps/docs/docs/widgets/iframe/index.mdx | 33 +- .../widgets/immich-album-carousel/index.mdx | 32 +- .../widgets/immich-server-stats/index.mdx | 38 +- .../docs/widgets/indexer-manager/index.mdx | 41 +- .../docs/docs/widgets/media-missing/index.mdx | 50 +- .../docs/widgets/media-releases/index.mdx | 51 +- .../widgets/media-request-stats/index.mdx | 45 +- apps/docs/docs/widgets/media-server/index.mdx | 24 +- .../docs/widgets/media-transcoding/index.mdx | 47 +- .../widgets/minecraft-server-status/index.mdx | 33 +- .../network-controller-status/index.mdx | 41 +- .../network-controller-summary/index.mdx | 38 +- .../docs/docs/widgets/notifications/index.mdx | 37 +- .../docs/docs/widgets/paperless-ngx/index.mdx | 35 +- apps/docs/docs/widgets/patchmon/index.mdx | 61 +- apps/docs/docs/widgets/rss-feed/index.mdx | 25 +- .../widgets/smart-home-entity-state/index.mdx | 50 +- .../smart-home-execute-automation/index.mdx | 48 +- .../docs/widgets/speedtest-tracker/index.mdx | 34 +- apps/docs/docs/widgets/stock-price/index.mdx | 32 +- apps/docs/docs/widgets/system-disks/index.ts | 6 +- apps/docs/docs/widgets/timetable/index.mdx | 12 +- apps/docs/docs/widgets/tracearr/index.mdx | 49 +- apps/docs/docs/widgets/umami/index.mdx | 43 +- apps/docs/docs/widgets/ups/index.mdx | 48 +- apps/docs/docs/widgets/uptime-kuma/index.mdx | 35 +- apps/docs/docs/widgets/video/index.mdx | 20 +- apps/docs/docs/widgets/vpn/index.mdx | 31 +- apps/docs/docs/widgets/weather/index.mdx | 25 +- apps/docs/package.json | 12 +- apps/docs/scripts/dump-contributors.mjs | 39 +- apps/docs/scripts/verify-algolia-search.mjs | 101 +- .../available-integrations.module.css | 26 +- .../pages/home/review-list/styles.module.css | 4 - apps/docs/src/pages/index.module.css | 1 - apps/docs/static/data/contributions.json | 128 +- .../data/translation-contributions.json | 967 ++++- apps/docs/tsconfig.json | 11 +- .../boards/(content)/_board-add-menu.tsx | 4 +- .../boards/(content)/_header-actions.tsx | 183 +- .../boards/[name]/settings/_customCss.tsx | 52 +- .../app/[locale]/boards/_layout-creator.tsx | 45 +- apps/nextjs/src/app/[locale]/layout.tsx | 34 +- .../nextjs/src/app/[locale]/manage/layout.tsx | 42 +- .../components/board/items/item-content.tsx | 189 +- .../src/components/board/items/item-menu.tsx | 8 +- .../board/items/item-select-modal.tsx | 315 +- .../board/items/widget-context-menu.tsx | 2 +- .../items/widget-hover-overlay.module.css | 6 +- .../install-from-workshop-buttons.tsx | 98 - .../workshop-install/workshop-api.ts | 47 - .../workshop-browser-modal.tsx | 221 -- .../pb_migrations/1750000000_init_workshop.js | 172 - .../1750000002_marketplace_view.js | 49 - apps/workshop/scripts/smoke-test.sh | 30 - e2e/custom-widgets-custom-jsx-v2.spec.ts | 5 +- .../src/router/test/widgets/patchmon.spec.ts | 4 +- .../migrations/mysql/meta/0038_snapshot.json | 504 +-- .../migrations/mysql/meta/0040_snapshot.json | 529 +-- .../migrations/mysql/meta/0041_snapshot.json | 527 +-- .../migrations/mysql/meta/0042_snapshot.json | 540 +-- .../postgresql/meta/0006_snapshot.json | 433 +-- .../postgresql/meta/0007_snapshot.json | 431 +-- .../postgresql/meta/0008_snapshot.json | 444 +-- .../migrations/sqlite/meta/0038_snapshot.json | 453 +-- .../migrations/sqlite/meta/0039_snapshot.json | 451 +-- .../migrations/sqlite/meta/0040_snapshot.json | 464 +-- packages/db/test/mysql-migration.spec.ts | 2 +- .../src/patchmon/patchmon-types.ts | 2 +- packages/translation/src/lang/ca.json | 742 ++-- packages/translation/src/lang/cs.json | 742 ++-- packages/translation/src/lang/el.json | 742 ++-- packages/translation/src/lang/en-gb.json | 719 ++-- packages/translation/src/lang/en.json | 145 +- packages/translation/src/lang/et.json | 742 ++-- packages/translation/src/lang/fi.json | 742 ++-- packages/translation/src/lang/fr.json | 691 ++-- packages/translation/src/lang/hr.json | 742 ++-- packages/translation/src/lang/hu.json | 742 ++-- packages/translation/src/lang/ko.json | 678 ++-- packages/translation/src/lang/lt.json | 742 ++-- packages/translation/src/lang/lv.json | 734 ++-- packages/translation/src/lang/pt-br.json | 692 ++-- packages/translation/src/lang/pt.json | 742 ++-- packages/translation/src/lang/sk.json | 742 ++-- packages/translation/src/lang/tr.json | 742 ++-- packages/translation/src/lang/uk.json | 736 ++-- packages/translation/src/lang/zh.json | 742 ++-- packages/widgets/package.json | 3 +- .../src/filter-storage-volumes.spec.ts | 6 +- .../widgets/src/filter-storage-volumes.ts | 6 +- .../widgets/src/media-missing/component.tsx | 69 +- .../widgets/src/media-server/component.tsx | 4 +- packages/widgets/src/patchmon/index.ts | 48 +- .../src/patchmon/os-distribution-section.tsx | 26 +- packages/widgets/src/patchmon/stat-colors.ts | 6 +- .../src/patchmon/test/stat-colors.spec.ts | 15 +- .../test/threshold-validation.spec.ts | 40 +- packages/widgets/src/test/translation.spec.ts | 47 +- pnpm-lock.yaml | 3347 +++++++++-------- pnpm-workspace.yaml | 13 +- scripts/ci/workshop-act.sh | 22 - 215 files changed, 12297 insertions(+), 17452 deletions(-) delete mode 100644 .github/act/workshop.md create mode 100644 .github/workflows/deployment-docs.yml delete mode 100644 .github/workflows/deployment-workshop.yml delete mode 100644 apps/nextjs/src/components/workshop-install/install-from-workshop-buttons.tsx delete mode 100644 apps/nextjs/src/components/workshop-install/workshop-api.ts delete mode 100644 apps/nextjs/src/components/workshop-install/workshop-browser-modal.tsx delete mode 100644 apps/workshop/pb_migrations/1750000000_init_workshop.js delete mode 100644 apps/workshop/pb_migrations/1750000002_marketplace_view.js delete mode 100755 apps/workshop/scripts/smoke-test.sh delete mode 100755 scripts/ci/workshop-act.sh diff --git a/.github/act/workshop.md b/.github/act/workshop.md deleted file mode 100644 index a0746d4aa..000000000 --- a/.github/act/workshop.md +++ /dev/null @@ -1,19 +0,0 @@ -# Workshop deployment with ACT - -The Workshop workflow builds the same image used on the VPS and smoke-tests both Docusaurus and PocketBase. Registry login and pushes are skipped under ACT. - -From the repository root: - -```sh -pnpm ci:act:workshop -``` - -The wrapper selects `.github/workflows/deployment-workshop.yml`, derives the active Docker socket (including Docker Desktop and OrbStack contexts), and runs only the `deploy` job using a `workflow_dispatch` event. - -To inspect the workflow without running it: - -```sh -act workflow_dispatch --list --workflows .github/workflows/deployment-workshop.yml -``` - -No GitHub or registry secrets are required for the local run. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f79ef4996..643c4f436 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,8 +34,10 @@ permissions: contents: read concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || inputs.pr_number || github.ref }} - cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + # Every event for a PR shares one group so a close event cancels stale image + # publication and a newer synchronize run cannot be overwritten by an older run. + group: ${{ github.workflow }}-${{ github.event.pull_request.number || inputs.pr_number || github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_target' || github.event_name == 'workflow_dispatch' || github.ref != 'refs/heads/main' }} env: FORCE_COLOR: 3 diff --git a/.github/workflows/deployment-docs.yml b/.github/workflows/deployment-docs.yml new file mode 100644 index 000000000..eeb53d101 --- /dev/null +++ b/.github/workflows/deployment-docs.yml @@ -0,0 +1,56 @@ +name: "[Deployment] Documentation" + +on: + push: + branches: ["dev"] + paths: + - "apps/docs/**" + - "packages/definitions/src/docs/**" + - ".github/workflows/deployment-docs.yml" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +env: + SKIP_ENV_VALIDATION: true + TURBO_API: ${{ secrets.TURBO_API }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_REMOTE_CACHE_SIGNATURE_KEY: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }} + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v7 + - name: Setup + uses: ./tooling/github/setup + - name: Build docs + run: pnpm turbo build --filter=@homarr/docs + env: + CI: "true" + - name: Setup Pages + uses: actions/configure-pages@v6 + - name: Upload pages artifact + uses: actions/upload-pages-artifact@v5 + with: + path: "apps/docs/build" + + deploy: + runs-on: ubuntu-latest + needs: build + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/deployment-workshop.yml b/.github/workflows/deployment-workshop.yml deleted file mode 100644 index 621c4609c..000000000 --- a/.github/workflows/deployment-workshop.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: "[Deployment] Workshop" - -on: - push: - branches: ["dev"] - paths: - - "apps/docs/**" - - "apps/workshop/**" - workflow_dispatch: - -permissions: - contents: read - packages: write - -concurrency: - group: workshop-deployment - cancel-in-progress: true - -jobs: - deploy: - name: Build, test, and publish - runs-on: ubuntu-latest - timeout-minutes: 25 - env: - LOCAL_IMAGE: homarr/workshop:ci - REGISTRY_IMAGE: ghcr.io/homarr-labs/workshop - steps: - - name: Check out repository - uses: actions/checkout@v7 - - - name: Build combined Workshop image - run: docker build --file apps/workshop/Dockerfile --tag "$LOCAL_IMAGE" . - - - name: Smoke-test static docs and PocketBase - run: bash apps/workshop/scripts/smoke-test.sh "$LOCAL_IMAGE" - - - name: Log in to GitHub Container Registry - if: ${{ env.ACT != 'true' }} - run: echo "${{ github.token }}" | docker login ghcr.io --username "${{ github.actor }}" --password-stdin - - - name: Publish immutable and latest tags - if: ${{ env.ACT != 'true' }} - run: | - docker tag "$LOCAL_IMAGE" "$REGISTRY_IMAGE:sha-${GITHUB_SHA}" - docker tag "$LOCAL_IMAGE" "$REGISTRY_IMAGE:latest" - docker push "$REGISTRY_IMAGE:sha-${GITHUB_SHA}" - docker push "$REGISTRY_IMAGE:latest" diff --git a/AGENTS.md b/AGENTS.md index 716789f1b..6c3d36da4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -90,5 +90,3 @@ When modifying user-facing code, you MUST also update the corresponding document - Run `pnpm dev:cli -- build ` from a Homarr checkout to build `homarr:` with rebuild provenance. - Run `pnpm dev:cli -- build --pr ` to build a PR locally from a temporary checkout. - Run Go checks from `tools/homarr-dev` with `go test ./...` and `go vet ./...`. -- Use `dayjs` for date/time formatting or comparisons; do not hand-roll relative time or date math. -- Extract shared helpers/components when the same logic appears in multiple workshop/store files. diff --git a/apps/docs/.vscode/settings.json b/apps/docs/.vscode/settings.json index c5a1b2892..2eef88bf3 100644 --- a/apps/docs/.vscode/settings.json +++ b/apps/docs/.vscode/settings.json @@ -1,10 +1,3 @@ { - "cSpell.words": [ - "Homarr", - "Lidarr", - "Nextcloud", - "Radarr", - "Readarr", - "Sonarr" - ] -} \ No newline at end of file + "cSpell.words": ["Homarr", "Lidarr", "Nextcloud", "Radarr", "Readarr", "Sonarr"] +} diff --git a/apps/docs/README.md b/apps/docs/README.md index fbea63fa1..863ff66ec 100644 --- a/apps/docs/README.md +++ b/apps/docs/README.md @@ -21,8 +21,14 @@ pnpm dev:docs # Or from within this directory pnpm dev + +# Point the docs at a local PocketBase instance +WORKSHOP_API_URL=http://127.0.0.1:8090 pnpm dev:docs ``` +The standalone docs use `WORKSHOP_API_URL` for PocketBase and `HOMARR_WEBSITE_URL` for the public site origin. The old +`WORKSHOP_URL` name is a deprecated one-release alias. + ## Build ```bash @@ -40,7 +46,7 @@ Uses oxlint and oxfmt (same as the rest of the monorepo): ```bash pnpm lint # oxlint pnpm format # oxfmt (check) -pnpm format -- --write # oxfmt (fix) +pnpm format:fix # oxfmt (fix) ``` ## Typecheck @@ -71,7 +77,7 @@ Each integration/widget doc follows a consistent pattern: The docs app has `@homarr/definitions` as a workspace dependency. You can import integration kinds, widget kinds, and other definitions directly: ```typescript -import { IntegrationKind } from '@homarr/definitions'; +import { IntegrationKind } from "@homarr/definitions"; ``` This enables type-safe references to homarr domain concepts within documentation code. @@ -90,15 +96,15 @@ pnpm verify:search ## Tech Stack -| Layer | Technology | -|---|---| +| Layer | Technology | +| -------------- | ------------------------------------------- | | Site generator | Docusaurus 3 (`@docusaurus/preset-classic`) | -| Styling | Tailwind CSS 4 + Docusaurus Infima | -| Icons | `@tabler/icons-react` | -| Diagrams | Mermaid (`@docusaurus/theme-mermaid`) | -| Search | Algolia DocSearch | -| Analytics | PostHog | -| Charts | @nivo/line | +| Styling | Tailwind CSS 4 + Docusaurus Infima | +| Icons | `@tabler/icons-react` | +| Diagrams | Mermaid (`@docusaurus/theme-mermaid`) | +| Search | Algolia DocSearch | +| Analytics | PostHog | +| Charts | @nivo/line | ## Contributing diff --git a/apps/docs/docs/advanced/command-line/_category_.json b/apps/docs/docs/advanced/command-line/_category_.json index f3ee30aa5..4b4aec4c3 100644 --- a/apps/docs/docs/advanced/command-line/_category_.json +++ b/apps/docs/docs/advanced/command-line/_category_.json @@ -1,4 +1,4 @@ { "collapsed": true, "label": "Command line interface" -} \ No newline at end of file +} diff --git a/apps/docs/docs/advanced/command-line/fix-usernames/index.mdx b/apps/docs/docs/advanced/command-line/fix-usernames/index.mdx index d3b9f50cc..bf8808118 100644 --- a/apps/docs/docs/advanced/command-line/fix-usernames/index.mdx +++ b/apps/docs/docs/advanced/command-line/fix-usernames/index.mdx @@ -14,4 +14,4 @@ homarr fix-usernames This will convert all credential usernames to lowercase and update the database accordingly. -![](./img/screenshot-cli.png) \ No newline at end of file +![](./img/screenshot-cli.png) diff --git a/apps/docs/docs/advanced/command-line/index.mdx b/apps/docs/docs/advanced/command-line/index.mdx index 0e3e802f7..287985739 100644 --- a/apps/docs/docs/advanced/command-line/index.mdx +++ b/apps/docs/docs/advanced/command-line/index.mdx @@ -1,7 +1,7 @@ # Command line interface The Homarr image ships with a built-in recovery tool. This can be useful, if you do not have access to Homarr or if something is not working. -Please note that the CLI is an *emergency tool*, not an API tool. +Please note that the CLI is an _emergency tool_, not an API tool. :::caution @@ -12,10 +12,10 @@ You should also create a backup of the database, in case you break something. ## Execute CLI with Docker -1. Execute ``docker ps | grep homarr`` on the root system with Docker to find the container ID of your Homarr container. -2. Run ``docker exec -it /bin/bash homarr ``. \ -Replace ```` with your container ID from step 1. \ -Replace ```` with the command you want to execute (see sub-pages). +1. Execute `docker ps | grep homarr` on the root system with Docker to find the container ID of your Homarr container. +2. Run `docker exec -it /bin/bash homarr `. \ + Replace `` with your container ID from step 1. \ + Replace `` with the command you want to execute (see sub-pages). ## Execute CLI with QNAP diff --git a/apps/docs/docs/advanced/command-line/integrations/index.mdx b/apps/docs/docs/advanced/command-line/integrations/index.mdx index dfdb587b0..b958e9d2b 100644 --- a/apps/docs/docs/advanced/command-line/integrations/index.mdx +++ b/apps/docs/docs/advanced/command-line/integrations/index.mdx @@ -7,6 +7,7 @@ This guide requires that you understand [how to access the CLI](../). ::: Using these commands, you can manage the integrations from the CLI: + ```bash Group of commands to manage integrations @@ -43,7 +44,7 @@ Flags: ## Delete Integration - Requires a database connection -- Requires one parameter: ``id`` or ``name`` +- Requires one parameter: `id` or `name` - Deletes an integration permanently from the database ```bash @@ -57,4 +58,4 @@ Flags: -n, --name string Name of the integration -h, --help help for integrations delete -v, --version version for homarr-cli -``` \ No newline at end of file +``` diff --git a/apps/docs/docs/advanced/command-line/password-recovery/index.mdx b/apps/docs/docs/advanced/command-line/password-recovery/index.mdx index e5a80f669..844b44140 100644 --- a/apps/docs/docs/advanced/command-line/password-recovery/index.mdx +++ b/apps/docs/docs/advanced/command-line/password-recovery/index.mdx @@ -12,8 +12,8 @@ All sessions for that user will be terminated and the user must re-login. ![](./img/screenshot-cli.png) -Using the ``--username`` parameter, you can specify who you want to reset the password for. +Using the `--username` parameter, you can specify who you want to reset the password for. Executing the command will create a new random password, update the database and display the new password. All sessions for this user will be terminated and they must re-login. -![](./img/screenshot-cli-result.png) \ No newline at end of file +![](./img/screenshot-cli-result.png) diff --git a/apps/docs/docs/advanced/command-line/users/index.mdx b/apps/docs/docs/advanced/command-line/users/index.mdx index a867fa72d..93170259a 100644 --- a/apps/docs/docs/advanced/command-line/users/index.mdx +++ b/apps/docs/docs/advanced/command-line/users/index.mdx @@ -7,6 +7,7 @@ This guide requires that you understand [how to access the CLI](../). ::: Using these commands, you can manage the users from the CLI: + ```bash Group of commands to manage users @@ -42,7 +43,7 @@ yj52ek5cyb6du4bp4osbkjry admin xxxx@example.com ## Delete User - Requires a database connection -- Requires one parameter: ``id`` or ``username`` +- Requires one parameter: `id` or `username` ```bash Delete a user by id or username @@ -76,4 +77,4 @@ Flags: -p, --password New password -h, --help help for users update-password -v, --version version for homarr-cli -``` \ No newline at end of file +``` diff --git a/apps/docs/docs/advanced/development/_category_.json b/apps/docs/docs/advanced/development/_category_.json index 9f659a536..bf0464672 100644 --- a/apps/docs/docs/advanced/development/_category_.json +++ b/apps/docs/docs/advanced/development/_category_.json @@ -1,9 +1,8 @@ { - "label": "Developer guides", - "position": 6, - "collapsed": true, - "link": { - "type": "generated-index" - } + "label": "Developer guides", + "position": 6, + "collapsed": true, + "link": { + "type": "generated-index" } - \ No newline at end of file +} diff --git a/apps/docs/docs/advanced/development/getting-started.mdx b/apps/docs/docs/advanced/development/getting-started.mdx index c9d7a1b07..de119072c 100644 --- a/apps/docs/docs/advanced/development/getting-started.mdx +++ b/apps/docs/docs/advanced/development/getting-started.mdx @@ -12,12 +12,12 @@ sidebar_position: 1 ### Prerequisites -- Node.js 24.18 or newer -- Corepack (the root `package.json` selects the supported pnpm version) -- Git -- Docker with Docker Compose -- Go 1.25+ for the developer Docker CLI -- GitHub CLI for pull-request image features +- **Node.js 24.18 or newer**: You can download it from the [official website](https://nodejs.org/). +- **Corepack**: Run `corepack enable` so the repository selects its pinned pnpm 11 version. +- **Git**: You can download it from the [official website](https://git-scm.com/). +- **Docker or Docker Desktop**: Required for the Redis service and the developer Docker CLI. +- **Go 1.25+**: Required only for the developer Docker CLI. You can download it from the [official website](https://go.dev/). +- **GitHub CLI**: Required only for pull-request image features. Install it from the [official website](https://cli.github.com/), then authenticate with `gh auth login`. The versions in the root `package.json` are the supported baseline. Let Corepack select the repository version instead of installing an unrelated global pnpm: @@ -54,6 +54,8 @@ pnpm dev The infrastructure command remains in the foreground. Open `http://127.0.0.1:3000`; the first user created through Homarr becomes the instance administrator. +Use `pnpm docker:dev:up` instead when you only need Redis in the background. Running the migration also seeds the +default data; use `pnpm db:seed` to seed it explicitly later. ### Run PocketBase and documentation @@ -103,17 +105,18 @@ pnpm dev:docs ### Useful commands - `pnpm dev` — Next.js on port 3000. -- `pnpm dev:benchmark` — run the authenticated-board development benchmark. -- `pnpm dev:cli -- dev` — browse local images and remote pull-request images. +- `pnpm dev:benchmark` — authenticated-board benchmark; readiness-only `--smoke` runs are not performance claims. +- `pnpm dev:cli -- dev` — browse and run local images and remote pull-request images. - `pnpm dev:cli -- build ` — build the current checkout as `homarr:`. - `pnpm dev:cli -- build --pr ` — build a pull request from a temporary checkout. -- `pnpm dev:cli:install` — install the developer CLI as a `homarr` binary. +- `pnpm dev:cli -- rebuild ` — rebuild an image from its recorded checkout or pull request. +- `pnpm dev:cli:install` — optionally install the developer CLI as a `homarr` binary. - `pnpm dev:docs` — Docusaurus only on port 3003. -- `pnpm docker:dev:up` — start Redis in the background. - `pnpm docker:workshop` — local PocketBase through Docker Compose. +- `pnpm docker:dev:up` — Redis development service in the background. - `pnpm cli` — Homarr operations CLI. - `pnpm db:migration:sqlite:run` — create or update a SQLite database. -- `pnpm db:seed` — seed the default database data. +- `pnpm db:seed` — seed the default database data explicitly. - `pnpm db:studio` — inspect the database. - `pnpm format` / `pnpm format:fix` — check or apply oxfmt. - `pnpm lint` / `pnpm lint:fix` — check or apply oxlint. @@ -121,3 +124,5 @@ pnpm dev:docs - `pnpm test` — unit and contract suites. - `pnpm test:workshop` — disposable Workshop integration suite. - `pnpm build` — production monorepo build. +- `docker build -t homarr .` — build a production Docker image. +- `docker run -p 7575:7575 -e SECRET_ENCRYPTION_KEY='your_64_character_hex_string' homarr:` — run it. diff --git a/apps/docs/docs/advanced/development/kubernetes.mdx b/apps/docs/docs/advanced/development/kubernetes.mdx index e27b3ccbc..ff58b6c0a 100644 --- a/apps/docs/docs/advanced/development/kubernetes.mdx +++ b/apps/docs/docs/advanced/development/kubernetes.mdx @@ -132,4 +132,4 @@ This command should return CPU and memory usage statistics for each node. ## Conclusion -You have successfully set up a multi-node Kubernetes cluster using kind and installed the Metrics Server for monitoring resource usage. This setup is useful for local development and testing Kubernetes workloads before deploying them to a production environment. \ No newline at end of file +You have successfully set up a multi-node Kubernetes cluster using kind and installed the Metrics Server for monitoring resource usage. This setup is useful for local development and testing Kubernetes workloads before deploying them to a production environment. diff --git a/apps/docs/docs/advanced/keyboard-shortcuts/index.mdx b/apps/docs/docs/advanced/keyboard-shortcuts/index.mdx index 8dfe0f285..fa504f82b 100644 --- a/apps/docs/docs/advanced/keyboard-shortcuts/index.mdx +++ b/apps/docs/docs/advanced/keyboard-shortcuts/index.mdx @@ -6,11 +6,11 @@ tags: Homarr has the following keyboard shortcuts: -| Shortcut | Description | -| -------- | ----------- | +| Shortcut | Description | +| ----------- | -------------------- | | `MOD` + `K` | Opens the search bar | -| `MOD` + `J` | Toggles Dark Mode | -| `MOD` + `E` | Toggles Edit Mode | +| `MOD` + `J` | Toggles Dark Mode | +| `MOD` + `E` | Toggles Edit Mode | :::tip diff --git a/apps/docs/docs/advanced/proxy/index.mdx b/apps/docs/docs/advanced/proxy/index.mdx index 668031d9d..fbe33bfa4 100644 --- a/apps/docs/docs/advanced/proxy/index.mdx +++ b/apps/docs/docs/advanced/proxy/index.mdx @@ -9,16 +9,17 @@ tags: - Security --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; ## Allowing self-signed certificates + Some users may come across a barrier, where they're unable to receive a 200 response from the Ping widget for some apps, while using self-signed certificates or a local certificate authory. :::note What's going on? Homarr is trying to communicate to your apps via the integrations. -It usually doesn't matter if Homarr is running on ``http`` or ``https``. +It usually doesn't matter if Homarr is running on `http` or `https`. Your apps have a self-signed certificate - Homarr will recognize that the certificate was signed by an unknown authority and requests will be blocked. ::: @@ -28,8 +29,9 @@ To allow self-signed certificates, you can configure them on the certificates ma ## Securing Homarr with Traefik Copying the configuration straight from the docker-compose file won't work if you are running Homarr behind Traefik, such as a Portainer setup, or docker-swarm. In that case, you should use the following slightly modified configuration: + ```yaml -version: '3' +version: "3" services: homarr: container_name: homarr @@ -53,11 +55,12 @@ networks: external: true ``` -
+
A sample Traefik docker-compose.yml using Cloudflare for certificate generation that works with the configuration above would be: + ```yaml -version: '3' +version: "3" apps: traefik: @@ -103,7 +106,6 @@ networks: external: true ``` - :::tip Of particular note here is that both configurations explicitly define which network they are using, in this case "proxy", but it can be named anything. It just has to be the same across all apps for which Traefik is serving as a proxy. These are marked as external because the proxy network was manually created by running: `docker network create proxy` but this might be unnecessary depending on HOW exactly you are running Traefik. For example, if running [Traefik with Portainer](https://docs.portainer.io/advanced/reverse-proxy/traefik#deploying-in-a-docker-standalone-scenario), you can follow their official docs on how to set up Traefik and Portainer together, and you can just focus on the Homarr docker labels instead. ::: @@ -114,7 +116,6 @@ If you are using Caddy as the reverse proxy for your setup, your `docker-compose ```yaml services: - # <-- [Homarr installation] caddy: @@ -140,14 +141,17 @@ networks: proxy: external: true ``` + :::important Homarr needs to be on the same network so you will need to add the following property to your homarr install: + ```yaml homarr: ... networks: - proxy ``` + ::: Next, create a file named `Caddyfile` at the same level as your `docker-compose.yml` file with the following content: diff --git a/apps/docs/docs/advanced/running-as-different-user/index.mdx b/apps/docs/docs/advanced/running-as-different-user/index.mdx index a4ebcf0f4..91c02fb9d 100644 --- a/apps/docs/docs/advanced/running-as-different-user/index.mdx +++ b/apps/docs/docs/advanced/running-as-different-user/index.mdx @@ -8,7 +8,7 @@ tags: - PUID --- -By default the container is running with user `root` and group `root`. +By default the container is running with user `root` and group `root`. You can change the user and group by using the `PUID` and `PGID` environment variables. Important to note is, that you'll also need to change the permissions for the mounted directories accordingly. @@ -32,11 +32,11 @@ services: volumes: - ./homarr/appdata:/appdata environment: - - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32` - - PUID=1000 - - PGID=1000 + - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32` + - PUID=1000 + - PGID=1000 ports: - - '7575:7575' + - "7575:7575" ``` After that you'll need to create the appdata directory and set the correct permissions: @@ -76,11 +76,11 @@ services: - /var/run/docker.sock:/var/run/docker.sock - ./homarr/appdata:/appdata environment: - - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32` - - PUID=1000 - - PGID=999 + - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32` + - PUID=1000 + - PGID=999 ports: - - '7575:7575' + - "7575:7575" ``` And set the permissions for the mounted directories: @@ -90,4 +90,4 @@ mkdir -p ./homarr/appdata chown -R 1000:999 ./homarr/appdata ``` -Important here is that the group ID is set to `999` as we created the `docker` group with this ID. \ No newline at end of file +Important here is that the group ID is set to `999` as we created the `docker` group with this ID. diff --git a/apps/docs/docs/advanced/single-sign-on/index.mdx b/apps/docs/docs/advanced/single-sign-on/index.mdx index ae1d9ca31..505fe9867 100644 --- a/apps/docs/docs/advanced/single-sign-on/index.mdx +++ b/apps/docs/docs/advanced/single-sign-on/index.mdx @@ -10,20 +10,21 @@ tags: - Active Directory --- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; # Single Sign On Homarr supports multiple authentication options, from internal userbase (credentials), to LDAP (with Active directory support), and OIDC. ### Auth configuration common variables -| Environment Variable | Description | Default Value | -|---------------------------|-------------|---------------| -| AUTH_PROVIDERS | Select Which provider to use between *credentials*, *ldap* and *oidc*.
Multiple providers can be enabled with by separating them with `,`, (ex. `AUTH_PROVIDERS=credentials,oidc`, it is highly recommended to just enable one provider). | credentials | -| AUTH_LOGOUT_REDIRECT_URL | URL to redirect to after clicking logging out. | --- | -| AUTH_SESSION_EXPIRY_TIME | Time for the session to time out. Can be set as pure number, which will automatically be used in seconds, or followed by s, m, h or d for seconds, minutes, hours or days. (ex: "30m") | "30d" | -| AUTH_COOKIE_PREFIX | Prefix used for all authentication cookies (session, csrf, callback, pkce, state, nonce). Change this if you run another Auth.js/NextAuth app on the same hostname as Homarr (browsers scope cookies by host, not by port) to avoid cookie name collisions. Only letters, numbers, hyphens and underscores are allowed. | `homarr` | + +| Environment Variable | Description | Default Value | +| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | +| AUTH_PROVIDERS | Select Which provider to use between _credentials_, _ldap_ and _oidc_.
Multiple providers can be enabled with by separating them with `,`, (ex. `AUTH_PROVIDERS=credentials,oidc`, it is highly recommended to just enable one provider). | credentials | +| AUTH_LOGOUT_REDIRECT_URL | URL to redirect to after clicking logging out. | --- | +| AUTH_SESSION_EXPIRY_TIME | Time for the session to time out. Can be set as pure number, which will automatically be used in seconds, or followed by s, m, h or d for seconds, minutes, hours or days. (ex: "30m") | "30d" | +| AUTH_COOKIE_PREFIX | Prefix used for all authentication cookies (session, csrf, callback, pkce, state, nonce). Change this if you run another Auth.js/NextAuth app on the same hostname as Homarr (browsers scope cookies by host, not by port) to avoid cookie name collisions. Only letters, numbers, hyphens and underscores are allowed. | `homarr` | diff --git a/apps/docs/docs/advanced/styling/index.mdx b/apps/docs/docs/advanced/styling/index.mdx index 9be382ec3..56d4305e5 100644 --- a/apps/docs/docs/advanced/styling/index.mdx +++ b/apps/docs/docs/advanced/styling/index.mdx @@ -19,12 +19,14 @@ Homarr uses https://mantine.dev/ under the hood. You can change the look & feel using custom CSS, that extends or overwrites the styles from Mantine. ## Getting into CSS + If you don't have any experience with CSS, we strongly recommend you to go through the courses here: https://www.w3schools.com/css/. Due to the infinite scenarios and setups possible with custom CSS, our support team will not provide any support with your own written CSS. ## Limitations and dangers + When using custom CSS, you can break the page or certain functionalities. Although CSS can improve the design & feel of the page, it **cannot do any of the following**: @@ -33,21 +35,23 @@ Although CSS can improve the design & feel of the page, it **cannot do any - Completely revamp the design of the page, only smaller changes are possible Here are some dangers of using custom CSS: + - Updates may contain breaking changes in the structure, built-in styling or how styling is processed. Therefore, -custom CSS may break unexpectedly without any warning + custom CSS may break unexpectedly without any warning - Custom CSS may make certain elements invisible or not possible to click / interact with - Custom CSS could make readability and accessibility worse for impaired people ## How to inspect the page -When styling the page, you can use the ``Inspector`` to inspect elements on the page and try out styles. + +When styling the page, you can use the `Inspector` to inspect elements on the page and try out styles. This may vary depending on your browser and operating system, but the workflow usually goes like this: - Open the Homarr page -- Press ``Ctrl`` + ``Shift`` + ``I`` at the same time. -Alternatively, right-click on the page and choose ``Inspect`` or ``Inspect element``. -- Open the tab ``Elements`` if it isn't open yet. +- Press `Ctrl` + `Shift` + `I` at the same time. + Alternatively, right-click on the page and choose `Inspect` or `Inspect element`. +- Open the tab `Elements` if it isn't open yet. - Search the element you want to change in the DOM tree or use the element picker (usually at the top left) -to select it by clicking on the page. + to select it by clicking on the page. - Experiment by changing the CSS code on the right side When writing custom CSS, it is important to also remember or create a selector, which tells the browser @@ -55,17 +59,19 @@ which element to apply the styles to. If you accidentally broke something or wan simply reload the page. ## Using Homarr's classes + Homarr's elements will already have a lot of classes and styles pre-applied. You can reuse those classes to apply additional styles or overwrite them. -When overwriting, remember to add the ``!important`` flag to your CSS property to tell the browser to use our instruction instead. +When overwriting, remember to add the `!important` flag to your CSS property to tell the browser to use our instruction instead. -Classes with random number suffixes, such as ``mantine-Card-x2fske``, should be avoided, since those are dynamic +Classes with random number suffixes, such as `mantine-Card-x2fske`, should be avoided, since those are dynamic CSS classes that will change with every build. This means, every time you update Homarr, your styles will no longer apply to them ## Defining custom classes for widgets + If you want to apply the styles only for one widget, you can define custom class names only for that widget. -To do that, enter edit mode on your board, click the three dots of your widget, click ``Edit item`` and click ``Advanced options``. +To do that, enter edit mode on your board, click the three dots of your widget, click `Edit item` and click `Advanced options`. Then, you can enter as many custom classes as you'd like: ![](./img/widget-custom-classes.png) @@ -73,6 +79,7 @@ Then, you can enter as many custom classes as you'd like: To save them, click `Save changes` on both modals and exit edit mode. ## Where to enter custom CSS + After you wrote your custom CSS, it is time to permanently save it, so you don't need to use the inspector anymore. To do this, enter the board settings: @@ -84,11 +91,12 @@ Here you can enter your CSS code, which will be applied on the respective board ![](./img/custom-css-setting.png) ## Using variables + You can also change the values of the theme variables, which are located here: https://mantine.dev/styles/css-variables-list/. To do this, see the following example CSS: ```css :root { - --mantine-primary-color-filled: #ffbb00; + --mantine-primary-color-filled: #ffbb00; } -``` \ No newline at end of file +``` diff --git a/apps/docs/docs/community/donate.mdx b/apps/docs/docs/community/donate.mdx index aeb95dcac..3651a2a7b 100644 --- a/apps/docs/docs/community/donate.mdx +++ b/apps/docs/docs/community/donate.mdx @@ -7,12 +7,15 @@ tags: --- # Donate + ## Why to donate + Our team of 4 developers is working on Homarr in their free time. Homarr has become a big part of our daily things we work on - and therefore we invest a lot of time into maintaining Homarr, providing support and implementing new features. We also incur monetary costs while developing Homarr for the tools that we need. A few examples include: + - Renting for a Cloud VPS for our cloud services (status page, monitoring, email, analytics, [demo instance](https://demo.homarr.dev/), ...) - Paying for (IDE-) licenses @@ -20,6 +23,7 @@ Using a donation, you help us to cover these expenses and enable the development Homarr is completely free to use. We'd highly appreciate if you consider donating, especially if you use Homarr in a commercial environment. ## Where to donate + We accept donations on our official [OpenCollective](https://opencollective.com/homarr). You may also sponsor us directly by providing a useful service / product to us other means. -You can get into contact with us [here](/docs/community/get-in-touch). \ No newline at end of file +You can get into contact with us [here](/docs/community/get-in-touch). diff --git a/apps/docs/docs/community/get-in-touch.mdx b/apps/docs/docs/community/get-in-touch.mdx index 7651f5ea2..eecd2e1f3 100644 --- a/apps/docs/docs/community/get-in-touch.mdx +++ b/apps/docs/docs/community/get-in-touch.mdx @@ -9,16 +9,16 @@ tags: We're happy to talk with you! Shoot us a message at the following places: ## E-Mail + We are open to discuss sponsorships, security vulnerabilities and other private requests through our email. Please do not report any bugs / feature requests here - they will be ignored and deleted. [homarr-labs@proton.me](mailto:homarr-labs@proton.me) ## Discord + We have a Discord Server, where we announce new releases, discuss features and bugs and show off our dashboards. There are over 4'000 members and we're happy to answer your questions or concerns. You're also open to discuss new / upcoming features and any offtopic selfhosting content. [_![](https://discordapp.com/api/guilds/972958686051962910/widget.png?style=banner2)_](https://discord.gg/aCsmEV5RgA) - - diff --git a/apps/docs/docs/community/license.mdx b/apps/docs/docs/community/license.mdx index e36a5d684..3d1f82890 100644 --- a/apps/docs/docs/community/license.mdx +++ b/apps/docs/docs/community/license.mdx @@ -7,6 +7,7 @@ tags: Homarr is licensed under [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0). ## TL;DR + | Action | Allowed | | -------------- | ------- | | Copy | ✅ | @@ -24,8 +25,6 @@ Please consider [making a donation](/docs/community/donate) to Homarr, if this p ::: - - ## Full License ```txt diff --git a/apps/docs/docs/community/translations.mdx b/apps/docs/docs/community/translations.mdx index 074db939d..68eea8a1e 100644 --- a/apps/docs/docs/community/translations.mdx +++ b/apps/docs/docs/community/translations.mdx @@ -5,30 +5,31 @@ tags: - Translations --- -We want to make Homarr accessible for everyone. -But to do that, we need your help. -We are running a community program that enables everyone to translate Homarr into their language – no programming required. -We are using [Crowdin](https://crowdin.com/) to manage our translations. +We want to make Homarr accessible for everyone. +But to do that, we need your help. +We are running a community program that enables everyone to translate Homarr into their language – no programming required. +We are using [Crowdin](https://crowdin.com/) to manage our translations. You can find the translations [here](https://translate.homarr.dev/). ## How to translate - ### Using crowdin's online platform -Go to the [Crowdin translations](https://translate.homarr.dev/) and select a language you want to translate. -You can then enter the translation mode and start translating. -After you've submitted your translations, a Proofreader will review your changes. -After a translation has been approved, it will be merged to the language development branch. -We merge this one periodically to the development branch. + +Go to the [Crowdin translations](https://translate.homarr.dev/) and select a language you want to translate. +You can then enter the translation mode and start translating. +After you've submitted your translations, a Proofreader will review your changes. +After a translation has been approved, it will be merged to the language development branch. +We merge this one periodically to the development branch. After the next update of Homarr, all changes from the development branch will be merged, including the changes in the translations. ### Using live translate + You can also help translate homarr directly from the app! For this you can simply change your language to "Crowdin (live translations)" ![](./img/crowdin-language-select.png) -Then you'll be prompted to connect to your Crowdin account and choose the language in which you want to transalte. +Then you'll be prompted to connect to your Crowdin account and choose the language in which you want to transalte. You can then start translating directly from the app by selecting some text on the app. If some text cannot be selected to be edited with the live translation tool, you can still translate it inside of the In-Context popup at the Home tab, it will be red if it's not translated yet. @@ -47,7 +48,8 @@ Do you want to become a proofreader? [Let us know on our Discord](/docs/communit ::: ## Guidelines + 1. Translate with context: Some translations can't be translated 1:1 - they need context. Ensure that your translations make sense in the context. 2. Keep things simple and original - no additional characters are needed. 3. Don't translate the same thing twice - if you see a translation that is already translated, don't translate it again unless you have a better translation. -5. Keep your translations as close to the original as possible. +4. Keep your translations as close to the original as possible. diff --git a/apps/docs/docs/getting-started/after-the-installation.mdx b/apps/docs/docs/getting-started/after-the-installation.mdx index 7ac904bf4..00ed4c6b2 100644 --- a/apps/docs/docs/getting-started/after-the-installation.mdx +++ b/apps/docs/docs/getting-started/after-the-installation.mdx @@ -54,11 +54,7 @@ You must choose a username and password (both can later be changed). We enforce strict password requirements when you enter your password to protect your instance if you accidentally expose it to the internet. -{"Screenshot +{"Screenshot If you selected external providers (such as LDAP or OIDC), you'll be prompted to create an admin group. This group will be used to synchronize users from your provider to Homarr. @@ -116,22 +112,14 @@ The onboarding can no longer be started again. From here you can click on one of the provided links to continue your journey. We recommend you to continue with the section [creating your first board on this page](#creating-your-first-board). -{"Screenshot +{"Screenshot ### Importing a ZIP from version before 1.0.0 This is recommended when you used Homarr before and want to re-import your data. It is important that you first migrate correctly using [the list of breaking changes for 1.0](/blog/2024/09/23/version-1.0). -Export from old Homarr +Export from old Homarr **How to export and import data** @@ -197,38 +185,23 @@ Here you have the following options in the header: When entering the edit mode, you'll get some additional buttons to work with: -{"Screenshot +{"Screenshot - **Add item**: Click this button to add new elements to your page. - **Exit edit mode**: Click this btuton to save your changes and exit edit mode. To continue, click the option "New Item": -{"Screenshot +{"Screenshot Next, you can choose what item you'd like to add. We will discuss the other options in the following sections - for now choose "App" to continue. -{"Screenshot +{"Screenshot As soon as you chose the app, the modal will close and you'll get the following item on your board: -Screenshot of the No app element on the board +Screenshot of the No app element on the board This is expected, because you haven't told Homarr what app it should show in this item. To configure this, click on the small 3 dots at the top of the item in the edit mode and choose "Edit item" in the menu. diff --git a/apps/docs/docs/getting-started/glossary.mdx b/apps/docs/docs/getting-started/glossary.mdx index 8d690245c..ee6301ee8 100644 --- a/apps/docs/docs/getting-started/glossary.mdx +++ b/apps/docs/docs/getting-started/glossary.mdx @@ -1,8 +1,9 @@ # Glossary + In the glossary, you'll learn the different components and their names of Homarr. | Term | Definition | -|-----------------|----------------------------------------------------------------------------------------------------------------| +| --------------- | -------------------------------------------------------------------------------------------------------------- | | Apps | An piece of software that you or a third party hosts (eg. Google) | | Integration | A connection to a service outside of Homarr | | Dynamic section | Resizeable area where items on your board can be placed and grouped | diff --git a/apps/docs/docs/getting-started/index.mdx b/apps/docs/docs/getting-started/index.mdx index 4dc986658..0d6a44a4e 100644 --- a/apps/docs/docs/getting-started/index.mdx +++ b/apps/docs/docs/getting-started/index.mdx @@ -8,13 +8,14 @@ tags: - Unraid --- -import Link from '@docusaurus/Link'; -import { IconArrowRight } from '@tabler/icons-react'; +import Link from "@docusaurus/Link"; +import { IconArrowRight } from "@tabler/icons-react"; Before you try to install Homarr, please review if your device meets the requirements. Installing on an unsupported device may lead to unstable behaviour and no support will be provided. ## Hardware + - At least 500MB RAM - At least 600MB of free disk space for the Docker image. SSD is preferred. - Single or dual core CPU @@ -24,8 +25,8 @@ Installing on an unsupported device may lead to unstable behaviour and no suppor We build Homarr for a bunch of different architectures, including ARM. Please ensure that your device architecture is supported by Homarr. We won't be able to provide support for unusual or outdated architectures. -| Architecture | Supported | -|--------------|-----------------| +| Architecture | Supported | +| ------------ | ---------------- | | linux/amd64 | ✅ Supported | | linux/arm64 | ✅ Supported | | linux/arm/v7 | ❌ Not supported | @@ -34,10 +35,10 @@ We build Homarr for a bunch of different architectures, including ARM. Please en -
+
Go to Installation
diff --git a/apps/docs/docs/getting-started/installation/docker.mdx b/apps/docs/docs/getting-started/installation/docker.mdx index 956a6c2d6..5a56a848a 100644 --- a/apps/docs/docs/getting-started/installation/docker.mdx +++ b/apps/docs/docs/getting-started/installation/docker.mdx @@ -1,21 +1,23 @@ -import { DockerInstallSnippet } from '@site/src/components/pages/installation/docker/dynamic-docker-install' +import { DockerInstallSnippet } from "@site/src/components/pages/installation/docker/dynamic-docker-install"; # Docker + Docker is our recommended installation method for beginners and professionals. It is easy to use, ships with all dependencies inside a single container and is easy to use and maintain. It requires at least some basic knowledge of [Docker](https://www.docker.com/). We recommend [NetworkChuck's Docker Containers 101](https://www.youtube.com/watch?v=eGz9DS-aIeY) as a good start for complete beginners. ## Docker compose + ### Prerequisites - A Linux or Windows based system that meets the [hardware prerequisites](/docs/getting-started/#hardware) and [architecture prerequisites](/docs/getting-started/#architecture). - [Docker](https://docs.docker.com/get-docker/) -- [Docker Compose](https://docs.docker.com/compose/install/) - *preinstalled on many systems nowadays* +- [Docker Compose](https://docs.docker.com/compose/install/) - _preinstalled on many systems nowadays_ ### Installation - + Finally, run ``docker compose up -d`` in the same directory. This will start the Homarr container in the background. :::caution @@ -26,27 +28,26 @@ Docker compose creates a network by default. Some integrations may not work (spe ### Updating -To update, navigate to the directory with the ``docker-compose.yaml`` located. +To update, navigate to the directory with the `docker-compose.yaml` located. -- Stop Homarr using ``docker compose down`` -- Pull the newest image of Homarr using ``docker compose pull`` -- Start Homarr again using ``docker compose up -d`` (``-d`` for detached mode - start in background) -- Delete the old image using ``docker image prune`` (*Warning: this also removes you other unused images - not just Homarr*) +- Stop Homarr using `docker compose down` +- Pull the newest image of Homarr using `docker compose pull` +- Start Homarr again using `docker compose up -d` (`-d` for detached mode - start in background) +- Delete the old image using `docker image prune` (_Warning: this also removes you other unused images - not just Homarr_) You can automate this process using [Watchtower](https://containrrr.dev/watchtower/). ### Uninstalling -To uninstall, navigate to the directory with the ``docker-compose.yaml`` located. +To uninstall, navigate to the directory with the `docker-compose.yaml` located. -- Stop Homarr using ``docker compose down`` -- Delete the created directories & files on your root file system (check ``docker-compose.yaml`` file for your specific locations) -- Delete compose file using ``rm docker-compose.yaml`` -- Prune unused Docker images using ``docker image prune`` (*Warning: this also removes you other unused images - not just Homarr*) +- Stop Homarr using `docker compose down` +- Delete the created directories & files on your root file system (check `docker-compose.yaml` file for your specific locations) +- Delete compose file using `rm docker-compose.yaml` +- Prune unused Docker images using `docker image prune` (_Warning: this also removes you other unused images - not just Homarr_) - (Optional): Prune any network or volumes if you use any. - (Optional): Remove Homarr from your reverse proxy, VPNs or tunnels if you use any. - ## Docker standalone :::caution @@ -77,15 +78,16 @@ docker run \ :::note -Docker will mount the configuration files and icons to your host machine. Please make sure to replace ```` from the docker run command with your desired storage location. The path must be absolute. +Docker will mount the configuration files and icons to your host machine. Please make sure to replace `` from the docker run command with your desired storage location. The path must be absolute. ::: ### Updating + To update Homarr, you must remove your container first. Make sure that you've mounted your data and that you have access to it, so your configuration doesn't get lost. -1. Run ``docker rm homarr`` to remove the container. -2. Pull the latest Homarr image ``docker pull ghcr.io/homarr-labs/homarr:latest``. +1. Run `docker rm homarr` to remove the container. +2. Pull the latest Homarr image `docker pull ghcr.io/homarr-labs/homarr:latest`. 3. Re-run the command you used to install Homarr. This process can get tideous, if you update frequently. Thus, we recommend [using docker-compose](#docker-compose) @@ -98,8 +100,8 @@ Want to update all your containers automatically? Checkout [Watchtower](https:// ### Uninstalling -1. Obtain the container ID of your Homarr container using ``docker ps | grep homarr``. -2. Delete the container using ``docker rm `` -3. Prune unused Docker images using ``docker image prune`` (*Warning: this also removes you other unused images - not just Homarr*) +1. Obtain the container ID of your Homarr container using `docker ps | grep homarr`. +2. Delete the container using `docker rm ` +3. Prune unused Docker images using `docker image prune` (_Warning: this also removes you other unused images - not just Homarr_) 4. (Optional): Prune any network or volumes if you use any. 5. (Optional): Remove Homarr from your reverse proxy, VPNs or tunnels if you use any. diff --git a/apps/docs/docs/getting-started/installation/helm.md b/apps/docs/docs/getting-started/installation/helm.md index c695d70b6..7507cdc18 100644 --- a/apps/docs/docs/getting-started/installation/helm.md +++ b/apps/docs/docs/getting-started/installation/helm.md @@ -12,7 +12,7 @@ A Helm chart to deploy homarr for Kubernetes ## Source Code -* +- ## Requirements @@ -76,38 +76,38 @@ To avoid including sensitive information in plain text within your version contr Below is an exhaustive list of all secrets: -| FEATURE | SECRET NAME | SECRET KEYS | Required | -|-----------|-------------------------|-----------------------------------------|----------| -| OIDC | auth-oidc-secret | oidc-client-id
oidc-client-secret | No | -| LDAP | auth-ldap-secret | bind-password | No | -| DATABASE | db-secret | db-url | No | -| DATABASE | db-encryption | db-encryption-key | yes | +| FEATURE | SECRET NAME | SECRET KEYS | Required | +| -------- | ---------------- | ------------------------------------ | -------- | +| OIDC | auth-oidc-secret | oidc-client-id
oidc-client-secret | No | +| LDAP | auth-ldap-secret | bind-password | No | +| DATABASE | db-secret | db-url | No | +| DATABASE | db-encryption | db-encryption-key | yes | ### Database You have multiple options for configuring the database: -| DRIVER TYPE | Persistence mode | -|----------------|---------------------------------| -| better-sqlite3 | Pod disk | -| better-sqlite3 | homarr-database PVC | -| mysql2 | External MySql database | -| node-postgres | External Postgresql database | +| DRIVER TYPE | Persistence mode | +| -------------- | ---------------------------- | +| better-sqlite3 | Pod disk | +| better-sqlite3 | homarr-database PVC | +| mysql2 | External MySql database | +| node-postgres | External Postgresql database | #### Pod disk -No additional configuration is required. However, keep in mind that if the pod restarts, all data will be lost. This setup is not *recommended* for production use. +No additional configuration is required. However, keep in mind that if the pod restarts, all data will be lost. This setup is not _recommended_ for production use. To create the necessary database secret, execute the following command:
Required Secrets -````yaml +```yaml kubectl create secret generic db-encryption \ --from-literal=db-encryption-key='' \ --namespace homarr -```` +```
@@ -120,11 +120,11 @@ Associated secret to create :
DB Required Secrets -````yaml +```yaml kubectl create secret generic db-encryption \ --from-literal=db-encryption-key='' \ --namespace homarr -```` +```
@@ -133,13 +133,13 @@ Bellow an example of the override value file :
values.yaml -````yaml +```yaml persistence: homarrDatabase: enabled: true storageClassName: "default" size: "1Gi" -```` +```
@@ -150,17 +150,18 @@ To create the necessary database secrets, execute the following command:
Required Secrets -````yaml +```yaml kubectl create secret generic db-encryption \ --from-literal=db-encryption-key='' \ --namespace homarr -```` +``` -````yaml +```yaml kubectl create secret generic db-secret \ --from-literal=db-url='mysql://user:password@host:port/homarrdb' \ --namespace homarr -```` +``` +
Below is an example of the override values file: @@ -168,10 +169,11 @@ Below is an example of the override values file:
values.yaml -````yaml +```yaml database: type: mysql -```` +``` +
#### External Postgresql database @@ -181,17 +183,17 @@ To create the necessary database secrets, execute the following command:
Required Secrets -````yaml +```yaml kubectl create secret generic db-encryption \ --from-literal=db-encryption-key='' \ --namespace homarr -```` +``` -````yaml +```yaml kubectl create secret generic db-secret \ --from-literal=db-url='postgresql://user:password@host:port/homarrdb' \ --namespace homarr -```` +```
@@ -200,10 +202,11 @@ Below is an example of the override values file:
values.yaml -````yaml +```yaml database: type: postgresql -```` +``` +
### Ingress @@ -213,7 +216,7 @@ The ingress section in the values.yaml file allows you to configure how external
values.yaml -````yaml +```yaml service: enabled: true # Ensure the service is enabled for Ingress to route traffic ingress: @@ -231,7 +234,8 @@ ingress: - "homarr.homelab.dev" - "www.homarr.homelab.dev" secretName: homelab-tls -```` +``` +
### HTTPRoute (Gateway API) @@ -242,9 +246,9 @@ This provides a more expressive and future-proof alternative to Ingress, with su
values.yaml -````yaml +```yaml service: - enabled: true # must be enabled for HTTPRoute to forward traffic + enabled: true # must be enabled for HTTPRoute to forward traffic httproute: enabled: true parentRefs: @@ -268,7 +272,7 @@ httproute: - parentRefs: the Gateway(s) this route attaches to. Gateways must already exist. - hostnames: domain names this route applies to. -- rules: each rule can define matches (paths, headers, queries), optional filters, and backendRefs to services +- rules: each rule can define matches (paths, headers, queries), optional filters, and backendRefs to services - TLS must be configured on the Gateway (not on HTTPRoute). For example, the Gateway can have a TLS listener for homarr.homelab.dev, and this route will automatically apply once matched. ### Certificates @@ -285,7 +289,7 @@ Use inline certificates to generate a ConfigMap, mounted as individual files.
values.yaml -````yaml +```yaml persistence: homarrTrustedCerts: enabled: true @@ -299,7 +303,8 @@ persistence: -----BEGIN CERTIFICATE----- MIID...EFGH== -----END CERTIFICATE----- -```` +``` +
Behavior: @@ -314,7 +319,7 @@ Use inline certificates to generate a Kubernetes Secret, mounted as files.
values.yaml -````yaml +```yaml persistence: homarrTrustedCerts: enabled: true @@ -328,7 +333,8 @@ persistence: -----BEGIN CERTIFICATE----- MIIC...XYZ== -----END CERTIFICATE----- -```` +``` +
Behavior: @@ -343,16 +349,17 @@ Use an existing Kubernetes Secret, assuming its keys are filenames.
values.yaml -````yaml +```yaml persistence: homarrTrustedCerts: enabled: true type: existingSecret existingSecretName: "existingSecretName" existingSecretKeys: - - cert3.crt - - cert4.crt -```` + - cert3.crt + - cert4.crt +``` +
Behavior: @@ -483,4 +490,5 @@ All available values are listed on the [artifacthub](https://artifacthub.io/pack | tolerations | list | `[]` | Node tolerations for pod scheduling | --- + Autogenerated from chart metadata using [helm-docs](https://github.com/norwoodj/helm-docs) diff --git a/apps/docs/docs/getting-started/installation/home-assistant.mdx b/apps/docs/docs/getting-started/installation/home-assistant.mdx index 9f5a50f52..9ba9c5d01 100644 --- a/apps/docs/docs/getting-started/installation/home-assistant.mdx +++ b/apps/docs/docs/getting-started/installation/home-assistant.mdx @@ -14,7 +14,7 @@ Homarr can be seamlessly integrated into your Home Assistant setup with this add ## Installation 1. **Add Repository**: Navigate to your Home Assistant Supervisor panel, and go to the Add-on Store. Add the following repository URL: `https://github.com/Wiggen94/ha-homarr-v1-server` or click this button -[![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FWiggen94%2Fha-homarr-v1-server) + [![Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled.](https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg)](https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2FWiggen94%2Fha-homarr-v1-server) 2. **Install the Add-on**: Search for "Homarr Server" in the Add-on Store and select it. Click on "Install" to start the installation process. diff --git a/apps/docs/docs/getting-started/installation/portainer.mdx b/apps/docs/docs/getting-started/installation/portainer.mdx index f816d77fe..0442b215e 100644 --- a/apps/docs/docs/getting-started/installation/portainer.mdx +++ b/apps/docs/docs/getting-started/installation/portainer.mdx @@ -1,5 +1,7 @@ # Portainer + ## Portainer Stacks + ### Prerequisites - [Portainer Stacks](https://www.portainer.io/blog/stacks-docker-compose-the-portainer-way) @@ -23,15 +25,14 @@ services: environment: - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32` ports: - - '7575:7575' + - "7575:7575" ``` - :::note -Portainer will mount the files to your host machine. Please make sure to replace ```` from the docker run command with your desired storage location. The path must be absolute. +Portainer will mount the files to your host machine. Please make sure to replace `` from the docker run command with your desired storage location. The path must be absolute. ::: -Then, click on ``Deploy the stack`` and wait until the container has started. +Then, click on `Deploy the stack` and wait until the container has started. :::tip @@ -43,5 +44,5 @@ If you're unsure how to create a stack, checkout the [Portainer Documentation](h To update Homarr using Docker Compose or Portainer Stacks, simply pull the latest image and restart the container. -1. Run ``docker pull ghcr.io/homarr-labs/homarr:latest`` to pull the latest image. -2. Re-run ``docker-compose up -d`` or re-deploy the stack in Portainer. +1. Run `docker pull ghcr.io/homarr-labs/homarr:latest` to pull the latest image. +2. Re-run `docker-compose up -d` or re-deploy the stack in Portainer. diff --git a/apps/docs/docs/getting-started/installation/proxmox.mdx b/apps/docs/docs/getting-started/installation/proxmox.mdx index f6f5fb120..bd33b4040 100644 --- a/apps/docs/docs/getting-started/installation/proxmox.mdx +++ b/apps/docs/docs/getting-started/installation/proxmox.mdx @@ -31,7 +31,7 @@ After you've installed Homarr, you can find a new LXC "homarr". # Updating -Updating is as simple as executing +Updating is as simple as executing ```bash update @@ -49,17 +49,19 @@ Some Homarr features require setting environment variables. When installing Homa # Troubleshooting -If something does not work after an update, please first try rebooting the LXC or the homarr Service with +If something does not work after an update, please first try rebooting the LXC or the homarr Service with ```bash systemctl restart homarr ``` # Getting help + - If you are looking for help with the script, updating the LXC or troubleshooting the installer, please get in contact with the support of the community scripts. They provide support on their [Discord](https://discord.gg/2wvnMDgdnU). If you found vulnerabilities, bugs or have a request for the script, [create a new issue here](https://github.com/community-scripts/ProxmoxVE/issues/new/choose). - If you are looking to report a bug, vulnerability or request a new feature, use https://github.com/homarr-labs/homarr . You can ask for help on our Discord. # How to find logs + Homarr runs under a system service called `homarr`, so getting the logs is a simple as using the following command inside the LXC (Container) Shell ```bash diff --git a/apps/docs/docs/getting-started/installation/qnap.mdx b/apps/docs/docs/getting-started/installation/qnap.mdx index a655db5b3..b8c1f977b 100644 --- a/apps/docs/docs/getting-started/installation/qnap.mdx +++ b/apps/docs/docs/getting-started/installation/qnap.mdx @@ -4,6 +4,6 @@ QNAP installation guide has not updated to 1.0 yet. There guide is still for 0.15.10. ::: -When installing on QNAP, we recommend you to install Homarr using [Container Station]( https://www.qnap.com/en/software/container-station) or [this third-party image](https://www.myqnap.org/product/homarr/). +When installing on QNAP, we recommend you to install Homarr using [Container Station](https://www.qnap.com/en/software/container-station) or [this third-party image](https://www.myqnap.org/product/homarr/). There is also a guide available, but note that it is written in Chinese: https://post.smzdm.com/p/awzm7op2/ diff --git a/apps/docs/docs/getting-started/installation/runtipi.mdx b/apps/docs/docs/getting-started/installation/runtipi.mdx index 53a669c90..c2b2823b7 100644 --- a/apps/docs/docs/getting-started/installation/runtipi.mdx +++ b/apps/docs/docs/getting-started/installation/runtipi.mdx @@ -1,4 +1,4 @@ -# Runtipi +# Runtipi Runtipi is a self-hosted orchestrator that makes it easy to manage and run multiple services on a single server. It is based on Docker and comes with a simple web interface to manage your services. Runtipi is designed to be easy to use, so you don't have to worry about manual configuration or networking. @@ -11,6 +11,7 @@ https://runtipi.io # Installation Installing Homarr is pretty untuitive, the app is available in the default appstore : + 1. Search for **"Homarr"** in the App-Store page and select it 2. Click on **"Install"**. 3. Choose the method you want to access Homarr, through any port or domain name then select **"Install"** @@ -18,13 +19,15 @@ Installing Homarr is pretty untuitive, the app is available in the default appst # Maintenance After installation, all you need is available from the WebUI in **"My apps"** > **"Homarr"** : - - Start/Stop - - Update - - Backup - - Logs - + +- Start/Stop +- Update +- Backup +- Logs + If you like to tinker with your apps, you can also edit your app's docker-compose with a [user-config](https://runtipi.io/docs/guides/customize-app-config). # Getting help + - If you are looking for help with anything in Runtipi. They provide support on their [Discord](https://discord.gg/Bu9qEPnHsc) and [forums](https://forums.runtipi.io/). If you found vulnerabilities or bugs, [create a new issue here](https://github.com/runtipi/runtipi-appstore/issues). -- If you are looking to report a bug, vulnerability or request a new feature for Homarr, use https://github.com/homarr-labs/homarr . You can ask for help on our Discord. \ No newline at end of file +- If you are looking to report a bug, vulnerability or request a new feature for Homarr, use https://github.com/homarr-labs/homarr . You can ask for help on our Discord. diff --git a/apps/docs/docs/getting-started/installation/saltbox.mdx b/apps/docs/docs/getting-started/installation/saltbox.mdx index 2f284d72b..88805eafb 100644 --- a/apps/docs/docs/getting-started/installation/saltbox.mdx +++ b/apps/docs/docs/getting-started/installation/saltbox.mdx @@ -5,6 +5,7 @@ Saltbox installation command has not updated to 1.0 yet. There command still run ::: You can also use this to install on Saltbox: + ```bash sb install sandbox-homarr -``` \ No newline at end of file +``` diff --git a/apps/docs/docs/getting-started/installation/source.mdx b/apps/docs/docs/getting-started/installation/source.mdx index 933b264dd..838f0d0a2 100644 --- a/apps/docs/docs/getting-started/installation/source.mdx +++ b/apps/docs/docs/getting-started/installation/source.mdx @@ -28,15 +28,29 @@ This method is only useful, when you want to develop on Homarr or extend it with ## Steps
    -
  1. Clone the Repository using git clone https://github.com/homarr-labs/homarr.git
  2. -
  3. Enter the created directory using cd homarr
  4. -
  5. Install all dependencies using pnpm install
  6. -
  7. Copy the `.env.example` file to `.env` and replace `DB_URL` with the full path you want to use for the sqlite database file. For example `DB_URL='/home/username/homarr/db.sqlite`
  8. -
  9. Replace `AUTH_SECRET` and `SECRET_ENCRYPTION_KEY` both with a secure random string by using `openssl rand -hex 32`
  10. +
  11. + Clone the Repository using git clone https://github.com/homarr-labs/homarr.git +
  12. +
  13. + Enter the created directory using cd homarr +
  14. +
  15. + Install all dependencies using pnpm install +
  16. +
  17. + Copy the `.env.example` file to `.env` and replace `DB_URL` with the full path you want to use for the sqlite + database file. For example `DB_URL='/home/username/homarr/db.sqlite` +
  18. +
  19. + Replace `AUTH_SECRET` and `SECRET_ENCRYPTION_KEY` both with a secure random string by using `openssl rand -hex 32` +
  20. Replace `CRON_JOB_API_KEY` with a secure random string by using `openssl rand -base64 32`
  21. Run `pnpm run db:migration:sqlite:run` and wait that it completes
  22. Build the source using `pnpm build`
  23. -
  24. Copy better-sqlite3.node files with `mkdir build` and `cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node`
  25. +
  26. + Copy better-sqlite3.node files with `mkdir build` and `cp + ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node` +
  27. Start a redis server using `redis-server`
  28. Run the server using `pnpm start`
  29. Open `http://localhost:3000` in your browser
  30. diff --git a/apps/docs/docs/getting-started/installation/unraid.mdx b/apps/docs/docs/getting-started/installation/unraid.mdx index 5fa7cc9b0..18588c5d4 100644 --- a/apps/docs/docs/getting-started/installation/unraid.mdx +++ b/apps/docs/docs/getting-started/installation/unraid.mdx @@ -1,5 +1,5 @@ -import Link from '@docusaurus/Link'; -import { IconDownload } from '@tabler/icons-react'; +import Link from "@docusaurus/Link"; +import { IconDownload } from "@tabler/icons-react"; # Unraid @@ -14,17 +14,17 @@ You can install Homarr directly from your Unraid Dashboard, no terminal required -
    +
    Install community applications plugin
    -
    -
    +
    +
    :::tip @@ -46,4 +46,3 @@ After you've installed the Community Apps Plugin, you can install Homarr from th After you've installed Homarr, you can find it under the tab "Docker". The official support thread is located [here](https://forums.unraid.net/topic/123478-support-smartphonelover-homarr/), but we prefer to communicate over GitHub and Discord instead. - diff --git a/apps/docs/docs/integrations/adguard-home/index.mdx b/apps/docs/docs/integrations/adguard-home/index.mdx index b4cb6cdb6..52b26f66f 100644 --- a/apps/docs/docs/integrations/adguard-home/index.mdx +++ b/apps/docs/docs/integrations/adguard-home/index.mdx @@ -1,37 +1,44 @@ --- -title: 'AdGuard Home' +title: "AdGuard Home" description: "AdGuard Home is a network-wide software for blocking ads and trackers, providing a safer and faster internet experience." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconAd, IconDeviceGamepad } from "@tabler/icons-react"; -import { adguardHomeIntegration } from '.'; -import { dnsHoleSummaryWidget } from '@site/docs/widgets/dns-hole-summary'; -import { dnsHoleControlsWidget } from '@site/docs/widgets/dns-hole-controls'; +import { adguardHomeIntegration } from "."; +import { dnsHoleSummaryWidget } from "@site/docs/widgets/dns-hole-summary"; +import { dnsHoleControlsWidget } from "@site/docs/widgets/dns-hole-controls"; - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/anchor/index.mdx b/apps/docs/docs/integrations/anchor/index.mdx index e4d897767..2e43195cc 100644 --- a/apps/docs/docs/integrations/anchor/index.mdx +++ b/apps/docs/docs/integrations/anchor/index.mdx @@ -1,40 +1,45 @@ --- -title: 'Anchor' +title: "Anchor" description: "Anchor is a self-hosted note-taking application." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { anchorIntegration } from '.'; -import { anchorNoteWidget } from '@site/docs/widgets/anchor-note'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { anchorIntegration } from "."; +import { anchorNoteWidget } from "@site/docs/widgets/anchor-note"; - - + The Anchor integration lets Homarr connect to your Anchor instance so you can display and edit selected notes directly from your dashboard. ### Widgets & Capabilities + ### Adding the integration + ### Secrets - + + diff --git a/apps/docs/docs/integrations/aria2/index.mdx b/apps/docs/docs/integrations/aria2/index.mdx index 9950fec2f..8ec92a5d0 100644 --- a/apps/docs/docs/integrations/aria2/index.mdx +++ b/apps/docs/docs/integrations/aria2/index.mdx @@ -1,38 +1,43 @@ --- -title: 'Aria2' +title: "Aria2" description: "Lightweight multiprotocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink" hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { aria2Integration } from '.'; -import { downloadsWidget } from '@site/docs/widgets/downloads'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { aria2Integration } from "."; +import { downloadsWidget } from "@site/docs/widgets/downloads"; - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/audiobookshelf/index.mdx b/apps/docs/docs/integrations/audiobookshelf/index.mdx index 156525ba5..a052d2fff 100644 --- a/apps/docs/docs/integrations/audiobookshelf/index.mdx +++ b/apps/docs/docs/integrations/audiobookshelf/index.mdx @@ -1,41 +1,40 @@ --- -title: 'Audiobookshelf' +title: "Audiobookshelf" description: "Audiobookshelf is a self-hosted audiobook and podcast server that lets you manage and stream your audio library." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { audiobookshelfIntegration } from '.'; -import { audioStatsWidget } from '@site/docs/widgets/audio-stats'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { audiobookshelfIntegration } from "."; +import { audioStatsWidget } from "@site/docs/widgets/audio-stats"; - - + Audiobookshelf provides library statistics including audiobook and podcast counts, listening time, and active sessions. ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - + + diff --git a/apps/docs/docs/integrations/bazarr/index.mdx b/apps/docs/docs/integrations/bazarr/index.mdx index f9400a45e..7e1ad2d64 100644 --- a/apps/docs/docs/integrations/bazarr/index.mdx +++ b/apps/docs/docs/integrations/bazarr/index.mdx @@ -1,31 +1,30 @@ --- -title: 'Bazarr' +title: "Bazarr" description: "Bazarr is a companion application to Sonarr and Radarr that manages and downloads subtitles." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { bazarrIntegration } from '.'; -import { bazarrWidget } from '@site/docs/widgets/bazarr'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { bazarrIntegration } from "."; +import { bazarrWidget } from "@site/docs/widgets/bazarr"; - + Bazarr complements Sonarr and Radarr by managing subtitle downloads. The Homarr integration uses your Bazarr API key to fetch missing subtitle counts and health badges. ### Screenshots -import apiKeySettings from './img/api-key-settings.png'; -import widgetOverview from '@site/docs/widgets/bazarr/img/widget-overview.png'; +import apiKeySettings from "./img/api-key-settings.png"; +import widgetOverview from "@site/docs/widgets/bazarr/img/widget-overview.png";
    -

    API key location in Bazarr (Settings → General → Security):

    +

    + API key location in Bazarr (Settings → General → Security): +

    bazarr-api-key-settings
    @@ -35,20 +34,25 @@ import widgetOverview from '@site/docs/widgets/bazarr/img/widget-overview.png';
    ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets + You can find your Bazarr API key under **Settings → General → Security**. - + diff --git a/apps/docs/docs/integrations/beszel/index.mdx b/apps/docs/docs/integrations/beszel/index.mdx index 0c93cdc9f..8ddda77c6 100644 --- a/apps/docs/docs/integrations/beszel/index.mdx +++ b/apps/docs/docs/integrations/beszel/index.mdx @@ -1,25 +1,22 @@ --- -title: 'Beszel' +title: "Beszel" description: "Beszel is a lightweight server monitoring platform with Docker stats, historical data, and alert functions." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { beszelIntegration } from '.'; -import { beszelSystemStatsWidget } from '@site/docs/widgets/beszel-system-stats'; -import { beszelSystemGridWidget } from '@site/docs/widgets/beszel-system-grid'; -import { beszelSystemTableWidget } from '@site/docs/widgets/beszel-system-table'; -import { beszelAlertsWidget } from '@site/docs/widgets/beszel-alerts'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { beszelIntegration } from "."; +import { beszelSystemStatsWidget } from "@site/docs/widgets/beszel-system-stats"; +import { beszelSystemGridWidget } from "@site/docs/widgets/beszel-system-grid"; +import { beszelSystemTableWidget } from "@site/docs/widgets/beszel-system-table"; +import { beszelAlertsWidget } from "@site/docs/widgets/beszel-alerts"; -import beszelDashboard from './img/beszel-dashboard.png'; +import beszelDashboard from "./img/beszel-dashboard.png"; - + Beszel monitors your servers in real time via lightweight agents, collecting CPU, memory, disk, network, GPU, temperature, and Docker container metrics. It stores historical data and supports configurable alerts. @@ -28,26 +25,33 @@ Beszel monitors your servers in real time via lightweight agents, collecting CPU Beszel dashboard overview showing all four widgets ### Widgets & Capabilities + ### Adding the integration + ### Secrets - + + :::tip Beszel uses PocketBase under the hood. The default admin credentials are set during the initial Beszel setup. diff --git a/apps/docs/docs/integrations/coolify/index.mdx b/apps/docs/docs/integrations/coolify/index.mdx index 56e5e6c29..7b828cc18 100644 --- a/apps/docs/docs/integrations/coolify/index.mdx +++ b/apps/docs/docs/integrations/coolify/index.mdx @@ -1,29 +1,24 @@ --- -title: 'Coolify' -description: 'Self-hosted PaaS and deployment platform' +title: "Coolify" +description: "Self-hosted PaaS and deployment platform" hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { coolifyIntegration } from '.'; -import { coolifyWidget } from '../../widgets/coolify'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { coolifyIntegration } from "."; +import { coolifyWidget } from "../../widgets/coolify"; - + ### Widgets & Capabilities - + + ### Adding the integration + :::info URL configuration @@ -31,16 +26,28 @@ Use the root URL of your Coolify instance, for example `https://coolify.example. ::: ### Secrets -Enable API access under Settings > Advanced if it is disabled.), - (Go to Security > API Tokens.), - 'Enter a name, e.g. "Homarr".', - (Select the read permission. The Coolify widget only reads version, server, project, application, and service data.), - 'Click "Create".', - 'Copy the generated token immediately. Coolify only shows it once.', - 'Paste the token into the API Key field in Homarr.' - ] -}]} /> + + + Enable API access under Settings > Advanced if it is disabled. + , + + Go to Security > API Tokens. + , + 'Enter a name, e.g. "Homarr".', + + Select the read permission. The Coolify widget only reads version, server, project, application, + and service data. + , + 'Click "Create".', + "Copy the generated token immediately. Coolify only shows it once.", + "Paste the token into the API Key field in Homarr.", + ], + }, + ]} +/> diff --git a/apps/docs/docs/integrations/dash-dot/index.mdx b/apps/docs/docs/integrations/dash-dot/index.mdx index 512bc6c8d..9c400321c 100644 --- a/apps/docs/docs/integrations/dash-dot/index.mdx +++ b/apps/docs/docs/integrations/dash-dot/index.mdx @@ -1,32 +1,33 @@ --- -title: 'Dash.' +title: "Dash." description: "Dash. is a system performance and resource monitoring tool" hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconHeartRateMonitor } from "@tabler/icons-react"; -import { dashDotIntegration } from '.'; -import { healthMonitoringWidget } from '@site/docs/widgets/health-monitoring'; -import { systemResourcesWidget } from '@site/docs/widgets/system-resources'; +import { dashDotIntegration } from "."; +import { healthMonitoringWidget } from "@site/docs/widgets/health-monitoring"; +import { systemResourcesWidget } from "@site/docs/widgets/system-resources"; - - + ### Widgets & Capabilities + ### Adding the integration - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/deluge/index.mdx b/apps/docs/docs/integrations/deluge/index.mdx index 24aadb910..89f906c0c 100644 --- a/apps/docs/docs/integrations/deluge/index.mdx +++ b/apps/docs/docs/integrations/deluge/index.mdx @@ -1,36 +1,41 @@ --- -title: 'Deluge' +title: "Deluge" description: "Deluge is a lightweight, Free Software, cross-platform BitTorrent client." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconDownload } from "@tabler/icons-react"; -import Alert from '@theme/Admonition'; -import { delugeIntegration } from '.'; -import { downloadsWidget } from '@site/docs/widgets/downloads'; +import Alert from "@theme/Admonition"; +import { delugeIntegration } from "."; +import { downloadsWidget } from "@site/docs/widgets/downloads"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/docker/index.mdx b/apps/docs/docs/integrations/docker/index.mdx index 2af43c67e..40ade4912 100644 --- a/apps/docs/docs/integrations/docker/index.mdx +++ b/apps/docs/docs/integrations/docker/index.mdx @@ -1,32 +1,31 @@ --- -title: 'Docker' +title: "Docker" description: "Docker is a platform where you can run your applications in containers, allowing for easy deployment and management of applications." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconBrandDocker, IconTool } from "@tabler/icons-react"; -import { dockerIntegration } from '.'; -import { dockerContainersWidget } from '@site/docs/widgets/docker-containers'; +import { dockerIntegration } from "."; +import { dockerContainersWidget } from "@site/docs/widgets/docker-containers"; - - + ### Widgets & Capabilities + - ## Enabling the Docker integration + This integration must first be enabled. If you directly run on the host system and you have docker installed, it will be enabled by default. Otherwise, you'll need to mount the [docker socket](https://docs.docker.com/engine/security/protect-access/) to the Homarr container, @@ -49,7 +48,7 @@ services: environment: - SECRET_ENCRYPTION_KEY=your_64_character_hex_string # <--- can be generated with `openssl rand -hex 32` ports: - - '7575:7575' + - "7575:7575" ``` With docker run, add this parameter: `-v /var/run/docker.sock:/var/run/docker.sock`. @@ -124,8 +123,10 @@ services: ``` ### Managing your Docker containers within Homarr + Homarr allows you to interact with Docker containers running on your system. Each container row has an action menu with the following options: + - **View logs** - opens a dedicated logs page with a live terminal - **Start** - start a stopped container - **Stop** - stop a running container @@ -166,11 +167,13 @@ Currently Homarr supports one label for configuration of the containers: - **homarr.hide:** If set to any value, the container will be hidden from the Docker Containers widget and tools page. ### Security + Mounting docker sockets can be risky, as they permit full control over your docker service. As an example, a thread actor could abuse Homarr use the socket to start, stop or delete containers on your system. Therefore we recommend the usage of a socket proxy, which can prohibit certain actions. A few examples include: + - https://github.com/linuxserver/docker-socket-proxy - https://github.com/Tecnativa/docker-socket-proxy @@ -178,36 +181,44 @@ See documentation of the respective proxies on how to configure them. Homarr may behave in unexpected ways when you use proxies. #### Permissions + Homarr needs the following permissions from the Docker API: + - Containers/Start - Containers/Stop - Containers/Restart - Containers/Remove For socket proxies, you will need these permissions: + - `CONTAINERS=1` - `POST=1` **Caution:** `POST` access is security critical as it provides extensive capabilities to modify your docker environment. Please leave it disabled if you're concerned about this. As a workaround, you can use [LSIO's socket proxy](https://github.com/linuxserver/docker-socket-proxy) and set the following: + - ALLOW_START=1 - ALLOW_STOP=1 - ALLOW_RESTARTS=1 -These will work even with `POST=0`. +These will work even with `POST=0`. You lose the ability to remove containers, but start, stop and restarts should work just fine. #### Connecting to Docker via Socket Proxies + To connect to Docker via a socket proxy, you'll need to add these two environment variables in the compose file: + - `DOCKER_HOSTNAMES=` - `DOCKER_PORTS=` Refer: https://homarr.dev/docs/advanced/environment-variables/ You will also need to add Homarr to the network of your socket proxy. You can do it like this: + 1. Add the network to your compose file (with appropriate changes): + ```yaml networks: socket-proxy: @@ -216,6 +227,7 @@ networks: ``` 2. Add the network to the homarr service in the compose file: + ```yaml networks: - socket-proxy diff --git a/apps/docs/docs/integrations/emby/index.mdx b/apps/docs/docs/integrations/emby/index.mdx index 907d2bd96..2426a1561 100644 --- a/apps/docs/docs/integrations/emby/index.mdx +++ b/apps/docs/docs/integrations/emby/index.mdx @@ -1,37 +1,35 @@ --- -title: 'Emby' +title: "Emby" description: "Emby is a media server platform that allows you to organize, manage, and stream your personal media collection." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconVideo, IconTicket } from "@tabler/icons-react"; -import { embyIntegration } from '.'; -import { mediaServerWidget } from '@site/docs/widgets/media-server'; -import { mediaReleasesWidget } from '@site/docs/widgets/media-releases'; +import { embyIntegration } from "."; +import { mediaServerWidget } from "@site/docs/widgets/media-server"; +import { mediaReleasesWidget } from "@site/docs/widgets/media-releases"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/glances/index.mdx b/apps/docs/docs/integrations/glances/index.mdx index 2639f87e5..bd047e81d 100644 --- a/apps/docs/docs/integrations/glances/index.mdx +++ b/apps/docs/docs/integrations/glances/index.mdx @@ -1,37 +1,43 @@ --- -title: 'Glances' +title: "Glances" description: "Glances is a cross-platform system monitoring tool." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { glancesIntegration } from '.'; -import { systemResourcesWidget } from '@site/docs/widgets/system-resources'; -import { healthMonitoringWidget } from '@site/docs/widgets/health-monitoring'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { glancesIntegration } from "."; +import { systemResourcesWidget } from "@site/docs/widgets/system-resources"; +import { healthMonitoringWidget } from "@site/docs/widgets/health-monitoring"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/gluetun/index.mdx b/apps/docs/docs/integrations/gluetun/index.mdx index 7c936fc1f..dca490781 100644 --- a/apps/docs/docs/integrations/gluetun/index.mdx +++ b/apps/docs/docs/integrations/gluetun/index.mdx @@ -1,20 +1,17 @@ --- -title: 'Gluetun' -description: 'Connect Gluetun to Homarr as a VPN integration.' +title: "Gluetun" +description: "Connect Gluetun to Homarr as a VPN integration." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { gluetunIntegration } from '.'; -import { vpnWidget } from '@site/docs/widgets/vpn'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { gluetunIntegration } from "."; +import { vpnWidget } from "@site/docs/widgets/vpn"; - + [Gluetun](https://github.com/qdm12/gluetun) exposes a control server that Homarr can query to report the VPN tunnel status, DNS status, public IP address, and active provider details in the VPN widget. @@ -22,9 +19,11 @@ status, DNS status, public IP address, and active provider details in the VPN wi ### Widgets & Capabilities ### Setting up the Gluetun control server @@ -40,13 +39,20 @@ Refer to the [Gluetun control server documentation](https://github.com/qdm12/glu Gluetun's control server can be left unprotected or secured with either an API key or HTTP Basic authentication. Choose the option that matches how your Gluetun instance integration is set up. - + diff --git a/apps/docs/docs/integrations/gotify/index.mdx b/apps/docs/docs/integrations/gotify/index.mdx index 09c81265b..43cde77b0 100644 --- a/apps/docs/docs/integrations/gotify/index.mdx +++ b/apps/docs/docs/integrations/gotify/index.mdx @@ -1,33 +1,39 @@ --- -title: 'Gotify' +title: "Gotify" description: "Gotify is a simple, self-hosted server for sending and receiving messages in real time." hide_title: true --- -import { notificationsWidget } from '@site/docs/widgets/notifications'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { gotifyIntegration } from '.'; +import { notificationsWidget } from "@site/docs/widgets/notifications"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { gotifyIntegration } from "."; - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - + + diff --git a/apps/docs/docs/integrations/home-assistant/index.mdx b/apps/docs/docs/integrations/home-assistant/index.mdx index 98ad591d6..65d09d166 100644 --- a/apps/docs/docs/integrations/home-assistant/index.mdx +++ b/apps/docs/docs/integrations/home-assistant/index.mdx @@ -1,45 +1,51 @@ --- -title: 'Home Assistant' +title: "Home Assistant" description: "Home Assistant is an open-source home automation platform that focuses on privacy and local control, allowing you to automate and control your smart home devices." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconBinaryTree } from "@tabler/icons-react"; -import { homeAssistantIntegration } from '.'; -import { smartHomeEntityStateWidget } from '@site/docs/widgets/smart-home-entity-state'; -import { smartHomeExecuteAutomationWidget } from '@site/docs/widgets/smart-home-execute-automation'; +import { homeAssistantIntegration } from "."; +import { smartHomeEntityStateWidget } from "@site/docs/widgets/smart-home-entity-state"; +import { smartHomeExecuteAutomationWidget } from "@site/docs/widgets/smart-home-execute-automation"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + ], + }, + ]} +/> diff --git a/apps/docs/docs/integrations/ical/index.mdx b/apps/docs/docs/integrations/ical/index.mdx index 5f5ffc422..475229a34 100644 --- a/apps/docs/docs/integrations/ical/index.mdx +++ b/apps/docs/docs/integrations/ical/index.mdx @@ -1,38 +1,44 @@ --- -title: 'iCal' +title: "iCal" description: "iCal is a standard for calendar data exchange, allowing users to share and manage calendar events across different platforms." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconZoomQuestion, IconChartBar, IconSearch } from "@tabler/icons-react"; -import { icalIntegration } from '.'; -import { calendarWidget } from '@site/docs/widgets/calendar'; +import { icalIntegration } from "."; +import { calendarWidget } from "@site/docs/widgets/calendar"; - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - + + ## Using the iCal integration -The iCal integration allows you to add external calendars to Homarr. Any calendar that provides a public iCal URL can be integrated, such as Google Calendar, Apple Calendar, or Outlook. \ No newline at end of file +The iCal integration allows you to add external calendars to Homarr. Any calendar that provides a public iCal URL can be integrated, such as Google Calendar, Apple Calendar, or Outlook. diff --git a/apps/docs/docs/integrations/immich/index.mdx b/apps/docs/docs/integrations/immich/index.mdx index b887e5bb9..efe4c5106 100644 --- a/apps/docs/docs/integrations/immich/index.mdx +++ b/apps/docs/docs/integrations/immich/index.mdx @@ -1,36 +1,29 @@ --- -title: 'Immich' +title: "Immich" description: "Self-hosted photo and video management solution" hide_title: true --- -import { immichAlbumCarouselWidget } from '../../widgets/immich-album-carousel';import { - IntegrationHeader -} from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { immichIntegration } from '.'; -import { immichServerStatsWidget } from '../../widgets/immich-server-stats'; +import { immichAlbumCarouselWidget } from "../../widgets/immich-album-carousel"; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { immichIntegration } from "."; +import { immichServerStatsWidget } from "../../widgets/immich-server-stats"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets + ), - 'Create the integration in Homarr and copy the API key to there' - ] +'Create the integration in Homarr and copy the API key to there' +] }]} /> diff --git a/apps/docs/docs/integrations/jellyfin/index.mdx b/apps/docs/docs/integrations/jellyfin/index.mdx index 4826386b8..83e23fd45 100644 --- a/apps/docs/docs/integrations/jellyfin/index.mdx +++ b/apps/docs/docs/integrations/jellyfin/index.mdx @@ -1,40 +1,39 @@ --- -title: 'Jellyfin' +title: "Jellyfin" description: "Jellyfin is a free and open-source media server software that allows you to organize, manage, and share your media files." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconVideo, IconTicket } from "@tabler/icons-react"; -import { jellyfinIntegration } from '.'; -import { mediaServerWidget } from '@site/docs/widgets/media-server'; -import { mediaReleasesWidget } from '@site/docs/widgets/media-releases'; +import { jellyfinIntegration } from "."; +import { mediaServerWidget } from "@site/docs/widgets/media-server"; +import { mediaReleasesWidget } from "@site/docs/widgets/media-releases"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/jellyseerr/index.mdx b/apps/docs/docs/integrations/jellyseerr/index.mdx index a85d7bd9f..e752906bb 100644 --- a/apps/docs/docs/integrations/jellyseerr/index.mdx +++ b/apps/docs/docs/integrations/jellyseerr/index.mdx @@ -1,45 +1,52 @@ --- -title: 'Jellyseerr' +title: "Jellyseerr" description: "Jellyseerr is a self-hosted media request management system that integrates with Jellyfin and other media servers." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconZoomQuestion, IconChartBar, IconSearch } from "@tabler/icons-react"; -import { jellyseerrIntegration } from '.'; -import { mediaRequestListWidget } from '@site/docs/widgets/media-request-list'; -import { mediaRequestStatsWidget } from '@site/docs/widgets/media-request-stats'; +import { jellyseerrIntegration } from "."; +import { mediaRequestListWidget } from "@site/docs/widgets/media-request-list"; +import { mediaRequestStatsWidget } from "@site/docs/widgets/media-request-stats"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/kubernetes/index.mdx b/apps/docs/docs/integrations/kubernetes/index.mdx index 899c60931..662874467 100644 --- a/apps/docs/docs/integrations/kubernetes/index.mdx +++ b/apps/docs/docs/integrations/kubernetes/index.mdx @@ -1,20 +1,16 @@ --- -title: 'Kubernetes' +title: "Kubernetes" description: "Kubernetes is a powerful container orchestration platform that automates the deployment, scaling, and management of containerized applications." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconBrandDocker, IconTool } from "@tabler/icons-react"; -import { kubernetesIntegration } from '.'; +import { kubernetesIntegration } from "."; - - + Homarr provides a user-friendly Kubernetes dashboard that offers an overview of your cluster’s resources in a clear and structured interface. It allows users to view key Kubernetes objects, including `Pods`, `Services`, `Ingresses`, `Nodes`, `ConfigMaps`, `Secrets`, `Namespaces`, and `Volumes`, as well as basic metrics when the Kubernetes Metrics Server is enabled. @@ -47,7 +43,7 @@ Enabling RBAC in the Helm chart creates the necessary Kubernetes Role-Based Acce - Service Account: A dedicated service account for Homarr. - Role & RoleBinding: Grants permissions within a specific namespace to list, watch, and get pods, services, secrets, configmaps, and more. - ClusterRole & ClusterRoleBinding: Extends the same permissions cluster-wide for additional flexibility. -::: + ::: ### Homarr Dashboard Overview diff --git a/apps/docs/docs/integrations/lidarr/index.mdx b/apps/docs/docs/integrations/lidarr/index.mdx index 498503617..ad5916a3f 100644 --- a/apps/docs/docs/integrations/lidarr/index.mdx +++ b/apps/docs/docs/integrations/lidarr/index.mdx @@ -1,35 +1,40 @@ --- -title: 'Lidarr' +title: "Lidarr" description: "Lidarr is a music management tool that automates the process of downloading, sorting, and renaming music." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconCalendar } from "@tabler/icons-react"; -import { lidarrIntegration } from '.'; -import { calendarWidget } from '@site/docs/widgets/calendar'; +import { lidarrIntegration } from "."; +import { calendarWidget } from "@site/docs/widgets/calendar"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/navidrome/index.mdx b/apps/docs/docs/integrations/navidrome/index.mdx index c2578afa0..d5b1993ad 100644 --- a/apps/docs/docs/integrations/navidrome/index.mdx +++ b/apps/docs/docs/integrations/navidrome/index.mdx @@ -1,5 +1,5 @@ --- -title: 'Navidrome' +title: "Navidrome" description: "Navidrome is a self-hosted music server and streamer compatible with the Subsonic API." hide_title: true --- @@ -21,13 +21,19 @@ Navidrome provides music library statistics including artist, album, and song co ### Adding the integration + ### Secrets - + + diff --git a/apps/docs/docs/integrations/nextcloud/index.mdx b/apps/docs/docs/integrations/nextcloud/index.mdx index ba5ab8ee9..f7d7e05fa 100644 --- a/apps/docs/docs/integrations/nextcloud/index.mdx +++ b/apps/docs/docs/integrations/nextcloud/index.mdx @@ -1,40 +1,43 @@ --- -title: 'Nextcloud' +title: "Nextcloud" description: "Nextcloud is a self-hosted productivity platform that provides file storage, collaboration tools, and more." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconCalendar } from "@tabler/icons-react"; -import Alert from '@theme/Admonition'; -import { nextcloudIntegration } from '.'; -import { calendarWidget } from '@site/docs/widgets/calendar'; -import { notificationsWidget } from '@site/docs/widgets/notifications'; +import Alert from "@theme/Admonition"; +import { nextcloudIntegration } from "."; +import { calendarWidget } from "@site/docs/widgets/calendar"; +import { notificationsWidget } from "@site/docs/widgets/notifications"; - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - - Users who use 2FA will have to use Nextcloud's App Password tool to grant Homarr access, as 2FA breaks the traditional process. For more information, see [Nextcloud's Documentation](https://docs.nextcloud.com/server/stable/admin_manual/configuration_user/authentication.html#app-passwords) - , -}]} /> + + + Users who use 2FA will have to use Nextcloud's App Password tool to grant Homarr access, as 2FA breaks the + traditional process. For more information, see [Nextcloud's + Documentation](https://docs.nextcloud.com/server/stable/admin_manual/configuration_user/authentication.html#app-passwords) + + ), + }, + ]} +/> diff --git a/apps/docs/docs/integrations/ntfy/index.mdx b/apps/docs/docs/integrations/ntfy/index.mdx index 4b21d16a4..a132de923 100644 --- a/apps/docs/docs/integrations/ntfy/index.mdx +++ b/apps/docs/docs/integrations/ntfy/index.mdx @@ -1,37 +1,44 @@ --- -title: 'Ntfy' +title: "Ntfy" description: "Ntfy is a simple, open-source notification service that allows you to send and receive notifications across devices." hide_title: true --- -import { notificationsWidget } from '@site/docs/widgets/notifications'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; +import { notificationsWidget } from "@site/docs/widgets/notifications"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; import { IconMessage } from "@tabler/icons-react"; -import { ntfyIntegration } from '.'; +import { ntfyIntegration } from "."; - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/nzbget/index.mdx b/apps/docs/docs/integrations/nzbget/index.mdx index 3479f317a..1b7c23a1f 100644 --- a/apps/docs/docs/integrations/nzbget/index.mdx +++ b/apps/docs/docs/integrations/nzbget/index.mdx @@ -1,36 +1,41 @@ --- -title: 'NZBGet' +title: "NZBGet" description: "NZBGet is a lightweight and efficient Usenet downloader." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconDownload } from "@tabler/icons-react"; -import { nzbgetIntegration } from '.'; -import Alert from '@theme/Admonition'; -import { downloadsWidget } from '@site/docs/widgets/downloads'; +import { nzbgetIntegration } from "."; +import Alert from "@theme/Admonition"; +import { downloadsWidget } from "@site/docs/widgets/downloads"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/open-media-vault/index.mdx b/apps/docs/docs/integrations/open-media-vault/index.mdx index ac0a42290..b934bf797 100644 --- a/apps/docs/docs/integrations/open-media-vault/index.mdx +++ b/apps/docs/docs/integrations/open-media-vault/index.mdx @@ -1,42 +1,52 @@ --- -title: 'Open Media Vault' +title: "Open Media Vault" description: "Open Media Vault is a free network-attached storage server based on the Debian operating system." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconHeartRateMonitor } from "@tabler/icons-react"; -import { openMediaVaultIntegration } from '.'; -import Alert from '@theme/Admonition' -import { healthMonitoringWidget } from '@site/docs/widgets/health-monitoring'; -import { systemResourcesWidget } from '@site/docs/widgets/system-resources'; +import { openMediaVaultIntegration } from "."; +import Alert from "@theme/Admonition"; +import { healthMonitoringWidget } from "@site/docs/widgets/health-monitoring"; +import { systemResourcesWidget } from "@site/docs/widgets/system-resources"; - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - - The user used here must have administrative permissions or Homarr won't be able to read the system performance and resource data. - -}]} /> \ No newline at end of file + + + The user used here must have administrative permissions or Homarr won't be able to read the system performance + and resource data. + + ), + }, + ]} +/> diff --git a/apps/docs/docs/integrations/opnsense/index.mdx b/apps/docs/docs/integrations/opnsense/index.mdx index 37e9a78c6..9a3a2b1ee 100644 --- a/apps/docs/docs/integrations/opnsense/index.mdx +++ b/apps/docs/docs/integrations/opnsense/index.mdx @@ -1,65 +1,75 @@ --- -title: 'OPNsense' +title: "OPNsense" description: "OPNsense is an open-source, easy-to-use, and easy-to-build firewall and routing platform." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconHeartRateMonitor } from "@tabler/icons-react"; -import { opnsenseIntegration } from '.'; -import Alert from '@theme/Admonition' -import { firewallWidget } from '../../widgets/firewall'; +import { opnsenseIntegration } from "."; +import Alert from "@theme/Admonition"; +import { firewallWidget } from "../../widgets/firewall"; - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - - This integration does not require full API access to the firewall. The following guide outlines the process for creating a restricted OPNsense user with a scrambled password, designed exclusively for API access. This ensures minimal permissions and prevents local login capability. - , - steps: [ + + + This integration does not require full API access to the firewall. The following guide outlines the process + for creating a restricted OPNsense user with a scrambled password, designed exclusively for API access. This + ensures minimal permissions and prevents local login capability. + + ), + steps: [ "Log in to the OPNsense web interface as an administrator", "Navigate to System → Access → Users", "Click the + (Add) button to create a new user", <> - Fill in the user details: -
      -
    • Username: Enter a unique name
    • -
    • Password: Leave empty
    • -
    • Scrambled Password: Enable this option
    • -
    • Full name: (Optional) Add a descriptive name
    • -
    + Fill in the user details: +
      +
    • Username: Enter a unique name
    • +
    • Password: Leave empty
    • +
    • Scrambled Password: Enable this option
    • +
    • Full name: (Optional) Add a descriptive name
    • +
    , <> - In Privileges section → Select the option below: -
      -
    • Lobby: Dashboard
    • -
    • Reporting: Traffic
    • -
    + In Privileges section → Select the option below: +
      +
    • Lobby: Dashboard
    • +
    • Reporting: Traffic
    • +
    , "Click Save", "Return to the Users list", "Find the user and click the ticket icon in the Commands column", "Click Yes in the popup to confirm", "A txt file will download automatically, containing: Key and Secret", - "Save this file securely—this information will only be shown once" - ], -}]} /> \ No newline at end of file + "Save this file securely—this information will only be shown once", + ], + }, + ]} +/> diff --git a/apps/docs/docs/integrations/overseerr/index.mdx b/apps/docs/docs/integrations/overseerr/index.mdx index ce9e0a3e5..2dd2d7c8a 100644 --- a/apps/docs/docs/integrations/overseerr/index.mdx +++ b/apps/docs/docs/integrations/overseerr/index.mdx @@ -1,45 +1,52 @@ --- -title: 'Overseerr' +title: "Overseerr" description: "Overseerr is a self-hosted media request management system that integrates with Plex." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconZoomQuestion, IconChartBar, IconSearch } from "@tabler/icons-react"; -import { overseerrIntegration } from '.'; -import { mediaRequestListWidget } from '@site/docs/widgets/media-request-list'; -import { mediaRequestStatsWidget } from '@site/docs/widgets/media-request-stats'; +import { overseerrIntegration } from "."; +import { mediaRequestListWidget } from "@site/docs/widgets/media-request-list"; +import { mediaRequestStatsWidget } from "@site/docs/widgets/media-request-stats"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/paperless-ngx/index.mdx b/apps/docs/docs/integrations/paperless-ngx/index.mdx index e08840110..175fdb15a 100644 --- a/apps/docs/docs/integrations/paperless-ngx/index.mdx +++ b/apps/docs/docs/integrations/paperless-ngx/index.mdx @@ -1,41 +1,40 @@ --- -title: 'Paperless-ngx' +title: "Paperless-ngx" description: "Paperless-ngx is a document management system that transforms your physical documents into a searchable online archive." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { paperlessNgxIntegration } from '.'; -import { paperlessNgxWidget } from '@site/docs/widgets/paperless-ngx'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { paperlessNgxIntegration } from "."; +import { paperlessNgxWidget } from "@site/docs/widgets/paperless-ngx"; - - + Paperless-ngx provides document statistics including total documents, inbox count, correspondents, tags, and document types. ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - + + diff --git a/apps/docs/docs/integrations/patchmon/index.mdx b/apps/docs/docs/integrations/patchmon/index.mdx index 95b827df0..b60c20962 100644 --- a/apps/docs/docs/integrations/patchmon/index.mdx +++ b/apps/docs/docs/integrations/patchmon/index.mdx @@ -1,43 +1,42 @@ --- -title: 'PatchMon' +title: "PatchMon" description: "PatchMon is a patch management and monitoring solution for Linux hosts." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { patchmonIntegration } from '.'; -import { patchmonWidget } from '@site/docs/widgets/patchmon'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { patchmonIntegration } from "."; +import { patchmonWidget } from "@site/docs/widgets/patchmon"; - - + PatchMon provides host and package update statistics including total hosts, hosts needing updates, and security update counts. The PatchMon widget requires users to be **signed in to Homarr**; see the [PatchMon widget documentation](/docs/widgets/patchmon#authentication) for details on authentication and public boards. ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - + + diff --git a/apps/docs/docs/integrations/peanut/index.mdx b/apps/docs/docs/integrations/peanut/index.mdx index 751200bed..7eb7b845b 100644 --- a/apps/docs/docs/integrations/peanut/index.mdx +++ b/apps/docs/docs/integrations/peanut/index.mdx @@ -1,48 +1,53 @@ --- -title: 'PeaNUT' -description: 'A tiny dashboard for Network UPS Tools (NUT) servers.' +title: "PeaNUT" +description: "A tiny dashboard for Network UPS Tools (NUT) servers." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { peaNutIntegration } from '.'; -import { upsWidget } from '@site/docs/widgets/ups'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { peaNutIntegration } from "."; +import { upsWidget } from "@site/docs/widgets/ups"; - + [PeaNUT](https://github.com/Brandawg93/PeaNUT) exposes the data of your [Network UPS Tools](https://networkupstools.org/) servers over a REST API, which Homarr reads to display the status of your UPS devices. ### Widgets & Capabilities + ### Adding the integration + ### Secrets + PeaNUT secures its API with HTTP Basic authentication when the `WEB_USERNAME` and `WEB_PASSWORD` environment variables are set on the PeaNUT instance. Provide the same credentials here. If the instance runs with `AUTH_DISABLED=true`, no secrets are required. - + diff --git a/apps/docs/docs/integrations/pi-hole/index.mdx b/apps/docs/docs/integrations/pi-hole/index.mdx index ca2b400e7..d724b026d 100644 --- a/apps/docs/docs/integrations/pi-hole/index.mdx +++ b/apps/docs/docs/integrations/pi-hole/index.mdx @@ -1,47 +1,54 @@ --- -title: 'Pi-hole' +title: "Pi-hole" description: "Pi-hole is a network-wide ad blocker that acts as a DNS sinkhole, blocking unwanted content and improving your browsing experience." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconAd, IconDeviceGamepad } from "@tabler/icons-react"; -import Alert from '@theme/Admonition'; -import { dnsHoleSummaryWidget } from '@site/docs/widgets/dns-hole-summary'; -import { dnsHoleControlsWidget } from '@site/docs/widgets/dns-hole-controls'; -import { piHoleIntegration } from '.'; +import Alert from "@theme/Admonition"; +import { dnsHoleSummaryWidget } from "@site/docs/widgets/dns-hole-summary"; +import { dnsHoleControlsWidget } from "@site/docs/widgets/dns-hole-controls"; +import { piHoleIntegration } from "."; + - - - - Homarr supports both Pi-hole v5 and v6. It automatically detects the version and uses the correct API. + + Homarr supports both Pi-hole v5 and v6. It automatically detects the version and uses the correct API. ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/plex/index.mdx b/apps/docs/docs/integrations/plex/index.mdx index b6394b918..b6e35a6e3 100644 --- a/apps/docs/docs/integrations/plex/index.mdx +++ b/apps/docs/docs/integrations/plex/index.mdx @@ -1,41 +1,47 @@ --- -title: 'Plex' +title: "Plex" description: "Plex is a media server platform that allows you to organize, manage, and stream your personal media collection." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconVideo, IconTicket } from "@tabler/icons-react"; -import { plexIntegration } from '.'; -import { mediaServerWidget } from '@site/docs/widgets/media-server'; -import { mediaReleasesWidget } from '@site/docs/widgets/media-releases'; +import { plexIntegration } from "."; +import { mediaServerWidget } from "@site/docs/widgets/media-server"; +import { mediaReleasesWidget } from "@site/docs/widgets/media-releases"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - - Follow the official Plex documentation to find your authentication token. - - ] -}]} /> \ No newline at end of file + Follow the official{" "} + + Plex documentation + {" "} + to find your authentication token. + , + ], + }, + ]} +/> diff --git a/apps/docs/docs/integrations/prowlarr/index.mdx b/apps/docs/docs/integrations/prowlarr/index.mdx index 0c5561f91..b3624a97e 100644 --- a/apps/docs/docs/integrations/prowlarr/index.mdx +++ b/apps/docs/docs/integrations/prowlarr/index.mdx @@ -1,32 +1,34 @@ --- -title: 'Prowlarr' +title: "Prowlarr" description: "Prowlarr is an indexer manager for Usenet and BitTorrent, providing a unified interface to manage your indexers." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconHeartRateMonitor } from "@tabler/icons-react"; -import { prowlarrIntegration } from '.'; -import { indexerManagerWidget } from '@site/docs/widgets/indexer-manager'; +import { prowlarrIntegration } from "."; +import { indexerManagerWidget } from "@site/docs/widgets/indexer-manager"; - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/proxmox/index.mdx b/apps/docs/docs/integrations/proxmox/index.mdx index 4ea8eda98..f038dd007 100644 --- a/apps/docs/docs/integrations/proxmox/index.mdx +++ b/apps/docs/docs/integrations/proxmox/index.mdx @@ -1,103 +1,107 @@ --- -title: 'Proxmox' +title: "Proxmox" description: "Proxmox is a powerful open-source virtualization platform that allows you to run virtual machines and containers." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconHeartRateMonitor } from "@tabler/icons-react"; -import { proxmoxIntegration } from '.'; -import Alert from '@theme/Admonition' -import { healthMonitoringWidget } from '@site/docs/widgets/health-monitoring'; -import { systemResourcesWidget } from '@site/docs/widgets/system-resources'; +import { proxmoxIntegration } from "."; +import Alert from "@theme/Admonition"; +import { healthMonitoringWidget } from "@site/docs/widgets/health-monitoring"; +import { systemResourcesWidget } from "@site/docs/widgets/system-resources"; - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - - The Proxmox API may not work with Linux PAM standard authentication. It is strongly recommended to use the Proxmox VE authentication server realm when creating your API user. - , - credentials: ['username', 'tokenId', 'realm', 'apiKey'], - steps: [ + + + The Proxmox API may not work with Linux PAM standard authentication. It is strongly recommended to use the + Proxmox VE authentication server realm when creating your API user. + + ), + credentials: ["username", "tokenId", "realm", "apiKey"], + steps: [ "Navigate to the Proxmox portal, click on Datacenter", "Expand Permissions, click on Groups", "Click the Create button", "Name the group something informative, like api-users", "Click on the Permissions 'folder'", <> - Click Add {"->"} Group Permission -
      -
    • Path: /
    • -
    • Group: group from Step 4 above
    • -
    • Role: PVEAuditor
    • -
    • Propagate: Checked
    • -
    + Click Add {"->"} Group Permission +
      +
    • Path: /
    • +
    • Group: group from Step 4 above
    • +
    • Role: PVEAuditor
    • +
    • Propagate: Checked
    • +
    , "Expand Permissions, click on Users", <> - Click the Add button -
      -
    • User name: something informative like api
    • -
    • Realm: Proxmox VE authentication server
    • -
    • Password: create a secure password for the user
    • -
    • Confirm Password: re-enter the password
    • -
    • Group: group from Step 4 above
    • -
    + Click the Add button +
      +
    • User name: something informative like api
    • +
    • Realm: Proxmox VE authentication server
    • +
    • Password: create a secure password for the user
    • +
    • Confirm Password: re-enter the password
    • +
    • Group: group from Step 4 above
    • +
    , "Expand Permissions, click on API Tokens", <> - Click the Add button -
      -
    • User: user from Step 8 above
    • -
    • Token ID: something informative like the application or purpose like homarr
    • -
    • Privilege Separation: unchecked
    • -
    + Click the Add button +
      +
    • User: user from Step 8 above
    • +
    • Token ID: something informative like the application or purpose like homarr
    • +
    • Privilege Separation: unchecked
    • +
    , "Copy the Secret that is shown in Step 10 because it is only shown once", "Go back to the 'Permissions' menu", <> - Click Add {"->"} API Token Permission -
      -
    • Path: /
    • -
    • API Token: select the API token created in Step 10
    • -
    • Role: PVE Auditor
    • -
    • Propagate: Checked
    • -
    + Click Add {"->"} API Token Permission +
      +
    • Path: /
    • +
    • API Token: select the API token created in Step 10
    • +
    • Role: PVE Auditor
    • +
    • Propagate: Checked
    • +
    , - ], - body: <> - - Sometimes you'll also find the api@pve!homarr format, - within Homarr you'll have to split it up into: - -
      + ], + body: ( + <> + + Sometimes you'll also find the api@pve!homarr format, within Homarr you'll have to split it up + into: + +
      • - Username: api + Username: api
      • - Realm: pve + Realm: pve
      • - Token ID: homarr + Token ID: homarr
      • -
      - -}]} /> \ No newline at end of file +
    + + ), + }, + ]} +/> diff --git a/apps/docs/docs/integrations/q-bittorent/index.mdx b/apps/docs/docs/integrations/q-bittorent/index.mdx index ae85fc0ea..0bf2474ec 100644 --- a/apps/docs/docs/integrations/q-bittorent/index.mdx +++ b/apps/docs/docs/integrations/q-bittorent/index.mdx @@ -1,37 +1,39 @@ --- -title: 'qBittorrent' +title: "qBittorrent" description: "qBittorrent is a free and open-source BitTorrent client." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconDownload } from "@tabler/icons-react"; -import { qBittorentIntegration } from '.'; -import Alert from '@theme/Admonition'; -import { downloadsWidget } from '@site/docs/widgets/downloads'; +import { qBittorentIntegration } from "."; +import Alert from "@theme/Admonition"; +import { downloadsWidget } from "@site/docs/widgets/downloads"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/radarr/index.mdx b/apps/docs/docs/integrations/radarr/index.mdx index 286e1b0b7..09548cab7 100644 --- a/apps/docs/docs/integrations/radarr/index.mdx +++ b/apps/docs/docs/integrations/radarr/index.mdx @@ -1,33 +1,34 @@ --- -title: 'Radarr' +title: "Radarr" description: "Radarr is a movie management tool that automates the process of downloading, sorting, and renaming movies." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconCalendar } from "@tabler/icons-react"; -import { radarrIntegration } from '.'; -import { calendarWidget } from '@site/docs/widgets/calendar'; +import { radarrIntegration } from "."; +import { calendarWidget } from "@site/docs/widgets/calendar"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/readarr/index.mdx b/apps/docs/docs/integrations/readarr/index.mdx index a2c153a91..aec31fe1a 100644 --- a/apps/docs/docs/integrations/readarr/index.mdx +++ b/apps/docs/docs/integrations/readarr/index.mdx @@ -1,33 +1,34 @@ --- -title: 'Readarr' +title: "Readarr" description: "Readarr is a book management tool that automates the process of downloading, sorting, and renaming books." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconCalendar } from "@tabler/icons-react"; -import { readarrIntegration } from '.'; -import { calendarWidget } from '@site/docs/widgets/calendar'; +import { readarrIntegration } from "."; +import { calendarWidget } from "@site/docs/widgets/calendar"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/sabnzbd/index.mdx b/apps/docs/docs/integrations/sabnzbd/index.mdx index 5de72d8c3..8c91c6fef 100644 --- a/apps/docs/docs/integrations/sabnzbd/index.mdx +++ b/apps/docs/docs/integrations/sabnzbd/index.mdx @@ -1,34 +1,35 @@ --- -title: 'SABnzbd' +title: "SABnzbd" description: "SABnzbd is an Open Source Binary Newsreader." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconDownload } from "@tabler/icons-react"; -import { sabnzbdIntegration } from '.'; -import Alert from '@theme/Admonition'; -import { downloadsWidget } from '@site/docs/widgets/downloads'; +import { sabnzbdIntegration } from "."; +import Alert from "@theme/Admonition"; +import { downloadsWidget } from "@site/docs/widgets/downloads"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/seerr/index.mdx b/apps/docs/docs/integrations/seerr/index.mdx index 81b7e0fb1..a1e30798e 100644 --- a/apps/docs/docs/integrations/seerr/index.mdx +++ b/apps/docs/docs/integrations/seerr/index.mdx @@ -1,45 +1,52 @@ --- -title: 'Seerr' +title: "Seerr" description: "Seerr is a self-hosted media request management system that integrates with various media servers." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconZoomQuestion, IconChartBar, IconSearch } from "@tabler/icons-react"; -import { seerrIntegration } from '.'; -import { mediaRequestListWidget } from '@site/docs/widgets/media-request-list'; -import { mediaRequestStatsWidget } from '@site/docs/widgets/media-request-stats'; +import { seerrIntegration } from "."; +import { mediaRequestListWidget } from "@site/docs/widgets/media-request-list"; +import { mediaRequestStatsWidget } from "@site/docs/widgets/media-request-stats"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/slskd/index.mdx b/apps/docs/docs/integrations/slskd/index.mdx index 70674cb04..705ab43c0 100644 --- a/apps/docs/docs/integrations/slskd/index.mdx +++ b/apps/docs/docs/integrations/slskd/index.mdx @@ -1,34 +1,39 @@ --- -title: 'Slskd' +title: "Slskd" description: "A modern client-server application for the Soulseek file sharing network." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { slskdIntegration } from '.'; -import { downloadsWidget } from '@site/docs/widgets/downloads'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { slskdIntegration } from "."; +import { downloadsWidget } from "@site/docs/widgets/downloads"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/sonarr/index.mdx b/apps/docs/docs/integrations/sonarr/index.mdx index 7dc3c7a64..c65d3ce3d 100644 --- a/apps/docs/docs/integrations/sonarr/index.mdx +++ b/apps/docs/docs/integrations/sonarr/index.mdx @@ -1,33 +1,34 @@ --- -title: 'Sonarr' +title: "Sonarr" description: "Sonarr is a TV series management tool that automates the process of downloading, sorting, and renaming episodes." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconCalendar } from "@tabler/icons-react"; -import { sonarrIntegration } from '.'; -import { calendarWidget } from '@site/docs/widgets/calendar'; +import { sonarrIntegration } from "."; +import { calendarWidget } from "@site/docs/widgets/calendar"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/speedtest-tracker/index.mdx b/apps/docs/docs/integrations/speedtest-tracker/index.mdx index 2041dad5c..146a09eca 100644 --- a/apps/docs/docs/integrations/speedtest-tracker/index.mdx +++ b/apps/docs/docs/integrations/speedtest-tracker/index.mdx @@ -1,34 +1,39 @@ --- -title: 'Speedtest Tracker' -description: 'Speedtest Tracker is a self-hosted internet performance tracking application.' +title: "Speedtest Tracker" +description: "Speedtest Tracker is a self-hosted internet performance tracking application." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { speedtestTrackerIntegration } from '.'; -import { speedtestTrackerWidget } from '@site/docs/widgets/speedtest-tracker'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { speedtestTrackerIntegration } from "."; +import { speedtestTrackerWidget } from "@site/docs/widgets/speedtest-tracker"; - - + ### Widgets & Capabilities + ### Adding the integration + ### Secrets - + + diff --git a/apps/docs/docs/integrations/synology/index.mdx b/apps/docs/docs/integrations/synology/index.mdx index 4d836513e..c3f50fc3f 100644 --- a/apps/docs/docs/integrations/synology/index.mdx +++ b/apps/docs/docs/integrations/synology/index.mdx @@ -19,11 +19,7 @@ import Alert from "@theme/Admonition"; ### Widgets & Capabilities ### Supported metrics diff --git a/apps/docs/docs/integrations/tdarr/index.mdx b/apps/docs/docs/integrations/tdarr/index.mdx index 89a0730d2..47956343d 100644 --- a/apps/docs/docs/integrations/tdarr/index.mdx +++ b/apps/docs/docs/integrations/tdarr/index.mdx @@ -1,36 +1,38 @@ --- -title: 'Tdarr' +title: "Tdarr" description: "Tdarr is a distributed media transcoding system that allows you to process and optimize your media files across multiple nodes." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconTransform } from "@tabler/icons-react"; -import { tdarrIntegration } from '.'; -import { mediaTranscodingWidget } from '@site/docs/widgets/media-transcoding'; +import { tdarrIntegration } from "."; +import { mediaTranscodingWidget } from "@site/docs/widgets/media-transcoding"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/technitium-dns/index.mdx b/apps/docs/docs/integrations/technitium-dns/index.mdx index 3ca8bda7c..3bf39d820 100644 --- a/apps/docs/docs/integrations/technitium-dns/index.mdx +++ b/apps/docs/docs/integrations/technitium-dns/index.mdx @@ -1,62 +1,72 @@ --- -title: 'Technitium DNS' +title: "Technitium DNS" description: "Technitium DNS Server is a self-hosted DNS server with ad-blocking and network-wide filtering capabilities." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import Alert from '@theme/Admonition'; -import { technitiumDnsIntegration } from '.'; -import { dnsHoleSummaryWidget } from '@site/docs/widgets/dns-hole-summary'; -import { dnsHoleControlsWidget } from '@site/docs/widgets/dns-hole-controls'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import Alert from "@theme/Admonition"; +import { technitiumDnsIntegration } from "."; +import { dnsHoleSummaryWidget } from "@site/docs/widgets/dns-hole-summary"; +import { dnsHoleControlsWidget } from "@site/docs/widgets/dns-hole-controls"; - + - - Homarr supports Technitium DNS v11 and above. The correct API version is detected automatically - no manual configuration is required. + + Homarr supports Technitium DNS v11 and above. The correct API version is detected automatically - no manual + configuration is required. ### Widgets & Capabilities + ### Adding the integration + ### Secrets - - The **API token** option is recommended. API tokens are non-expiring and do not require storing your admin password in Homarr. - Username and password authentication uses a session token that expires after inactivity, triggering a silent re-login on the next request. + + The **API token** option is recommended. API tokens are non-expiring and do not require storing your admin password in + Homarr. Username and password authentication uses a session token that expires after inactivity, triggering a silent + re-login on the next request. - - The **DNS Hole Controls** widget (enabling, disabling, and timed disabling of blocking) requires the token to have settings-level permissions. - The **DNS Hole Summary** widget (stats only) works with any valid token. - If Homarr cannot read the blocking status due to insufficient permissions, the status indicator will be hidden but statistics will still be shown. + + The **DNS Hole Controls** widget (enabling, disabling, and timed disabling of blocking) requires the token to have + settings-level permissions. The **DNS Hole Summary** widget (stats only) works with any valid token. If Homarr cannot + read the blocking status due to insufficient permissions, the status indicator will be hidden but statistics will + still be shown. - + 'Click on your username in the top-right corner and select "Create API Token".', + 'Give the token a name (e.g. "Homarr") and click "Create Token".', + "Copy the generated token and paste it into the API Key field in Homarr.", + ], + }, + { + credentials: ["username", "password"], + steps: [], + body: "Enter your Technitium DNS admin credentials. Homarr will exchange them for a session token and transparently re-authenticate when the session expires.", + }, + ]} +/> diff --git a/apps/docs/docs/integrations/tracearr/index.mdx b/apps/docs/docs/integrations/tracearr/index.mdx index dc4dde8e0..03954a1cc 100644 --- a/apps/docs/docs/integrations/tracearr/index.mdx +++ b/apps/docs/docs/integrations/tracearr/index.mdx @@ -1,38 +1,37 @@ --- -title: 'Tracearr' +title: "Tracearr" description: "Tracearr is a comprehensive media monitoring solution that tracks streams, user activity, and policy violations in your media server (including Plex, Jellyfin, Emby)." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; -import { tracearrIntegration } from '.'; -import { tracearrWidget } from '@site/docs/widgets/tracearr'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { tracearrIntegration } from "."; +import { tracearrWidget } from "@site/docs/widgets/tracearr"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - - In Tracearr, go to Settings → API and generate or copy your API key. - - ] -}]} /> + In Tracearr, go to Settings → API and generate or copy your API key. + , + ], + }, + ]} +/> diff --git a/apps/docs/docs/integrations/transmission/index.mdx b/apps/docs/docs/integrations/transmission/index.mdx index da0c0209e..c17dbe862 100644 --- a/apps/docs/docs/integrations/transmission/index.mdx +++ b/apps/docs/docs/integrations/transmission/index.mdx @@ -1,34 +1,35 @@ --- -title: 'Transmission' +title: "Transmission" description: "A Fast, Easy and Free Bittorrent Client." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconDownload } from "@tabler/icons-react"; -import { transmissionIntegration } from '.'; -import Alert from '@theme/Admonition'; -import { downloadsWidget } from '@site/docs/widgets/downloads'; +import { transmissionIntegration } from "."; +import Alert from "@theme/Admonition"; +import { downloadsWidget } from "@site/docs/widgets/downloads"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/truenas/index.mdx b/apps/docs/docs/integrations/truenas/index.mdx index 5d29a7019..3ec09bbcf 100644 --- a/apps/docs/docs/integrations/truenas/index.mdx +++ b/apps/docs/docs/integrations/truenas/index.mdx @@ -1,61 +1,67 @@ --- -title: 'TrueNAS' +title: "TrueNAS" description: "Enterprise network-attached storage for your home, office, and cloud." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { truenasIntegration } from '.'; -import { systemResourcesWidget } from '@site/docs/widgets/system-resources'; -import { healthMonitoringWidget } from '@site/docs/widgets/health-monitoring'; -import Alert from '@theme/Admonition'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { truenasIntegration } from "."; +import { systemResourcesWidget } from "@site/docs/widgets/system-resources"; +import { healthMonitoringWidget } from "@site/docs/widgets/health-monitoring"; +import Alert from "@theme/Admonition"; - - + ### Widgets & Capabilities - + + ### Adding the integration + - TrueNAS only serves its API over HTTPS, so enter the https:// URL of your TrueNAS web interface. If it uses a self-signed certificate (the default), add it under Management > Tools > Certificates so Homarr can establish the connection. + TrueNAS only serves its API over HTTPS, so enter the https:// URL of your TrueNAS web interface. If it + uses a self-signed certificate (the default), add it under{" "} + Management > Tools > Certificates so Homarr can establish the + connection. ### Secrets - - API key authentication is the recommended method. It works across current TrueNAS versions and does not depend on user group membership. - , - steps: [ - "In the TrueNAS web interface, click your user avatar in the top-right corner and select \"API Keys\".", - "Click \"Add\", give the key a name such as \"Homarr\", and confirm.", - "Copy the generated key immediately - TrueNAS only shows it once - and paste it as the API Key when creating the integration in Homarr.", - ], + credentials: ["apiKey"], + header: ( + + API key authentication is the recommended method. It works across current TrueNAS versions and does not depend + on user group membership. + + ), + steps: [ + 'In the TrueNAS web interface, click your user avatar in the top-right corner and select "API Keys".', + 'Click "Add", give the key a name such as "Homarr", and confirm.', + "Copy the generated key immediately - TrueNAS only shows it once - and paste it as the API Key when creating the integration in Homarr.", + ], }, { - credentials: ['username', 'password'], - steps: [ - "In the TrueNAS web interface, go to \"Credentials\" > \"Users\" > \"Add\" and create a user with a secure password.", - "Grant the user administrative access so Homarr can read system, pool, and reporting data.", - "Save the user and create the integration in Homarr with these credentials.", - ], - body: - The account must have administrative API access. The auxiliary_administrator group was removed in TrueNAS 25.10; on that version or newer, use API key authentication instead, or assign the user a full-admin role. - , + credentials: ["username", "password"], + steps: [ + 'In the TrueNAS web interface, go to "Credentials" > "Users" > "Add" and create a user with a secure password.', + "Grant the user administrative access so Homarr can read system, pool, and reporting data.", + "Save the user and create the integration in Homarr with these credentials.", + ], + body: ( + + The account must have administrative API access. The auxiliary_administrator group was removed in + TrueNAS 25.10; on that version or newer, use API key authentication instead, or assign the user a full-admin + role. + + ), }, -]} /> + ]} +/> diff --git a/apps/docs/docs/integrations/umami/index.mdx b/apps/docs/docs/integrations/umami/index.mdx index 8aeb3c194..6aa5ddced 100644 --- a/apps/docs/docs/integrations/umami/index.mdx +++ b/apps/docs/docs/integrations/umami/index.mdx @@ -1,53 +1,52 @@ --- -title: 'Umami' -description: 'Privacy-focused, open-source web analytics' +title: "Umami" +description: "Privacy-focused, open-source web analytics" hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { umamiIntegration } from '.'; -import { umamiWidget } from '../../widgets/umami'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { umamiIntegration } from "."; +import { umamiWidget } from "../../widgets/umami"; - + ### Widgets & Capabilities - + + ### Adding the integration + :::tip URL configuration + - **Umami Cloud:** Use `https://api.umami.is/v1` - **Self-hosted:** Use `http://your-umami-host:3000/api` -::: + ::: ### Secrets - + + diff --git a/apps/docs/docs/integrations/unifi-controller/index.mdx b/apps/docs/docs/integrations/unifi-controller/index.mdx index 134ce91b8..f25cecaac 100644 --- a/apps/docs/docs/integrations/unifi-controller/index.mdx +++ b/apps/docs/docs/integrations/unifi-controller/index.mdx @@ -1,40 +1,40 @@ --- -title: 'Unifi Controller' +title: "Unifi Controller" description: "Unifi Controller is a network management platform for Unifi devices." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import {IntegrationSecrets} from '@site/src/components/integrations/secrets'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; import { IconTopologyFull } from "@tabler/icons-react"; -import { unifiControllerIntegration } from '.'; -import { networkControllerSummaryWidget } from '@site/docs/widgets/network-controller-summary'; -import { networkControllerStatusWidget } from '@site/docs/widgets/network-controller-status'; +import { unifiControllerIntegration } from "."; +import { networkControllerSummaryWidget } from "@site/docs/widgets/network-controller-summary"; +import { networkControllerStatusWidget } from "@site/docs/widgets/network-controller-status"; - - + This integration is using the [node-unifi](https://www.npmjs.com/package/node-unifi) library under the hood to connect to the Unifi Controller. Therfore it should support CloudKey Gen1, CloudKey Gen2, UnifiOS-based UDM-Pro controllers as well as self-hosted UniFi controllers. ### Widgets & Capabilities + ### Adding the integration + ### Secrets - \ No newline at end of file + + diff --git a/apps/docs/docs/integrations/unraid/index.mdx b/apps/docs/docs/integrations/unraid/index.mdx index bd1546a78..a629fe844 100644 --- a/apps/docs/docs/integrations/unraid/index.mdx +++ b/apps/docs/docs/integrations/unraid/index.mdx @@ -1,59 +1,71 @@ --- -title: 'Unraid' +title: "Unraid" description: "Versatile operating system that lets you run applications, virtual machines, and storage devices on your server" hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { unraidIntegration } from '.'; -import { systemResourcesWidget } from '@site/docs/widgets/system-resources'; -import { healthMonitoringWidget } from '@site/docs/widgets/health-monitoring'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { unraidIntegration } from "."; +import { systemResourcesWidget } from "@site/docs/widgets/system-resources"; +import { healthMonitoringWidget } from "@site/docs/widgets/health-monitoring"; import imgManagement from "./imgs/unraid-management.png"; import imgCreateApiKey from "./imgs/unraid-create-api-key.png"; import imgCopyApiKey from "./imgs/copy-api-key.png"; import imgSelectApikeyPreset from "./imgs/unraid-select-api-key-preset.png"; - - + ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets -Are you using Unraid pre-7.2? If yes, please first follow the steps here to install the Unraid API., - <> - Open the settings and open the management access
    - Unraid management - , - <> - Click on the "API Keys" tab at the top and click on the "create API key" button. Choose "Create new"
    - Unraid management - , - <> - Enter a suitable name for your API key (e.g. Homarr), select the "Viewer" preset and submit the modal.
    - Unraid management - , - <> - Last, copy the API key after your API key has been created
    - Unraid management - - ], -}]} /> \ No newline at end of file + + + Are you using Unraid pre-7.2? If yes, please first{" "} + + follow the steps here to install the Unraid API + + . + , + <> + Open the settings and open the management access +
    + Unraid management + , + <> + + Click on the "API Keys" tab at the top and click on the "create API key" button. Choose "Create new" + +
    + Unraid management + , + <> + + Enter a suitable name for your API key (e.g. Homarr), select the "Viewer" preset and submit the modal. + +
    + Unraid management + , + <> + Last, copy the API key after your API key has been created +
    + Unraid management + , + ], + }, + ]} +/> diff --git a/apps/docs/docs/integrations/uptime-kuma/index.mdx b/apps/docs/docs/integrations/uptime-kuma/index.mdx index 63e6df82b..14834969f 100644 --- a/apps/docs/docs/integrations/uptime-kuma/index.mdx +++ b/apps/docs/docs/integrations/uptime-kuma/index.mdx @@ -1,43 +1,42 @@ --- -title: 'Uptime Kuma' +title: "Uptime Kuma" description: "Uptime Kuma is a self-hosted monitoring tool that tracks the availability of your services and websites." hide_title: true --- -import { IntegrationHeader } from '@site/src/components/integrations/header'; -import { IntegrationCapabilites } from '@site/src/components/integrations/widgets'; -import { AddingIntegration } from '@site/src/components/integrations/adding'; -import { IntegrationSecrets } from '@site/src/components/integrations/secrets'; -import { uptimeKumaIntegration } from '.'; -import { uptimeKumaWidget } from '@site/docs/widgets/uptime-kuma'; +import { IntegrationHeader } from "@site/src/components/integrations/header"; +import { IntegrationCapabilites } from "@site/src/components/integrations/widgets"; +import { AddingIntegration } from "@site/src/components/integrations/adding"; +import { IntegrationSecrets } from "@site/src/components/integrations/secrets"; +import { uptimeKumaIntegration } from "."; +import { uptimeKumaWidget } from "@site/docs/widgets/uptime-kuma"; - - + Uptime Kuma monitors the availability of your services and provides uptime statistics through its status page API. ### Widgets & Capabilities - + + ### Adding the integration + ### Secrets - + ], + }, + ]} +/> :::tip If you don't specify a slug, Homarr will use `default` as the status page slug. diff --git a/apps/docs/docs/management/backup.mdx b/apps/docs/docs/management/backup.mdx index ef57ed5f7..1c86837a9 100644 --- a/apps/docs/docs/management/backup.mdx +++ b/apps/docs/docs/management/backup.mdx @@ -24,10 +24,10 @@ Navigate to `Management` → `Tools` → `Backup`. You must have **admin** permi Click the **Export** button in the export card. You'll be prompted to type `I understand` to confirm. Once confirmed, a ZIP file downloads containing: -| File | Description | -| -------------------- | ------------------------------------------------------------------- | -| `db.sqlite` | Full SQLite database with all entities | -| `metadata.json` | Backup metadata: Homarr version, creation timestamp, encryption key | +| File | Description | +| --------------- | ------------------------------------------------------------------- | +| `db.sqlite` | Full SQLite database with all entities | +| `metadata.json` | Backup metadata: Homarr version, creation timestamp, encryption key | The backup contains the complete database. It includes Custom Widgets and all other Homarr configuration. diff --git a/apps/docs/docs/management/certificates/index.mdx b/apps/docs/docs/management/certificates/index.mdx index cceaa54fd..aa843bfe0 100644 --- a/apps/docs/docs/management/certificates/index.mdx +++ b/apps/docs/docs/management/certificates/index.mdx @@ -7,27 +7,29 @@ tags: --- # Certificates -On this page you can manage your trusted certificates. + +On this page you can manage your trusted certificates. For example if you use a self signed certificate for one of the integrations you want to connect, you can add it here. -Below you can see a screenshot of the certificates page. -The items show the subject, filename and when it expires. +Below you can see a screenshot of the certificates page. +The items show the subject, filename and when it expires. The color of the icon indicates how long it is valid. ![](./img/screenshot.png) -| Color | Meaning | -| --- | --- | -| 🟩 Green | Valid for more than 30 days | +| Color | Meaning | +| --------- | --------------------------- | +| 🟩 Green | Valid for more than 30 days | | 🟨 Yellow | Valid for less than 30 days | -| 🟧 Orange | Valid for less than a week | -| 🟥 Red | Valid for less than a day | - +| 🟧 Orange | Valid for less than a week | +| 🟥 Red | Valid for less than a day | ## Opening the certificates page -Navigate to ``Management`` > ``Tools`` > ``Certificates``. + +Navigate to `Management` > `Tools` > `Certificates`. ## Add a certificate + To add a certificate click on the "Add certificate" button. ![](./img/add-button.png) @@ -62,4 +64,4 @@ Below you can find instructions for some of the integrations. Since version 6 of Pi-hole, the web interface can be accessed through HTTPS. The certificate can be found in the path `/etc/pihole/tls_ca.crt`. To add the certificate, this file needs to be copied and uploaded to Homarr. -You can find more details regarding SSL / TLS for Pi-hole [here](https://docs.pi-hole.net/api/tls/). \ No newline at end of file +You can find more details regarding SSL / TLS for Pi-hole [here](https://docs.pi-hole.net/api/tls/). diff --git a/apps/docs/docs/management/integrations/index.mdx b/apps/docs/docs/management/integrations/index.mdx index 51b3424d3..de819e692 100644 --- a/apps/docs/docs/management/integrations/index.mdx +++ b/apps/docs/docs/management/integrations/index.mdx @@ -6,11 +6,13 @@ tags: --- # Integrations + Integrations are connections to supported third party applications. This page will describe the process of managing integrations but the process may vary depending on your specific integration. Check [the available integrations](/docs/category/integrations) for further information. ## Create an integration + To create an integration, you can choose the supported application from the dropdown at the top right: ![](./img/create-integration-dropdown.png) @@ -20,19 +22,24 @@ Next, you'll need to fill out the required fields to configure the integration: ![](./img/form-create-integration.png) ### Name + Must be at least 1 character long, can be chosen freely. ### Url + This must be the base URL of the application where Homarr should connect to. A few examples for this field include: + - http://sabnzbd.example.com - https://example.com/sabnzbd You must not append any path after the base URL. Some examples for incorrect usage: + - http://sabnzbd.example.com/settings - https://example.com/sabnzbd/settings ### Secrets + An integration may or may not require secrets to function. To process to obtain them is usually [documented in the integration pages](/docs/category/integrations). Secrets are encrypted using a symmetric encryption and stored in the database. @@ -47,6 +54,7 @@ If you already have an application created, you can also link it to the integrat On the edit page you can always change or remove the linked application. ### Testing and saving integration + It is not allowed to create an integration without passing the test. This is to ensure that you minimize the amount of broken applications on your Homarr instance. The test and create button will perform a network request to the application and authenticate if required. @@ -62,6 +70,7 @@ On the edit page of an integration, you can manage which users / groups can ![](./img/integration-permissions.png) ## Troubleshooting connection + The connection to your integrations can fail due to many factors. Most of the time it should show you the reason why it failed. If it doesn't, you can follow these steps to troubleshoot the issue: @@ -70,23 +79,23 @@ If it doesn't, you can follow these steps to troubleshoot the issue: - The secrets must be correct and have the correct permissions. 2. If you use https to connect to the application, check the chapter below about [certificate issues](#certificate-issues). 3. Check whether you followed the Homarr documentation and didn't skip any steps. -This is the most often mistake that create many noisy support requests and following all steps will often resolve the problems. + This is the most often mistake that create many noisy support requests and following all steps will often resolve the problems. 4. Check Homarr's logs for more information. As we have no control over breaking changes in upstream APIs and third party software, -they can break without notice in unexpected ways which can also lead to errors within Homarr. In such case, these occurrences must be reported -and fixed within the source code of Homarr. -5. Check whether the host can reach the destination hostname / IP using ``ping`` and ``curl`` or ``wget`` afterward. -Execute this command on the host machine, not inside containers, to check whether it can connect or not. + they can break without notice in unexpected ways which can also lead to errors within Homarr. In such case, these occurrences must be reported + and fixed within the source code of Homarr. +5. Check whether the host can reach the destination hostname / IP using `ping` and `curl` or `wget` afterward. + Execute this command on the host machine, not inside containers, to check whether it can connect or not. 6. Check whether the container / pod can reach the destination hostname / IP. Execute the same commands in the shell inside the container / pod. 7. Check your reverse proxy / authentication proxy logs for failures / hints 8. Check your security log of tunnels and VPNs 9. Check your router for security events 10. Check your VLAN configuration and firewall rules 11. Check your DNS settings for the host machine and the containers / pods and whether they can resolve the hostnames -12. Check throughput and stability of your network connection using ``iperf3`` +12. Check throughput and stability of your network connection using `iperf3` 13. Check syslog / drivers of your OS for hints 14. Check logs of your destination applications (eg. SABnzbd) 15. Attempt to disable CSRF / tamper protections when absolutely no other workaround available -> this comes with some security implications - be careful! -Re-enable if this didn't fix the issue. + Re-enable if this didn't fix the issue. If none of these troubleshooting steps worked, you can request support from our team in Discord or GitHub. @@ -95,4 +104,4 @@ If none of these troubleshooting steps worked, you can request support from our If you are using a self-signed certificate you'll need to add it to the [trusted certificates](../certificates) in Homarr. Most of the time you should also get a button to add the certificate automatically when you try to connect to the integration. Please check that the certificate is the one you are expecting to prevent Man in the Middle attacks. -For some integrations, you can find a guide on how to retrieve the certificate [here](../certificates/#obtaining-certificates). \ No newline at end of file +For some integrations, you can find a guide on how to retrieve the certificate [here](../certificates/#obtaining-certificates). diff --git a/apps/docs/docs/management/media/index.mdx b/apps/docs/docs/management/media/index.mdx index 090a6559b..e55a05659 100644 --- a/apps/docs/docs/management/media/index.mdx +++ b/apps/docs/docs/management/media/index.mdx @@ -7,7 +7,8 @@ tags: --- # Media + Using the media feature, you can upload images for custom icons to Homarr. Images will be stored in the database. They can be selected in the [icon picker](/docs/advanced/icons). -![](./img/screenshot.png) \ No newline at end of file +![](./img/screenshot.png) diff --git a/apps/docs/docs/management/search-engines/index.mdx b/apps/docs/docs/management/search-engines/index.mdx index ef9fba2a3..07f2f3098 100644 --- a/apps/docs/docs/management/search-engines/index.mdx +++ b/apps/docs/docs/management/search-engines/index.mdx @@ -6,6 +6,7 @@ tags: --- # Search Engines + Using the search engines, terms can be quickly searched simply by opening the search bar at the top or using the keyboard shortcut `CTRL + K`. ![](./img/search-engines.png) @@ -13,31 +14,36 @@ Using the search engines, terms can be quickly searched simply by opening the se You can add any search engine that has a search URL that accepts a search term as a parameter. ## Create search engine + To create a custom search engine, you can click the button at the top of the page. ![](./img/create-search-engine.png) ### Name + The name can be chosen freely. It will be displayed in the search box popover. ### Short + Prefix that is used to choose the search engine in the popover using the keyboard. -It is recommended that this value is kept short (for example ``g`` for Google and ``e`` for Ecosia). +It is recommended that this value is kept short (for example `g` for Google and `e` for Ecosia). ### Configuration In the configuration section you can select between two options. #### Search template -The template must be a valid URL that incldues the ``%s`` placeholder. -Homarr will replace the ``%s`` with the term that the user entered. + +The template must be a valid URL that incldues the `%s` placeholder. +Homarr will replace the `%s` with the term that the user entered. ##### Examples -- Google: ``https://www.google.com/search?q=%s`` -- Ecosia: ``https://www.ecosia.org/search?q=%s`` -- DuckDuckGo: ``https://duckduckgo.com/?q=%s`` -- Bing: ``https://www.bing.com/search?q=%s`` -- YouTube: ``https://www.youtube.com/results?search_query=%s`` + +- Google: `https://www.google.com/search?q=%s` +- Ecosia: `https://www.ecosia.org/search?q=%s` +- DuckDuckGo: `https://duckduckgo.com/?q=%s` +- Bing: `https://www.bing.com/search?q=%s` +- YouTube: `https://www.youtube.com/results?search_query=%s` ## Media request search @@ -45,12 +51,14 @@ Jellyseerr, Overseerr, and Seerr integrations have a dedicated **Spotlight mode* This mode does not require creating a search engine entry - it is available automatically when you have a compatible integration configured. You can access it from: + - The **Modes list** in Spotlight (opened with `CTRL + K`) - The **search button** on the media request list and stats widgets ### Availability indicators Search results display colored status badges showing the media's current state in your integration: + - **Available** - fully available in your media library - **Partial** - some content (e.g. seasons) is available - **Processing** - currently being downloaded or processed diff --git a/apps/docs/docs/management/tasks/index.mdx b/apps/docs/docs/management/tasks/index.mdx index bd9395610..c47eb1a74 100644 --- a/apps/docs/docs/management/tasks/index.mdx +++ b/apps/docs/docs/management/tasks/index.mdx @@ -38,6 +38,3 @@ You can disable a task by clicking the "Power" button, which will change it to a When a task is disabled, it will not run automatically according to its schedule. You can enable it again by clicking the "Power-Off" button, which will change it back to a "Power" button. Running a task manually is still possible when it is disabled. - - - diff --git a/apps/docs/docs/management/users/index.mdx b/apps/docs/docs/management/users/index.mdx index f3f827a73..a7181a1f5 100644 --- a/apps/docs/docs/management/users/index.mdx +++ b/apps/docs/docs/management/users/index.mdx @@ -20,8 +20,10 @@ Homarr supports [single sign on for easier and seamless authentication](/docs/ad ::: ## Manage users + ### Creating new users -To create new users, you must navigate to ``Mangement`` > ``Users`` > ``Manage`` and click on the create button to create a new one: \ + +To create new users, you must navigate to `Mangement` > `Users` > `Manage` and click on the create button to create a new one: \ ![](./img/button-create-user.png) You'll be guided through the process using a wizard: \ @@ -35,25 +37,31 @@ After you completed all steps, you can start over to create another user or choo ![](./img/wizard-complete.png) ## Editing a user -A user can be edited on the ``Mangement`` > ``Users`` > ``Manage`` page when you click on the username. + +A user can be edited on the `Mangement` > `Users` > `Manage` page when you click on the username. Here you'll have access to two tabs: **General** and **Security**. ### General tab + #### Username + This is the unique username that identifies this user. It can be changed to anything but must be at least 3 characters long with a limit of 255 characters. This name will be used for the credential's login. It is also used to auto-generate profile pictures if no picture was uploaded. #### E-Mail + This is the unique email of the user. As of 1.0, it is not used for any notifications and only for organizational purposes. This field is optional. #### Language + This is the currently selected language of the user. Changing the language will change all text & the right to left (RTL) feature in some languages. By default, Homarr will choose English as the default language. Here you can override the language for this specific user. The user may choose a different language by themselves afterward. #### Home board + Optional field for the board that is loaded by default if no board was specified in the URL. Only boards that the user has permission to are being shown. @@ -70,6 +78,7 @@ Choose the first day of the week for the user. This will affect the calendar wid Option to show icons for status check instead of colored dots. #### Delete + This action will permanently delete the user from the database, including any preferences they set. If the user created boards, they wil **not** be deleted. This action is **irreversible** and cannot be undone. All data is permanently lost. @@ -77,6 +86,7 @@ This action is **irreversible** and cannot be undone. All data is permanently lo ### Security tab #### Change password + Here the password for this user can be changed. It must also meet the password requirements of Homarr. The password is stored as an encrypted value with a salt in the database - this means the value cannot be read out from the database afterward. @@ -85,50 +95,63 @@ This functionality can also be useful to lock out a bad actor without tampering For security reasons, you must confirm the password a second time. ## Groups + Using groups, you can manage the permissions of users. Members can be directly assigned to groups. -A user will have the permissions of all groups they are a member of. +A user will have the permissions of all groups they are a member of. Some permissions include other permissions, for example the "Full board access" permission includes all board permissions. By default, a group called "credentials-admin" will be generated where the first user will be placed. However, you can create as many groups as you'd like. ### Creating a group -Click on the button ``New group`` to create a new one. + +Click on the button `New group` to create a new one. Homarr will prompt you for a group name. ### Managing a group + #### General tab + ##### Name + Name for the group that can be chosen freely. ##### Transfer ownership + Every group has an owner. Using this button, the ownership can be transferred to a different user. Group ownership is only organizational. ##### Delete + Deletes the group permanently. This change is irreversible. #### Settings tab + In this tab, you can configure some settings for the group. Those settings will be prioritized by the order of the groups on the groups list page ##### Priorization + The higher a group in the list, the higher the priority. This means that if a user is in multiple groups, the permissions of the group with the highest priority will be used. It will always fallback to the everyone group if no other group permissions are set. ![](./img/groups-list.png) ##### Boards + Configure board settings for a group. User specific settings will override group settings. ###### Home board + The board that is loaded by default if no board was specified in the URL. ###### Mobile board + The board that is loaded by default on mobile devices. #### Members tab + In this tab, you can assign users to the group. With the button at the top right, a new member can be added to the group: ![](./img/add-group-member.png) @@ -138,6 +161,7 @@ Members can be removed from the group using the remove button at the end: ![](./img/remove-group-member.png) #### Permissions tab + In this tab, you manage what permissions the members of this group will have. Currently, the following permissions are available: @@ -163,9 +187,11 @@ When you changed permissions, you must confirm your changes by clicking the bann ![](./img/changing-group-permissions.png) #### Special groups + Currently one special group exists. This group is `everyone`. It automatically adds every user that is known to Homarr to its members. Neither its name nor its members can be changed. ## Invites + Invites are an easy-to-use system to allow users to onboard themselves. It is useful in companies or large-scale homelabs where many users must be onboarded at the same time. You should trust the end user that they enter their data truthfully as the administrator will not confirm the entered data after the user has completed the onboarding. @@ -174,6 +200,7 @@ This feature can only be used when credentials authentication is enabled. An invitation link can be used indefinitely. ### Creating an invitation + Click on the button: ![](./img/create-invitation-button.png) @@ -184,14 +211,15 @@ The default is 4 hours in the future. ![](./img/invitation-expiry-date.png) -Next, click ``Create`` and you'll get a confirmation with an ID, Token and a link that can be copied: +Next, click `Create` and you'll get a confirmation with an ID, Token and a link that can be copied: ![](./img/create-invitation-confirmation.png) Both ID and Token are also in the URL. Ensure that you copy either ID & Token or the URL - it will never be shown again. -Clicking the ``Copy & close`` button will copy the URL to your clipboard. +Clicking the `Copy & close` button will copy the URL to your clipboard. ### Self-onboarding + Clicking the invitation link will bring up a form with fields for the username and password: ![](./img/invitation-self-onboarding.png) @@ -199,6 +227,7 @@ Clicking the invitation link will bring up a form with fields for the username a At the bottom of the page, the user who created the invitation can be seen. ### Deleting an invitation + If an invitation needs to be deleted before or after the expiry, the delete button at the end of the table can be used: ![](./img/deleting-invitation.png) diff --git a/apps/docs/docs/widgets/anchor-note/index.mdx b/apps/docs/docs/widgets/anchor-note/index.mdx index 453a5b51c..db925e95a 100644 --- a/apps/docs/docs/widgets/anchor-note/index.mdx +++ b/apps/docs/docs/widgets/anchor-note/index.mdx @@ -1,35 +1,35 @@ --- -title: 'Anchor Note' -description: 'Display and edit a selected note from Anchor' +title: "Anchor Note" +description: "Display and edit a selected note from Anchor" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { anchorNoteWidget } from '.'; -import { anchorIntegration } from '@site/docs/integrations/anchor'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { anchorNoteWidget } from "."; +import { anchorIntegration } from "@site/docs/integrations/anchor"; - - + The Anchor Note widget shows a selected note from your Anchor integration. If your note permissions allow it, you can also edit the note title and content directly in Homarr. ### Screenshots -import anchorNoteWidgetScreenshot from './img/widget.png'; +import anchorNoteWidgetScreenshot from "./img/widget.png"; anchor-note-widget ### Supported Integrations - + ### Interactions diff --git a/apps/docs/docs/widgets/app/index.mdx b/apps/docs/docs/widgets/app/index.mdx index ec62d862e..77d8ec878 100644 --- a/apps/docs/docs/widgets/app/index.mdx +++ b/apps/docs/docs/widgets/app/index.mdx @@ -1,30 +1,26 @@ --- -title: 'App' -description: 'Embeds an app into the board.' +title: "App" +description: "Embeds an app into the board." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { appWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { appWidget } from "."; - - + The app widget allows you to add a link to an application or a website that you want to access quickly from your Homarr board. It also supports a status check to indicate whether Homarr can reach the application or website. ### Screenshots -import githubApp from './img/github.png'; -import jellyseerrApp from './img/jellyseerr-description-tooltip.png'; -import piHoleApp from './img/pi-hole-ping-icon.png'; +import githubApp from "./img/github.png"; +import jellyseerrApp from "./img/jellyseerr-description-tooltip.png"; +import piHoleApp from "./img/pi-hole-ping-icon.png"; -
    +
    app github with-status-check app pi-hole with-status-check status-check-icon app jellyseerr with-description-tooltip @@ -34,4 +30,5 @@ import piHoleApp from './img/pi-hole-ping-icon.png'; ### Configuration + diff --git a/apps/docs/docs/widgets/bazarr/index.mdx b/apps/docs/docs/widgets/bazarr/index.mdx index e262cfa75..6a87a4e0f 100644 --- a/apps/docs/docs/widgets/bazarr/index.mdx +++ b/apps/docs/docs/widgets/bazarr/index.mdx @@ -1,26 +1,23 @@ --- -title: 'Bazarr' -description: 'Displays missing subtitle counts and health indicators from your Bazarr instance.' +title: "Bazarr" +description: "Displays missing subtitle counts and health indicators from your Bazarr instance." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { bazarrWidget } from '.'; -import { bazarrIntegration } from '@site/docs/integrations/bazarr'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { bazarrWidget } from "."; +import { bazarrIntegration } from "@site/docs/integrations/bazarr"; - + This widget shows subtitle status from your Bazarr instance, including missing episode and movie subtitles, provider issues, and health warnings. ### Screenshots -import widgetOverview from './img/widget-overview.png'; +import widgetOverview from "./img/widget-overview.png";
    bazarr-widget-overview @@ -28,14 +25,19 @@ import widgetOverview from './img/widget-overview.png'; ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/beszel-alerts/index.mdx b/apps/docs/docs/widgets/beszel-alerts/index.mdx index 3a4899d17..4a669f3f4 100644 --- a/apps/docs/docs/widgets/beszel-alerts/index.mdx +++ b/apps/docs/docs/widgets/beszel-alerts/index.mdx @@ -1,22 +1,19 @@ --- -title: 'Beszel Alerts' -description: 'View Beszel alert configurations and history with triggered/ok status indicators.' +title: "Beszel Alerts" +description: "View Beszel alert configurations and history with triggered/ok status indicators." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { beszelAlertsWidget } from '.'; -import { beszelIntegration } from '@site/docs/integrations/beszel'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { beszelAlertsWidget } from "."; +import { beszelIntegration } from "@site/docs/integrations/beszel"; -import beszelAlerts from './img/beszel-alerts.png'; +import beszelAlerts from "./img/beszel-alerts.png"; - + This widget displays your Beszel alert configurations separated by status (triggered and ok). It also shows alert history with timestamps. Alerts are updated in real time via WebSocket subscriptions. @@ -26,14 +23,19 @@ This widget displays your Beszel alert configurations separated by status (trigg ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/beszel-system-grid/index.mdx b/apps/docs/docs/widgets/beszel-system-grid/index.mdx index e3b17623b..993974914 100644 --- a/apps/docs/docs/widgets/beszel-system-grid/index.mdx +++ b/apps/docs/docs/widgets/beszel-system-grid/index.mdx @@ -1,22 +1,19 @@ --- -title: 'Beszel Systems (Grid)' -description: 'Card grid view of all Beszel-monitored systems with real-time metrics.' +title: "Beszel Systems (Grid)" +description: "Card grid view of all Beszel-monitored systems with real-time metrics." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { beszelSystemGridWidget } from '.'; -import { beszelIntegration } from '@site/docs/integrations/beszel'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { beszelSystemGridWidget } from "."; +import { beszelIntegration } from "@site/docs/integrations/beszel"; -import beszelSystemGrid from './img/beszel-system-grid.png'; +import beszelSystemGrid from "./img/beszel-system-grid.png"; - + This widget displays all your Beszel-monitored systems as a responsive card grid. Each card shows real-time metrics like CPU, memory, disk, network, temperature, and more. Cards adapt their layout based on available space. If Beszel reports multiple filesystems, the disk bar exposes a hover breakdown for the root disk and each extra mount. @@ -28,14 +25,19 @@ Select a system card to open the complete statistics view, including system, fil ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/beszel-system-table/index.mdx b/apps/docs/docs/widgets/beszel-system-table/index.mdx index 163d14a2f..9063727fa 100644 --- a/apps/docs/docs/widgets/beszel-system-table/index.mdx +++ b/apps/docs/docs/widgets/beszel-system-table/index.mdx @@ -1,21 +1,17 @@ --- -title: 'Beszel Systems (Table)' -description: 'Table view of all Beszel-monitored systems with sortable columns and status indicators.' +title: "Beszel Systems (Table)" +description: "Table view of all Beszel-monitored systems with sortable columns and status indicators." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { beszelSystemTableWidget } from '.'; -import { beszelIntegration } from '@site/docs/integrations/beszel'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { beszelSystemTableWidget } from "."; +import { beszelIntegration } from "@site/docs/integrations/beszel"; - - + This widget displays all your Beszel-monitored systems in a sortable data table. Each row shows system metrics like CPU, memory, disk, network, temperature, and more. Columns can be toggled on or off, dragged into a different order, and resized from their headers. Column order and widths are saved automatically for each widget. When Beszel reports extra filesystems, the disk column adds a hover breakdown for each mount alongside the root disk. @@ -30,14 +26,19 @@ Select a system row to open the complete statistics view, including system, file ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/bookmarks/index.mdx b/apps/docs/docs/widgets/bookmarks/index.mdx index c3104ad5b..ed8be9bb6 100644 --- a/apps/docs/docs/widgets/bookmarks/index.mdx +++ b/apps/docs/docs/widgets/bookmarks/index.mdx @@ -1,29 +1,25 @@ --- -title: 'Bookmarks' -description: 'Displays multiple app links' +title: "Bookmarks" +description: "Displays multiple app links" hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { bookmarksWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { bookmarksWidget } from "."; - - + The bookmarks widget allows you to display multiple app links in a single widget. You can add links to your favorite applications, websites, or any other resources you want quick access to. ### Screenshots -import gridIconsOnly from './img/grid-icons-only.png'; -import gridWithTitle from './img/grid-with-title.png'; -import verticalListAll from './img/vertical-list-all.png'; -import vericalListSimple from './img/vertical-list-simple.png'; +import gridIconsOnly from "./img/grid-icons-only.png"; +import gridWithTitle from "./img/grid-with-title.png"; +import verticalListAll from "./img/vertical-list-all.png"; +import vericalListSimple from "./img/vertical-list-simple.png";
    @@ -33,12 +29,13 @@ import vericalListSimple from './img/vertical-list-simple.png'; bookmarks grid with-title bookmarks vertical-list all-elements -
    +
    ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/calendar/index.mdx b/apps/docs/docs/widgets/calendar/index.mdx index 5db4e9b30..f84a0daae 100644 --- a/apps/docs/docs/widgets/calendar/index.mdx +++ b/apps/docs/docs/widgets/calendar/index.mdx @@ -1,65 +1,71 @@ --- -title: 'Calendar' -description: 'Display events from your integrations in a calendar view within a certain relative time period' +title: "Calendar" +description: "Display events from your integrations in a calendar view within a certain relative time period" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { calendarWidget } from '.'; -import { lidarrIntegration } from '@site/docs/integrations/lidarr'; -import { nextcloudIntegration } from '@site/docs/integrations/nextcloud'; -import { homeAssistantIntegration } from '@site/docs/integrations/home-assistant'; -import { radarrIntegration } from '@site/docs/integrations/radarr'; -import { readarrIntegration } from '@site/docs/integrations/readarr'; -import { sonarrIntegration } from '@site/docs/integrations/sonarr'; -import { icalIntegration } from '@site/docs/integrations/ical'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { calendarWidget } from "."; +import { lidarrIntegration } from "@site/docs/integrations/lidarr"; +import { nextcloudIntegration } from "@site/docs/integrations/nextcloud"; +import { homeAssistantIntegration } from "@site/docs/integrations/home-assistant"; +import { radarrIntegration } from "@site/docs/integrations/radarr"; +import { readarrIntegration } from "@site/docs/integrations/readarr"; +import { sonarrIntegration } from "@site/docs/integrations/sonarr"; +import { icalIntegration } from "@site/docs/integrations/ical"; - - + The calendar widget shows a month view of events from different integrations. It allows you to view calendar events or upcoming releases from your media managers. ### Screenshots -import popover from './img/popover.png'; -import withIntegrations from './img/with-integrations.png'; -import withoutIntegrations from './img/without-integrations.png'; +import popover from "./img/popover.png"; +import withIntegrations from "./img/with-integrations.png"; +import withoutIntegrations from "./img/without-integrations.png"; -
    - calendar with-integrations big-size -
    - calendar popover-details the-mandalorian - calendar without-integrations small-size -
    +
    + calendar with-integrations big-size +
    + calendar popover-details the-mandalorian + calendar without-integrations small-size +
    ### Supported Integrations - + ### Interactions @@ -72,4 +78,5 @@ import withoutIntegrations from './img/without-integrations.png'; ### Configuration + diff --git a/apps/docs/docs/widgets/clock/index.mdx b/apps/docs/docs/widgets/clock/index.mdx index efdab31d4..0c41d7ae7 100644 --- a/apps/docs/docs/widgets/clock/index.mdx +++ b/apps/docs/docs/widgets/clock/index.mdx @@ -1,38 +1,34 @@ --- -title: 'Date and time' -description: 'Displays the current date and time.' +title: "Date and time" +description: "Displays the current date and time." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { clockWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { clockWidget } from "."; - - + The clock widget displays the current date and time in a customizable format. ### Screenshots -import localClock from './img/local.png'; -import londonClock from './img/london-with-seconds.png'; -import tokyoClock from './img/tokyo-12-hour.png'; +import localClock from "./img/local.png"; +import londonClock from "./img/london-with-seconds.png"; +import tokyoClock from "./img/tokyo-12-hour.png"; -
    - clock format-24-hours timezone-local - clock format-24-hours with-seconds timezone-london - clock format-12-hours timezone-tokyo +
    + clock format-24-hours timezone-local + clock format-24-hours with-seconds timezone-london + clock format-12-hours timezone-tokyo
    - ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/coolify/index.mdx b/apps/docs/docs/widgets/coolify/index.mdx index 23eb6ba03..807ad502d 100644 --- a/apps/docs/docs/widgets/coolify/index.mdx +++ b/apps/docs/docs/widgets/coolify/index.mdx @@ -1,28 +1,29 @@ --- -title: 'Coolify' -description: 'Overview of your Coolify instance with servers, applications, and services.' +title: "Coolify" +description: "Overview of your Coolify instance with servers, applications, and services." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { coolifyWidget } from '.'; -import { coolifyIntegration } from '@site/docs/integrations/coolify'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { coolifyWidget } from "."; +import { coolifyIntegration } from "@site/docs/integrations/coolify"; - + The Coolify widget displays a compact overview of your Coolify instance. It can show servers, applications, and services with status indicators, project and environment context, direct links to Coolify, and the installed Coolify version. ### Supported Integrations - + ### Adding the widget @@ -34,11 +35,11 @@ The Coolify widget displays a compact overview of your Coolify instance. It can ### Sections -| Section | Description | -|---|---| -| **Servers** | Lists Coolify servers, reachability status, and application/service counts per server. | +| Section | Description | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| **Servers** | Lists Coolify servers, reachability status, and application/service counts per server. | | **Applications** | Lists applications with runtime status, project and environment context, public URL links, Coolify dashboard links, and log links. | -| **Services** | Lists services with runtime status, project and environment context, public URL links, Coolify dashboard links, and log links. | +| **Services** | Lists services with runtime status, project and environment context, public URL links, Coolify dashboard links, and log links. | ### Notes diff --git a/apps/docs/docs/widgets/dns-hole-controls/index.mdx b/apps/docs/docs/widgets/dns-hole-controls/index.mdx index cea517545..74c8cc88b 100644 --- a/apps/docs/docs/widgets/dns-hole-controls/index.mdx +++ b/apps/docs/docs/widgets/dns-hole-controls/index.mdx @@ -1,47 +1,48 @@ --- -title: 'DNS Hole Controls' +title: "DNS Hole Controls" description: "Control PiHole or AdGuard from your dashboard." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { dnsHoleControlsWidget } from '.'; -import { adguardHomeIntegration } from '@site/docs/integrations/adguard-home'; -import { piHoleIntegration } from '@site/docs/integrations/pi-hole'; -import { technitiumDnsIntegration } from '@site/docs/integrations/technitium-dns'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { dnsHoleControlsWidget } from "."; +import { adguardHomeIntegration } from "@site/docs/integrations/adguard-home"; +import { piHoleIntegration } from "@site/docs/integrations/pi-hole"; +import { technitiumDnsIntegration } from "@site/docs/integrations/technitium-dns"; - - + This widget allows you to enable or disable your DNS Hole. ### Screenshots -import bigSize from './img/big.png'; -import smallSize from './img/small.png'; - +import bigSize from "./img/big.png"; +import smallSize from "./img/small.png"; dns-hole-controls big-size with-toggle-all-buttons dns-hole-controls small-size no-toggle-all-buttons ### Supported Integrations - + ### Interactions @@ -54,4 +55,5 @@ import smallSize from './img/small.png'; ### Configuration + diff --git a/apps/docs/docs/widgets/dns-hole-summary/index.mdx b/apps/docs/docs/widgets/dns-hole-summary/index.mdx index 1dcb123da..99fd69dbd 100644 --- a/apps/docs/docs/widgets/dns-hole-summary/index.mdx +++ b/apps/docs/docs/widgets/dns-hole-summary/index.mdx @@ -1,38 +1,34 @@ --- -title: 'DNS Hole Summary' +title: "DNS Hole Summary" description: "Displays the summary of your DNS Hole." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { dnsHoleSummaryWidget } from '.'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { dnsHoleSummaryWidget } from "."; - - + This widget allows you to display statistics about your DNS Hole like total queries, blocked queries, and more. ### Screenshots -import gridLayout from './img/grid.png'; -import verticalLayout from './img/vertical.png'; -import horizontalLayout from './img/horizontal.png'; -import { adguardHomeIntegration } from '@site/docs/integrations/adguard-home'; -import { piHoleIntegration } from '@site/docs/integrations/pi-hole'; -import { technitiumDnsIntegration } from '@site/docs/integrations/technitium-dns'; +import gridLayout from "./img/grid.png"; +import verticalLayout from "./img/vertical.png"; +import horizontalLayout from "./img/horizontal.png"; +import { adguardHomeIntegration } from "@site/docs/integrations/adguard-home"; +import { piHoleIntegration } from "@site/docs/integrations/pi-hole"; +import { technitiumDnsIntegration } from "@site/docs/integrations/technitium-dns"; -
    +
    grid-layout pi-hole-colors -
    +
    vertical-layout no-colors horizontal-layout pi-hole-colors
    @@ -40,17 +36,24 @@ import { technitiumDnsIntegration } from '@site/docs/integrations/technitium-dns ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/docker-containers/index.mdx b/apps/docs/docs/widgets/docker-containers/index.mdx index 3dfa40d7f..1959ca959 100644 --- a/apps/docs/docs/widgets/docker-containers/index.mdx +++ b/apps/docs/docs/widgets/docker-containers/index.mdx @@ -1,24 +1,20 @@ --- -title: 'Docker stats' -description: 'Stats of your containers' +title: "Docker stats" +description: "Stats of your containers" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { dockerContainersWidget } from '.'; -import { dockerIntegration } from '@site/docs/integrations/docker'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { dockerContainersWidget } from "."; +import { dockerIntegration } from "@site/docs/integrations/docker"; - - + This widget displays the resource usage of your Docker containers and allows you to manage them. @@ -28,15 +24,19 @@ This widget can only be used with administrator privileges. ### Screenshots -import dockerTable from './img/table.png'; +import dockerTable from "./img/table.png"; docker-stats table docker-containers ### Supported Integrations - + ### Interactions diff --git a/apps/docs/docs/widgets/downloads/index.mdx b/apps/docs/docs/widgets/downloads/index.mdx index b9c8233b3..cb1aee0a2 100644 --- a/apps/docs/docs/widgets/downloads/index.mdx +++ b/apps/docs/docs/widgets/downloads/index.mdx @@ -1,6 +1,6 @@ --- -title: 'Download Client' -description: 'Allows you to view and manage your Downloads from both Torrent and Usenet clients.' +title: "Download Client" +description: "Allows you to view and manage your Downloads from both Torrent and Usenet clients." hide_title: true --- @@ -17,11 +17,7 @@ import { WidgetHeader } from "@site/src/components/widgets/header"; import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { downloadsWidget } from "."; - - + This widget displays a list of torrents or usenet-articles that are currently being downloaded, along with their progress and other relevant information. It supports 7 download client integrations and provides a rich, responsive table interface. @@ -104,4 +100,5 @@ import contextMenuImg from "./img/context-menu.png"; ### Configuration + diff --git a/apps/docs/docs/widgets/firewall/index.mdx b/apps/docs/docs/widgets/firewall/index.mdx index 95aaa56d6..425ab8854 100644 --- a/apps/docs/docs/widgets/firewall/index.mdx +++ b/apps/docs/docs/widgets/firewall/index.mdx @@ -1,22 +1,18 @@ --- -title: 'Firewall Monitoring' -description: 'Displays a summary of firewalls.' +title: "Firewall Monitoring" +description: "Displays a summary of firewalls." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { firewallWidget } from '.'; -import { opnsenseIntegration } from '../../integrations/opnsense'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { firewallWidget } from "."; +import { opnsenseIntegration } from "../../integrations/opnsense"; - - + ### Screenshots @@ -24,9 +20,13 @@ import { opnsenseIntegration } from '../../integrations/opnsense'; ### Supported Integrations - + ### Adding the widget diff --git a/apps/docs/docs/widgets/iframe/index.mdx b/apps/docs/docs/widgets/iframe/index.mdx index 5be26f3b2..2c183368f 100644 --- a/apps/docs/docs/widgets/iframe/index.mdx +++ b/apps/docs/docs/widgets/iframe/index.mdx @@ -1,19 +1,15 @@ --- -title: 'iFrame' -description: 'Embed any content from the internet. Some websites may restrict access.' +title: "iFrame" +description: "Embed any content from the internet. Some websites may restrict access." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { iframeWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { iframeWidget } from "."; - - + If your application is not supported natively by Homarr, you can integrate it using the iframe widget. It uses the [iframe element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe), @@ -22,8 +18,8 @@ This means, no traffic is routed through Homarr (and the URL must be reachable f ### Screenshots -import wikipediaHomepage from './img/wikipedia.png'; -import youtubeStream from './img/nasa-iss-stream.png'; +import wikipediaHomepage from "./img/wikipedia.png"; +import youtubeStream from "./img/nasa-iss-stream.png";
    iframe wikipedia-homepage @@ -50,12 +46,14 @@ the appropriate headers (such as `X-Frame-Options` or `Content-Security-Policy`) For example, to allow your site to be embedded in iframes from specific domains: **Apache (.htaccess or httpd.conf):** + ```apache Header set Content-Security-Policy "frame-ancestors 'self' https://trusted-domain.com" Header set X-Frame-Options "ALLOW-FROM https://trusted-domain.com" ``` **Nginx:** + ```nginx add_header Content-Security-Policy "frame-ancestors 'self' https://trusted-domain.com"; add_header X-Frame-Options "ALLOW-FROM https://trusted-domain.com"; @@ -67,6 +65,7 @@ add_header X-Frame-Options "ALLOW-FROM https://trusted-domain.com"; - **Any YouTube video or stream:** https://www.youtube.com/embed/dQw4w9WgXcQ?si=MWUbbG66UNTla_Ni ### Configuration + ### Transparent iframes @@ -75,15 +74,16 @@ To create a transparent iframe like below you can use the following html code an ```html - + - + ``` ![transparent iframe](./img/transparent-iframe.png) ### Third party content + :::warning The content below is an overview of third party projects. All support requests/problems must be redirected to the appropriate repository. @@ -92,11 +92,12 @@ We cannot guarantee the functionality nor security of these tools. ::: ### homarr-iframes from Diogo Valentim + The project [homarr-iframes](https://github.com/diogovalentte/homarr-iframes) has iframes designed to be used with Homarr, these iframes offer a minimalist view of other systems: - [Vikunja](https://github.com/go-vikunja/vikunja): overview of your tasks with links to them. - [Linkwarden](https://github.com/linkwarden/linkwarden): overview of your bookmarks with links to them. -- [Cinemark Brazil](https://www.cinemark.com.br): overview of the movies in Cinemark theaters in your city (*only in Brazil*). +- [Cinemark Brazil](https://www.cinemark.com.br): overview of the movies in Cinemark theaters in your city (_only in Brazil_). ![Image of the Vikunja (left), Linkwarden (middle), and Cinemark Brazil (right) iframes on a Homarr dashboard](./img/homarr-iframes-example.webp "Image of the Vikunja (left), Linkwarden (middle), and Cinemark Brazil (right) iframes on a Homarr dashboard") diff --git a/apps/docs/docs/widgets/immich-album-carousel/index.mdx b/apps/docs/docs/widgets/immich-album-carousel/index.mdx index e2120a2ea..89675ca24 100644 --- a/apps/docs/docs/widgets/immich-album-carousel/index.mdx +++ b/apps/docs/docs/widgets/immich-album-carousel/index.mdx @@ -4,37 +4,35 @@ description: "Shows a slideshow of pictures from an Immich album or your full li hide_title: true --- -import { immichIntegration } from '../../integrations/immich';import { - AddingWidget -} from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { immichAlbumCarouselWidget } from '.'; +import { immichIntegration } from "../../integrations/immich"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { immichAlbumCarouselWidget } from "."; - - + ### Screenshots -import screen from './img/screen.png'; +import screen from "./img/screen.png"; immich album size-big ### Supported Integrations - + ### Adding the widget - ### Configuration diff --git a/apps/docs/docs/widgets/immich-server-stats/index.mdx b/apps/docs/docs/widgets/immich-server-stats/index.mdx index 73d278a91..4fcb5d4cc 100644 --- a/apps/docs/docs/widgets/immich-server-stats/index.mdx +++ b/apps/docs/docs/widgets/immich-server-stats/index.mdx @@ -1,40 +1,38 @@ --- -title: 'Immich Server Stats' -description: 'Information about your Immich instance' +title: "Immich Server Stats" +description: "Information about your Immich instance" hide_title: true --- -import { immichIntegration } from '../../integrations/immich'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { immichServerStatsWidget } from '.'; +import { immichIntegration } from "../../integrations/immich"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { immichServerStatsWidget } from "."; - - + ### Screenshots -import screen from './img/screen.png'; - +import screen from "./img/screen.png"; immich server stats size-big ### Supported Integrations - + ### Adding the widget - ### Configuration - + diff --git a/apps/docs/docs/widgets/indexer-manager/index.mdx b/apps/docs/docs/widgets/indexer-manager/index.mdx index fad8c341b..aed26828b 100644 --- a/apps/docs/docs/widgets/indexer-manager/index.mdx +++ b/apps/docs/docs/widgets/indexer-manager/index.mdx @@ -1,37 +1,37 @@ --- -title: 'Indexer manager status' -description: 'View the status of your indexers.' +title: "Indexer manager status" +description: "View the status of your indexers." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { indexerManagerWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { indexerManagerWidget } from "."; - - + ### Screenshots -import bigItem from './img/big.png'; -import smallItem from './img/small.png'; -import { prowlarrIntegration } from '@site/docs/integrations/prowlarr'; +import bigItem from "./img/big.png"; +import smallItem from "./img/small.png"; +import { prowlarrIntegration } from "@site/docs/integrations/prowlarr"; -
    +
    indexer-manager size-big indexer-manager size-small
    ### Supported Integrations - + ### Interactions @@ -41,7 +41,6 @@ import { prowlarrIntegration } from '@site/docs/integrations/prowlarr'; - ### Configuration - + diff --git a/apps/docs/docs/widgets/media-missing/index.mdx b/apps/docs/docs/widgets/media-missing/index.mdx index 648bd4190..06799ae2e 100644 --- a/apps/docs/docs/widgets/media-missing/index.mdx +++ b/apps/docs/docs/widgets/media-missing/index.mdx @@ -1,29 +1,26 @@ --- -title: 'Media Missing & Queue' -description: 'Track missing media and active downloads from Radarr and Sonarr' +title: "Media Missing & Queue" +description: "Track missing media and active downloads from Radarr and Sonarr" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { mediaMissingWidget } from '.'; -import { radarrIntegration } from '@site/docs/integrations/radarr'; -import { sonarrIntegration } from '@site/docs/integrations/sonarr'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { mediaMissingWidget } from "."; +import { radarrIntegration } from "@site/docs/integrations/radarr"; +import { sonarrIntegration } from "@site/docs/integrations/sonarr"; - + Monitor which movies and episodes are missing from your library, and track what is currently being downloaded. The widget pulls data from Radarr and Sonarr and groups results by type in two tabs. ### Screenshots -import widgetMissing from './img/missing.png'; -import widgetQueued from './img/queued.png'; -import widgetCompact from './img/compact.png'; +import widgetMissing from "./img/missing.png"; +import widgetQueued from "./img/queued.png"; +import widgetCompact from "./img/compact.png";
    media-missing widget showing missing movies and episodes in a grid @@ -33,18 +30,23 @@ import widgetCompact from './img/compact.png'; ### Supported Integrations - + ### Tabs -| Tab | Description | -|---|---| +| Tab | Description | +| ----------- | ----------------------------------------------------------------------------------------------------- | | **Missing** | Lists movies (Radarr) and episodes (Sonarr) that are monitored but not yet available in your library. | -| **Queued** | Shows items currently being downloaded with a progress bar and estimated time remaining. | +| **Queued** | Shows items currently being downloaded with a progress bar and estimated time remaining. | ### Sizing diff --git a/apps/docs/docs/widgets/media-releases/index.mdx b/apps/docs/docs/widgets/media-releases/index.mdx index fece199eb..71af2b04a 100644 --- a/apps/docs/docs/widgets/media-releases/index.mdx +++ b/apps/docs/docs/widgets/media-releases/index.mdx @@ -1,30 +1,26 @@ --- -title: 'Media releases' -description: 'Display newly added medias or upcoming releases from different integrations' +title: "Media releases" +description: "Display newly added medias or upcoming releases from different integrations" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { mediaReleasesWidget } from '.'; -import { embyIntegration } from '@site/docs/integrations/emby'; -import { jellyfinIntegration } from '@site/docs/integrations/jellyfin'; -import { plexIntegration } from '@site/docs/integrations/plex'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { mediaReleasesWidget } from "."; +import { embyIntegration } from "@site/docs/integrations/emby"; +import { jellyfinIntegration } from "@site/docs/integrations/jellyfin"; +import { plexIntegration } from "@site/docs/integrations/plex"; - - + Provides a list of newly added media or upcoming releases from your media server. ### Screenshots -import backdrop from './img/backdrop.png'; -import poster from './img/poster.png'; +import backdrop from "./img/backdrop.png"; +import poster from "./img/poster.png";
    media-releases layout-backdrop @@ -33,17 +29,24 @@ import poster from './img/poster.png'; ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/media-request-stats/index.mdx b/apps/docs/docs/widgets/media-request-stats/index.mdx index a7b40f624..fc7d7f465 100644 --- a/apps/docs/docs/widgets/media-request-stats/index.mdx +++ b/apps/docs/docs/widgets/media-request-stats/index.mdx @@ -1,39 +1,40 @@ --- -title: 'Media Requests Stats' -description: 'Statistics about your media requests' +title: "Media Requests Stats" +description: "Statistics about your media requests" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { mediaRequestStatsWidget } from '.'; -import { jellyseerrIntegration } from '@site/docs/integrations/jellyseerr'; -import { overseerrIntegration } from '@site/docs/integrations/overseerr'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { mediaRequestStatsWidget } from "."; +import { jellyseerrIntegration } from "@site/docs/integrations/jellyseerr"; +import { overseerrIntegration } from "@site/docs/integrations/overseerr"; - - + Provide a statistics overview of your media requests, such as mount of requests, open requests, approvement and rejections. ### Supported Integrations - + ### Screenshots -import mediaRequestStats from './img/stats.png'; +import mediaRequestStats from "./img/stats.png"; media-request-stats diff --git a/apps/docs/docs/widgets/media-server/index.mdx b/apps/docs/docs/widgets/media-server/index.mdx index 16fe2aabb..d759ff6f7 100644 --- a/apps/docs/docs/widgets/media-server/index.mdx +++ b/apps/docs/docs/widgets/media-server/index.mdx @@ -1,13 +1,13 @@ --- -title: 'Media server streams' -description: 'Show the current streams on your media servers' +title: "Media server streams" +description: "Show the current streams on your media servers" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; @@ -17,20 +17,14 @@ import { jellyfinIntegration } from "@site/docs/integrations/jellyfin"; import { navidromeIntegration } from "@site/docs/integrations/navidrome"; import { plexIntegration } from "@site/docs/integrations/plex"; + - - -The media server widget enables you to watch and view current active sessions over all your media servers. +The media server widget enables you to watch and view current active sessions over all your media servers. It also displays useful information, that you can use when providing support to users or debugging a problem. - - ### Screenshots -import mediaTable from './img/table.png'; +import mediaTable from "./img/table.png"; media-server-streams diff --git a/apps/docs/docs/widgets/media-transcoding/index.mdx b/apps/docs/docs/widgets/media-transcoding/index.mdx index 0fc280021..62dd00af3 100644 --- a/apps/docs/docs/widgets/media-transcoding/index.mdx +++ b/apps/docs/docs/widgets/media-transcoding/index.mdx @@ -1,35 +1,29 @@ --- -title: 'Media transcoding' -description: 'Statistics, current queue and worker status of your media transcoding' +title: "Media transcoding" +description: "Statistics, current queue and worker status of your media transcoding" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { mediaTranscodingWidget } from '.'; -import { tdarrIntegration } from '@site/docs/integrations/tdarr'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { mediaTranscodingWidget } from "."; +import { tdarrIntegration } from "@site/docs/integrations/tdarr"; + - - -The media transcoding widget provides you with an overview of your media transcoding status. +The media transcoding widget provides you with an overview of your media transcoding status. It shows you the current queue, worker status, and statistics about your transcoding jobs. - - ### Screenshots -import queueCard from './img/queue.png'; -import workersCard from './img/workers.png'; -import statisticsCard from './img/statistics.png'; +import queueCard from "./img/queue.png"; +import workersCard from "./img/workers.png"; +import statisticsCard from "./img/statistics.png";
    media-transcoding workers-tab @@ -39,13 +33,18 @@ import statisticsCard from './img/statistics.png'; ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/minecraft-server-status/index.mdx b/apps/docs/docs/widgets/minecraft-server-status/index.mdx index 51101246b..d96a2f190 100644 --- a/apps/docs/docs/widgets/minecraft-server-status/index.mdx +++ b/apps/docs/docs/widgets/minecraft-server-status/index.mdx @@ -1,32 +1,28 @@ --- -title: 'Minecraft Server Status' -description: 'Displays the status of a Minecraft server.' +title: "Minecraft Server Status" +description: "Displays the status of a Minecraft server." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import TabItem from '@theme/TabItem'; -import Tabs from '@theme/Tabs'; -import { minecraftServerStatusWidget } from '.'; +import TabItem from "@theme/TabItem"; +import Tabs from "@theme/Tabs"; +import { minecraftServerStatusWidget } from "."; - - + Shows the status and amount of players on a Minecraft server. It supports both Java and Bedrock editions, however only public servers are supported which can be reached through the used api of [api.mcsrvstat.us](https://api.mcsrvstat.us). ### Screenshots -import javaItem from './img/java.png'; -import bedrockItem from './img/bedrock.png'; +import javaItem from "./img/java.png"; +import bedrockItem from "./img/bedrock.png"; -
    +
    minecraft-server-status java-edition minecraft-server-status bedrock-editon
    @@ -36,9 +32,10 @@ import bedrockItem from './img/bedrock.png'; ### Configuration + ### Data source We use the Minecraft Server Status API to fetch the server status. -If you need to whitelist the api, please use the following URL: `hhttps://api.mcsrvstat.us` \ No newline at end of file +If you need to whitelist the api, please use the following URL: `hhttps://api.mcsrvstat.us` diff --git a/apps/docs/docs/widgets/network-controller-status/index.mdx b/apps/docs/docs/widgets/network-controller-status/index.mdx index a01496234..29a5bbb8e 100644 --- a/apps/docs/docs/widgets/network-controller-status/index.mdx +++ b/apps/docs/docs/widgets/network-controller-status/index.mdx @@ -1,44 +1,45 @@ --- -title: 'Network Status' -description: 'Display connected devices on a network' +title: "Network Status" +description: "Display connected devices on a network" hide_title: true --- -import { unifiControllerIntegration } from '@site/docs/integrations/unifi-controller'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { unifiControllerIntegration } from "@site/docs/integrations/unifi-controller"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import TabItem from '@theme/TabItem'; -import Tabs from '@theme/Tabs'; -import { networkControllerStatusWidget } from '.'; +import TabItem from "@theme/TabItem"; +import Tabs from "@theme/Tabs"; +import { networkControllerStatusWidget } from "."; - - + Shows connected users and connected guest devices on wired or wireless networks. ### Screenshots -import wifiCard from './img/wifi.png'; -import wiredCard from './img/wired.png'; +import wifiCard from "./img/wifi.png"; +import wiredCard from "./img/wired.png"; network-controller-status wifi network-controller-status wired ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/network-controller-summary/index.mdx b/apps/docs/docs/widgets/network-controller-summary/index.mdx index fe4cd3357..c7c2f4d4d 100644 --- a/apps/docs/docs/widgets/network-controller-summary/index.mdx +++ b/apps/docs/docs/widgets/network-controller-summary/index.mdx @@ -1,38 +1,38 @@ --- -title: 'Network Controller Summary' -description: 'Displays the summary of a Network Controller' +title: "Network Controller Summary" +description: "Displays the summary of a Network Controller" hide_title: true --- -import { unifiControllerIntegration } from '@site/docs/integrations/unifi-controller'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { unifiControllerIntegration } from "@site/docs/integrations/unifi-controller"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import TabItem from '@theme/TabItem'; -import Tabs from '@theme/Tabs'; -import { networkControllerSummaryWidget } from '.'; +import TabItem from "@theme/TabItem"; +import Tabs from "@theme/Tabs"; +import { networkControllerSummaryWidget } from "."; - - + Shows information whether your WAN is connected, Wi-Fi is active and several other information. ### Screenshots -import summaryCard from './img/summary.png'; +import summaryCard from "./img/summary.png"; network-controller-summary ### Supported Integrations - + ### Adding the widget diff --git a/apps/docs/docs/widgets/notifications/index.mdx b/apps/docs/docs/widgets/notifications/index.mdx index 0a715ab3c..3ca096e3c 100644 --- a/apps/docs/docs/widgets/notifications/index.mdx +++ b/apps/docs/docs/widgets/notifications/index.mdx @@ -1,42 +1,35 @@ --- -title: 'Notifications' -description: 'Display notification history from an integration' +title: "Notifications" +description: "Display notification history from an integration" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { notificationsWidget } from '.'; -import { ntfyIntegration } from '@site/docs/integrations/ntfy'; -import { nextcloudIntegration } from '@site/docs/integrations/nextcloud'; -import { gotifyIntegration } from '@site/docs/integrations/gotify'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { notificationsWidget } from "."; +import { ntfyIntegration } from "@site/docs/integrations/ntfy"; +import { nextcloudIntegration } from "@site/docs/integrations/nextcloud"; +import { gotifyIntegration } from "@site/docs/integrations/gotify"; - + The notifications widget allows you to display notifications from various integrations in a unified view. ### Screenshots -import notificationsScreenshot from './img/notifications.png'; +import notificationsScreenshot from "./img/notifications.png"; notifications ### Supported Integrations ### Adding the widget diff --git a/apps/docs/docs/widgets/paperless-ngx/index.mdx b/apps/docs/docs/widgets/paperless-ngx/index.mdx index 3dd684efd..140d667c0 100644 --- a/apps/docs/docs/widgets/paperless-ngx/index.mdx +++ b/apps/docs/docs/widgets/paperless-ngx/index.mdx @@ -1,34 +1,35 @@ --- -title: 'Paperless-ngx' -description: 'Displays document management statistics including inbox ratio, document counts, and metadata.' +title: "Paperless-ngx" +description: "Displays document management statistics including inbox ratio, document counts, and metadata." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { paperlessNgxWidget } from '.'; -import { paperlessNgxIntegration } from '@site/docs/integrations/paperless-ngx'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { paperlessNgxWidget } from "."; +import { paperlessNgxIntegration } from "@site/docs/integrations/paperless-ngx"; - - + This widget displays statistics from your Paperless-ngx instance, including an inbox ratio ring showing how many documents are in your inbox versus total, along with counts for correspondents, tags, and document types. ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/patchmon/index.mdx b/apps/docs/docs/widgets/patchmon/index.mdx index d16ab8d68..cde2a0da5 100644 --- a/apps/docs/docs/widgets/patchmon/index.mdx +++ b/apps/docs/docs/widgets/patchmon/index.mdx @@ -1,21 +1,17 @@ --- -title: 'PatchMon' -description: 'Displays host patch statistics from PatchMon including update and security counts.' +title: "PatchMon" +description: "Displays host patch statistics from PatchMon including update and security counts." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { patchmonWidget } from '.'; -import { patchmonIntegration } from '@site/docs/integrations/patchmon'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { patchmonWidget } from "."; +import { patchmonIntegration } from "@site/docs/integrations/patchmon"; - - + This widget displays patch statistics from your PatchMon instance, including total hosts, hosts needing updates, and security update counts. Each stat is shown with a dedicated icon and severity-tinted card background for quick visual scanning. @@ -39,13 +35,13 @@ In **1-column-wide** layouts (such as 1×1), the compliance hero switches to a r When **Enable threshold colors** is on (default), stat values and card backgrounds are colored for at-a-glance severity: -| Stat | Green | Yellow | Red | -|------|-------|--------|-----| -| Needs Updates | 0 | 1–4 | 5+ | -| Security Updates | 0 | 1–9 | 10+ | -| Hosts with Security Updates | 0 | — | 1+ | -| Up-to-Date Hosts | 100% of total | 90–99% | below 90% | -| Outdated Packages | 0 | 1–49 | 50+ | +| Stat | Green | Yellow | Red | +| --------------------------- | ------------- | ------ | --------- | +| Needs Updates | 0 | 1–4 | 5+ | +| Security Updates | 0 | 1–9 | 10+ | +| Hosts with Security Updates | 0 | — | 1+ | +| Up-to-Date Hosts | 100% of total | 90–99% | below 90% | +| Outdated Packages | 0 | 1–49 | 50+ | Enable **Advanced thresholds** to override warning and critical values per stat, using either absolute counts or percentages of total hosts. @@ -62,13 +58,13 @@ The OS distribution limit defaults to **All**. A widget size of **2×3** or larg The widget adapts its layout based on the available space: -| Widget size | Layout | -|-------------|--------| -| **1×1** | Primary selected content: compliance ring (no label), compact OS distribution, or up to two enabled stats | +| Widget size | Layout | +| ----------------- | ------------------------------------------------------------------------------------------------------------------- | +| **1×1** | Primary selected content: compliance ring (no label), compact OS distribution, or up to two enabled stats | | **2×1** / **1×2** | Compact primary content; **2×1** shows compliance label and host ratio beside the ring; **1×2** uses ring-only hero | -| **2×2** (default) | Compliance hero, stat grid with icons, and tinted cards | -| **2×3** / **3×2** | Hero, stats, OS distribution, and "last updated" footer | -| **3×3** or larger | Full layout with up to 4-column stat grid, donut chart, and optional OS legend | +| **2×2** (default) | Compliance hero, stat grid with icons, and tinted cards | +| **2×3** / **3×2** | Hero, stats, OS distribution, and "last updated" footer | +| **3×3** or larger | Full layout with up to 4-column stat grid, donut chart, and optional OS legend | ### Last updated @@ -76,14 +72,19 @@ When the widget has enough space, a "last updated" timestamp appears at the bott ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/rss-feed/index.mdx b/apps/docs/docs/widgets/rss-feed/index.mdx index 68bbb1071..d4e0b2d74 100644 --- a/apps/docs/docs/widgets/rss-feed/index.mdx +++ b/apps/docs/docs/widgets/rss-feed/index.mdx @@ -1,25 +1,21 @@ --- -title: 'RSS Feed' -description: 'Monitor and display one or more generic RSS, ATOM or JSON feeds.' +title: "RSS Feed" +description: "Monitor and display one or more generic RSS, ATOM or JSON feeds." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { rssFeedWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { rssFeedWidget } from "."; - - + Using the RSS standard, you can integrate most News websites, applications and more on your dashboard. ### Screenshots -import screenshot from './img/screenshot.png'; +import screenshot from "./img/screenshot.png"; rss-feed noted-lol @@ -28,10 +24,13 @@ import screenshot from './img/screenshot.png'; ### Configuration + ### Examples + Here's a small collection of examples, that you can use for testing or actual use (in no particular order): + - https://noted.lol/rss/ - https://blog.google/products/chrome/rss/ - https://www.w3.org/blog/feed/ @@ -45,4 +44,4 @@ Here's a small collection of examples, that you can use for testing or actual us - http://feeds.foxnews.com/foxnews/latest There is a good list of feeds here: -https://github.com/greysonp/rss-feeds/blob/master/feeds.json \ No newline at end of file +https://github.com/greysonp/rss-feeds/blob/master/feeds.json diff --git a/apps/docs/docs/widgets/smart-home-entity-state/index.mdx b/apps/docs/docs/widgets/smart-home-entity-state/index.mdx index d101d6376..f01e4f0df 100644 --- a/apps/docs/docs/widgets/smart-home-entity-state/index.mdx +++ b/apps/docs/docs/widgets/smart-home-entity-state/index.mdx @@ -1,34 +1,30 @@ --- -title: 'Entity State' -description: 'Display the state of an entity and toggle it optionally' +title: "Entity State" +description: "Display the state of an entity and toggle it optionally" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { smartHomeEntityStateWidget } from '.'; -import { homeAssistantIntegration } from '@site/docs/integrations/home-assistant'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { smartHomeEntityStateWidget } from "."; +import { homeAssistantIntegration } from "@site/docs/integrations/home-assistant"; - - + The entity state enables you to display the current state of an entity. -This works with most entities and enables you display almost any data. +This works with most entities and enables you display almost any data. It is recommended that you transform data on the integration as much as possible since Homarr's capabilities in transformation are very limited. ### Screenshots -import sun from './img/sun.png'; -import lightSwitch from './img/light-switch.png'; -import temperature from './img/temperature.png'; +import sun from "./img/sun.png"; +import lightSwitch from "./img/light-switch.png"; +import temperature from "./img/temperature.png"; smart-home-entity-state sun smart-home-entity-state light-switch @@ -36,9 +32,13 @@ import temperature from './img/temperature.png'; ### Supported Integrations - + ### Interactions @@ -49,19 +49,21 @@ import temperature from './img/temperature.png'; ### Configuration + ### How to find the entity ID To find the entity ID in Home Assistant, follow these steps: + 1. Open Home Assistant and go to the **Developer Tools** section (usually found in the sidebar). 2. Click on the **States** tab. 3. In the list of entities, find the entity you want to use. 4. The entity ID will be displayed in the format `domain.object_id` (e.g., `light.living_room_light`). 5. Copy the entity ID and paste it into the widget configuration in Homarr. It will then show the State that is visible in Home Assistant. -import retrieveEntityId from './img/retrieve-entity-id.png'; +import retrieveEntityId from "./img/retrieve-entity-id.png";
    homeassistant retrieve-entity-id -
    \ No newline at end of file +
    diff --git a/apps/docs/docs/widgets/smart-home-execute-automation/index.mdx b/apps/docs/docs/widgets/smart-home-execute-automation/index.mdx index 522c113ca..f31a79b93 100644 --- a/apps/docs/docs/widgets/smart-home-execute-automation/index.mdx +++ b/apps/docs/docs/widgets/smart-home-execute-automation/index.mdx @@ -1,42 +1,47 @@ --- -title: 'Execute Automation' -description: 'Trigger an automation with one click' +title: "Execute Automation" +description: "Trigger an automation with one click" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; import { IconAd } from "@tabler/icons-react"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import { smartHomeExecuteAutomationWidget } from '.'; -import { homeAssistantIntegration } from '@site/docs/integrations/home-assistant'; +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import { smartHomeExecuteAutomationWidget } from "."; +import { homeAssistantIntegration } from "@site/docs/integrations/home-assistant"; - - + The execute automation widget allows you to trigger an automation with one click. ### Screenshots -import empty from './img/empty.png'; -import withDisplayname from './img/with-displayname.png'; +import empty from "./img/empty.png"; +import withDisplayname from "./img/with-displayname.png";
    smart-home-execute-automation empty - smart-home-execute-automation with-displayname + smart-home-execute-automation with-displayname
    ### Supported Integrations - + ### Interactions @@ -47,4 +52,5 @@ import withDisplayname from './img/with-displayname.png'; ### Configuration + diff --git a/apps/docs/docs/widgets/speedtest-tracker/index.mdx b/apps/docs/docs/widgets/speedtest-tracker/index.mdx index 94be18dd7..4b0760e0a 100644 --- a/apps/docs/docs/widgets/speedtest-tracker/index.mdx +++ b/apps/docs/docs/widgets/speedtest-tracker/index.mdx @@ -1,39 +1,41 @@ --- -title: 'Speedtest Tracker' -description: 'Displays speed test results from your Speedtest Tracker instance.' +title: "Speedtest Tracker" +description: "Displays speed test results from your Speedtest Tracker instance." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { speedtestTrackerWidget } from '.'; -import { speedtestTrackerIntegration } from '@site/docs/integrations/speedtest-tracker'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { speedtestTrackerWidget } from "."; +import { speedtestTrackerIntegration } from "@site/docs/integrations/speedtest-tracker"; - + This widget displays internet speed test results from your [Speedtest Tracker](https://docs.speedtest-tracker.dev/) instance, including the latest result, historical averages, and a live chart of the last 12 hours. ### Screenshots -import screenshot from './img/screenshot.png'; +import screenshot from "./img/screenshot.png"; speedtest-tracker image ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/stock-price/index.mdx b/apps/docs/docs/widgets/stock-price/index.mdx index 5d9a24c64..dcd091be7 100644 --- a/apps/docs/docs/widgets/stock-price/index.mdx +++ b/apps/docs/docs/widgets/stock-price/index.mdx @@ -1,28 +1,24 @@ --- -title: 'Stock Price' -description: 'Displays the current stock price of a company.' +title: "Stock Price" +description: "Displays the current stock price of a company." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { stockPriceWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { stockPriceWidget } from "."; - - + Using the Stocks widget, you can show the current stock prices of your favorite companies on your dashboard. ### Screenshots -import apple from './img/apple.png'; -import google from './img/google.png'; -import ethereum from './img/ethereum.png'; -import nvidia from './img/nvidia.png'; +import apple from "./img/apple.png"; +import google from "./img/google.png"; +import ethereum from "./img/ethereum.png"; +import nvidia from "./img/nvidia.png";
    @@ -34,17 +30,19 @@ import nvidia from './img/nvidia.png';
    stock-price nvidia
    - ### Adding the widget ### Configuration + ### Examples + Here's a small collection of examples, that you can use for testing or actual use (in no particular order): + - AAPL - GOOGL - AMZN @@ -59,4 +57,4 @@ Here's a small collection of examples, that you can use for testing or actual us ### Data source We use the Yahoo Finance API to fetch the stock prices. -If you need to whitelist the api, please use the following URL: `https://query1.finance.yahoo.com` \ No newline at end of file +If you need to whitelist the api, please use the following URL: `https://query1.finance.yahoo.com` diff --git a/apps/docs/docs/widgets/system-disks/index.ts b/apps/docs/docs/widgets/system-disks/index.ts index 8dd68f057..ade53efc0 100644 --- a/apps/docs/docs/widgets/system-disks/index.ts +++ b/apps/docs/docs/widgets/system-disks/index.ts @@ -19,7 +19,11 @@ export const systemDisksWidget: WidgetDefinition = { description: "How disk usage values are shown", values: { type: "select", - options: ["Percentage (e.g., 76%)", "Absolute values (e.g., 800GB / 1TB)", "Free space percentage (e.g., 24% free)"], + options: [ + "Percentage (e.g., 76%)", + "Absolute values (e.g., 800GB / 1TB)", + "Free space percentage (e.g., 24% free)", + ], }, defaultValue: "Percentage (e.g., 76%)", }, diff --git a/apps/docs/docs/widgets/timetable/index.mdx b/apps/docs/docs/widgets/timetable/index.mdx index e9bdfd326..bea69cfb4 100644 --- a/apps/docs/docs/widgets/timetable/index.mdx +++ b/apps/docs/docs/widgets/timetable/index.mdx @@ -19,16 +19,8 @@ import trainDepartures from "./img/train-departures.png"; import streetDepartures from "./img/street-departures.png";
    - timetable-widget-train-departures - timetable-widget-bus-and-tram-departures + timetable-widget-train-departures + timetable-widget-bus-and-tram-departures
    ### Adding the widget diff --git a/apps/docs/docs/widgets/tracearr/index.mdx b/apps/docs/docs/widgets/tracearr/index.mdx index a579d8af3..797f83a3e 100644 --- a/apps/docs/docs/widgets/tracearr/index.mdx +++ b/apps/docs/docs/widgets/tracearr/index.mdx @@ -1,37 +1,33 @@ --- -title: 'Tracearr' -description: 'Monitor media server streams, user activity, and policy violations.' +title: "Tracearr" +description: "Monitor media server streams, user activity, and policy violations." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { tracearrWidget } from '.'; -import { tracearrIntegration } from '@site/docs/integrations/tracearr'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { tracearrWidget } from "."; +import { tracearrIntegration } from "@site/docs/integrations/tracearr"; - - + The Tracearr widget provides a real-time monitoring dashboard for your media server activity. It displays active streams, user statistics, recent watching history, and policy violations. ### Sections -| Section | Description | -|---|---| -| **Stats Bar** | Displays Active Streams, Total Users, Transcode Count, and Total Bandwidth at a glance. | -| **Active Streams** | Shows currently playing media with poster art, user info, progress bar, resolution, and transcoding status (Direct Play or Transcode). | -| **Recent Activity** | A paginated list of watching history with user avatars and watched status. | -| **Violations** | Alerts for policy violations (e.g., concurrent stream limits) with severity levels. | +| Section | Description | +| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| **Stats Bar** | Displays Active Streams, Total Users, Transcode Count, and Total Bandwidth at a glance. | +| **Active Streams** | Shows currently playing media with poster art, user info, progress bar, resolution, and transcoding status (Direct Play or Transcode). | +| **Recent Activity** | A paginated list of watching history with user avatars and watched status. | +| **Violations** | Alerts for policy violations (e.g., concurrent stream limits) with severity levels. | ### Screenshots -import widgetOverview from './img/widget-overview.png'; -import streamsAndStats from './img/streams-and-stats.png'; +import widgetOverview from "./img/widget-overview.png"; +import streamsAndStats from "./img/streams-and-stats.png";
    tracearr-widget-overview @@ -44,9 +40,14 @@ import streamsAndStats from './img/streams-and-stats.png'; ### Supported Integrations - + ### Configuration + diff --git a/apps/docs/docs/widgets/umami/index.mdx b/apps/docs/docs/widgets/umami/index.mdx index 0d0006054..b208a3311 100644 --- a/apps/docs/docs/widgets/umami/index.mdx +++ b/apps/docs/docs/widgets/umami/index.mdx @@ -1,28 +1,29 @@ --- -title: 'Umami Analytics' -description: 'Display visitor stats from your Umami analytics instance' +title: "Umami Analytics" +description: "Display visitor stats from your Umami analytics instance" hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { umamiWidget } from '.'; -import { umamiIntegration } from '@site/docs/integrations/umami'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { umamiWidget } from "."; +import { umamiIntegration } from "@site/docs/integrations/umami"; - + The Umami Analytics widget displays key visitor metrics from a website tracked by your [Umami](https://umami.is) instance - pageviews, unique visitors, visits, bounce rate, avg. visit duration, and real-time active visitor count. The widget body can be switched between a visitor/event chart, a multi-event chart, and ranked top pages or referrers lists. ### Supported Integrations - + ### Adding the widget @@ -34,12 +35,12 @@ The Umami Analytics widget displays key visitor metrics from a website tracked b ### View modes -| View | Description | -|---|---| -| **Chart** | Bar chart or sparkline of unique visitors over the selected time frame. Optionally overlay a single named event as a second series. | -| **Events chart** | Multi-select one or more named events and chart each as its own colored series - no visitor baseline. Supports bar and sparkline. | -| **Top pages** | Ranked list of URLs by pageview count for the selected time frame. | -| **Top referrers** | Ranked list of referrer sources by session count. Direct traffic (no referrer) is labeled "Direct". | +| View | Description | +| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| **Chart** | Bar chart or sparkline of unique visitors over the selected time frame. Optionally overlay a single named event as a second series. | +| **Events chart** | Multi-select one or more named events and chart each as its own colored series - no visitor baseline. Supports bar and sparkline. | +| **Top pages** | Ranked list of URLs by pageview count for the selected time frame. | +| **Top referrers** | Ranked list of referrer sources by session count. Direct traffic (no referrer) is labeled "Direct". | ### Notes diff --git a/apps/docs/docs/widgets/ups/index.mdx b/apps/docs/docs/widgets/ups/index.mdx index bf512990d..3e57ee57b 100644 --- a/apps/docs/docs/widgets/ups/index.mdx +++ b/apps/docs/docs/widgets/ups/index.mdx @@ -1,20 +1,17 @@ --- -title: 'UPS' -description: 'Monitor the status of your UPS devices through a NUT server.' +title: "UPS" +description: "Monitor the status of your UPS devices through a NUT server." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { upsWidget } from '.'; -import { peaNutIntegration } from '@site/docs/integrations/peanut'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { upsWidget } from "."; +import { peaNutIntegration } from "@site/docs/integrations/peanut"; - + This widget displays the status of the UPS devices reported by a Network UPS Tools (NUT) server. Each device shows its status (online, on battery, charging or low battery), battery charge and estimated runtime, output load, and input and @@ -22,27 +19,32 @@ output voltage. ### Layouts -import screenshotFull from './img/screenshot.png'; -import screenshotCompact from './img/screenshot-compact.png'; -import screenshotMini from './img/screenshot-mini.png'; +import screenshotFull from "./img/screenshot.png"; +import screenshotCompact from "./img/screenshot-compact.png"; +import screenshotMini from "./img/screenshot-mini.png"; The widget adapts to the size of the tile, so it stays readable from a full dashboard panel down to a single cell. Multiple UPS devices scroll within the widget at any height. -| Layout | Size | Preview | -| --- | --- | --- | -| Full | 3+ columns wide | UPS widget full layout | -| Compact | ~2 columns | UPS widget compact layout | -| Mini | 1 column | UPS widget mini layout | +| Layout | Size | Preview | +| ------- | --------------- | --------------------------------------------------------------------------- | +| Full | 3+ columns wide | UPS widget full layout | +| Compact | ~2 columns | UPS widget compact layout | +| Mini | 1 column | UPS widget mini layout | ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/uptime-kuma/index.mdx b/apps/docs/docs/widgets/uptime-kuma/index.mdx index 3a6592b2e..0a7e649e8 100644 --- a/apps/docs/docs/widgets/uptime-kuma/index.mdx +++ b/apps/docs/docs/widgets/uptime-kuma/index.mdx @@ -1,34 +1,35 @@ --- -title: 'Uptime Kuma' -description: 'Displays monitor uptime statistics, average uptime percentage, and service status counts.' +title: "Uptime Kuma" +description: "Displays monitor uptime statistics, average uptime percentage, and service status counts." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { uptimeKumaWidget } from '.'; -import { uptimeKumaIntegration } from '@site/docs/integrations/uptime-kuma'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { uptimeKumaWidget } from "."; +import { uptimeKumaIntegration } from "@site/docs/integrations/uptime-kuma"; - - + This widget displays uptime statistics from your Uptime Kuma status page, including a visual uptime ring, average uptime percentage, and per-status monitor counts. ### Supported Integrations - + ### Adding the widget ### Configuration + diff --git a/apps/docs/docs/widgets/video/index.mdx b/apps/docs/docs/widgets/video/index.mdx index 3ccf3760a..e5225a022 100644 --- a/apps/docs/docs/widgets/video/index.mdx +++ b/apps/docs/docs/widgets/video/index.mdx @@ -1,19 +1,15 @@ --- -title: 'Video Stream' -description: 'Embed a video stream or video from a camera or a website.' +title: "Video Stream" +description: "Embed a video stream or video from a camera or a website." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { videoWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { videoWidget } from "."; - - + Do you run surveilance cameras? Or maybe you have a favourite video? The video widget enables you to integrate both seamlessly into your dashboard. @@ -22,7 +18,6 @@ This widget uses [video.js](https://videojs.com/) to play HLS or DASH video nati DRM content is not yet supported. More info here: https://videojs.com/guides/faqs/#q-what-is-videojs - You can use the following URL to test: http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 @@ -35,4 +30,5 @@ http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp ### Configuration + diff --git a/apps/docs/docs/widgets/vpn/index.mdx b/apps/docs/docs/widgets/vpn/index.mdx index 0aa6a1a16..0c774a7b0 100644 --- a/apps/docs/docs/widgets/vpn/index.mdx +++ b/apps/docs/docs/widgets/vpn/index.mdx @@ -1,19 +1,16 @@ --- -title: 'VPN' -description: 'Monitor the status of your VPN integrations.' +title: "VPN" +description: "Monitor the status of your VPN integrations." hide_title: true --- -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetIntegrations } from '@site/src/components/widgets/integrations'; -import { vpnWidget } from '.'; -import { gluetunIntegration } from '@site/docs/integrations/gluetun'; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetIntegrations } from "@site/src/components/widgets/integrations"; +import { vpnWidget } from "."; +import { gluetunIntegration } from "@site/docs/integrations/gluetun"; - + The VPN widget provides a compact overview of each configured VPN integration. It shows whether the tunnel and DNS services are up, the currently exposed public IP address, and the VPN provider and protocol being used. @@ -23,7 +20,7 @@ current status at a glance. ### Screenshots -import singleIntegrationImage from './img/single.png'; +import singleIntegrationImage from "./img/single.png";
    VPN widget showing a single integration @@ -31,9 +28,13 @@ import singleIntegrationImage from './img/single.png'; ### Supported Integrations - + ### Adding the widget diff --git a/apps/docs/docs/widgets/weather/index.mdx b/apps/docs/docs/widgets/weather/index.mdx index 0ff4081d7..05b918785 100644 --- a/apps/docs/docs/widgets/weather/index.mdx +++ b/apps/docs/docs/widgets/weather/index.mdx @@ -1,26 +1,22 @@ --- -title: 'Weather' -description: 'Displays the current weather information of a set location.' +title: "Weather" +description: "Displays the current weather information of a set location." hide_title: true --- -import { AddingWidget } from '@site/src/components/widgets/adding'; -import { WidgetConfig } from '@site/src/components/widgets/configuration'; -import { WidgetHeader } from '@site/src/components/widgets/header'; -import { weatherWidget } from '.'; +import { AddingWidget } from "@site/src/components/widgets/adding"; +import { WidgetConfig } from "@site/src/components/widgets/configuration"; +import { WidgetHeader } from "@site/src/components/widgets/header"; +import { weatherWidget } from "."; - - + The Weather Widget uses your location to display the current, highest and lowest temperature. ### Screenshots -import forecastWeather from './img/forecast.png'; -import currentWeather from './img/current.png'; +import forecastWeather from "./img/forecast.png"; +import currentWeather from "./img/current.png";
    weather forecast-5-days @@ -32,9 +28,10 @@ import currentWeather from './img/current.png'; ### Configuration + ### Data source We use the Open Meteo API to fetch the weather and locations. -If you need to whitelist the api, please use the following URL: `https://open-meteo.com` \ No newline at end of file +If you need to whitelist the api, please use the following URL: `https://open-meteo.com` diff --git a/apps/docs/package.json b/apps/docs/package.json index 35f10f691..bec22d5ea 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -21,7 +21,7 @@ "verify:search": "node ./scripts/verify-algolia-search.mjs" }, "dependencies": { - "@base-ui/react": "catalog:", + "@base-ui/react": "^1.5.0", "@docusaurus/core": "^3.10.1", "@docusaurus/faster": "^3.10.1", "@docusaurus/plugin-content-docs": "^3.10.1", @@ -37,7 +37,7 @@ "@shadcn/react": "catalog:", "@tabler/icons-react": "catalog:", "@tailwindcss/postcss": "^4.3.2", - "class-variance-authority": "catalog:", + "class-variance-authority": "^0.7.1", "clsx": "catalog:", "cmdk": "catalog:", "date-fns": "catalog:", @@ -59,9 +59,8 @@ "recharts": "3.8.0", "sonner": "catalog:", "swiper": "^14.0.5", - "tailwind-merge": "catalog:", - "tailwindcss": "^4.3.2", - "zod": "catalog:" + "tailwind-merge": "^3.6.0", + "tailwindcss": "^4.3.2" }, "devDependencies": { "@docusaurus/module-type-aliases": "^3.10.1", @@ -72,7 +71,8 @@ "@types/react": "catalog:", "@types/react-dom": "catalog:", "cheerio": "^1.2.0", - "typescript": "catalog:" + "typescript": "catalog:", + "zod": "catalog:" }, "peerDependencies": { "@docusaurus/theme-common": "^3.10.1", diff --git a/apps/docs/scripts/dump-contributors.mjs b/apps/docs/scripts/dump-contributors.mjs index f2cd60fb4..b16057c99 100644 --- a/apps/docs/scripts/dump-contributors.mjs +++ b/apps/docs/scripts/dump-contributors.mjs @@ -1,14 +1,14 @@ -import { z } from 'zod'; -import fs from 'fs/promises'; +import { z } from "zod"; +import fs from "fs/promises"; const sources = { crowdin: [ - { projectId: 534422, tokenName: 'HOMARR_CROWDIN_TOKEN' }, - { projectId: 742587, tokenName: 'HOMARR_LABS_CROWDIN_TOKEN' }, + { projectId: 534422, tokenName: "HOMARR_CROWDIN_TOKEN" }, + { projectId: 742587, tokenName: "HOMARR_LABS_CROWDIN_TOKEN" }, ], github: [ - { repository: 'homarr', slug: 'ajnart' }, - { repository: 'homarr', slug: 'homarr-labs' }, + { repository: "homarr", slug: "ajnart" }, + { repository: "homarr", slug: "homarr-labs" }, ], }; @@ -23,11 +23,11 @@ const env = schema.parse(process.env); const fetchGithubContributors = async (slug, repository) => { const url = `https://api.github.com/repos/${slug}/${repository}/contributors?per_page=999`; const options = { - method: 'GET', + method: "GET", headers: { Authorization: `Bearer ${env.GITHUB_TOKEN}`, - Accept: 'application/vnd.github+json', - 'X-GitHub-Api-Version': '2022-11-28', + Accept: "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", }, }; @@ -39,7 +39,7 @@ const fetchGithubContributors = async (slug, repository) => { login: z.string(), avatar_url: z.string().url(), contributions: z.number(), - }) + }), ); return dataSchema.parse(data); @@ -48,9 +48,9 @@ const fetchGithubContributors = async (slug, repository) => { const fetchCrowdinMembers = async (projectId, tokenName) => { const url = `https://crowdin.com/api/v2/projects/${projectId}/members`; const options = { - method: 'GET', + method: "GET", headers: { - Accept: 'application/json', + Accept: "application/json", Authorization: `Bearer ${env[tokenName]}`, }, }; @@ -65,7 +65,7 @@ const fetchCrowdinMembers = async (projectId, tokenName) => { username: z.string(), avatarUrl: z.string().url(), }), - }) + }), ), }); @@ -88,16 +88,11 @@ const distinctGithubContributors = githubContributors .filter(distinctBy((contributor) => contributor.login)) .sort((a, b) => b.contributions - a.contributions) .map(({ contributions, ...props }) => props) - .filter((contributor) => !contributor.login.includes('[bot]')); -await fs.writeFile('./static/data/contributions.json', JSON.stringify(distinctGithubContributors)); + .filter((contributor) => !contributor.login.includes("[bot]")); +await fs.writeFile("./static/data/contributions.json", JSON.stringify(distinctGithubContributors)); for (const { projectId, tokenName } of sources.crowdin) { crowdinContributors.push(...(await fetchCrowdinMembers(projectId, tokenName))); } -const distinctCrowdinContributors = crowdinContributors.filter( - distinctBy((contributor) => contributor.username) -); -await fs.writeFile( - './static/data/translation-contributions.json', - JSON.stringify(distinctCrowdinContributors) -); +const distinctCrowdinContributors = crowdinContributors.filter(distinctBy((contributor) => contributor.username)); +await fs.writeFile("./static/data/translation-contributions.json", JSON.stringify(distinctCrowdinContributors)); diff --git a/apps/docs/scripts/verify-algolia-search.mjs b/apps/docs/scripts/verify-algolia-search.mjs index 4aa5e30e7..93e83baa8 100644 --- a/apps/docs/scripts/verify-algolia-search.mjs +++ b/apps/docs/scripts/verify-algolia-search.mjs @@ -1,41 +1,32 @@ -const APP_ID = 'N69WSPZTID'; -const API_KEY = 'b2b00f4ed8ca3dc87b5d211c55121416'; -const DOCSEARCH_INDEX = 'Docusaurus'; -const MARKDOWN_INDEX = 'markdown'; +const APP_ID = "N69WSPZTID"; +const API_KEY = "b2b00f4ed8ca3dc87b5d211c55121416"; +const DOCSEARCH_INDEX = "Docusaurus"; +const MARKDOWN_INDEX = "markdown"; const MIN_DOCSEARCH_HITS = 100; const MIN_MARKDOWN_HITS = 10; -const DOCSEARCH_FACETS = [ - 'docusaurus_tag', - 'language', - 'lang', - 'version', - 'type', -]; +const DOCSEARCH_FACETS = ["docusaurus_tag", "language", "lang", "version", "type"]; const SEARCH_CASES = [ - { term: 'docker', minHits: 1 }, - { term: 'coolify', minHits: 1 }, - { term: 'jellyseerr', minHits: 1 }, - { term: 'keyboard shortcuts', minHits: 1 }, - { term: 'version 0.12', minHits: 1 }, + { term: "docker", minHits: 1 }, + { term: "coolify", minHits: 1 }, + { term: "jellyseerr", minHits: 1 }, + { term: "keyboard shortcuts", minHits: 1 }, + { term: "version 0.12", minHits: 1 }, ]; const STALE_URL_PATTERN = /\/docs\/(next|\d+(?:\.\d+)+)\//; async function algoliaQuery(index, body) { - const response = await fetch( - `https://${APP_ID}-dsn.algolia.net/1/indexes/${index}/query`, - { - method: 'POST', - headers: { - 'X-Algolia-Application-Id': APP_ID, - 'X-Algolia-API-Key': API_KEY, - 'Content-Type': 'application/json', - }, - body: JSON.stringify(body), + const response = await fetch(`https://${APP_ID}-dsn.algolia.net/1/indexes/${index}/query`, { + method: "POST", + headers: { + "X-Algolia-Application-Id": APP_ID, + "X-Algolia-API-Key": API_KEY, + "Content-Type": "application/json", }, - ); + body: JSON.stringify(body), + }); if (!response.ok) { throw new Error(`Algolia query on "${index}" failed: HTTP ${response.status}`); @@ -45,7 +36,7 @@ async function algoliaQuery(index, body) { } function reportLine(ok, message) { - const prefix = ok ? 'OK' : 'FAIL'; + const prefix = ok ? "OK" : "FAIL"; console.log(`${prefix}: ${message}`); return ok; } @@ -54,14 +45,14 @@ async function resolveDocsearchIndex() { const candidates = [DOCSEARCH_INDEX, `${DOCSEARCH_INDEX}.tmp`]; for (const index of candidates) { - const result = await algoliaQuery(index, { query: '', hitsPerPage: 0 }); + const result = await algoliaQuery(index, { query: "", hitsPerPage: 0 }); const hitCount = result.nbHits ?? 0; if (hitCount >= MIN_DOCSEARCH_HITS) { return { index, hitCount }; } } - const fallback = await algoliaQuery(DOCSEARCH_INDEX, { query: '', hitsPerPage: 0 }); + const fallback = await algoliaQuery(DOCSEARCH_INDEX, { query: "", hitsPerPage: 0 }); return { index: DOCSEARCH_INDEX, hitCount: fallback.nbHits ?? 0 }; } @@ -69,14 +60,14 @@ async function resolveMarkdownIndex() { const candidates = [MARKDOWN_INDEX, `${MARKDOWN_INDEX}.tmp`]; for (const index of candidates) { - const result = await algoliaQuery(index, { query: '', hitsPerPage: 0 }); + const result = await algoliaQuery(index, { query: "", hitsPerPage: 0 }); const hitCount = result.nbHits ?? 0; if (hitCount >= MIN_MARKDOWN_HITS) { return { index, hitCount }; } } - const fallback = await algoliaQuery(MARKDOWN_INDEX, { query: '', hitsPerPage: 0 }); + const fallback = await algoliaQuery(MARKDOWN_INDEX, { query: "", hitsPerPage: 0 }); return { index: MARKDOWN_INDEX, hitCount: fallback.nbHits ?? 0 }; } @@ -87,13 +78,13 @@ async function verifyDocsearchIndex(index, hitCount) { ); const sample = await algoliaQuery(index, { - query: 'docker', + query: "docker", hitsPerPage: 1, attributesToRetrieve: DOCSEARCH_FACETS, }); const record = sample.hits?.[0] ?? {}; - const recordFields = ['docusaurus_tag', 'language', 'lang', 'version', 'type']; + const recordFields = ["docusaurus_tag", "language", "lang", "version", "type"]; for (const field of recordFields) { const present = record[field] !== undefined && record[field] !== null; ok = reportLine(present, `records include "${field}"`) && ok; @@ -103,7 +94,7 @@ async function verifyDocsearchIndex(index, hitCount) { const result = await algoliaQuery(index, { query: searchCase.term, hitsPerPage: 5, - attributesToRetrieve: ['url'], + attributesToRetrieve: ["url"], }); const caseHits = result.nbHits ?? 0; @@ -113,9 +104,7 @@ async function verifyDocsearchIndex(index, hitCount) { `"${searchCase.term}" returns ${caseHits} hits (need >= ${searchCase.minHits})`, ) && ok; - const staleUrls = (result.hits ?? []) - .map((hit) => hit.url) - .filter((url) => STALE_URL_PATTERN.test(url)); + const staleUrls = (result.hits ?? []).map((hit) => hit.url).filter((url) => STALE_URL_PATTERN.test(url)); ok = reportLine( @@ -134,51 +123,39 @@ async function verifyMarkdownIndex(index, hitCount) { ); const coolify = await algoliaQuery(index, { - query: 'coolify', + query: "coolify", hitsPerPage: 3, - attributesToRetrieve: ['url', 'title', 'heading', 'text'], + attributesToRetrieve: ["url", "title", "heading", "text"], }); ok = - reportLine( - (coolify.nbHits ?? 0) >= 1, - `markdown index "${index}" returns coolify (${coolify.nbHits ?? 0} hits)`, - ) && ok; + reportLine((coolify.nbHits ?? 0) >= 1, `markdown index "${index}" returns coolify (${coolify.nbHits ?? 0} hits)`) && + ok; const sample = coolify.hits?.[0]; - ok = - reportLine( - Boolean(sample?.text?.length), - `markdown records include chunked text content`, - ) && ok; + ok = reportLine(Boolean(sample?.text?.length), `markdown records include chunked text content`) && ok; return ok; } async function main() { - console.log('Verifying Algolia DocSearch + markdown indices...\n'); + console.log("Verifying Algolia DocSearch + markdown indices...\n"); const docsearch = await resolveDocsearchIndex(); console.log(`Using DocSearch index: ${docsearch.index}\n`); - const docsearchOk = await verifyDocsearchIndex( - docsearch.index, - docsearch.hitCount, - ); + const docsearchOk = await verifyDocsearchIndex(docsearch.index, docsearch.hitCount); - console.log(''); + console.log(""); const markdown = await resolveMarkdownIndex(); console.log(`Using markdown index: ${markdown.index}\n`); - const markdownOk = await verifyMarkdownIndex( - markdown.index, - markdown.hitCount, - ); + const markdownOk = await verifyMarkdownIndex(markdown.index, markdown.hitCount); const allOk = docsearchOk && markdownOk; - console.log(''); + console.log(""); console.log( allOk - ? 'All checks passed.' - : 'Some checks failed — ensure the crawler config in docsearch.config.js is applied and a full recrawl has finished.', + ? "All checks passed." + : "Some checks failed — ensure the crawler config in docsearch.config.js is applied and a full recrawl has finished.", ); process.exit(allOk ? 0 : 1); } diff --git a/apps/docs/src/components/pages/home/integrations/available-integrations.module.css b/apps/docs/src/components/pages/home/integrations/available-integrations.module.css index a9c057d1c..d65f59e95 100644 --- a/apps/docs/src/components/pages/home/integrations/available-integrations.module.css +++ b/apps/docs/src/components/pages/home/integrations/available-integrations.module.css @@ -1,20 +1,20 @@ @keyframes scrolling { - 0% { - transform: translateY(0); - } - 100% { - transform: translateY(-50.8%); - } + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(-50.8%); + } } .scrollAnimationContainer { - animation: scrolling; - animation-timing-function: linear; - animation-iteration-count: infinite; + animation: scrolling; + animation-timing-function: linear; + animation-iteration-count: infinite; } @media (prefers-reduced-motion: reduce) { - .scrollAnimationContainer { - animation: none !important; - } -} \ No newline at end of file + .scrollAnimationContainer { + animation: none !important; + } +} diff --git a/apps/docs/src/components/pages/home/review-list/styles.module.css b/apps/docs/src/components/pages/home/review-list/styles.module.css index 5cff5a7d2..53f4abaaa 100644 --- a/apps/docs/src/components/pages/home/review-list/styles.module.css +++ b/apps/docs/src/components/pages/home/review-list/styles.module.css @@ -4,8 +4,6 @@ margin-bottom: 50px; } - - .communityFeedbackPlaceholderImage { display: block; margin: 0 auto; @@ -14,5 +12,3 @@ .communityFeedbackPlaceholderText { text-align: center; } - - diff --git a/apps/docs/src/pages/index.module.css b/apps/docs/src/pages/index.module.css index baeb80f6d..726246ae2 100644 --- a/apps/docs/src/pages/index.module.css +++ b/apps/docs/src/pages/index.module.css @@ -27,7 +27,6 @@ section { max-width: min(100%, 500px); } - .heroBanner { padding: 4rem; position: relative; diff --git a/apps/docs/static/data/contributions.json b/apps/docs/static/data/contributions.json index fbc3a2a80..18dd6bc05 100644 --- a/apps/docs/static/data/contributions.json +++ b/apps/docs/static/data/contributions.json @@ -1 +1,127 @@ -[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"mvanhorn","avatar_url":"https://avatars.githubusercontent.com/u/455140?v=4"},{"login":"SergioChan","avatar_url":"https://avatars.githubusercontent.com/u/10103766?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"marektancak0106","avatar_url":"https://avatars.githubusercontent.com/u/25422667?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"StrandedTurtle","avatar_url":"https://avatars.githubusercontent.com/u/132835255?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"kylegrieder","avatar_url":"https://avatars.githubusercontent.com/u/25424229?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"Gilmoursa","avatar_url":"https://avatars.githubusercontent.com/u/10321421?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"alotlikebeans","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"mairas","avatar_url":"https://avatars.githubusercontent.com/u/407010?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"ohmzi","avatar_url":"https://avatars.githubusercontent.com/u/6551272?v=4"},{"login":"Rhiz3K","avatar_url":"https://avatars.githubusercontent.com/u/33246262?v=4"},{"login":"saschabuehrle","avatar_url":"https://avatars.githubusercontent.com/u/47737812?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"VIVAAN-DHAWAN","avatar_url":"https://avatars.githubusercontent.com/u/150339722?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"sharpsalat","avatar_url":"https://avatars.githubusercontent.com/u/15666932?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"},{"login":"afonsojramos","avatar_url":"https://avatars.githubusercontent.com/u/19473034?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"ashtonbatty","avatar_url":"https://avatars.githubusercontent.com/u/230635?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"cethien","avatar_url":"https://avatars.githubusercontent.com/u/60463918?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"dgshue","avatar_url":"https://avatars.githubusercontent.com/u/12952156?v=4"},{"login":"d-lindahl","avatar_url":"https://avatars.githubusercontent.com/u/690410?v=4"},{"login":"KartulUdus","avatar_url":"https://avatars.githubusercontent.com/u/23346150?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"febrile42","avatar_url":"https://avatars.githubusercontent.com/u/14597122?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"KelianB","avatar_url":"https://avatars.githubusercontent.com/u/11216155?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"}] \ No newline at end of file +[ + { "login": "ajnart", "avatar_url": "https://avatars.githubusercontent.com/u/49837342?v=4" }, + { "login": "manuel-rw", "avatar_url": "https://avatars.githubusercontent.com/u/30572287?v=4" }, + { "login": "Meierschlumpf", "avatar_url": "https://avatars.githubusercontent.com/u/63781622?v=4" }, + { "login": "SeDemal", "avatar_url": "https://avatars.githubusercontent.com/u/26098587?v=4" }, + { "login": "lammersbjorn", "avatar_url": "https://avatars.githubusercontent.com/u/71191962?v=4" }, + { "login": "LarveyOfficial", "avatar_url": "https://avatars.githubusercontent.com/u/39219859?v=4" }, + { "login": "c00ldude1oo", "avatar_url": "https://avatars.githubusercontent.com/u/15677803?v=4" }, + { "login": "InterN0te", "avatar_url": "https://avatars.githubusercontent.com/u/10882916?v=4" }, + { "login": "Aandree5", "avatar_url": "https://avatars.githubusercontent.com/u/32734153?v=4" }, + { "login": "Aimsucks", "avatar_url": "https://avatars.githubusercontent.com/u/1828486?v=4" }, + { "login": "JannesV", "avatar_url": "https://avatars.githubusercontent.com/u/5984244?v=4" }, + { "login": "MauriceNino", "avatar_url": "https://avatars.githubusercontent.com/u/18658092?v=4" }, + { "login": "hillaliy", "avatar_url": "https://avatars.githubusercontent.com/u/950010?v=4" }, + { "login": "Skeeww", "avatar_url": "https://avatars.githubusercontent.com/u/9639992?v=4" }, + { "login": "jackwellerreal", "avatar_url": "https://avatars.githubusercontent.com/u/97435840?v=4" }, + { "login": "RichyHBM", "avatar_url": "https://avatars.githubusercontent.com/u/5472275?v=4" }, + { "login": "Bonfire", "avatar_url": "https://avatars.githubusercontent.com/u/5704760?v=4" }, + { "login": "wieli99", "avatar_url": "https://avatars.githubusercontent.com/u/46794825?v=4" }, + { "login": "ishaanparlikar", "avatar_url": "https://avatars.githubusercontent.com/u/43013132?v=4" }, + { "login": "Zareix", "avatar_url": "https://avatars.githubusercontent.com/u/29818713?v=4" }, + { "login": "tuggan", "avatar_url": "https://avatars.githubusercontent.com/u/4325608?v=4" }, + { "login": "mvanhorn", "avatar_url": "https://avatars.githubusercontent.com/u/455140?v=4" }, + { "login": "SergioChan", "avatar_url": "https://avatars.githubusercontent.com/u/10103766?v=4" }, + { "login": "toineenzo", "avatar_url": "https://avatars.githubusercontent.com/u/4921397?v=4" }, + { "login": "oben01", "avatar_url": "https://avatars.githubusercontent.com/u/22369027?v=4" }, + { "login": "rezstje", "avatar_url": "https://avatars.githubusercontent.com/u/45420315?v=4" }, + { "login": "Spillebulle", "avatar_url": "https://avatars.githubusercontent.com/u/46653946?v=4" }, + { "login": "marektancak0106", "avatar_url": "https://avatars.githubusercontent.com/u/25422667?v=4" }, + { "login": "spkesDE", "avatar_url": "https://avatars.githubusercontent.com/u/1682314?v=4" }, + { "login": "j3lte", "avatar_url": "https://avatars.githubusercontent.com/u/2557568?v=4" }, + { "login": "dslatt", "avatar_url": "https://avatars.githubusercontent.com/u/5211001?v=4" }, + { "login": "Malong11-007", "avatar_url": "https://avatars.githubusercontent.com/u/40298510?v=4" }, + { "login": "castielwaverly", "avatar_url": "https://avatars.githubusercontent.com/u/137005689?v=4" }, + { "login": "xoxyuxu", "avatar_url": "https://avatars.githubusercontent.com/u/3543416?v=4" }, + { "login": "StrandedTurtle", "avatar_url": "https://avatars.githubusercontent.com/u/132835255?v=4" }, + { "login": "MaienM", "avatar_url": "https://avatars.githubusercontent.com/u/583129?v=4" }, + { "login": "kylegrieder", "avatar_url": "https://avatars.githubusercontent.com/u/25424229?v=4" }, + { "login": "HeapReaper", "avatar_url": "https://avatars.githubusercontent.com/u/31496522?v=4" }, + { "login": "Copilot", "avatar_url": "https://avatars.githubusercontent.com/in/1143301?v=4" }, + { "login": "Gilmoursa", "avatar_url": "https://avatars.githubusercontent.com/u/10321421?v=4" }, + { "login": "StefanB7", "avatar_url": "https://avatars.githubusercontent.com/u/22056509?v=4" }, + { "login": "souravghosh01", "avatar_url": "https://avatars.githubusercontent.com/u/37548139?v=4" }, + { "login": "SR3u", "avatar_url": "https://avatars.githubusercontent.com/u/2380522?v=4" }, + { "login": "Rikpat", "avatar_url": "https://avatars.githubusercontent.com/u/33869814?v=4" }, + { "login": "NormanJS", "avatar_url": "https://avatars.githubusercontent.com/u/83409549?v=4" }, + { "login": "No-Maines-Land", "avatar_url": "https://avatars.githubusercontent.com/u/20687725?v=4" }, + { "login": "stark1tty", "avatar_url": "https://avatars.githubusercontent.com/u/69326376?v=4" }, + { "login": "Momcilo42", "avatar_url": "https://avatars.githubusercontent.com/u/10118137?v=4" }, + { "login": "marius-arch", "avatar_url": "https://avatars.githubusercontent.com/u/72494359?v=4" }, + { "login": "Lumilias", "avatar_url": "https://avatars.githubusercontent.com/u/10852161?v=4" }, + { "login": "Havock94", "avatar_url": "https://avatars.githubusercontent.com/u/7635248?v=4" }, + { "login": "Lollyde", "avatar_url": "https://avatars.githubusercontent.com/u/11347524?v=4" }, + { "login": "krishnamuppaneni", "avatar_url": "https://avatars.githubusercontent.com/u/4703366?v=4" }, + { "login": "devtobi", "avatar_url": "https://avatars.githubusercontent.com/u/28538704?v=4" }, + { "login": "TyxTang", "avatar_url": "https://avatars.githubusercontent.com/u/90897955?v=4" }, + { "login": "alotlikebeans", "avatar_url": "https://avatars.githubusercontent.com/u/19630511?v=4" }, + { "login": "WillyJL", "avatar_url": "https://avatars.githubusercontent.com/u/49810075?v=4" }, + { "login": "anonysoul", "avatar_url": "https://avatars.githubusercontent.com/u/105715150?v=4" }, + { "login": "cospeedster", "avatar_url": "https://avatars.githubusercontent.com/u/52749645?v=4" }, + { "login": "diederbert", "avatar_url": "https://avatars.githubusercontent.com/u/162878798?v=4" }, + { "login": "digdilem", "avatar_url": "https://avatars.githubusercontent.com/u/4052275?v=4" }, + { "login": "dinghino", "avatar_url": "https://avatars.githubusercontent.com/u/14729459?v=4" }, + { "login": "gfomichev", "avatar_url": "https://avatars.githubusercontent.com/u/1596146?v=4" }, + { "login": "gnattu", "avatar_url": "https://avatars.githubusercontent.com/u/12995396?v=4" }, + { "login": "tuxpizza", "avatar_url": "https://avatars.githubusercontent.com/u/84710786?v=4" }, + { "login": "xmarkurion", "avatar_url": "https://avatars.githubusercontent.com/u/46654687?v=4" }, + { "login": "huanga", "avatar_url": "https://avatars.githubusercontent.com/u/732970?v=4" }, + { "login": "taos15", "avatar_url": "https://avatars.githubusercontent.com/u/122130728?v=4" }, + { "login": "arghyadipchak", "avatar_url": "https://avatars.githubusercontent.com/u/32430374?v=4" }, + { "login": "AuthorShin", "avatar_url": "https://avatars.githubusercontent.com/u/4959043?v=4" }, + { "login": "benniblot", "avatar_url": "https://avatars.githubusercontent.com/u/47495914?v=4" }, + { "login": "bebsworthy", "avatar_url": "https://avatars.githubusercontent.com/u/5266759?v=4" }, + { "login": "catrielmuller", "avatar_url": "https://avatars.githubusercontent.com/u/2272323?v=4" }, + { "login": "Vysp3r", "avatar_url": "https://avatars.githubusercontent.com/u/62019735?v=4" }, + { "login": "DR-Blogs", "avatar_url": "https://avatars.githubusercontent.com/u/96393186?v=4" }, + { "login": "singular0", "avatar_url": "https://avatars.githubusercontent.com/u/1925883?v=4" }, + { "login": "diogovalentte", "avatar_url": "https://avatars.githubusercontent.com/u/49578155?v=4" }, + { "login": "codezninja", "avatar_url": "https://avatars.githubusercontent.com/u/4400773?v=4" }, + { "login": "fabricionaweb", "avatar_url": "https://avatars.githubusercontent.com/u/15933?v=4" }, + { "login": "nyok1912", "avatar_url": "https://avatars.githubusercontent.com/u/32163949?v=4" }, + { "login": "bo3bdo", "avatar_url": "https://avatars.githubusercontent.com/u/5271380?v=4" }, + { "login": "hskrtich", "avatar_url": "https://avatars.githubusercontent.com/u/1214484?v=4" }, + { "login": "ishults", "avatar_url": "https://avatars.githubusercontent.com/u/7275442?v=4" }, + { "login": "jelliuk", "avatar_url": "https://avatars.githubusercontent.com/u/4790959?v=4" }, + { "login": "Moohan", "avatar_url": "https://avatars.githubusercontent.com/u/5982260?v=4" }, + { "login": "tesar-tech", "avatar_url": "https://avatars.githubusercontent.com/u/33880579?v=4" }, + { "login": "jbruell", "avatar_url": "https://avatars.githubusercontent.com/u/31685172?v=4" }, + { "login": "JasonLeeB06", "avatar_url": "https://avatars.githubusercontent.com/u/82266978?v=4" }, + { "login": "jeffersonraimon", "avatar_url": "https://avatars.githubusercontent.com/u/80064475?v=4" }, + { "login": "jo-chemla", "avatar_url": "https://avatars.githubusercontent.com/u/16822841?v=4" }, + { "login": "joser93", "avatar_url": "https://avatars.githubusercontent.com/u/6912089?v=4" }, + { "login": "justijndepover", "avatar_url": "https://avatars.githubusercontent.com/u/9008623?v=4" }, + { "login": "leandroscardua", "avatar_url": "https://avatars.githubusercontent.com/u/24698541?v=4" }, + { "login": "mairas", "avatar_url": "https://avatars.githubusercontent.com/u/407010?v=4" }, + { "login": "itzTheMeow", "avatar_url": "https://avatars.githubusercontent.com/u/50887230?v=4" }, + { "login": "NicolasNewman", "avatar_url": "https://avatars.githubusercontent.com/u/16135852?v=4" }, + { "login": "NikeLaosClericus", "avatar_url": "https://avatars.githubusercontent.com/u/39810627?v=4" }, + { "login": "noahcroghan", "avatar_url": "https://avatars.githubusercontent.com/u/27422774?v=4" }, + { "login": "ohmzi", "avatar_url": "https://avatars.githubusercontent.com/u/6551272?v=4" }, + { "login": "Rhiz3K", "avatar_url": "https://avatars.githubusercontent.com/u/33246262?v=4" }, + { "login": "saschabuehrle", "avatar_url": "https://avatars.githubusercontent.com/u/47737812?v=4" }, + { "login": "CrazyWolf13", "avatar_url": "https://avatars.githubusercontent.com/u/96661824?v=4" }, + { "login": "VIVAAN-DHAWAN", "avatar_url": "https://avatars.githubusercontent.com/u/150339722?v=4" }, + { "login": "generalmat82", "avatar_url": "https://avatars.githubusercontent.com/u/110256073?v=4" }, + { "login": "lthomsen", "avatar_url": "https://avatars.githubusercontent.com/u/28560325?v=4" }, + { "login": "pitschi", "avatar_url": "https://avatars.githubusercontent.com/u/6841565?v=4" }, + { "login": "sharpsalat", "avatar_url": "https://avatars.githubusercontent.com/u/15666932?v=4" }, + { "login": "tech62", "avatar_url": "https://avatars.githubusercontent.com/u/16237642?v=4" }, + { "login": "AartSchinkel", "avatar_url": "https://avatars.githubusercontent.com/u/189675191?v=4" }, + { "login": "afonsojramos", "avatar_url": "https://avatars.githubusercontent.com/u/19473034?v=4" }, + { "login": "m0s4ik", "avatar_url": "https://avatars.githubusercontent.com/u/26578395?v=4" }, + { "login": "ashtonbatty", "avatar_url": "https://avatars.githubusercontent.com/u/230635?v=4" }, + { "login": "Oupsman", "avatar_url": "https://avatars.githubusercontent.com/u/11260343?v=4" }, + { "login": "cethien", "avatar_url": "https://avatars.githubusercontent.com/u/60463918?v=4" }, + { "login": "DZ945brH", "avatar_url": "https://avatars.githubusercontent.com/u/42635243?v=4" }, + { "login": "dgshue", "avatar_url": "https://avatars.githubusercontent.com/u/12952156?v=4" }, + { "login": "d-lindahl", "avatar_url": "https://avatars.githubusercontent.com/u/690410?v=4" }, + { "login": "KartulUdus", "avatar_url": "https://avatars.githubusercontent.com/u/23346150?v=4" }, + { "login": "ieugen", "avatar_url": "https://avatars.githubusercontent.com/u/1050920?v=4" }, + { "login": "faugusto-oliveira", "avatar_url": "https://avatars.githubusercontent.com/u/37384074?v=4" }, + { "login": "frankvHoof93", "avatar_url": "https://avatars.githubusercontent.com/u/7346516?v=4" }, + { "login": "febrile42", "avatar_url": "https://avatars.githubusercontent.com/u/14597122?v=4" }, + { "login": "Kaotic3", "avatar_url": "https://avatars.githubusercontent.com/u/80522225?v=4" }, + { "login": "KelianB", "avatar_url": "https://avatars.githubusercontent.com/u/11216155?v=4" }, + { "login": "hotrungnhan", "avatar_url": "https://avatars.githubusercontent.com/u/40029631?v=4" } +] diff --git a/apps/docs/static/data/translation-contributions.json b/apps/docs/static/data/translation-contributions.json index 5818e6339..1c89663dd 100644 --- a/apps/docs/static/data/translation-contributions.json +++ b/apps/docs/static/data/translation-contributions.json @@ -1 +1,966 @@ -[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"prubin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png"},{"username":"sam-tam-sam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17578052/medium/1628dc2954ce3ae95e0caaa2bd60ab0c.png"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"perrygamerptyt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Tobost06","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg"},{"username":"Kf637","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"olavinto","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14424644/medium/37c01732bd2b7a272b421807a05ccfeb.png"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"Wjouter","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"GerOriki","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16268376/medium/da00e54b08cd40348231d92873a0cd0a_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"renan.costaalencar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16938427/medium/6d25b25320c5bde734118dec4af9cd5b.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"},{"username":"ivann136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png"},{"username":"Maheshivara","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg"},{"username":"brunogui81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.jpeg"},{"username":"michelwilhelm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17542190/medium/4c6b33fd8993ff565fa75add2ce8355e.jpeg"},{"username":"dias-gxstavo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17547376/medium/8c6b109aae8aeb651192346a39ae9e5b.jpeg"},{"username":"ToxykAuBleu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17614030/medium/8d21e0608560172b121bd46126d827c7.jpeg"},{"username":"e.erdemir","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17617994/medium/7259a29db9941c6171a8cbbd643b92bd.png"},{"username":"sjonkreutz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17618306/medium/7601c45d015189a863656e21348d223b.png"},{"username":"volovich0377","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17620388/medium/c929a8fbd24f96d17620fa497ade7309.png"},{"username":"Hamstio1","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17624898/medium/406e0bf40094c24a01c3064f8f5b2a82.png"},{"username":"i3laa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17627462/medium/613a9d283ed8b69819ee181903851660.jpeg"},{"username":"bastiengrignon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17629884/medium/ddfc3339285bd65195fcd834e512e9b7.jpeg"},{"username":"kauhee","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17644600/medium/def1b9066cf9275b4273a5a5dca7f325.png"},{"username":"hongminzheng","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17683860/medium/a764f4963912777d27a7cd98e136a2b2.png"},{"username":"d-lindahl","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17726729/medium/cbde348582fbabcfadd89a56cd5a0b40.png"},{"username":"Enoal-Fauchille-Bolle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17734649/medium/6e6fb29198782dc7856ea21811db669c.jpeg"}] \ No newline at end of file +[ + { + "username": "carlchina", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png" + }, + { + "username": "zielmann", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png" + }, + { + "username": "Thalyn", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png" + }, + { + "username": "magnushj", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png" + }, + { + "username": "almontegil", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png" + }, + { + "username": "andibing", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg" + }, + { + "username": "gronare", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png" + }, + { + "username": "SmartPhoneLover", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg" + }, + { + "username": "marcelotk_15", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png" + }, + { + "username": "S3OD177", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png" + }, + { + "username": "marcg", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png" + }, + { + "username": "BeersTeddy", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png" + }, + { + "username": "jamesmcmahon0", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg" + }, + { + "username": "b1nar10", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/249b02e3368752cb175446082015737c_default.png" + }, + { + "username": "vannCN", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg" + }, + { + "username": "binswm", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png" + }, + { + "username": "SkewRam", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg" + }, + { + "username": "raphcatarino", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg" + }, + { + "username": "shillos5", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg" + }, + { + "username": "wolong98", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg" + }, + { + "username": "spair0039", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png" + }, + { + "username": "MajorMarcin", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg" + }, + { + "username": "KosmoMoustache", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png" + }, + { + "username": "Soochaehwa", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png" + }, + { + "username": "garryfield", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg" + }, + { + "username": "droidenko", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg" + }, + { + "username": "maathis", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg" + }, + { + "username": "bukvam", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg" + }, + { + "username": "gm.cinalli", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg" + }, + { + "username": "antoine2tt", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png" + }, + { + "username": "cretzen", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg" + }, + { + "username": "ktKongTong", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg" + }, + { + "username": "marinkaberg", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg" + }, + { + "username": "djismgaming", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg" + }, + { + "username": "f1refa11", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png" + }, + { + "username": "jeffersonraimon", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png" + }, + { + "username": "giop98", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg" + }, + { + "username": "tomislav.kraljevic", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png" + }, + { + "username": "Walkx", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png" + }, + { + "username": "andrea.rosso", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png" + }, + { + "username": "ajnart", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg" + }, + { + "username": "Witchling", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg" + }, + { + "username": "guineuu", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg" + }, + { + "username": "Bulgus", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg" + }, + { + "username": "Narno", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png" + }, + { + "username": "BySempron", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png" + }, + { + "username": "jonathan.berglin.work", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png" + }, + { + "username": "icdmkg", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif" + }, + { + "username": "irithys", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png" + }, + { + "username": "JannesV", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png" + }, + { + "username": "benniblot", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg" + }, + { + "username": "pacjo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png" + }, + { + "username": "Payou6994", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png" + }, + { + "username": "fzibi21", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png" + }, + { + "username": "WowMurdock", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png" + }, + { + "username": "hbooo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg" + }, + { + "username": "Manicraft1001", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg" + }, + { + "username": "Void123", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png" + }, + { + "username": "R4cc", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg" + }, + { + "username": "fabricionaweb", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png" + }, + { + "username": "JokeOfDead", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg" + }, + { + "username": "hkz", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png" + }, + { + "username": "Steken", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png" + }, + { + "username": "flar.anton", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg" + }, + { + "username": "Bon", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg" + }, + { + "username": "bfkadan", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png" + }, + { + "username": "BunnySweety", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png" + }, + { + "username": "HRKings", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png" + }, + { + "username": "wiston81", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg" + }, + { + "username": "qaz0911", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png" + }, + { + "username": "qqyule", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png" + }, + { + "username": "Bims0n", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg" + }, + { + "username": "TariqDaCoder", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png" + }, + { + "username": "Anarchon", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg" + }, + { + "username": "Ashun", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png" + }, + { + "username": "sebekmartin", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg" + }, + { + "username": "RagnarGraves", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png" + }, + { + "username": "PrtmPhlp", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png" + }, + { + "username": "DooYoo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png" + }, + { + "username": "espentruls", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg" + }, + { + "username": "frisco82", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg" + }, + { + "username": "lupineDK", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png" + }, + { + "username": "hillaliy", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg" + }, + { + "username": "MarcOrfilaCarreras", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png" + }, + { + "username": "robertbridda", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png" + }, + { + "username": "MKoniuszko", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg" + }, + { + "username": "HeroSizy", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png" + }, + { + "username": "dwt136", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png" + }, + { + "username": "asifthewebguy", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png" + }, + { + "username": "eiloogs", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif" + }, + { + "username": "_vytdv", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png" + }, + { + "username": "crendasien", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg" + }, + { + "username": "edxo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png" + }, + { + "username": "somerlev", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg" + }, + { + "username": "kid1412621", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png" + }, + { + "username": "suming", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png" + }, + { + "username": "nick.gher", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png" + }, + { + "username": "DataCat", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png" + }, + { + "username": "dizo89", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg" + }, + { + "username": "tee_noodle", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png" + }, + { + "username": "Marty88", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg" + }, + { + "username": "Spillebulle", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG" + }, + { + "username": "petitmewen", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg" + }, + { + "username": "NoProsNoNoobs", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png" + }, + { + "username": "y.gybson", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg" + }, + { + "username": "inside90", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png" + }, + { + "username": "RJSkudra", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png" + }, + { + "username": "binge203", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif" + }, + { + "username": "Mailootje", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg" + }, + { + "username": "tim-wiegers", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png" + }, + { + "username": "GkhnG", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png" + }, + { + "username": "Zoen-Millo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg" + }, + { + "username": "HooinKyoma", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg" + }, + { + "username": "wathergeen", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png" + }, + { + "username": "MoeToo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png" + }, + { + "username": "itodouble", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png" + }, + { + "username": "loslocitos", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg" + }, + { + "username": "Oversleep", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png" + }, + { + "username": "Beardy", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png" + }, + { + "username": "raelyan", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg" + }, + { + "username": "dolphin738", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png" + }, + { + "username": "brunotco", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png" + }, + { + "username": "LukeIsHereToDevelop", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png" + }, + { + "username": "kennit", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png" + }, + { + "username": "kuunpire", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg" + }, + { + "username": "Sandor-dev", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png" + }, + { + "username": "Meierschlumpf", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg" + }, + { + "username": "harmlesscat", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png" + }, + { + "username": "OrzWTF", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg" + }, + { + "username": "tagaishi", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png" + }, + { + "username": "azurite928", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png" + }, + { + "username": "Ronner231", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg" + }, + { + "username": "ugyes", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png" + }, + { + "username": "rpieja", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png" + }, + { + "username": "flambyisyou", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png" + }, + { + "username": "Topbcy", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg" + }, + { + "username": "ai5d02sb", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png" + }, + { + "username": "explosiveparrot", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png" + }, + { + "username": "DestroyCom", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png" + }, + { + "username": "neotraxo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png" + }, + { + "username": "gzxpa", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png" + }, + { + "username": "TORIK", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png" + }, + { + "username": "sergio.pibot", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg" + }, + { + "username": "karam-ajaj", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg" + }, + { + "username": "SimonHenz97", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png" + }, + { + "username": "olsson82", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png" + }, + { + "username": "bo3bdo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg" + }, + { + "username": "AngryPlayer04", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg" + }, + { + "username": "ehatamm", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg" + }, + { + "username": "Balionelis", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png" + }, + { + "username": "kwargs", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png" + }, + { + "username": "lucicu", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png" + }, + { + "username": "Michael5564445", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png" + }, + { + "username": "Netscream", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png" + }, + { + "username": "belicstefan04", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png" + }, + { + "username": "Hamad2066", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg" + }, + { + "username": "3ct0pl4sm", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png" + }, + { + "username": "sanchez.marcell626", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png" + }, + { + "username": "Minoctis", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg" + }, + { + "username": "homarr", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png" + }, + { + "username": "mwgg", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png" + }, + { + "username": "kiwinho", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg" + }, + { + "username": "tjvg4m34r13", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg" + }, + { + "username": "Diegoem", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png" + }, + { + "username": "bouks69", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg" + }, + { + "username": "futhgar", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg" + }, + { + "username": "GrimSQL", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png" + }, + { + "username": "chnikel", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png" + }, + { + "username": "yuki19870616", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png" + }, + { + "username": "noamdal", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png" + }, + { + "username": "MalithRukshan", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png" + }, + { + "username": "minirope19", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg" + }, + { + "username": "prubin", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png" + }, + { + "username": "sam-tam-sam", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17578052/medium/1628dc2954ce3ae95e0caaa2bd60ab0c.png" + }, + { + "username": "toineenzo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png" + }, + { + "username": "ArcaneWater", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png" + }, + { + "username": "Ebedami", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg" + }, + { + "username": "perrygamerptyt", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.jpg" + }, + { + "username": "SergiSvK", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png" + }, + { + "username": "jeongeon", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png" + }, + { + "username": "MrTranCFCVN", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png" + }, + { + "username": "Tobost06", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg" + }, + { + "username": "Kf637", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png" + }, + { + "username": "Cruellest", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg" + }, + { + "username": "olavinto", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14424644/medium/37c01732bd2b7a272b421807a05ccfeb.png" + }, + { + "username": "Thario", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png" + }, + { + "username": "Wjouter", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.png" + }, + { + "username": "albanobattistella", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg" + }, + { + "username": "Kachelkaiser", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png" + }, + { + "username": "regi4", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png" + }, + { + "username": "baton5129", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG" + }, + { + "username": "meviper", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png" + }, + { + "username": "GerOriki", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16268376/medium/da00e54b08cd40348231d92873a0cd0a_default.png" + }, + { + "username": "TheRedCyclops", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png" + }, + { + "username": "dymek37", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png" + }, + { + "username": "B3CKDOOR", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png" + }, + { + "username": "Larsluph", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png" + }, + { + "username": "FOEDI", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png" + }, + { + "username": "xmarkurion", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png" + }, + { + "username": "gregid", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png" + }, + { + "username": "Flameberg", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png" + }, + { + "username": "Playfust", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg" + }, + { + "username": "Cotignac", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg" + }, + { + "username": "LeaHun", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png" + }, + { + "username": "jackwellerreal", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png" + }, + { + "username": "renan.costaalencar", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16938427/medium/6d25b25320c5bde734118dec4af9cd5b.png" + }, + { + "username": "andrius.cim", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png" + }, + { + "username": "xjxexrxrxyx", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg" + }, + { + "username": "bilhal.fellah", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png" + }, + { + "username": "the_octo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png" + }, + { + "username": "BamesJond", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png" + }, + { + "username": "Kornikus", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png" + }, + { + "username": "xoxyuxu", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png" + }, + { + "username": "cryptodntsleep", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png" + }, + { + "username": "yaniorg", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg" + }, + { + "username": "Vidariondr", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png" + }, + { + "username": "Fastery", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg" + }, + { + "username": "stratself", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png" + }, + { + "username": "wuzeqin", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png" + }, + { + "username": "ChristopherBull", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg" + }, + { + "username": "darkbcnlord", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png" + }, + { + "username": "zhoran1997", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png" + }, + { + "username": "gilalves1703", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png" + }, + { + "username": "iServeCloud", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png" + }, + { + "username": "guibolzantvbox", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg" + }, + { + "username": "ivann136", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png" + }, + { + "username": "Maheshivara", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg" + }, + { + "username": "brunogui81", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.jpeg" + }, + { + "username": "michelwilhelm", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17542190/medium/4c6b33fd8993ff565fa75add2ce8355e.jpeg" + }, + { + "username": "dias-gxstavo", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17547376/medium/8c6b109aae8aeb651192346a39ae9e5b.jpeg" + }, + { + "username": "ToxykAuBleu", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17614030/medium/8d21e0608560172b121bd46126d827c7.jpeg" + }, + { + "username": "e.erdemir", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17617994/medium/7259a29db9941c6171a8cbbd643b92bd.png" + }, + { + "username": "sjonkreutz", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17618306/medium/7601c45d015189a863656e21348d223b.png" + }, + { + "username": "volovich0377", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17620388/medium/c929a8fbd24f96d17620fa497ade7309.png" + }, + { + "username": "Hamstio1", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17624898/medium/406e0bf40094c24a01c3064f8f5b2a82.png" + }, + { + "username": "i3laa", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17627462/medium/613a9d283ed8b69819ee181903851660.jpeg" + }, + { + "username": "bastiengrignon", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17629884/medium/ddfc3339285bd65195fcd834e512e9b7.jpeg" + }, + { + "username": "kauhee", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17644600/medium/def1b9066cf9275b4273a5a5dca7f325.png" + }, + { + "username": "hongminzheng", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17683860/medium/a764f4963912777d27a7cd98e136a2b2.png" + }, + { + "username": "d-lindahl", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17726729/medium/cbde348582fbabcfadd89a56cd5a0b40.png" + }, + { + "username": "Enoal-Fauchille-Bolle", + "avatarUrl": "https://crowdin-static.cf-downloads.crowdin.com/avatar/17734649/medium/6e6fb29198782dc7856ea21811db669c.jpeg" + } +] diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json index 5062b181b..483552e60 100644 --- a/apps/docs/tsconfig.json +++ b/apps/docs/tsconfig.json @@ -17,15 +17,8 @@ "paths": { "@/*": ["./src/*"], "@site/*": ["./*"] - }, + } }, - "include": [ - "**/*.ts", - "**/*.jsx", - "**/*.js", - "**/*.tsx", - "**/*.md", - "**/*.mdx", - ], + "include": ["**/*.ts", "**/*.jsx", "**/*.js", "**/*.tsx", "**/*.md", "**/*.mdx"], "exclude": ["build", "node_modules"] } diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_board-add-menu.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_board-add-menu.tsx index c67672fe0..0448e1097 100644 --- a/apps/nextjs/src/app/[locale]/boards/(content)/_board-add-menu.tsx +++ b/apps/nextjs/src/app/[locale]/boards/(content)/_board-add-menu.tsx @@ -5,6 +5,7 @@ import { Group, Menu } from "@mantine/core"; import { IconBox, IconBoxAlignTop, IconChevronDown, IconPlug, IconPlus, IconResize } from "@tabler/icons-react"; import { useSession } from "@homarr/auth/client"; +import { useRequiredBoard } from "@homarr/boards/context"; import { useModalAction } from "@homarr/modals"; import { AppSelectModal } from "@homarr/modals-collection"; import { useI18n } from "@homarr/translation/client"; @@ -19,6 +20,7 @@ import { HeaderButton } from "~/components/layout/header/button"; export const BoardAddMenu = () => { const { data: session } = useSession(); + const board = useRequiredBoard(); const { openModal: openCategoryEditModal } = useModalAction(CategoryEditModal); const { openModal: openItemSelectModal } = useModalAction(ItemSelectModal); const { openModal: openAppSelectModal } = useModalAction(AppSelectModal); @@ -54,7 +56,7 @@ export const BoardAddMenu = () => { - } onClick={() => openItemSelectModal()}> + } onClick={() => openItemSelectModal({ boardId: board.id })}> {t("item.action.create")} import("./_board-add-menu"); +const preloadBoardAddMenu = () => void loadBoardAddMenu().catch(() => undefined); +const BoardAddMenu = dynamic(() => loadBoardAddMenu().then(({ BoardAddMenu: AddMenu }) => AddMenu), { + loading: () => ( + + + + ), +}); export const BoardContentHeaderActions = ({ demoReadOnly }: { demoReadOnly: boolean }) => { const [isEditMode] = useEditMode(); @@ -52,16 +43,16 @@ export const BoardContentHeaderActions = ({ demoReadOnly }: { demoReadOnly: bool return ( <> - {isEditMode && } + {isEditMode && } {!demoReadOnly && ( - + - + )} @@ -69,95 +60,6 @@ export const BoardContentHeaderActions = ({ demoReadOnly }: { demoReadOnly: bool ); }; -const AddMenu = () => { - const board = useRequiredBoard(); - const { data: session } = useSession(); - const { openModal: openCategoryEditModal } = useModalAction(CategoryEditModal); - const { openModal: openItemSelectModal } = useModalAction(ItemSelectModal); - const { openModal: openAppSelectModal } = useModalAction(AppSelectModal); - const { openModal: openIntegrationSelectModal } = useModalAction(IntegrationSelectModal); - const { addCategoryToEnd } = useCategoryActions(); - const { addDynamicSection } = useDynamicSectionActions(); - const { createItem } = useItemActions(); - const t = useI18n(); - - const handleAddCategory = useCallback( - () => - openCategoryEditModal( - { - category: { - id: "new", - name: "", - }, - onSuccess({ name }) { - addCategoryToEnd({ name }); - }, - submitLabel: t("section.category.create.submit"), - }, - { - title: (t) => t("section.category.create.title"), - }, - ), - [addCategoryToEnd, openCategoryEditModal, t], - ); - - const handleSelectItem = useCallback(() => { - openItemSelectModal({ boardId: board.id }); - }, [board.id, openItemSelectModal]); - - const handleSelectApp = useCallback(() => { - openAppSelectModal({ - onSelect: (app) => { - createItem({ - kind: "app", - options: { appId: app.id }, - }); - }, - withCreate: session?.user.permissions.includes("app-create") ?? false, - }); - }, [openAppSelectModal, createItem]); - - const handleAddIntegration = useCallback(() => { - openIntegrationSelectModal({}); - }, [openIntegrationSelectModal]); - - return ( - - - - - - - - - - - } onClick={handleSelectItem}> - {t("item.action.create")} - - - } onClick={handleSelectApp}> - {t("app.action.add")} - - - } onClick={handleAddIntegration}> - {t("integration.action.create")} - - - - - } onClick={handleAddCategory}> - {t("section.category.action.create")} - - - } onClick={addDynamicSection}> - {t("section.dynamic.action.create")} - - - - ); -}; - const EditModeMenu = ({ demoReadOnly }: { demoReadOnly: boolean }) => { const [isEditMode, { open, close }] = useEditMode(); const board = useRequiredBoard(); @@ -204,27 +106,32 @@ const EditModeMenu = ({ demoReadOnly }: { demoReadOnly: boolean }) => { usePreventLeaveWithDirty(isEditMode); return ( - + {isEditMode ? : } - + ); }; const SelectBoardsMenu = () => { - const { data: boards = [] } = clientApi.board.getAllBoards.useQuery(); + const [isOpen, setIsOpen] = useState(false); + const utils = clientApi.useUtils(); + const { data: boards = [], isPending } = clientApi.board.getAllBoards.useQuery(undefined, { enabled: isOpen }); + const preloadBoards = () => void utils.board.getAllBoards.prefetch(); return ( - - - + + + @@ -232,6 +139,11 @@ const SelectBoardsMenu = () => { + {isPending && ( +
    + +
    + )} {boards.map((board) => ( {
    - +
    ); }; @@ -259,15 +171,13 @@ const usePreventLeaveWithDirty = (isDirty: boolean) => { useEffect(() => { if (!isDirty) return; - const handleClick = (event: Event) => { - const target = (event.target as HTMLElement).closest("a"); - - if (!target) { - console.warn("No anchor element found for click event", event); - return; - } + const handleClick = (event: MouseEvent) => { + if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return; + const target = event.target instanceof Element ? event.target.closest(anchorSelector) : null; + if (!target) return; event.preventDefault(); + event.stopPropagation(); openConfirmModal({ title: t("board.action.edit.confirmLeave.title"), @@ -293,19 +203,14 @@ const usePreventLeaveWithDirty = (isDirty: boolean) => { event.returnValue = true; }; - const anchors = document.querySelectorAll(anchorSelector); - anchors.forEach((link) => { - link.addEventListener("click", handleClick); - }); + document.addEventListener("click", handleClick, true); window.addEventListener("popstate", handlePopState); window.addEventListener("beforeunload", handleBeforeUnload); return () => { - anchors.forEach((link) => { - link.removeEventListener("click", handleClick); - }); + document.removeEventListener("click", handleClick, true); window.removeEventListener("popstate", handlePopState); window.removeEventListener("beforeunload", handleBeforeUnload); }; - }, [isDirty]); + }, [isDirty, openConfirmModal, router, t]); }; diff --git a/apps/nextjs/src/app/[locale]/boards/[name]/settings/_customCss.tsx b/apps/nextjs/src/app/[locale]/boards/[name]/settings/_customCss.tsx index 42e64a3ab..2ad05962c 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/_customCss.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/_customCss.tsx @@ -1,6 +1,6 @@ "use client"; -import { Alert, Button, Group, Input, Stack } from "@mantine/core"; +import { Alert, Input } from "@mantine/core"; import { highlight, languages } from "prismjs"; import Editor from "react-simple-code-editor"; @@ -8,65 +8,44 @@ import "~/styles/prismjs.scss"; import { IconInfoCircle } from "@tabler/icons-react"; -import { useForm } from "@homarr/form"; import { useSession } from "@homarr/auth/client"; +import type { UseFormReturnType } from "@homarr/form"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; +import { SectionCard } from "~/components/manage/section-card"; import { WorkshopCssImportButton } from "~/components/workshop/workshop-css-import-button"; - -import type { Board } from "../../_types"; -import { useSavePartialSettingsMutation } from "./_shared"; +import type { FormValues } from "./_settings-form"; import classes from "./customcss.module.css"; interface Props { - board: Board; + form: UseFormReturnType; } -export const CustomCssSettingsContent = ({ board }: Props) => { +export const CustomCssSettingsContent = ({ form }: Props) => { const { data: session } = useSession(); const isAdmin = session?.user.permissions.includes("admin") ?? false; const t = useI18n(); const customCssT = useScopedI18n("board.field.customCss"); - const { mutate: savePartialSettings, isPending } = useSavePartialSettingsMutation(board); - const form = useForm({ - initialValues: { - customCss: board.customCss ?? "", - }, - }); return ( -
    { - savePartialSettings({ - id: board.id, - ...values, - }); - })} - > - - + + - }> - {customCssT("customClassesAlert.description")} - - - - {isAdmin ? form.setFieldValue("customCss", css)} /> : } - - - -
    + }> + {customCssT("customClassesAlert.description")} + + {isAdmin && form.setFieldValue("customCss", css)} />} + ); }; interface CustomCssInputProps { value?: string; onChange: (value: string) => void; + error?: React.ReactNode; } -const CustomCssInput = ({ value, onChange }: CustomCssInputProps) => { +const CustomCssInput = ({ value, onChange, error }: CustomCssInputProps) => { const customCssT = useScopedI18n("board.field.customCss"); return ( @@ -76,6 +55,7 @@ const CustomCssInput = ({ value, onChange }: CustomCssInputProps) => { htmlFor: "custom-css", }} description={customCssT("description")} + error={error} inputWrapperOrder={["label", "description", "input", "error"]} >
    diff --git a/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx b/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx index 711596e65..d7fad3752 100644 --- a/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx +++ b/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx @@ -3,6 +3,7 @@ import { notFound, redirect } from "next/navigation"; import { AppShellMain } from "@mantine/core"; import { TRPCError } from "@trpc/server"; +import { getRscUserSettingsAsync } from "@homarr/api/user-server"; import { auth } from "@homarr/auth/next"; import { BoardProvider } from "@homarr/boards/context"; import { EditModeProvider } from "@homarr/boards/edit-mode"; @@ -12,7 +13,8 @@ import { ModalProvider } from "@homarr/modals"; import { MainHeader } from "~/components/layout/header"; import { BoardLogoWithTitle } from "~/components/layout/logo/board-logo"; import { ClientShell } from "~/components/layout/shell"; -import { BoardTourProvider } from "~/components/onboarding/board-tour"; +import { BoardTourGate } from "~/components/onboarding/board-tour-gate"; +import { env } from "~/env"; import { getCurrentColorSchemeAsync } from "~/theme/color-scheme"; import type { Board } from "./_types"; import type { Params } from "./(content)/_creator"; @@ -22,11 +24,6 @@ import { BoardMantineProvider } from "./(content)/_theme"; const logger = createLogger({ module: "createBoardLayout" }); -const BoardTourWrapper = ({ hasSession, children }: PropsWithChildren<{ hasSession: boolean }>) => { - if (!hasSession) return <>{children}; - return {children}; -}; - interface CreateBoardLayoutProps { headerActions: JSX.Element; getInitialBoardAsync: (params: TParams) => Promise; @@ -44,8 +41,32 @@ export const createBoardLayout = ({ }: PropsWithChildren<{ params: Promise; }>) => { - const session = await auth(); - const initialBoard = await getInitialBoard(await params).catch((error) => { + const resolvedParams = await params; + const sessionPromise = auth(); + const initialBoardPromise = getInitialBoard(resolvedParams).then( + (board) => ({ status: "fulfilled", board }) as const, + (error: unknown) => ({ status: "rejected", error }) as const, + ); + const colorSchemePromise = getCurrentColorSchemeAsync(); + const shouldRunBoardTourPromise = sessionPromise.then(async (session) => { + if (!withTour || !session || env.DEMO_MODE) return false; + + try { + const user = await getRscUserSettingsAsync(session.user.id); + return user !== undefined && !user.completedBoardTour; + } catch (error) { + logger.error(new Error("Failed to load the board tour status", { cause: error })); + return false; + } + }); + const [session, initialBoardResult, colorScheme, shouldRunBoardTour] = await Promise.all([ + sessionPromise, + initialBoardPromise, + colorSchemePromise, + shouldRunBoardTourPromise, + ]); + if (initialBoardResult.status === "rejected") { + const { error } = initialBoardResult; if (error instanceof TRPCError && error.code === "NOT_FOUND") { if (!session) { logger.debug("No home board found for anonymous user, redirecting to login"); @@ -61,8 +82,8 @@ export const createBoardLayout = ({ } throw error; - }); - const colorScheme = await getCurrentColorSchemeAsync(); + } + const initialBoard = initialBoardResult.board; return ( @@ -71,7 +92,7 @@ export const createBoardLayout = ({ - + } @@ -80,7 +101,7 @@ export const createBoardLayout = ({ /> {children} - + diff --git a/apps/nextjs/src/app/[locale]/layout.tsx b/apps/nextjs/src/app/[locale]/layout.tsx index 9d94da2aa..5c5171d63 100644 --- a/apps/nextjs/src/app/[locale]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/layout.tsx @@ -13,11 +13,11 @@ import { notFound } from "next/navigation"; import type { DayOfWeek } from "@mantine/dates"; import { NextIntlClientProvider } from "next-intl"; -import { api } from "@homarr/api/server"; import { env as authEnv } from "@homarr/auth/env"; +import { getRscServerSettingsAsync } from "@homarr/api/server-settings-server"; +import { getRscUserSettingsAsync } from "@homarr/api/user-server"; import { auth } from "@homarr/auth/next"; -import { db } from "@homarr/db"; -import { getServerSettingsAsync } from "@homarr/db/queries"; +import { createLogger } from "@homarr/core/infrastructure/logs"; import { ModalProvider } from "@homarr/modals"; import { Notifications } from "@homarr/notifications"; import { SettingsProvider } from "@homarr/settings"; @@ -45,6 +45,8 @@ const fontSans = Inter({ variable: "--font-sans", }); +const logger = createLogger({ module: "rootLayout" }); + // eslint-disable-next-line no-restricted-syntax export const generateMetadata = async (): Promise => ({ title: "Homarr", @@ -80,15 +82,27 @@ export default async function Layout(props: { children: React.ReactNode; params: Promise<{ locale: SupportedLanguage }>; }) { - if (!isLocaleSupported((await props.params).locale)) { + const { locale } = await props.params; + if (!isLocaleSupported(locale)) { notFound(); } - const session = await auth(); - const user = session ? await api.user.getById({ userId: session.user.id }).catch(() => null) : null; - const serverSettings = await getServerSettingsAsync(db); - const colorScheme = await getCurrentColorSchemeAsync(); - const direction = isLocaleRTL((await props.params).locale) ? "rtl" : "ltr"; + const sessionPromise = auth(); + const userPromise = sessionPromise.then((session) => + session + ? getRscUserSettingsAsync(session.user.id).catch((error: unknown) => { + logger.error(new Error("Failed to load the authenticated user in the root layout", { cause: error })); + return null; + }) + : null, + ); + const [session, user, serverSettings, colorScheme] = await Promise.all([ + sessionPromise, + userPromise, + getRscServerSettingsAsync(), + getCurrentColorSchemeAsync(), + ]); + const direction = isLocaleRTL(locale) ? "rtl" : "ltr"; const publicUrls = resolveHomarrUrlConfig({ homarrWebsiteUrl: env.HOMARR_WEBSITE_URL, workshopApiUrl: env.WORKSHOP_API_URL, @@ -132,8 +146,6 @@ export default async function Layout(props: { (innerProps) => , ]); - const { locale } = await props.params; - return ( // Instead of ColorSchemScript we use data-mantine-color-scheme to prevent flickering { + if (!session || nextEnv.DEMO_MODE) return false; + + try { + const user = await getRscUserSettingsAsync(session.user.id); + return user !== undefined && !user.completedManageTour; + } catch (error) { + logger.error(new Error("Failed to load the management tour status", { cause: error })); + return false; + } + }); + const [t, session, shouldRunManageTour] = await Promise.all([ + getScopedI18n("management.navbar"), + sessionPromise, + shouldRunManageTourPromise, + ]); const navigationLinks: NavigationLink[] = [ { label: t("items.home"), @@ -62,7 +82,7 @@ export default async function ManageLayout({ children }: PropsWithChildren) { icon: IconBox, href: "/manage/apps", label: t("items.apps"), - hidden: !session, + hidden: !session?.user.permissions.includes("app-create"), iconProps: { strokeWidth: 2.5, }, @@ -72,7 +92,7 @@ export default async function ManageLayout({ children }: PropsWithChildren) { icon: IconAffiliateFilled, href: "/manage/integrations", label: t("items.integrations"), - hidden: !session, + hidden: !session?.user.permissions.includes("integration-create"), "data-onboarding-tour-id": "manage-integrations", }, { @@ -91,7 +111,7 @@ export default async function ManageLayout({ children }: PropsWithChildren) { icon: IconSearch, href: "/manage/search-engines", label: t("items.searchEngies"), - hidden: !session, + hidden: !session?.user.permissions.includes("search-engine-create"), iconProps: { strokeWidth: 2.5, }, @@ -101,7 +121,7 @@ export default async function ManageLayout({ children }: PropsWithChildren) { icon: IconPhotoFilled, href: "/manage/medias", label: t("items.medias"), - hidden: !session, + hidden: !session?.user.permissions.includes("media-upload"), "data-onboarding-tour-id": "manage-medias", }, { @@ -232,7 +252,9 @@ export default async function ManageLayout({ children }: PropsWithChildren) { ); - if (!session) return shell; - - return {shell}; + return ( + + {shell} + + ); } diff --git a/apps/nextjs/src/components/board/items/item-content.tsx b/apps/nextjs/src/components/board/items/item-content.tsx index 66dd2838a..aaeb4161e 100644 --- a/apps/nextjs/src/components/board/items/item-content.tsx +++ b/apps/nextjs/src/components/board/items/item-content.tsx @@ -1,17 +1,21 @@ -import type { MutableRefObject } from "react"; -import { useRef } from "react"; -import { Badge, Card } from "@mantine/core"; +import type { ComponentType, MutableRefObject } from "react"; +import { Suspense, use, useRef } from "react"; +import type { CardProps } from "@mantine/core"; +import { Badge, Card, Center, Loader } from "@mantine/core"; import { useElementSize } from "@mantine/hooks"; import { QueryErrorResetBoundary, useQueryClient } from "@tanstack/react-query"; import combineClasses from "clsx"; import { NoIntegrationSelectedError } from "@homarr/widgets/errors/classes"; +import type { FallbackProps } from "react-error-boundary"; import { ErrorBoundary } from "react-error-boundary"; import { useRequiredBoard } from "@homarr/boards/context"; import { useEditMode } from "@homarr/boards/edit-mode"; import { useSettings } from "@homarr/settings"; -import { loadWidgetDynamic, reduceWidgetOptionsWithDefaultValues, widgetImports } from "@homarr/widgets"; import { WidgetError } from "@homarr/widgets/errors"; +import { getWidgetQueryKeys } from "@homarr/widgets/definition"; +import type { WidgetComponentProps, WidgetDefinition } from "@homarr/widgets/definition"; +import { loadWidgetResources, reduceWidgetOptionsWithDefinition } from "@homarr/widgets/manifest"; import type { SectionItem } from "~/app/[locale]/boards/_types"; import classes from "../sections/item.module.css"; @@ -19,6 +23,7 @@ import { useItemActions } from "./item-actions"; import itemContentClasses from "./item-content.module.css"; import { BoardItemMenu } from "./item-menu"; import { WidgetContextMenu } from "./widget-context-menu"; +import { removeWidgetDataQueries } from "./widget-query-recovery"; interface BoardItemContentProps { item: SectionItem; @@ -30,6 +35,53 @@ const getOverflowFromKind = (kind: SectionItem["kind"]) => { return undefined; }; +type BoardItemCardProps = CardProps & { + item: SectionItem; + innerRef: (element: HTMLDivElement | null) => void; +}; + +const BoardItemCard = ({ item, innerRef, children, ...cardProps }: BoardItemCardProps) => { + const board = useRequiredBoard(); + + return ( + + {children} + + ); +}; + +const WidgetDefinitionLoadError = ({ + error, + resetErrorBoundary, + item, + innerRef, +}: FallbackProps & Pick) => ( + +
    + +
    +
    +); + export const BoardItemContent = ({ item }: BoardItemContentProps) => { const { ref, width, height } = useElementSize(); const board = useRequiredBoard(); @@ -37,29 +89,28 @@ export const BoardItemContent = ({ item }: BoardItemContentProps) => { return ( <> - - } + > + +
    + +
    + + } > - -
    -
    + + + {item.advancedOptions.title?.trim() && ( { ); }; +interface LoadedBoardItemContentProps extends Omit { + innerRef: (element: HTMLDivElement | null) => void; +} + +const LoadedBoardItemContent = ({ item, innerRef, ...innerContentProps }: LoadedBoardItemContentProps) => { + const { definition, Component } = use(loadWidgetResources(item.kind)); + + return ( + + + ( + <> + + + + )} + > + + + + + ); +}; + interface InnerContentProps { item: SectionItem; width: number; height: number; widgetStateRef: MutableRefObject | null>; + definition: WidgetDefinition; + Component: ComponentType>; } -const InnerContent = ({ item, ...dimensions }: InnerContentProps) => { +const InnerContent = ({ item, definition, Component, ...dimensions }: InnerContentProps) => { const settings = useSettings(); const board = useRequiredBoard(); const [isEditMode] = useEditMode(); - const Comp = loadWidgetDynamic(item.kind); - const { definition } = widgetImports[item.kind]; - const options = reduceWidgetOptionsWithDefaultValues(item.kind, settings, item.options); + const options = reduceWidgetOptionsWithDefinition(definition, settings, item.options); const newItem = { ...item, options }; const { removeItem, updateItemOptions } = useItemActions(); const updateOptions = ({ newOptions }: { newOptions: Record }) => updateItemOptions({ itemId: item.id, newOptions }); const widgetSupportsIntegrations = - "supportedIntegrations" in definition && definition.supportedIntegrations.length >= 1; + "supportedIntegrations" in definition && (definition.supportedIntegrations?.length ?? 0) >= 1; const queryClient = useQueryClient(); + const widgetQueryKeys = getWidgetQueryKeys(definition, item.kind); return ( {({ reset }) => ( { - void queryClient.invalidateQueries({ queryKey: [["widget"]] }); + removeWidgetDataQueries(queryClient, widgetQueryKeys); reset(); }} fallbackRender={({ resetErrorBoundary, error }) => ( <> - - + + )} > @@ -130,24 +213,26 @@ const InnerContent = ({ item, ...dimensions }: InnerContentProps) => { (!("integrationsRequired" in definition) || definition.integrationsRequired !== false) } /> - - removeItem({ itemId: item.id })} - setOptions={(partialNewOptions) => - updateOptions({ - newOptions: { - ...options, - ...partialNewOptions.newOptions, - }, - }) - } - {...dimensions} - /> + +
    + removeItem({ itemId: item.id })} + setOptions={(partialNewOptions) => + updateOptions({ + newOptions: { + ...options, + ...partialNewOptions.newOptions, + }, + }) + } + {...dimensions} + /> +
    )}
    diff --git a/apps/nextjs/src/components/board/items/item-menu.tsx b/apps/nextjs/src/components/board/items/item-menu.tsx index 8ed270a4a..7268eccc9 100644 --- a/apps/nextjs/src/components/board/items/item-menu.tsx +++ b/apps/nextjs/src/components/board/items/item-menu.tsx @@ -149,9 +149,11 @@ const BoardItemMenuInner = ({ offset, item, definition, resetErrorBoundary }: Bo > {tItem("action.moveResize")} - } onClick={() => duplicateItem({ itemId: item.id })}> - {tItem("action.duplicate")} - + {canDuplicate && ( + } onClick={() => duplicateItem({ itemId: item.id })}> + {tItem("action.duplicate")} + + )} {t("common.dangerZone")} } onClick={openRemoveModal}> diff --git a/apps/nextjs/src/components/board/items/item-select-modal.tsx b/apps/nextjs/src/components/board/items/item-select-modal.tsx index fc75f26d1..b9fb82670 100644 --- a/apps/nextjs/src/components/board/items/item-select-modal.tsx +++ b/apps/nextjs/src/components/board/items/item-select-modal.tsx @@ -1,53 +1,68 @@ -import { useMemo, useState } from "react"; +import { useMemo, useRef, useState } from "react"; import { Avatar, Box, Button, Card, Center, Divider, Group, Image, Stack, Text, Tooltip } from "@mantine/core"; import { IconApi } from "@tabler/icons-react"; +import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; import { useSession } from "@homarr/auth/client"; -import { createId, objectEntries } from "@homarr/common"; -import { getIconUrl, getIntegrationName } from "@homarr/definitions"; +import { createId } from "@homarr/common"; +import { getIconUrl, getIntegrationName, widgetIntegrationSupport, widgetKinds } from "@homarr/definitions"; import type { IntegrationKind, WidgetKind } from "@homarr/definitions"; import { createModal, modalSizeSelect, useModalAction } from "@homarr/modals"; +import { showErrorNotification } from "@homarr/notifications"; import { useSettings } from "@homarr/settings"; import { useI18n } from "@homarr/translation/client"; import { SelectGridLayout, selectGridCardHeight } from "@homarr/ui"; import type { TablerIcon } from "@homarr/ui"; -import { reduceWidgetOptionsWithDefaultValues, widgetImports } from "@homarr/widgets"; -import { WidgetEditModal } from "@homarr/widgets/modals"; +import { widgetCatalogIcons } from "@homarr/widgets/catalog"; +import { loadWidgetDefinition, reduceWidgetOptionsWithDefinition } from "@homarr/widgets/manifest"; import { WorkshopInstallButton } from "~/components/workshop/workshop-install-button"; import { useItemActions } from "./item-actions"; +import { resolveMatchingIntegrationsAsync, tryLockSelection, unlockSelection } from "./item-select-data"; +import { LazyWidgetEditModal, preloadWidgetEditModal } from "./lazy-widget-edit-modal"; +import classes from "./item-select-modal.module.css"; -export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, innerProps }) => { - const { data: session } = useSession(); - const isAdmin = session?.user.permissions.includes("admin") ?? false; +interface ItemSelectModalContentProps { + actions: { closeModal: () => void }; + integrationData: RouterOutputs["integration"]["all"] | undefined; + customWidgetDefs: RouterOutputs["customWidget"]["available"] | undefined; + ensureIntegrationDataAsync: () => Promise; + isAdmin: boolean; +} + +const ItemSelectModalContent = ({ + actions, + integrationData, + customWidgetDefs, + ensureIntegrationDataAsync, + isAdmin, +}: ItemSelectModalContentProps) => { const [search, setSearch] = useState(""); + const [loadingSelection, setLoadingSelection] = useState(null); + const selectionLock = useRef(false); const t = useI18n(); const { createItem, updateItemOptions, updateItemAdvancedOptions, updateItemIntegrations } = useItemActions(); - const { openModal: openEditModal } = useModalAction(WidgetEditModal); - const { data: integrationData } = clientApi.integration.all.useQuery(); - const { data: customWidgetDefs } = clientApi.customWidget.available.useQuery( - { boardId: innerProps.boardId }, - { enabled: isAdmin }, - ); + const { openModal: openEditModal } = useModalAction(LazyWidgetEditModal); const settings = useSettings(); const availableKinds = useMemo(() => new Set((integrationData ?? []).map((i) => i.kind)), [integrationData]); const items = useMemo( () => - objectEntries(widgetImports) - .filter(([kind]) => kind !== "customApi") - .map(([kind, value]) => ({ - kind, - supportedIntegrations: - "supportedIntegrations" in value.definition - ? value.definition.supportedIntegrations.filter((integration) => integration !== "mock") - : [], - icon: value.definition.icon, - name: t(`widget.${kind}.name`), - description: t(`widget.${kind}.description`), - })) + widgetKinds + .filter((kind) => kind !== "customApi") + .map((kind) => { + return { + kind, + supportedIntegrations: (widgetIntegrationSupport[kind] ?? []).filter( + (integration) => integration !== "mock", + ), + icon: widgetCatalogIcons[kind], + name: t(`widget.${kind}.name`), + description: t(`widget.${kind}.description`), + }; + }) .sort((itemA, itemB) => { if (itemA.kind === "app") return -1; if (itemB.kind === "app") return 1; @@ -72,77 +87,108 @@ export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, inne [customWidgetDefs, search], ); - const handleAddCustomWidget = (definition: NonNullable[number]) => { - const itemId = createId(); - const defaultOptions = reduceWidgetOptionsWithDefaultValues("customApi", settings); - const options = { - ...defaultOptions, - definitionId: definition.id, - configuration: definition.defaultOptions, - configurationVersion: definition.updatedAt.getTime(), - }; - actions.closeModal(); - openEditModal( - { - kind: "customApi", - value: { - advancedOptions: { title: null, customCssClasses: [], borderColor: "" }, - options, - integrationIds: [], - }, - onSuccessfulEdit: ({ options: configuredOptions, advancedOptions }) => { - createItem({ id: itemId, kind: "customApi", integrationIds: [] }); - updateItemOptions({ itemId, newOptions: configuredOptions }); - updateItemAdvancedOptions({ itemId, newAdvancedOptions: advancedOptions }); - }, - integrationData: [], - integrationSupport: false, - settings, - }, - { - title: (titleT) => `${titleT("item.edit.title")} - ${definition.name}`, - }, - ); + const notifyDefinitionLoadError = (error: unknown) => { + showErrorNotification({ + title: t("common.error"), + message: error instanceof Error ? error.message : String(error), + }); }; - const handleAdd = (kind: WidgetKind) => { - const definition = widgetImports[kind].definition; - const hasIntegrationSupport = "supportedIntegrations" in definition; - - const matchingIntegrations = hasIntegrationSupport - ? (integrationData ?? []).filter((integration) => - (definition.supportedIntegrations as string[]).includes(integration.kind), - ) - : []; - - const integrationIds = matchingIntegrations.map((i) => i.id); - const itemId = createId(); - const defaultOptions = reduceWidgetOptionsWithDefaultValues(kind, settings); - - createItem({ id: itemId, kind, integrationIds }); - actions.closeModal(); - - openEditModal( - { - kind, - value: { - advancedOptions: { title: null, customCssClasses: [], borderColor: "" }, - options: defaultOptions, - integrationIds, + const handleAddCustomWidget = async (customWidgetDefinition: NonNullable[number]) => { + if (!tryLockSelection(selectionLock)) return; + setLoadingSelection(`custom:${customWidgetDefinition.id}`); + preloadWidgetEditModal(); + try { + const definition = await loadWidgetDefinition("customApi"); + const itemId = createId(); + const defaultOptions = reduceWidgetOptionsWithDefinition(definition, settings); + const options = { + ...defaultOptions, + definitionId: customWidgetDefinition.id, + configuration: customWidgetDefinition.defaultOptions, + configurationVersion: customWidgetDefinition.updatedAt.getTime(), + }; + actions.closeModal(); + openEditModal( + { + kind: "customApi", + definition, + value: { + advancedOptions: { title: null, customCssClasses: [], borderColor: "" }, + options, + integrationIds: [], + }, + onSuccessfulEdit: ({ options: configuredOptions, advancedOptions }) => { + createItem({ id: itemId, kind: "customApi", integrationIds: [] }); + updateItemOptions({ itemId, newOptions: configuredOptions }); + updateItemAdvancedOptions({ itemId, newAdvancedOptions: advancedOptions }); + }, + integrationData: [], + integrationSupport: false, + settings, }, - onSuccessfulEdit: ({ options, integrationIds: newIntegrationIds, advancedOptions }) => { - updateItemOptions({ itemId, newOptions: options }); - updateItemAdvancedOptions({ itemId, newAdvancedOptions: advancedOptions }); - updateItemIntegrations({ itemId, newIntegrations: newIntegrationIds }); + { + title: (titleT) => `${titleT("item.edit.title")} - ${customWidgetDefinition.name}`, }, - integrationData: matchingIntegrations, - integrationSupport: hasIntegrationSupport, - settings, - }, - { - title: (titleT) => `${titleT("item.edit.title")} - ${titleT(`widget.${kind}.name`)}`, - }, - ); + ); + } catch (error) { + notifyDefinitionLoadError(error); + } finally { + unlockSelection(selectionLock); + setLoadingSelection(null); + } + }; + + const handleAdd = async (kind: WidgetKind) => { + if (!tryLockSelection(selectionLock)) return; + setLoadingSelection(kind); + preloadWidgetEditModal(); + try { + const definition = await loadWidgetDefinition(kind); + const hasIntegrationSupport = "supportedIntegrations" in definition; + + const matchingIntegrations = await resolveMatchingIntegrationsAsync({ + hasIntegrationSupport, + supportedIntegrations: definition.supportedIntegrations ?? [], + currentData: integrationData, + ensureDataAsync: ensureIntegrationDataAsync, + }); + + const integrationIds = matchingIntegrations.map((i) => i.id); + const itemId = createId(); + const defaultOptions = reduceWidgetOptionsWithDefinition(definition, settings); + + createItem({ id: itemId, kind, integrationIds }); + actions.closeModal(); + + openEditModal( + { + kind, + definition, + value: { + advancedOptions: { title: null, customCssClasses: [], borderColor: "" }, + options: defaultOptions, + integrationIds, + }, + onSuccessfulEdit: ({ options, integrationIds: newIntegrationIds, advancedOptions }) => { + updateItemOptions({ itemId, newOptions: options }); + updateItemAdvancedOptions({ itemId, newAdvancedOptions: advancedOptions }); + updateItemIntegrations({ itemId, newIntegrations: newIntegrationIds }); + }, + integrationData: matchingIntegrations, + integrationSupport: hasIntegrationSupport, + settings, + }, + { + title: (titleT) => `${titleT("item.edit.title")} - ${titleT(`widget.${kind}.name`)}`, + }, + ); + } catch (error) { + notifyDefinitionLoadError(error); + } finally { + unlockSelection(selectionLock); + setLoadingSelection(null); + } }; return ( @@ -151,9 +197,9 @@ export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, inne onSearchChange={setSearch} placeholder={`${t("item.create.search")}...`} onSearchKeyDown={(event) => { - if (event.key === "Enter" && filteredItems.length === 1) { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - handleAdd(filteredItems[0]!.kind); + if (event.key === "Enter" && loadingSelection === null && filteredItems.length === 1) { + const [item] = filteredItems; + if (item) void handleAdd(item.kind); } }} > @@ -161,7 +207,13 @@ export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, inne handleAdd(item.kind)} + onSelect={() => void handleAdd(item.kind)} + onIntent={() => { + void loadWidgetDefinition(item.kind).catch(() => undefined); + preloadWidgetEditModal(); + }} + disabled={loadingSelection !== null} + loading={loadingSelection === item.kind} hasMatchingIntegration={item.supportedIntegrations.some((kind) => availableKinds.has(kind))} /> ))} @@ -177,12 +229,12 @@ export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, inne {filteredCustomWidgets.map((def) => ( e.currentTarget.style.setProperty("--_hover-opacity", "1")} - onMouseLeave={(e) => e.currentTarget.style.setProperty("--_hover-opacity", "0")} + style={{ overflow: "hidden" }} + onPointerEnter={() => void loadWidgetDefinition("customApi").catch(() => undefined)} > @@ -200,18 +252,24 @@ export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, inne - @@ -231,7 +289,38 @@ export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, inne )} ); -}).withOptions({ +}; + +const ItemSelectModalFrame = ({ + actions, + innerProps, +}: { + actions: { closeModal: () => void }; + innerProps: { boardId: string }; +}) => { + const utils = clientApi.useUtils(); + const { data: session } = useSession(); + const isAdmin = session?.user.permissions.includes("admin") ?? false; + const { data: integrationData } = clientApi.integration.all.useQuery(); + const { data: customWidgetDefs } = clientApi.customWidget.available.useQuery( + { boardId: innerProps.boardId }, + { enabled: isAdmin }, + ); + + return ( + utils.integration.all.ensureData()} + isAdmin={isAdmin} + /> + ); +}; + +export const ItemSelectModal = createModal<{ boardId: string }>((props) => ( + +)).withOptions({ defaultTitle: (t) => t("item.create.title"), size: modalSizeSelect, }); @@ -239,6 +328,9 @@ export const ItemSelectModal = createModal<{ boardId: string }>(({ actions, inne const WidgetItem = ({ item, onSelect, + onIntent, + disabled, + loading, hasMatchingIntegration, }: { item: { @@ -249,23 +341,27 @@ const WidgetItem = ({ icon: TablerIcon; }; onSelect: () => void; + onIntent: () => void; + disabled: boolean; + loading: boolean; hasMatchingIntegration: boolean; }) => { const t = useI18n(); return ( e.currentTarget.style.setProperty("--_hover-opacity", "1")} - onMouseLeave={(e) => e.currentTarget.style.setProperty("--_hover-opacity", "0")} + onFocus={onIntent} + onPointerEnter={onIntent} + aria-busy={loading || undefined} > @@ -282,18 +378,17 @@ const WidgetItem = ({ - diff --git a/apps/nextjs/src/components/board/items/widget-context-menu.tsx b/apps/nextjs/src/components/board/items/widget-context-menu.tsx index 79b07e1a0..d475865c3 100644 --- a/apps/nextjs/src/components/board/items/widget-context-menu.tsx +++ b/apps/nextjs/src/components/board/items/widget-context-menu.tsx @@ -94,12 +94,12 @@ type WidgetContextMenuDropdownProps = Omit & }; const WidgetContextMenuDropdown = ({ item, definition, widgetStateRef, settings }: WidgetContextMenuDropdownProps) => { - const { data: session } = useSession(); const [isEditMode] = useEditMode(); const board = useRequiredBoard(); const tItem = useScopedI18n("item"); const tMenu = useScopedI18n("item.menu.label"); const t = useI18n(); + const { data: session } = useSession(); const canConfigureWidget = item.kind !== "customApi" || (session?.user.permissions.includes("admin") ?? false); const hasSupportedIntegrations = "supportedIntegrations" in definition && (definition.supportedIntegrations?.length ?? 0) > 0; diff --git a/apps/nextjs/src/components/board/items/widget-hover-overlay.module.css b/apps/nextjs/src/components/board/items/widget-hover-overlay.module.css index 89b3ba93e..f6ec2600f 100644 --- a/apps/nextjs/src/components/board/items/widget-hover-overlay.module.css +++ b/apps/nextjs/src/components/board/items/widget-hover-overlay.module.css @@ -13,10 +13,8 @@ transform 150ms ease; } -:global(.grid-stack-item[data-type="item"]:not([data-kind="app"]):hover) - .wrapper, -:global(.grid-stack-item[data-type="item"]:not([data-kind="app"]):focus-within) - .wrapper { +:global(.grid-stack-item[data-type="item"]:not([data-kind="app"]):hover) .wrapper, +:global(.grid-stack-item[data-type="item"]:not([data-kind="app"]):focus-within) .wrapper { opacity: 1; transform: translateY(0); } diff --git a/apps/nextjs/src/components/workshop-install/install-from-workshop-buttons.tsx b/apps/nextjs/src/components/workshop-install/install-from-workshop-buttons.tsx deleted file mode 100644 index 855c7ee36..000000000 --- a/apps/nextjs/src/components/workshop-install/install-from-workshop-buttons.tsx +++ /dev/null @@ -1,98 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { Button } from "@mantine/core"; -import { useDisclosure } from "@mantine/hooks"; -import { IconUsersGroup } from "@tabler/icons-react"; - -import { clientApi } from "@homarr/api/client"; -import { revalidatePathActionAsync } from "@homarr/common/client"; -import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; -import { useScopedI18n } from "@homarr/translation/client"; -import { customWidgetImportSchema } from "@homarr/validation/custom-widget"; - -import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; -import { WorkshopBrowserModal } from "./workshop-browser-modal"; - -function parseWidgetContent(content: string) { - let parsed: unknown; - try { - parsed = JSON.parse(content); - } catch { - return { ok: false as const, message: "Submission content is not valid JSON" }; - } - const result = customWidgetImportSchema.safeParse(parsed); - if (!result.success) { - return { ok: false as const, message: result.error.issues[0]?.message ?? "Invalid widget schema" }; - } - return { ok: true as const, data: result.data }; -} - -export const InstallWidgetFromWorkshopButton = () => { - const t = useScopedI18n("customWidget.workshop"); - const [opened, { open, close }] = useDisclosure(false); - const [pendingId, setPendingId] = useState(null); - const utils = clientApi.useUtils(); - const importMutation = clientApi.customWidget.import.useMutation({ - onSuccess: () => { - showSuccessNotification({ title: t("title"), message: t("notification.widgetInstalled") }); - void utils.customWidget.all.invalidate(); - void revalidatePathActionAsync("/manage/custom-widgets"); - setPendingId(null); - close(); - }, - onError: (err) => { - showErrorNotification({ title: t("title"), message: err.message || t("notification.widgetInstallFailed") }); - setPendingId(null); - }, - }); - - const handleSelect = (submission: { id: string; content: string }) => { - const parsed = parseWidgetContent(submission.content); - if (!parsed.ok) { - showErrorNotification({ title: t("title"), message: parsed.message }); - return; - } - setPendingId(submission.id); - importMutation.mutate(parsed.data); - }; - - return ( - <> - } onClick={open}> - {t("action.installFromWorkshop")} - - - - ); -}; - -export const InstallCssFromWorkshopButton = ({ onSelect }: { onSelect: (css: string) => void }) => { - const t = useScopedI18n("customWidget.workshop"); - const [opened, { open, close }] = useDisclosure(false); - - return ( - <> - - { - onSelect(submission.content); - close(); - }} - /> - - ); -}; diff --git a/apps/nextjs/src/components/workshop-install/workshop-api.ts b/apps/nextjs/src/components/workshop-install/workshop-api.ts deleted file mode 100644 index 4a8b6d1e2..000000000 --- a/apps/nextjs/src/components/workshop-install/workshop-api.ts +++ /dev/null @@ -1,47 +0,0 @@ -export const WORKSHOP_API_URL = process.env.NEXT_PUBLIC_WORKSHOP_API_URL || "https://workshop.homarr.dev"; - -export interface WorkshopSubmission { - id: string; - collectionId: string; - collectionName: string; - type: "css" | "widget"; - title: string; - description: string; - schemaVersion: string; - content: string; - screenshots: string[]; - upvotes: number; - downvotes: number; - version: number; - author: string; - authorName: string; - commentCount: number; - created: string; -} - -interface PBListResponse { - page: number; - perPage: number; - totalPages: number; - totalItems: number; - items: WorkshopSubmission[]; -} - -export const getWorkshopFileUrl = (submission: WorkshopSubmission, filename: string) => - `${WORKSHOP_API_URL}/api/files/submissions/${submission.id}/${encodeURIComponent(filename)}`; - -export const fetchWorkshopSubmissions = async ( - type: "css" | "widget", - page = 1, - perPage = 50, -): Promise => { - const params = new URLSearchParams({ - page: String(page), - perPage: String(perPage), - sort: "-upvotes", - filter: `(type='${type}')`, - }); - const response = await fetch(`${WORKSHOP_API_URL}/api/collections/marketplace/records?${params}`); - if (!response.ok) throw new Error(`Workshop request failed (${response.status})`); - return response.json() as Promise; -}; diff --git a/apps/nextjs/src/components/workshop-install/workshop-browser-modal.tsx b/apps/nextjs/src/components/workshop-install/workshop-browser-modal.tsx deleted file mode 100644 index 1ee2da459..000000000 --- a/apps/nextjs/src/components/workshop-install/workshop-browser-modal.tsx +++ /dev/null @@ -1,221 +0,0 @@ -"use client"; - -import { useState } from "react"; -import { - ActionIcon, - Anchor, - Alert, - Badge, - Box, - Button, - Card, - Center, - Group, - Image, - Loader, - Modal, - Pagination, - ScrollArea, - SimpleGrid, - Stack, - Text, -} from "@mantine/core"; -import { IconChevronLeft, IconChevronRight, IconExternalLink } from "@tabler/icons-react"; -import { useQuery } from "@tanstack/react-query"; - -import type { WorkshopSubmission } from "./workshop-api"; -import { fetchWorkshopSubmissions, getWorkshopFileUrl } from "./workshop-api"; - -const WORKSHOP_URL = process.env.NEXT_PUBLIC_WORKSHOP_URL || "https://homarr.dev/workshop"; - -interface Props { - type: "css" | "widget"; - opened: boolean; - onClose: () => void; - onSelect: (submission: WorkshopSubmission) => void; - actionLabel: string; - pendingId?: string | null; -} - -const displayName = (submission: WorkshopSubmission) => submission.authorName; - -export const WorkshopBrowserModal = ({ type, opened, onClose, onSelect, actionLabel, pendingId }: Props) => { - const [page, setPage] = useState(1); - const handleClose = () => { - setPage(1); - onClose(); - }; - const { data, isLoading, error } = useQuery({ - queryKey: ["workshop-submissions", type, page], - queryFn: () => fetchWorkshopSubmissions(type, page), - enabled: opened, - }); - - const errorText = error instanceof Error ? error.message : "unknown error"; - - return ( - - Install from Workshop - - Open Workshop - - - } - size={1200} - scrollAreaComponent={ScrollArea.Autosize} - > - - {isLoading && ( -
    - -
    - )} - - {error && Failed to load the workshop: {errorText}} - - {data && data.items.length === 0 && ( - - No submissions available yet. - - )} - - {data && data.items.length > 0 && ( - <> - - {data.items.map((submission) => ( - onSelect(submission)} - /> - ))} - - - {data.totalPages > 1 && ( -
    - -
    - )} - - )} -
    -
    - ); -}; - -const SubmissionCard = ({ - submission, - actionLabel, - pending, - onSelect, -}: { - submission: WorkshopSubmission; - actionLabel: string; - pending: boolean; - onSelect: () => void; -}) => { - const screenshots = submission.screenshots ?? []; - const [imgIdx, setImgIdx] = useState(0); - const score = submission.upvotes - submission.downvotes; - const scorePrefix = score > 0 ? "+" : ""; - - return ( - - {screenshots.length > 0 && ( - - {submission.title} - {screenshots.length > 1 && ( - <> - setImgIdx((i) => (i - 1 + screenshots.length) % screenshots.length)} - > - - - setImgIdx((i) => (i + 1) % screenshots.length)} - > - - - - )} - - )} - - - - - - {submission.title} - - - {scorePrefix} - {score} - - - - - {displayName(submission)} · v{submission.version} - - - {submission.description && ( - - {submission.description} - - )} - - - - - - - - - - ); -}; diff --git a/apps/workshop/pb_migrations/1750000000_init_workshop.js b/apps/workshop/pb_migrations/1750000000_init_workshop.js deleted file mode 100644 index 6fc1d7d0c..000000000 --- a/apps/workshop/pb_migrations/1750000000_init_workshop.js +++ /dev/null @@ -1,172 +0,0 @@ -/// - -migrate( - (app) => { - const users = app.findCollectionByNameOrId("users"); - - const githubClientId = $os.getenv("GITHUB_CLIENT_ID"); - const githubClientSecret = $os.getenv("GITHUB_CLIENT_SECRET"); - if (githubClientId && githubClientSecret) { - users.oauth2.enabled = true; - users.oauth2.providers = [ - { - name: "github", - clientId: githubClientId, - clientSecret: githubClientSecret, - }, - ]; - } - app.save(users); - - let submissions; - try { - submissions = app.findCollectionByNameOrId("submissions"); - } catch { - submissions = new Collection({ - type: "base", - name: "submissions", - listRule: "", - viewRule: "", - createRule: "@request.auth.id != ''", - updateRule: "author = @request.auth.id", - deleteRule: "author = @request.auth.id", - fields: [ - { name: "type", type: "select", required: true, maxSelect: 1, values: ["css", "widget"] }, - { name: "title", type: "text", required: true, min: 3, max: 100 }, - { name: "description", type: "text", max: 2000 }, - { name: "schemaVersion", type: "text", required: true, max: 100 }, - { name: "content", type: "text", required: true, max: 1000000 }, - { - name: "screenshots", - type: "file", - maxSelect: 5, - maxSize: 5242880, - mimeTypes: ["image/png", "image/jpeg", "image/webp", "image/gif"], - }, - { - name: "author", - type: "relation", - required: true, - maxSelect: 1, - collectionId: users.id, - cascadeDelete: true, - }, - { name: "upvotes", type: "number", onlyInt: true }, - { name: "downvotes", type: "number", onlyInt: true }, - { name: "version", type: "number", onlyInt: true }, - { name: "changelog", type: "text", max: 2000 }, - { name: "created", type: "autodate", onCreate: true }, - { name: "updated", type: "autodate", onCreate: true, onUpdate: true }, - ], - }); - app.save(submissions); - } - - let votes; - try { - votes = app.findCollectionByNameOrId("votes"); - } catch { - votes = new Collection({ - type: "base", - name: "votes", - listRule: "user = @request.auth.id", - viewRule: "user = @request.auth.id", - createRule: "@request.auth.id != ''", - updateRule: "user = @request.auth.id", - deleteRule: "user = @request.auth.id", - fields: [ - { - name: "submission", - type: "relation", - required: true, - maxSelect: 1, - collectionId: submissions.id, - cascadeDelete: true, - }, - { name: "user", type: "relation", required: true, maxSelect: 1, collectionId: users.id, cascadeDelete: true }, - { name: "value", type: "number", required: true, onlyInt: true, min: -1, max: 1 }, - { name: "created", type: "autodate", onCreate: true }, - { name: "updated", type: "autodate", onCreate: true, onUpdate: true }, - ], - }); - votes.addIndex("idx_votes_unique_user_submission", true, "submission, user", ""); - app.save(votes); - } - - let reports; - try { - reports = app.findCollectionByNameOrId("reports"); - } catch { - reports = new Collection({ - type: "base", - name: "reports", - listRule: null, - viewRule: null, - createRule: "@request.auth.id != ''", - updateRule: null, - deleteRule: null, - fields: [ - { - name: "submission", - type: "relation", - required: true, - maxSelect: 1, - collectionId: submissions.id, - cascadeDelete: true, - }, - { name: "user", type: "relation", required: true, maxSelect: 1, collectionId: users.id, cascadeDelete: true }, - { name: "reason", type: "text", required: true, min: 3, max: 1000 }, - { name: "created", type: "autodate", onCreate: true }, - ], - }); - app.save(reports); - } - - let comments; - try { - comments = app.findCollectionByNameOrId("comments"); - } catch { - comments = new Collection({ - type: "base", - name: "comments", - listRule: "", - viewRule: "", - createRule: "@request.auth.id != ''", - updateRule: "author = @request.auth.id", - deleteRule: "author = @request.auth.id", - fields: [ - { - name: "submission", - type: "relation", - required: true, - maxSelect: 1, - collectionId: submissions.id, - cascadeDelete: true, - }, - { - name: "author", - type: "relation", - required: true, - maxSelect: 1, - collectionId: users.id, - cascadeDelete: true, - }, - { name: "content", type: "text", required: true, min: 1, max: 2000 }, - { name: "created", type: "autodate", onCreate: true }, - { name: "updated", type: "autodate", onCreate: true, onUpdate: true }, - ], - }); - comments.addIndex("idx_comments_submission", false, "submission", ""); - app.save(comments); - } - }, - (app) => { - for (const name of ["comments", "reports", "votes", "submissions"]) { - try { - app.delete(app.findCollectionByNameOrId(name)); - } catch { - // already gone - } - } - }, -); diff --git a/apps/workshop/pb_migrations/1750000002_marketplace_view.js b/apps/workshop/pb_migrations/1750000002_marketplace_view.js deleted file mode 100644 index dbd62046b..000000000 --- a/apps/workshop/pb_migrations/1750000002_marketplace_view.js +++ /dev/null @@ -1,49 +0,0 @@ -/// - -migrate( - (app) => { - // Keep databases created by the original prototype valid after the - // migration file was renamed with the feature. - try { - app.findCollectionByNameOrId("marketplace"); - return; - } catch { - // Fresh database; create the public view below. - } - - const collection = new Collection({ - name: "marketplace", - type: "view", - listRule: "", - viewRule: "", - viewQuery: ` - SELECT - s.id, - s.type, - s.title, - s.description, - s.schemaVersion, - s.content, - s.screenshots, - s.version, - s.changelog, - s.author, - s.created, - s.updated, - COALESCE(NULLIF(u.name, ''), 'unknown') as authorName, - COALESCE(SUM(CASE WHEN v.value = 1 THEN 1 ELSE 0 END), 0) as upvotes, - COALESCE(SUM(CASE WHEN v.value = -1 THEN 1 ELSE 0 END), 0) as downvotes, - (SELECT COUNT(*) FROM comments c WHERE c.submission = s.id) as commentCount - FROM submissions s - LEFT JOIN users u ON u.id = s.author - LEFT JOIN votes v ON v.submission = s.id - GROUP BY s.id - `, - }); - app.save(collection); - }, - (app) => { - const collection = app.findCollectionByNameOrId("marketplace"); - app.delete(collection); - }, -); diff --git a/apps/workshop/scripts/smoke-test.sh b/apps/workshop/scripts/smoke-test.sh deleted file mode 100755 index 57dc55d46..000000000 --- a/apps/workshop/scripts/smoke-test.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -set -eu - -image="${1:-homarr/workshop:ci}" -container="homarr-workshop-smoke-${$}" -port="${WORKSHOP_SMOKE_PORT:-18090}" - -cleanup() { - docker rm --force "$container" >/dev/null 2>&1 || true -} -trap cleanup EXIT INT TERM - -docker run --detach --name "$container" --publish "127.0.0.1:${port}:8090" "$image" >/dev/null - -attempt=0 -until curl --fail --silent "http://127.0.0.1:${port}/api/health" >/dev/null; do - attempt=$((attempt + 1)) - if [ "$attempt" -ge 30 ]; then - docker logs "$container" - exit 1 - fi - sleep 1 -done - -curl --fail --silent "http://127.0.0.1:${port}/" | grep --quiet "Homarr" -curl --fail --silent "http://127.0.0.1:${port}/workshop/" | grep --quiet "Workshop" -curl --fail --silent "http://127.0.0.1:${port}/api/collections/marketplace/records?page=1&perPage=1" >/dev/null -curl --fail --silent "http://127.0.0.1:${port}/api/health" | grep --quiet '"code":200' - -echo "Workshop image serves Docusaurus and PocketBase successfully" diff --git a/e2e/custom-widgets-custom-jsx-v2.spec.ts b/e2e/custom-widgets-custom-jsx-v2.spec.ts index a88ca1944..fbfdcc7d2 100644 --- a/e2e/custom-widgets-custom-jsx-v2.spec.ts +++ b/e2e/custom-widgets-custom-jsx-v2.spec.ts @@ -36,7 +36,10 @@ describe("Custom JSX v2 workbench", () => { await page.waitForLoadState("networkidle"); await page.getByLabel("Username").fill(adminCredentials.username); await page.locator("#password").fill(adminCredentials.password); - const signedIn = page.waitForURL(baseUrl, { waitUntil: "commit", timeout: 15_000 }); + const signedIn = page.waitForURL((url) => url.origin === baseUrl && url.pathname !== "/auth/login", { + waitUntil: "commit", + timeout: 60_000, + }); await page.locator("button[type='submit']").click(); await signedIn; diff --git a/packages/api/src/router/test/widgets/patchmon.spec.ts b/packages/api/src/router/test/widgets/patchmon.spec.ts index df37b5647..27f5cfe40 100644 --- a/packages/api/src/router/test/widgets/patchmon.spec.ts +++ b/packages/api/src/router/test/widgets/patchmon.spec.ts @@ -101,9 +101,7 @@ describe("patchmonRouter.getStats access control", () => { }); const caller = createCaller(db, null); - await expect(caller.getStats({ integrationId })).rejects.toThrow( - new TRPCError({ code: "UNAUTHORIZED" }), - ); + await expect(caller.getStats({ integrationId })).rejects.toThrow(new TRPCError({ code: "UNAUTHORIZED" })); }); test("should throw FORBIDDEN for authenticated users without board or integration access", async () => { diff --git a/packages/db/migrations/mysql/meta/0038_snapshot.json b/packages/db/migrations/mysql/meta/0038_snapshot.json index 7f82bd39b..0840b2436 100644 --- a/packages/db/migrations/mysql/meta/0038_snapshot.json +++ b/packages/db/migrations/mysql/meta/0038_snapshot.json @@ -88,9 +88,7 @@ "indexes": { "userId_idx": { "name": "userId_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -99,12 +97,8 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -112,10 +106,7 @@ "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { "name": "account_provider_provider_account_id_pk", - "columns": [ - "provider", - "provider_account_id" - ] + "columns": ["provider", "provider_account_id"] } }, "uniqueConstraints": {}, @@ -152,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -165,9 +152,7 @@ "compositePrimaryKeys": { "apiKey_id": { "name": "apiKey_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -224,9 +209,7 @@ "compositePrimaryKeys": { "app_id": { "name": "app_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -263,12 +246,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -276,12 +255,8 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -289,11 +264,7 @@ "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { "name": "boardGroupPermission_board_id_group_id_permission_pk", - "columns": [ - "board_id", - "group_id", - "permission" - ] + "columns": ["board_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -330,12 +301,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -343,12 +310,8 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -356,11 +319,7 @@ "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { "name": "boardUserPermission_board_id_user_id_permission_pk", - "columns": [ - "board_id", - "user_id", - "permission" - ] + "columns": ["board_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -518,12 +477,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -531,17 +486,13 @@ "compositePrimaryKeys": { "board_id": { "name": "board_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "board_name_unique": { "name": "board_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -577,9 +528,7 @@ "compositePrimaryKeys": { "cron_job_configuration_name": { "name": "cron_job_configuration_name", - "columns": [ - "name" - ] + "columns": ["name"] } }, "uniqueConstraints": {}, @@ -609,12 +558,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -622,12 +567,8 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -635,10 +576,7 @@ "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { "name": "groupMember_group_id_user_id_pk", - "columns": [ - "group_id", - "user_id" - ] + "columns": ["group_id", "user_id"] } }, "uniqueConstraints": {}, @@ -668,12 +606,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -734,12 +668,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -747,12 +677,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -760,12 +686,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -773,17 +695,13 @@ "compositePrimaryKeys": { "group_id": { "name": "group_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "group_name_unique": { "name": "group_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -811,9 +729,7 @@ "compositePrimaryKeys": { "iconRepository_id": { "name": "iconRepository_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -864,12 +780,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -877,9 +789,7 @@ "compositePrimaryKeys": { "icon_id": { "name": "icon_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -916,12 +826,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -929,12 +835,8 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -942,11 +844,7 @@ "compositePrimaryKeys": { "integration_group_permission__pk": { "name": "integration_group_permission__pk", - "columns": [ - "integration_id", - "group_id", - "permission" - ] + "columns": ["integration_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -976,12 +874,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -989,12 +883,8 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1002,10 +892,7 @@ "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { "name": "integration_item_item_id_integration_id_pk", - "columns": [ - "item_id", - "integration_id" - ] + "columns": ["item_id", "integration_id"] } }, "uniqueConstraints": {}, @@ -1046,16 +933,12 @@ "indexes": { "integration_secret__kind_idx": { "name": "integration_secret__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false }, "integration_secret__updated_at_idx": { "name": "integration_secret__updated_at_idx", - "columns": [ - "updated_at" - ], + "columns": ["updated_at"], "isUnique": false } }, @@ -1064,12 +947,8 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1077,10 +956,7 @@ "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { "name": "integrationSecret_integration_id_kind_pk", - "columns": [ - "integration_id", - "kind" - ] + "columns": ["integration_id", "kind"] } }, "uniqueConstraints": {}, @@ -1117,12 +993,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1130,12 +1002,8 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1143,11 +1011,7 @@ "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { "name": "integrationUserPermission_integration_id_user_id_permission_pk", - "columns": [ - "integration_id", - "user_id", - "permission" - ] + "columns": ["integration_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -1195,9 +1059,7 @@ "indexes": { "integration__kind_idx": { "name": "integration__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false } }, @@ -1206,12 +1068,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1219,9 +1077,7 @@ "compositePrimaryKeys": { "integration_id": { "name": "integration_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1265,12 +1121,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1278,17 +1130,13 @@ "compositePrimaryKeys": { "invite_id": { "name": "invite_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "invite_token_unique": { "name": "invite_token_unique", - "columns": [ - "token" - ] + "columns": ["token"] } }, "checkConstraint": {} @@ -1352,12 +1200,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1365,12 +1209,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1378,12 +1218,8 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1391,11 +1227,7 @@ "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { "name": "item_layout_item_id_section_id_layout_id_pk", - "columns": [ - "item_id", - "section_id", - "layout_id" - ] + "columns": ["item_id", "section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1448,12 +1280,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1461,9 +1289,7 @@ "compositePrimaryKeys": { "item_id": { "name": "item_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1515,12 +1341,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1528,9 +1350,7 @@ "compositePrimaryKeys": { "layout_id": { "name": "layout_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1596,12 +1416,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1609,9 +1425,7 @@ "compositePrimaryKeys": { "media_id": { "name": "media_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1647,9 +1461,7 @@ "compositePrimaryKeys": { "onboarding_id": { "name": "onboarding_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1722,12 +1534,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1735,17 +1543,13 @@ "compositePrimaryKeys": { "search_engine_id": { "name": "search_engine_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "search_engine_short_unique": { "name": "search_engine_short_unique", - "columns": [ - "short" - ] + "columns": ["short"] } }, "checkConstraint": {} @@ -1782,12 +1586,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1795,12 +1595,8 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1808,10 +1604,7 @@ "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { "name": "section_collapse_state_user_id_section_id_pk", - "columns": [ - "user_id", - "section_id" - ] + "columns": ["user_id", "section_id"] } }, "uniqueConstraints": {}, @@ -1876,12 +1669,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1889,12 +1678,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1902,12 +1687,8 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1915,10 +1696,7 @@ "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { "name": "section_layout_section_id_layout_id_pk", - "columns": [ - "section_id", - "layout_id" - ] + "columns": ["section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1984,12 +1762,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1997,9 +1771,7 @@ "compositePrimaryKeys": { "section_id": { "name": "section_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2029,17 +1801,13 @@ "compositePrimaryKeys": { "serverSetting_setting_key": { "name": "serverSetting_setting_key", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "uniqueConstraints": { "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "checkConstraint": {} @@ -2072,9 +1840,7 @@ "indexes": { "user_id_idx": { "name": "user_id_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -2083,12 +1849,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2096,9 +1858,7 @@ "compositePrimaryKeys": { "session_session_token": { "name": "session_session_token", - "columns": [ - "session_token" - ] + "columns": ["session_token"] } }, "uniqueConstraints": {}, @@ -2225,12 +1985,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2238,12 +1994,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2251,12 +2003,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2264,9 +2012,7 @@ "compositePrimaryKeys": { "user_id": { "name": "user_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2302,10 +2048,7 @@ "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { "name": "verificationToken_identifier_token_pk", - "columns": [ - "identifier", - "token" - ] + "columns": ["identifier", "token"] } }, "uniqueConstraints": {}, @@ -2341,10 +2084,7 @@ "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { "name": "trusted_certificate_hostname_hostname_thumbprint_pk", - "columns": [ - "hostname", - "thumbprint" - ] + "columns": ["hostname", "thumbprint"] } }, "uniqueConstraints": {}, @@ -2361,4 +2101,4 @@ "tables": {}, "indexes": {} } -} \ No newline at end of file +} diff --git a/packages/db/migrations/mysql/meta/0040_snapshot.json b/packages/db/migrations/mysql/meta/0040_snapshot.json index 63c597c46..a6b956765 100644 --- a/packages/db/migrations/mysql/meta/0040_snapshot.json +++ b/packages/db/migrations/mysql/meta/0040_snapshot.json @@ -88,9 +88,7 @@ "indexes": { "userId_idx": { "name": "userId_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -99,12 +97,8 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -112,10 +106,7 @@ "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { "name": "account_provider_provider_account_id_pk", - "columns": [ - "provider", - "provider_account_id" - ] + "columns": ["provider", "provider_account_id"] } }, "uniqueConstraints": {}, @@ -152,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -165,9 +152,7 @@ "compositePrimaryKeys": { "apiKey_id": { "name": "apiKey_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -224,9 +209,7 @@ "compositePrimaryKeys": { "app_id": { "name": "app_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -263,12 +246,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -276,12 +255,8 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -289,11 +264,7 @@ "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { "name": "boardGroupPermission_board_id_group_id_permission_pk", - "columns": [ - "board_id", - "group_id", - "permission" - ] + "columns": ["board_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -330,12 +301,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -343,12 +310,8 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -356,11 +319,7 @@ "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { "name": "boardUserPermission_board_id_user_id_permission_pk", - "columns": [ - "board_id", - "user_id", - "permission" - ] + "columns": ["board_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -518,12 +477,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -531,17 +486,13 @@ "compositePrimaryKeys": { "board_id": { "name": "board_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "board_name_unique": { "name": "board_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -577,9 +528,7 @@ "compositePrimaryKeys": { "cron_job_configuration_name": { "name": "cron_job_configuration_name", - "columns": [ - "name" - ] + "columns": ["name"] } }, "uniqueConstraints": {}, @@ -706,12 +655,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -719,9 +664,7 @@ "compositePrimaryKeys": { "custom_widget_definition_id": { "name": "custom_widget_definition_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -765,12 +708,8 @@ "name": "cw_secret_definition_id_cw_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -778,10 +717,7 @@ "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { "name": "custom_widget_secret_definition_id_kind_pk", - "columns": [ - "definition_id", - "kind" - ] + "columns": ["definition_id", "kind"] } }, "uniqueConstraints": {}, @@ -811,12 +747,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -824,12 +756,8 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -837,10 +765,7 @@ "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { "name": "groupMember_group_id_user_id_pk", - "columns": [ - "group_id", - "user_id" - ] + "columns": ["group_id", "user_id"] } }, "uniqueConstraints": {}, @@ -870,12 +795,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -936,12 +857,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -949,12 +866,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -962,12 +875,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -975,17 +884,13 @@ "compositePrimaryKeys": { "group_id": { "name": "group_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "group_name_unique": { "name": "group_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -1013,9 +918,7 @@ "compositePrimaryKeys": { "iconRepository_id": { "name": "iconRepository_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1066,12 +969,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1079,9 +978,7 @@ "compositePrimaryKeys": { "icon_id": { "name": "icon_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1118,12 +1015,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1131,12 +1024,8 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1144,11 +1033,7 @@ "compositePrimaryKeys": { "integration_group_permission__pk": { "name": "integration_group_permission__pk", - "columns": [ - "integration_id", - "group_id", - "permission" - ] + "columns": ["integration_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -1178,12 +1063,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1191,12 +1072,8 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1204,10 +1081,7 @@ "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { "name": "integration_item_item_id_integration_id_pk", - "columns": [ - "item_id", - "integration_id" - ] + "columns": ["item_id", "integration_id"] } }, "uniqueConstraints": {}, @@ -1248,16 +1122,12 @@ "indexes": { "integration_secret__kind_idx": { "name": "integration_secret__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false }, "integration_secret__updated_at_idx": { "name": "integration_secret__updated_at_idx", - "columns": [ - "updated_at" - ], + "columns": ["updated_at"], "isUnique": false } }, @@ -1266,12 +1136,8 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1279,10 +1145,7 @@ "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { "name": "integrationSecret_integration_id_kind_pk", - "columns": [ - "integration_id", - "kind" - ] + "columns": ["integration_id", "kind"] } }, "uniqueConstraints": {}, @@ -1319,12 +1182,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1332,12 +1191,8 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1345,11 +1200,7 @@ "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { "name": "integrationUserPermission_integration_id_user_id_permission_pk", - "columns": [ - "integration_id", - "user_id", - "permission" - ] + "columns": ["integration_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -1397,9 +1248,7 @@ "indexes": { "integration__kind_idx": { "name": "integration__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false } }, @@ -1408,12 +1257,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1421,9 +1266,7 @@ "compositePrimaryKeys": { "integration_id": { "name": "integration_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1467,12 +1310,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1480,17 +1319,13 @@ "compositePrimaryKeys": { "invite_id": { "name": "invite_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "invite_token_unique": { "name": "invite_token_unique", - "columns": [ - "token" - ] + "columns": ["token"] } }, "checkConstraint": {} @@ -1554,12 +1389,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1567,12 +1398,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1580,12 +1407,8 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1593,11 +1416,7 @@ "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { "name": "item_layout_item_id_section_id_layout_id_pk", - "columns": [ - "item_id", - "section_id", - "layout_id" - ] + "columns": ["item_id", "section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1650,12 +1469,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1663,9 +1478,7 @@ "compositePrimaryKeys": { "item_id": { "name": "item_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1717,12 +1530,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1730,9 +1539,7 @@ "compositePrimaryKeys": { "layout_id": { "name": "layout_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1798,12 +1605,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1811,9 +1614,7 @@ "compositePrimaryKeys": { "media_id": { "name": "media_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1849,9 +1650,7 @@ "compositePrimaryKeys": { "onboarding_id": { "name": "onboarding_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1924,12 +1723,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1937,17 +1732,13 @@ "compositePrimaryKeys": { "search_engine_id": { "name": "search_engine_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "search_engine_short_unique": { "name": "search_engine_short_unique", - "columns": [ - "short" - ] + "columns": ["short"] } }, "checkConstraint": {} @@ -1984,12 +1775,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1997,12 +1784,8 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2010,10 +1793,7 @@ "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { "name": "section_collapse_state_user_id_section_id_pk", - "columns": [ - "user_id", - "section_id" - ] + "columns": ["user_id", "section_id"] } }, "uniqueConstraints": {}, @@ -2078,12 +1858,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2091,12 +1867,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2104,12 +1876,8 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2117,10 +1885,7 @@ "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { "name": "section_layout_section_id_layout_id_pk", - "columns": [ - "section_id", - "layout_id" - ] + "columns": ["section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -2186,12 +1951,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2199,9 +1960,7 @@ "compositePrimaryKeys": { "section_id": { "name": "section_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2231,17 +1990,13 @@ "compositePrimaryKeys": { "serverSetting_setting_key": { "name": "serverSetting_setting_key", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "uniqueConstraints": { "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "checkConstraint": {} @@ -2274,9 +2029,7 @@ "indexes": { "user_id_idx": { "name": "user_id_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -2285,12 +2038,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2298,9 +2047,7 @@ "compositePrimaryKeys": { "session_session_token": { "name": "session_session_token", - "columns": [ - "session_token" - ] + "columns": ["session_token"] } }, "uniqueConstraints": {}, @@ -2443,12 +2190,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2456,12 +2199,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2469,12 +2208,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2482,9 +2217,7 @@ "compositePrimaryKeys": { "user_id": { "name": "user_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2520,10 +2253,7 @@ "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { "name": "verificationToken_identifier_token_pk", - "columns": [ - "identifier", - "token" - ] + "columns": ["identifier", "token"] } }, "uniqueConstraints": {}, @@ -2559,10 +2289,7 @@ "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { "name": "trusted_certificate_hostname_hostname_thumbprint_pk", - "columns": [ - "hostname", - "thumbprint" - ] + "columns": ["hostname", "thumbprint"] } }, "uniqueConstraints": {}, @@ -2579,4 +2306,4 @@ "tables": {}, "indexes": {} } -} \ No newline at end of file +} diff --git a/packages/db/migrations/mysql/meta/0041_snapshot.json b/packages/db/migrations/mysql/meta/0041_snapshot.json index 1cbe65bde..75b97db84 100644 --- a/packages/db/migrations/mysql/meta/0041_snapshot.json +++ b/packages/db/migrations/mysql/meta/0041_snapshot.json @@ -88,9 +88,7 @@ "indexes": { "userId_idx": { "name": "userId_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -99,12 +97,8 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -112,10 +106,7 @@ "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { "name": "account_provider_provider_account_id_pk", - "columns": [ - "provider", - "provider_account_id" - ] + "columns": ["provider", "provider_account_id"] } }, "uniqueConstraints": {}, @@ -152,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -165,9 +152,7 @@ "compositePrimaryKeys": { "apiKey_id": { "name": "apiKey_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -224,9 +209,7 @@ "compositePrimaryKeys": { "app_id": { "name": "app_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -263,12 +246,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -276,12 +255,8 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -289,11 +264,7 @@ "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { "name": "boardGroupPermission_board_id_group_id_permission_pk", - "columns": [ - "board_id", - "group_id", - "permission" - ] + "columns": ["board_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -330,12 +301,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -343,12 +310,8 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -356,11 +319,7 @@ "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { "name": "boardUserPermission_board_id_user_id_permission_pk", - "columns": [ - "board_id", - "user_id", - "permission" - ] + "columns": ["board_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -518,12 +477,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -531,17 +486,13 @@ "compositePrimaryKeys": { "board_id": { "name": "board_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "board_name_unique": { "name": "board_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -577,9 +528,7 @@ "compositePrimaryKeys": { "cron_job_configuration_name": { "name": "cron_job_configuration_name", - "columns": [ - "name" - ] + "columns": ["name"] } }, "uniqueConstraints": {}, @@ -707,12 +656,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -720,9 +665,7 @@ "compositePrimaryKeys": { "custom_widget_definition_id": { "name": "custom_widget_definition_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -766,12 +709,8 @@ "name": "cw_secret_definition_id_cw_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -779,10 +718,7 @@ "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { "name": "custom_widget_secret_definition_id_kind_pk", - "columns": [ - "definition_id", - "kind" - ] + "columns": ["definition_id", "kind"] } }, "uniqueConstraints": {}, @@ -812,12 +748,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -825,12 +757,8 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -838,10 +766,7 @@ "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { "name": "groupMember_group_id_user_id_pk", - "columns": [ - "group_id", - "user_id" - ] + "columns": ["group_id", "user_id"] } }, "uniqueConstraints": {}, @@ -871,12 +796,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -937,12 +858,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -950,12 +867,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -963,12 +876,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -976,17 +885,13 @@ "compositePrimaryKeys": { "group_id": { "name": "group_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "group_name_unique": { "name": "group_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -1014,9 +919,7 @@ "compositePrimaryKeys": { "iconRepository_id": { "name": "iconRepository_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1067,12 +970,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1080,9 +979,7 @@ "compositePrimaryKeys": { "icon_id": { "name": "icon_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1119,12 +1016,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1132,12 +1025,8 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1145,11 +1034,7 @@ "compositePrimaryKeys": { "integration_group_permission__pk": { "name": "integration_group_permission__pk", - "columns": [ - "integration_id", - "group_id", - "permission" - ] + "columns": ["integration_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -1179,12 +1064,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1192,12 +1073,8 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1205,10 +1082,7 @@ "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { "name": "integration_item_item_id_integration_id_pk", - "columns": [ - "item_id", - "integration_id" - ] + "columns": ["item_id", "integration_id"] } }, "uniqueConstraints": {}, @@ -1249,16 +1123,12 @@ "indexes": { "integration_secret__kind_idx": { "name": "integration_secret__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false }, "integration_secret__updated_at_idx": { "name": "integration_secret__updated_at_idx", - "columns": [ - "updated_at" - ], + "columns": ["updated_at"], "isUnique": false } }, @@ -1267,12 +1137,8 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1280,10 +1146,7 @@ "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { "name": "integrationSecret_integration_id_kind_pk", - "columns": [ - "integration_id", - "kind" - ] + "columns": ["integration_id", "kind"] } }, "uniqueConstraints": {}, @@ -1320,12 +1183,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1333,12 +1192,8 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1346,11 +1201,7 @@ "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { "name": "integrationUserPermission_integration_id_user_id_permission_pk", - "columns": [ - "integration_id", - "user_id", - "permission" - ] + "columns": ["integration_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -1398,9 +1249,7 @@ "indexes": { "integration__kind_idx": { "name": "integration__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false } }, @@ -1409,12 +1258,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1422,9 +1267,7 @@ "compositePrimaryKeys": { "integration_id": { "name": "integration_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1468,12 +1311,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1481,17 +1320,13 @@ "compositePrimaryKeys": { "invite_id": { "name": "invite_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "invite_token_unique": { "name": "invite_token_unique", - "columns": [ - "token" - ] + "columns": ["token"] } }, "checkConstraint": {} @@ -1555,12 +1390,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1568,12 +1399,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1581,12 +1408,8 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1594,11 +1417,7 @@ "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { "name": "item_layout_item_id_section_id_layout_id_pk", - "columns": [ - "item_id", - "section_id", - "layout_id" - ] + "columns": ["item_id", "section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1651,12 +1470,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1664,9 +1479,7 @@ "compositePrimaryKeys": { "item_id": { "name": "item_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1718,12 +1531,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1731,9 +1540,7 @@ "compositePrimaryKeys": { "layout_id": { "name": "layout_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1799,12 +1606,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1812,9 +1615,7 @@ "compositePrimaryKeys": { "media_id": { "name": "media_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1850,9 +1651,7 @@ "compositePrimaryKeys": { "onboarding_id": { "name": "onboarding_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1925,12 +1724,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1938,17 +1733,13 @@ "compositePrimaryKeys": { "search_engine_id": { "name": "search_engine_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "search_engine_short_unique": { "name": "search_engine_short_unique", - "columns": [ - "short" - ] + "columns": ["short"] } }, "checkConstraint": {} @@ -1985,12 +1776,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1998,12 +1785,8 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2011,10 +1794,7 @@ "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { "name": "section_collapse_state_user_id_section_id_pk", - "columns": [ - "user_id", - "section_id" - ] + "columns": ["user_id", "section_id"] } }, "uniqueConstraints": {}, @@ -2079,12 +1859,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2092,12 +1868,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2105,12 +1877,8 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2118,10 +1886,7 @@ "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { "name": "section_layout_section_id_layout_id_pk", - "columns": [ - "section_id", - "layout_id" - ] + "columns": ["section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -2187,12 +1952,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2200,9 +1961,7 @@ "compositePrimaryKeys": { "section_id": { "name": "section_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2232,17 +1991,13 @@ "compositePrimaryKeys": { "serverSetting_setting_key": { "name": "serverSetting_setting_key", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "uniqueConstraints": { "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "checkConstraint": {} @@ -2275,9 +2030,7 @@ "indexes": { "user_id_idx": { "name": "user_id_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -2286,12 +2039,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2299,9 +2048,7 @@ "compositePrimaryKeys": { "session_session_token": { "name": "session_session_token", - "columns": [ - "session_token" - ] + "columns": ["session_token"] } }, "uniqueConstraints": {}, @@ -2444,12 +2191,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2457,12 +2200,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2470,12 +2209,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2483,9 +2218,7 @@ "compositePrimaryKeys": { "user_id": { "name": "user_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2521,10 +2254,7 @@ "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { "name": "verificationToken_identifier_token_pk", - "columns": [ - "identifier", - "token" - ] + "columns": ["identifier", "token"] } }, "uniqueConstraints": {}, @@ -2560,10 +2290,7 @@ "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { "name": "trusted_certificate_hostname_hostname_thumbprint_pk", - "columns": [ - "hostname", - "thumbprint" - ] + "columns": ["hostname", "thumbprint"] } }, "uniqueConstraints": {}, diff --git a/packages/db/migrations/mysql/meta/0042_snapshot.json b/packages/db/migrations/mysql/meta/0042_snapshot.json index 945d949c5..dd26483d7 100644 --- a/packages/db/migrations/mysql/meta/0042_snapshot.json +++ b/packages/db/migrations/mysql/meta/0042_snapshot.json @@ -88,9 +88,7 @@ "indexes": { "userId_idx": { "name": "userId_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -99,12 +97,8 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -112,10 +106,7 @@ "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { "name": "account_provider_provider_account_id_pk", - "columns": [ - "provider", - "provider_account_id" - ] + "columns": ["provider", "provider_account_id"] } }, "uniqueConstraints": {}, @@ -152,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -165,9 +152,7 @@ "compositePrimaryKeys": { "apiKey_id": { "name": "apiKey_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -224,9 +209,7 @@ "compositePrimaryKeys": { "app_id": { "name": "app_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -263,12 +246,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -276,12 +255,8 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -289,11 +264,7 @@ "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { "name": "boardGroupPermission_board_id_group_id_permission_pk", - "columns": [ - "board_id", - "group_id", - "permission" - ] + "columns": ["board_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -330,12 +301,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -343,12 +310,8 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -356,11 +319,7 @@ "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { "name": "boardUserPermission_board_id_user_id_permission_pk", - "columns": [ - "board_id", - "user_id", - "permission" - ] + "columns": ["board_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -518,12 +477,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -531,17 +486,13 @@ "compositePrimaryKeys": { "board_id": { "name": "board_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "board_name_unique": { "name": "board_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -577,9 +528,7 @@ "compositePrimaryKeys": { "cron_job_configuration_name": { "name": "cron_job_configuration_name", - "columns": [ - "name" - ] + "columns": ["name"] } }, "uniqueConstraints": {}, @@ -707,12 +656,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -720,9 +665,7 @@ "compositePrimaryKeys": { "custom_widget_definition_id": { "name": "custom_widget_definition_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -766,12 +709,8 @@ "name": "cw_secret_definition_id_cw_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -779,10 +718,7 @@ "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { "name": "custom_widget_secret_definition_id_kind_pk", - "columns": [ - "definition_id", - "kind" - ] + "columns": ["definition_id", "kind"] } }, "uniqueConstraints": {}, @@ -812,12 +748,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -825,12 +757,8 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -838,10 +766,7 @@ "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { "name": "groupMember_group_id_user_id_pk", - "columns": [ - "group_id", - "user_id" - ] + "columns": ["group_id", "user_id"] } }, "uniqueConstraints": {}, @@ -871,12 +796,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -937,12 +858,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -950,12 +867,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -963,12 +876,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -976,17 +885,13 @@ "compositePrimaryKeys": { "group_id": { "name": "group_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "group_name_unique": { "name": "group_name_unique", - "columns": [ - "name" - ] + "columns": ["name"] } }, "checkConstraint": {} @@ -1014,9 +919,7 @@ "compositePrimaryKeys": { "iconRepository_id": { "name": "iconRepository_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1067,12 +970,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1080,9 +979,7 @@ "compositePrimaryKeys": { "icon_id": { "name": "icon_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1119,12 +1016,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1132,12 +1025,8 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1145,11 +1034,7 @@ "compositePrimaryKeys": { "integration_group_permission__pk": { "name": "integration_group_permission__pk", - "columns": [ - "integration_id", - "group_id", - "permission" - ] + "columns": ["integration_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -1179,12 +1064,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1192,12 +1073,8 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1205,10 +1082,7 @@ "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { "name": "integration_item_item_id_integration_id_pk", - "columns": [ - "item_id", - "integration_id" - ] + "columns": ["item_id", "integration_id"] } }, "uniqueConstraints": {}, @@ -1249,16 +1123,12 @@ "indexes": { "integration_secret__kind_idx": { "name": "integration_secret__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false }, "integration_secret__updated_at_idx": { "name": "integration_secret__updated_at_idx", - "columns": [ - "updated_at" - ], + "columns": ["updated_at"], "isUnique": false } }, @@ -1267,12 +1137,8 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1280,10 +1146,7 @@ "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { "name": "integrationSecret_integration_id_kind_pk", - "columns": [ - "integration_id", - "kind" - ] + "columns": ["integration_id", "kind"] } }, "uniqueConstraints": {}, @@ -1320,12 +1183,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1333,12 +1192,8 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1346,11 +1201,7 @@ "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { "name": "integrationUserPermission_integration_id_user_id_permission_pk", - "columns": [ - "integration_id", - "user_id", - "permission" - ] + "columns": ["integration_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -1398,9 +1249,7 @@ "indexes": { "integration__kind_idx": { "name": "integration__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false } }, @@ -1409,12 +1258,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1422,9 +1267,7 @@ "compositePrimaryKeys": { "integration_id": { "name": "integration_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1468,12 +1311,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1481,17 +1320,13 @@ "compositePrimaryKeys": { "invite_id": { "name": "invite_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "invite_token_unique": { "name": "invite_token_unique", - "columns": [ - "token" - ] + "columns": ["token"] } }, "checkConstraint": {} @@ -1555,12 +1390,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1568,12 +1399,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1581,12 +1408,8 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1594,11 +1417,7 @@ "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { "name": "item_layout_item_id_section_id_layout_id_pk", - "columns": [ - "item_id", - "section_id", - "layout_id" - ] + "columns": ["item_id", "section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1651,12 +1470,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1664,9 +1479,7 @@ "compositePrimaryKeys": { "item_id": { "name": "item_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1718,12 +1531,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1731,9 +1540,7 @@ "compositePrimaryKeys": { "layout_id": { "name": "layout_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1799,12 +1606,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1812,9 +1615,7 @@ "compositePrimaryKeys": { "media_id": { "name": "media_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1850,9 +1651,7 @@ "compositePrimaryKeys": { "onboarding_id": { "name": "onboarding_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -1925,12 +1724,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1938,17 +1733,13 @@ "compositePrimaryKeys": { "search_engine_id": { "name": "search_engine_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": { "search_engine_short_unique": { "name": "search_engine_short_unique", - "columns": [ - "short" - ] + "columns": ["short"] } }, "checkConstraint": {} @@ -1985,12 +1776,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1998,12 +1785,8 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2011,10 +1794,7 @@ "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { "name": "section_collapse_state_user_id_section_id_pk", - "columns": [ - "user_id", - "section_id" - ] + "columns": ["user_id", "section_id"] } }, "uniqueConstraints": {}, @@ -2079,12 +1859,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2092,12 +1868,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2105,12 +1877,8 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2118,10 +1886,7 @@ "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { "name": "section_layout_section_id_layout_id_pk", - "columns": [ - "section_id", - "layout_id" - ] + "columns": ["section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -2187,12 +1952,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2200,9 +1961,7 @@ "compositePrimaryKeys": { "section_id": { "name": "section_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2232,17 +1991,13 @@ "compositePrimaryKeys": { "serverSetting_setting_key": { "name": "serverSetting_setting_key", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "uniqueConstraints": { "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "checkConstraint": {} @@ -2275,9 +2030,7 @@ "indexes": { "user_id_idx": { "name": "user_id_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -2286,12 +2039,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2299,9 +2048,7 @@ "compositePrimaryKeys": { "session_session_token": { "name": "session_session_token", - "columns": [ - "session_token" - ] + "columns": ["session_token"] } }, "uniqueConstraints": {}, @@ -2444,12 +2191,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2457,12 +2200,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2470,12 +2209,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2483,9 +2218,7 @@ "compositePrimaryKeys": { "user_id": { "name": "user_id", - "columns": [ - "id" - ] + "columns": ["id"] } }, "uniqueConstraints": {}, @@ -2521,10 +2254,7 @@ "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { "name": "verificationToken_identifier_token_pk", - "columns": [ - "identifier", - "token" - ] + "columns": ["identifier", "token"] } }, "uniqueConstraints": {}, @@ -2560,10 +2290,7 @@ "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { "name": "trusted_certificate_hostname_hostname_thumbprint_pk", - "columns": [ - "hostname", - "thumbprint" - ] + "columns": ["hostname", "thumbprint"] } }, "uniqueConstraints": {}, @@ -2607,22 +2334,15 @@ "name": "widget_secret_item_id_item_id_fk", "tableFrom": "widget_secret", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "widget_secret_item_id_kind_pk": { - "columns": [ - "item_id", - "kind" - ], + "columns": ["item_id", "kind"], "name": "widget_secret_item_id_kind_pk" } }, diff --git a/packages/db/migrations/postgresql/meta/0006_snapshot.json b/packages/db/migrations/postgresql/meta/0006_snapshot.json index ee39b4f11..d5576746b 100644 --- a/packages/db/migrations/postgresql/meta/0006_snapshot.json +++ b/packages/db/migrations/postgresql/meta/0006_snapshot.json @@ -97,12 +97,8 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -110,10 +106,7 @@ "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { "name": "account_provider_provider_account_id_pk", - "columns": [ - "provider", - "provider_account_id" - ] + "columns": ["provider", "provider_account_id"] } }, "uniqueConstraints": {}, @@ -150,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -244,12 +233,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -257,12 +242,8 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -270,11 +251,7 @@ "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { "name": "boardGroupPermission_board_id_group_id_permission_pk", - "columns": [ - "board_id", - "group_id", - "permission" - ] + "columns": ["board_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -311,12 +288,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -324,12 +297,8 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -337,11 +306,7 @@ "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { "name": "boardUserPermission_board_id_user_id_permission_pk", - "columns": [ - "board_id", - "user_id", - "permission" - ] + "columns": ["board_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -483,12 +448,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -498,9 +459,7 @@ "board_name_unique": { "name": "board_name_unique", "nullsNotDistinct": false, - "columns": [ - "name" - ] + "columns": ["name"] } }, "policies": {}, @@ -646,12 +605,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -697,12 +652,8 @@ "name": "custom_widget_secret_definition_id_custom_widget_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -710,10 +661,7 @@ "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { "name": "custom_widget_secret_definition_id_kind_pk", - "columns": [ - "definition_id", - "kind" - ] + "columns": ["definition_id", "kind"] } }, "uniqueConstraints": {}, @@ -744,12 +692,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -757,12 +701,8 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -770,10 +710,7 @@ "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { "name": "groupMember_group_id_user_id_pk", - "columns": [ - "group_id", - "user_id" - ] + "columns": ["group_id", "user_id"] } }, "uniqueConstraints": {}, @@ -804,12 +741,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -867,12 +800,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -880,12 +809,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -893,12 +818,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -908,9 +829,7 @@ "group_name_unique": { "name": "group_name_unique", "nullsNotDistinct": false, - "columns": [ - "name" - ] + "columns": ["name"] } }, "policies": {}, @@ -983,12 +902,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1028,12 +943,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1041,12 +952,8 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1054,11 +961,7 @@ "compositePrimaryKeys": { "integration_group_permission__pk": { "name": "integration_group_permission__pk", - "columns": [ - "integration_id", - "group_id", - "permission" - ] + "columns": ["integration_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -1089,12 +992,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1102,12 +1001,8 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1115,10 +1010,7 @@ "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { "name": "integration_item_item_id_integration_id_pk", - "columns": [ - "item_id", - "integration_id" - ] + "columns": ["item_id", "integration_id"] } }, "uniqueConstraints": {}, @@ -1192,12 +1084,8 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1205,10 +1093,7 @@ "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { "name": "integrationSecret_integration_id_kind_pk", - "columns": [ - "integration_id", - "kind" - ] + "columns": ["integration_id", "kind"] } }, "uniqueConstraints": {}, @@ -1245,12 +1130,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1258,12 +1139,8 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1271,11 +1148,7 @@ "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { "name": "integrationUserPermission_integration_id_user_id_permission_pk", - "columns": [ - "integration_id", - "user_id", - "permission" - ] + "columns": ["integration_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -1340,12 +1213,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1391,12 +1260,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1406,9 +1271,7 @@ "invite_token_unique": { "name": "invite_token_unique", "nullsNotDistinct": false, - "columns": [ - "token" - ] + "columns": ["token"] } }, "policies": {}, @@ -1468,12 +1331,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1481,12 +1340,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1494,12 +1349,8 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1507,11 +1358,7 @@ "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { "name": "item_layout_item_id_section_id_layout_id_pk", - "columns": [ - "item_id", - "section_id", - "layout_id" - ] + "columns": ["item_id", "section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1562,12 +1409,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1620,12 +1463,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1690,12 +1529,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1797,12 +1632,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1812,9 +1643,7 @@ "search_engine_short_unique": { "name": "search_engine_short_unique", "nullsNotDistinct": false, - "columns": [ - "short" - ] + "columns": ["short"] } }, "policies": {}, @@ -1851,12 +1680,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1864,12 +1689,8 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1877,10 +1698,7 @@ "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { "name": "section_collapse_state_user_id_section_id_pk", - "columns": [ - "user_id", - "section_id" - ] + "columns": ["user_id", "section_id"] } }, "uniqueConstraints": {}, @@ -1941,12 +1759,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1954,12 +1768,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1967,12 +1777,8 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1980,10 +1786,7 @@ "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { "name": "section_layout_section_id_layout_id_pk", - "columns": [ - "section_id", - "layout_id" - ] + "columns": ["section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -2045,12 +1848,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2086,9 +1885,7 @@ "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", "nullsNotDistinct": false, - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "policies": {}, @@ -2140,12 +1937,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2277,12 +2070,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2290,12 +2079,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2303,12 +2088,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2347,10 +2128,7 @@ "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { "name": "verificationToken_identifier_token_pk", - "columns": [ - "identifier", - "token" - ] + "columns": ["identifier", "token"] } }, "uniqueConstraints": {}, @@ -2386,10 +2164,7 @@ "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { "name": "trusted_certificate_hostname_hostname_thumbprint_pk", - "columns": [ - "hostname", - "thumbprint" - ] + "columns": ["hostname", "thumbprint"] } }, "uniqueConstraints": {}, @@ -2409,4 +2184,4 @@ "schemas": {}, "tables": {} } -} \ No newline at end of file +} diff --git a/packages/db/migrations/postgresql/meta/0007_snapshot.json b/packages/db/migrations/postgresql/meta/0007_snapshot.json index 4c4f167d7..de8042930 100644 --- a/packages/db/migrations/postgresql/meta/0007_snapshot.json +++ b/packages/db/migrations/postgresql/meta/0007_snapshot.json @@ -97,12 +97,8 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -110,10 +106,7 @@ "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { "name": "account_provider_provider_account_id_pk", - "columns": [ - "provider", - "provider_account_id" - ] + "columns": ["provider", "provider_account_id"] } }, "uniqueConstraints": {}, @@ -150,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -244,12 +233,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -257,12 +242,8 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -270,11 +251,7 @@ "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { "name": "boardGroupPermission_board_id_group_id_permission_pk", - "columns": [ - "board_id", - "group_id", - "permission" - ] + "columns": ["board_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -311,12 +288,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -324,12 +297,8 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -337,11 +306,7 @@ "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { "name": "boardUserPermission_board_id_user_id_permission_pk", - "columns": [ - "board_id", - "user_id", - "permission" - ] + "columns": ["board_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -483,12 +448,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -498,9 +459,7 @@ "board_name_unique": { "name": "board_name_unique", "nullsNotDistinct": false, - "columns": [ - "name" - ] + "columns": ["name"] } }, "policies": {}, @@ -647,12 +606,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -698,12 +653,8 @@ "name": "custom_widget_secret_definition_id_custom_widget_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -711,10 +662,7 @@ "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { "name": "custom_widget_secret_definition_id_kind_pk", - "columns": [ - "definition_id", - "kind" - ] + "columns": ["definition_id", "kind"] } }, "uniqueConstraints": {}, @@ -745,12 +693,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -758,12 +702,8 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -771,10 +711,7 @@ "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { "name": "groupMember_group_id_user_id_pk", - "columns": [ - "group_id", - "user_id" - ] + "columns": ["group_id", "user_id"] } }, "uniqueConstraints": {}, @@ -805,12 +742,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -868,12 +801,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -881,12 +810,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -894,12 +819,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -909,9 +830,7 @@ "group_name_unique": { "name": "group_name_unique", "nullsNotDistinct": false, - "columns": [ - "name" - ] + "columns": ["name"] } }, "policies": {}, @@ -984,12 +903,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1029,12 +944,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1042,12 +953,8 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1055,11 +962,7 @@ "compositePrimaryKeys": { "integration_group_permission__pk": { "name": "integration_group_permission__pk", - "columns": [ - "integration_id", - "group_id", - "permission" - ] + "columns": ["integration_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -1090,12 +993,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1103,12 +1002,8 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1116,10 +1011,7 @@ "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { "name": "integration_item_item_id_integration_id_pk", - "columns": [ - "item_id", - "integration_id" - ] + "columns": ["item_id", "integration_id"] } }, "uniqueConstraints": {}, @@ -1193,12 +1085,8 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1206,10 +1094,7 @@ "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { "name": "integrationSecret_integration_id_kind_pk", - "columns": [ - "integration_id", - "kind" - ] + "columns": ["integration_id", "kind"] } }, "uniqueConstraints": {}, @@ -1246,12 +1131,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1259,12 +1140,8 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1272,11 +1149,7 @@ "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { "name": "integrationUserPermission_integration_id_user_id_permission_pk", - "columns": [ - "integration_id", - "user_id", - "permission" - ] + "columns": ["integration_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -1341,12 +1214,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1392,12 +1261,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1407,9 +1272,7 @@ "invite_token_unique": { "name": "invite_token_unique", "nullsNotDistinct": false, - "columns": [ - "token" - ] + "columns": ["token"] } }, "policies": {}, @@ -1469,12 +1332,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1482,12 +1341,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1495,12 +1350,8 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1508,11 +1359,7 @@ "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { "name": "item_layout_item_id_section_id_layout_id_pk", - "columns": [ - "item_id", - "section_id", - "layout_id" - ] + "columns": ["item_id", "section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1563,12 +1410,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1621,12 +1464,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1691,12 +1530,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1798,12 +1633,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1813,9 +1644,7 @@ "search_engine_short_unique": { "name": "search_engine_short_unique", "nullsNotDistinct": false, - "columns": [ - "short" - ] + "columns": ["short"] } }, "policies": {}, @@ -1852,12 +1681,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1865,12 +1690,8 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1878,10 +1699,7 @@ "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { "name": "section_collapse_state_user_id_section_id_pk", - "columns": [ - "user_id", - "section_id" - ] + "columns": ["user_id", "section_id"] } }, "uniqueConstraints": {}, @@ -1942,12 +1760,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1955,12 +1769,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1968,12 +1778,8 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1981,10 +1787,7 @@ "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { "name": "section_layout_section_id_layout_id_pk", - "columns": [ - "section_id", - "layout_id" - ] + "columns": ["section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -2046,12 +1849,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2087,9 +1886,7 @@ "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", "nullsNotDistinct": false, - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "policies": {}, @@ -2141,12 +1938,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2278,12 +2071,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2291,12 +2080,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2304,12 +2089,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2348,10 +2129,7 @@ "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { "name": "verificationToken_identifier_token_pk", - "columns": [ - "identifier", - "token" - ] + "columns": ["identifier", "token"] } }, "uniqueConstraints": {}, @@ -2387,10 +2165,7 @@ "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { "name": "trusted_certificate_hostname_hostname_thumbprint_pk", - "columns": [ - "hostname", - "thumbprint" - ] + "columns": ["hostname", "thumbprint"] } }, "uniqueConstraints": {}, diff --git a/packages/db/migrations/postgresql/meta/0008_snapshot.json b/packages/db/migrations/postgresql/meta/0008_snapshot.json index ab3303ac9..4ab88d535 100644 --- a/packages/db/migrations/postgresql/meta/0008_snapshot.json +++ b/packages/db/migrations/postgresql/meta/0008_snapshot.json @@ -97,12 +97,8 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -110,10 +106,7 @@ "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { "name": "account_provider_provider_account_id_pk", - "columns": [ - "provider", - "provider_account_id" - ] + "columns": ["provider", "provider_account_id"] } }, "uniqueConstraints": {}, @@ -150,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -244,12 +233,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -257,12 +242,8 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -270,11 +251,7 @@ "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { "name": "boardGroupPermission_board_id_group_id_permission_pk", - "columns": [ - "board_id", - "group_id", - "permission" - ] + "columns": ["board_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -311,12 +288,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -324,12 +297,8 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -337,11 +306,7 @@ "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { "name": "boardUserPermission_board_id_user_id_permission_pk", - "columns": [ - "board_id", - "user_id", - "permission" - ] + "columns": ["board_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -483,12 +448,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -498,9 +459,7 @@ "board_name_unique": { "name": "board_name_unique", "nullsNotDistinct": false, - "columns": [ - "name" - ] + "columns": ["name"] } }, "policies": {}, @@ -647,12 +606,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -698,12 +653,8 @@ "name": "custom_widget_secret_definition_id_custom_widget_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -711,10 +662,7 @@ "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { "name": "custom_widget_secret_definition_id_kind_pk", - "columns": [ - "definition_id", - "kind" - ] + "columns": ["definition_id", "kind"] } }, "uniqueConstraints": {}, @@ -745,12 +693,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -758,12 +702,8 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -771,10 +711,7 @@ "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { "name": "groupMember_group_id_user_id_pk", - "columns": [ - "group_id", - "user_id" - ] + "columns": ["group_id", "user_id"] } }, "uniqueConstraints": {}, @@ -805,12 +742,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -868,12 +801,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -881,12 +810,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -894,12 +819,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -909,9 +830,7 @@ "group_name_unique": { "name": "group_name_unique", "nullsNotDistinct": false, - "columns": [ - "name" - ] + "columns": ["name"] } }, "policies": {}, @@ -984,12 +903,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1029,12 +944,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1042,12 +953,8 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1055,11 +962,7 @@ "compositePrimaryKeys": { "integration_group_permission__pk": { "name": "integration_group_permission__pk", - "columns": [ - "integration_id", - "group_id", - "permission" - ] + "columns": ["integration_id", "group_id", "permission"] } }, "uniqueConstraints": {}, @@ -1090,12 +993,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1103,12 +1002,8 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1116,10 +1011,7 @@ "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { "name": "integration_item_item_id_integration_id_pk", - "columns": [ - "item_id", - "integration_id" - ] + "columns": ["item_id", "integration_id"] } }, "uniqueConstraints": {}, @@ -1193,12 +1085,8 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1206,10 +1094,7 @@ "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { "name": "integrationSecret_integration_id_kind_pk", - "columns": [ - "integration_id", - "kind" - ] + "columns": ["integration_id", "kind"] } }, "uniqueConstraints": {}, @@ -1246,12 +1131,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1259,12 +1140,8 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1272,11 +1149,7 @@ "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { "name": "integrationUserPermission_integration_id_user_id_permission_pk", - "columns": [ - "integration_id", - "user_id", - "permission" - ] + "columns": ["integration_id", "user_id", "permission"] } }, "uniqueConstraints": {}, @@ -1341,12 +1214,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1392,12 +1261,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1407,9 +1272,7 @@ "invite_token_unique": { "name": "invite_token_unique", "nullsNotDistinct": false, - "columns": [ - "token" - ] + "columns": ["token"] } }, "policies": {}, @@ -1469,12 +1332,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1482,12 +1341,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1495,12 +1350,8 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1508,11 +1359,7 @@ "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { "name": "item_layout_item_id_section_id_layout_id_pk", - "columns": [ - "item_id", - "section_id", - "layout_id" - ] + "columns": ["item_id", "section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -1563,12 +1410,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1621,12 +1464,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1691,12 +1530,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1798,12 +1633,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1813,9 +1644,7 @@ "search_engine_short_unique": { "name": "search_engine_short_unique", "nullsNotDistinct": false, - "columns": [ - "short" - ] + "columns": ["short"] } }, "policies": {}, @@ -1852,12 +1681,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1865,12 +1690,8 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1878,10 +1699,7 @@ "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { "name": "section_collapse_state_user_id_section_id_pk", - "columns": [ - "user_id", - "section_id" - ] + "columns": ["user_id", "section_id"] } }, "uniqueConstraints": {}, @@ -1942,12 +1760,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1955,12 +1769,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1968,12 +1778,8 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1981,10 +1787,7 @@ "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { "name": "section_layout_section_id_layout_id_pk", - "columns": [ - "section_id", - "layout_id" - ] + "columns": ["section_id", "layout_id"] } }, "uniqueConstraints": {}, @@ -2046,12 +1849,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2087,9 +1886,7 @@ "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", "nullsNotDistinct": false, - "columns": [ - "setting_key" - ] + "columns": ["setting_key"] } }, "policies": {}, @@ -2141,12 +1938,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2278,12 +2071,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2291,12 +2080,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2304,12 +2089,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2348,10 +2129,7 @@ "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { "name": "verificationToken_identifier_token_pk", - "columns": [ - "identifier", - "token" - ] + "columns": ["identifier", "token"] } }, "uniqueConstraints": {}, @@ -2387,10 +2165,7 @@ "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { "name": "trusted_certificate_hostname_hostname_thumbprint_pk", - "columns": [ - "hostname", - "thumbprint" - ] + "columns": ["hostname", "thumbprint"] } }, "uniqueConstraints": {}, @@ -2434,22 +2209,15 @@ "tableFrom": "widget_secret", "tableTo": "item", "schemaTo": "public", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "widget_secret_item_id_kind_pk": { - "columns": [ - "item_id", - "kind" - ], + "columns": ["item_id", "kind"], "name": "widget_secret_item_id_kind_pk" } }, diff --git a/packages/db/migrations/sqlite/meta/0038_snapshot.json b/packages/db/migrations/sqlite/meta/0038_snapshot.json index a000c93d9..0535c6bc5 100644 --- a/packages/db/migrations/sqlite/meta/0038_snapshot.json +++ b/packages/db/migrations/sqlite/meta/0038_snapshot.json @@ -88,9 +88,7 @@ "indexes": { "userId_idx": { "name": "userId_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -99,22 +97,15 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { - "columns": [ - "provider", - "provider_account_id" - ], + "columns": ["provider", "provider_account_id"], "name": "account_provider_provider_account_id_pk" } }, @@ -152,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -249,12 +236,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -262,23 +245,15 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { - "columns": [ - "board_id", - "group_id", - "permission" - ], + "columns": ["board_id", "group_id", "permission"], "name": "boardGroupPermission_board_id_group_id_permission_pk" } }, @@ -316,12 +291,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -329,23 +300,15 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { - "columns": [ - "board_id", - "user_id", - "permission" - ], + "columns": ["board_id", "user_id", "permission"], "name": "boardUserPermission_board_id_user_id_permission_pk" } }, @@ -501,9 +464,7 @@ "indexes": { "board_name_unique": { "name": "board_name_unique", - "columns": [ - "name" - ], + "columns": ["name"], "isUnique": true } }, @@ -512,12 +473,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -679,12 +636,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -731,22 +684,15 @@ "name": "custom_widget_secret_definition_id_custom_widget_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { - "columns": [ - "definition_id", - "kind" - ], + "columns": ["definition_id", "kind"], "name": "custom_widget_secret_definition_id_kind_pk" } }, @@ -777,12 +723,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -790,22 +732,15 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { - "columns": [ - "group_id", - "user_id" - ], + "columns": ["group_id", "user_id"], "name": "groupMember_group_id_user_id_pk" } }, @@ -836,12 +771,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -899,9 +830,7 @@ "indexes": { "group_name_unique": { "name": "group_name_unique", - "columns": [ - "name" - ], + "columns": ["name"], "isUnique": true } }, @@ -910,12 +839,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -923,12 +848,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -936,12 +857,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1019,12 +936,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1064,12 +977,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1077,23 +986,15 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationGroupPermissions_integration_id_group_id_permission_pk": { - "columns": [ - "integration_id", - "group_id", - "permission" - ], + "columns": ["integration_id", "group_id", "permission"], "name": "integrationGroupPermissions_integration_id_group_id_permission_pk" } }, @@ -1124,12 +1025,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1137,22 +1034,15 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { - "columns": [ - "item_id", - "integration_id" - ], + "columns": ["item_id", "integration_id"], "name": "integration_item_item_id_integration_id_pk" } }, @@ -1194,16 +1084,12 @@ "indexes": { "integration_secret__kind_idx": { "name": "integration_secret__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false }, "integration_secret__updated_at_idx": { "name": "integration_secret__updated_at_idx", - "columns": [ - "updated_at" - ], + "columns": ["updated_at"], "isUnique": false } }, @@ -1212,22 +1098,15 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { - "columns": [ - "integration_id", - "kind" - ], + "columns": ["integration_id", "kind"], "name": "integrationSecret_integration_id_kind_pk" } }, @@ -1265,12 +1144,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1278,23 +1153,15 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { - "columns": [ - "integration_id", - "user_id", - "permission" - ], + "columns": ["integration_id", "user_id", "permission"], "name": "integrationUserPermission_integration_id_user_id_permission_pk" } }, @@ -1343,9 +1210,7 @@ "indexes": { "integration__kind_idx": { "name": "integration__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false } }, @@ -1354,12 +1219,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1403,9 +1264,7 @@ "indexes": { "invite_token_unique": { "name": "invite_token_unique", - "columns": [ - "token" - ], + "columns": ["token"], "isUnique": true } }, @@ -1414,12 +1273,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1487,12 +1342,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1500,12 +1351,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1513,23 +1360,15 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { - "columns": [ - "item_id", - "section_id", - "layout_id" - ], + "columns": ["item_id", "section_id", "layout_id"], "name": "item_layout_item_id_section_id_layout_id_pk" } }, @@ -1583,12 +1422,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1643,12 +1478,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1717,12 +1548,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1826,9 +1653,7 @@ "indexes": { "search_engine_short_unique": { "name": "search_engine_short_unique", - "columns": [ - "short" - ], + "columns": ["short"], "isUnique": true } }, @@ -1837,12 +1662,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1883,12 +1704,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1896,22 +1713,15 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { - "columns": [ - "user_id", - "section_id" - ], + "columns": ["user_id", "section_id"], "name": "section_collapse_state_user_id_section_id_pk" } }, @@ -1977,12 +1787,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1990,12 +1796,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2003,22 +1805,15 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { - "columns": [ - "section_id", - "layout_id" - ], + "columns": ["section_id", "layout_id"], "name": "section_layout_section_id_layout_id_pk" } }, @@ -2085,12 +1880,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2121,9 +1912,7 @@ "indexes": { "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", - "columns": [ - "setting_key" - ], + "columns": ["setting_key"], "isUnique": true } }, @@ -2160,9 +1949,7 @@ "indexes": { "user_id_idx": { "name": "user_id_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -2171,12 +1958,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2214,10 +1997,7 @@ "foreignKeys": {}, "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { - "columns": [ - "hostname", - "thumbprint" - ], + "columns": ["hostname", "thumbprint"], "name": "trusted_certificate_hostname_hostname_thumbprint_pk" } }, @@ -2361,12 +2141,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2374,12 +2150,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2387,12 +2159,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2430,10 +2198,7 @@ "foreignKeys": {}, "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { - "columns": [ - "identifier", - "token" - ], + "columns": ["identifier", "token"], "name": "verificationToken_identifier_token_pk" } }, @@ -2451,4 +2216,4 @@ "internal": { "indexes": {} } -} \ No newline at end of file +} diff --git a/packages/db/migrations/sqlite/meta/0039_snapshot.json b/packages/db/migrations/sqlite/meta/0039_snapshot.json index 2b5d2cf26..cc4de72de 100644 --- a/packages/db/migrations/sqlite/meta/0039_snapshot.json +++ b/packages/db/migrations/sqlite/meta/0039_snapshot.json @@ -88,9 +88,7 @@ "indexes": { "userId_idx": { "name": "userId_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -99,22 +97,15 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { - "columns": [ - "provider", - "provider_account_id" - ], + "columns": ["provider", "provider_account_id"], "name": "account_provider_provider_account_id_pk" } }, @@ -152,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -249,12 +236,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -262,23 +245,15 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { - "columns": [ - "board_id", - "group_id", - "permission" - ], + "columns": ["board_id", "group_id", "permission"], "name": "boardGroupPermission_board_id_group_id_permission_pk" } }, @@ -316,12 +291,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -329,23 +300,15 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { - "columns": [ - "board_id", - "user_id", - "permission" - ], + "columns": ["board_id", "user_id", "permission"], "name": "boardUserPermission_board_id_user_id_permission_pk" } }, @@ -501,9 +464,7 @@ "indexes": { "board_name_unique": { "name": "board_name_unique", - "columns": [ - "name" - ], + "columns": ["name"], "isUnique": true } }, @@ -512,12 +473,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -680,12 +637,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -732,22 +685,15 @@ "name": "custom_widget_secret_definition_id_custom_widget_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { - "columns": [ - "definition_id", - "kind" - ], + "columns": ["definition_id", "kind"], "name": "custom_widget_secret_definition_id_kind_pk" } }, @@ -778,12 +724,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -791,22 +733,15 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { - "columns": [ - "group_id", - "user_id" - ], + "columns": ["group_id", "user_id"], "name": "groupMember_group_id_user_id_pk" } }, @@ -837,12 +772,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -900,9 +831,7 @@ "indexes": { "group_name_unique": { "name": "group_name_unique", - "columns": [ - "name" - ], + "columns": ["name"], "isUnique": true } }, @@ -911,12 +840,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -924,12 +849,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -937,12 +858,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1020,12 +937,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1065,12 +978,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1078,23 +987,15 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationGroupPermissions_integration_id_group_id_permission_pk": { - "columns": [ - "integration_id", - "group_id", - "permission" - ], + "columns": ["integration_id", "group_id", "permission"], "name": "integrationGroupPermissions_integration_id_group_id_permission_pk" } }, @@ -1125,12 +1026,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1138,22 +1035,15 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { - "columns": [ - "item_id", - "integration_id" - ], + "columns": ["item_id", "integration_id"], "name": "integration_item_item_id_integration_id_pk" } }, @@ -1195,16 +1085,12 @@ "indexes": { "integration_secret__kind_idx": { "name": "integration_secret__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false }, "integration_secret__updated_at_idx": { "name": "integration_secret__updated_at_idx", - "columns": [ - "updated_at" - ], + "columns": ["updated_at"], "isUnique": false } }, @@ -1213,22 +1099,15 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { - "columns": [ - "integration_id", - "kind" - ], + "columns": ["integration_id", "kind"], "name": "integrationSecret_integration_id_kind_pk" } }, @@ -1266,12 +1145,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1279,23 +1154,15 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { - "columns": [ - "integration_id", - "user_id", - "permission" - ], + "columns": ["integration_id", "user_id", "permission"], "name": "integrationUserPermission_integration_id_user_id_permission_pk" } }, @@ -1344,9 +1211,7 @@ "indexes": { "integration__kind_idx": { "name": "integration__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false } }, @@ -1355,12 +1220,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1404,9 +1265,7 @@ "indexes": { "invite_token_unique": { "name": "invite_token_unique", - "columns": [ - "token" - ], + "columns": ["token"], "isUnique": true } }, @@ -1415,12 +1274,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1488,12 +1343,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1501,12 +1352,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1514,23 +1361,15 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { - "columns": [ - "item_id", - "section_id", - "layout_id" - ], + "columns": ["item_id", "section_id", "layout_id"], "name": "item_layout_item_id_section_id_layout_id_pk" } }, @@ -1584,12 +1423,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1644,12 +1479,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1718,12 +1549,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1827,9 +1654,7 @@ "indexes": { "search_engine_short_unique": { "name": "search_engine_short_unique", - "columns": [ - "short" - ], + "columns": ["short"], "isUnique": true } }, @@ -1838,12 +1663,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1884,12 +1705,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1897,22 +1714,15 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { - "columns": [ - "user_id", - "section_id" - ], + "columns": ["user_id", "section_id"], "name": "section_collapse_state_user_id_section_id_pk" } }, @@ -1978,12 +1788,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1991,12 +1797,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2004,22 +1806,15 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { - "columns": [ - "section_id", - "layout_id" - ], + "columns": ["section_id", "layout_id"], "name": "section_layout_section_id_layout_id_pk" } }, @@ -2086,12 +1881,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2122,9 +1913,7 @@ "indexes": { "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", - "columns": [ - "setting_key" - ], + "columns": ["setting_key"], "isUnique": true } }, @@ -2161,9 +1950,7 @@ "indexes": { "user_id_idx": { "name": "user_id_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -2172,12 +1959,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2215,10 +1998,7 @@ "foreignKeys": {}, "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { - "columns": [ - "hostname", - "thumbprint" - ], + "columns": ["hostname", "thumbprint"], "name": "trusted_certificate_hostname_hostname_thumbprint_pk" } }, @@ -2362,12 +2142,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2375,12 +2151,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2388,12 +2160,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2431,10 +2199,7 @@ "foreignKeys": {}, "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { - "columns": [ - "identifier", - "token" - ], + "columns": ["identifier", "token"], "name": "verificationToken_identifier_token_pk" } }, diff --git a/packages/db/migrations/sqlite/meta/0040_snapshot.json b/packages/db/migrations/sqlite/meta/0040_snapshot.json index 9f0bc677e..b7da34135 100644 --- a/packages/db/migrations/sqlite/meta/0040_snapshot.json +++ b/packages/db/migrations/sqlite/meta/0040_snapshot.json @@ -88,9 +88,7 @@ "indexes": { "userId_idx": { "name": "userId_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -99,22 +97,15 @@ "name": "account_user_id_user_id_fk", "tableFrom": "account", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "account_provider_provider_account_id_pk": { - "columns": [ - "provider", - "provider_account_id" - ], + "columns": ["provider", "provider_account_id"], "name": "account_provider_provider_account_id_pk" } }, @@ -152,12 +143,8 @@ "name": "apiKey_user_id_user_id_fk", "tableFrom": "apiKey", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -249,12 +236,8 @@ "name": "boardGroupPermission_board_id_board_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -262,23 +245,15 @@ "name": "boardGroupPermission_group_id_group_id_fk", "tableFrom": "boardGroupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "boardGroupPermission_board_id_group_id_permission_pk": { - "columns": [ - "board_id", - "group_id", - "permission" - ], + "columns": ["board_id", "group_id", "permission"], "name": "boardGroupPermission_board_id_group_id_permission_pk" } }, @@ -316,12 +291,8 @@ "name": "boardUserPermission_board_id_board_id_fk", "tableFrom": "boardUserPermission", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -329,23 +300,15 @@ "name": "boardUserPermission_user_id_user_id_fk", "tableFrom": "boardUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "boardUserPermission_board_id_user_id_permission_pk": { - "columns": [ - "board_id", - "user_id", - "permission" - ], + "columns": ["board_id", "user_id", "permission"], "name": "boardUserPermission_board_id_user_id_permission_pk" } }, @@ -501,9 +464,7 @@ "indexes": { "board_name_unique": { "name": "board_name_unique", - "columns": [ - "name" - ], + "columns": ["name"], "isUnique": true } }, @@ -512,12 +473,8 @@ "name": "board_creator_id_user_id_fk", "tableFrom": "board", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -680,12 +637,8 @@ "name": "custom_widget_definition_creator_id_user_id_fk", "tableFrom": "custom_widget_definition", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -732,22 +685,15 @@ "name": "custom_widget_secret_definition_id_custom_widget_definition_id_fk", "tableFrom": "custom_widget_secret", "tableTo": "custom_widget_definition", - "columnsFrom": [ - "definition_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["definition_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "custom_widget_secret_definition_id_kind_pk": { - "columns": [ - "definition_id", - "kind" - ], + "columns": ["definition_id", "kind"], "name": "custom_widget_secret_definition_id_kind_pk" } }, @@ -778,12 +724,8 @@ "name": "groupMember_group_id_group_id_fk", "tableFrom": "groupMember", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -791,22 +733,15 @@ "name": "groupMember_user_id_user_id_fk", "tableFrom": "groupMember", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "groupMember_group_id_user_id_pk": { - "columns": [ - "group_id", - "user_id" - ], + "columns": ["group_id", "user_id"], "name": "groupMember_group_id_user_id_pk" } }, @@ -837,12 +772,8 @@ "name": "groupPermission_group_id_group_id_fk", "tableFrom": "groupPermission", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -900,9 +831,7 @@ "indexes": { "group_name_unique": { "name": "group_name_unique", - "columns": [ - "name" - ], + "columns": ["name"], "isUnique": true } }, @@ -911,12 +840,8 @@ "name": "group_owner_id_user_id_fk", "tableFrom": "group", "tableTo": "user", - "columnsFrom": [ - "owner_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["owner_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -924,12 +849,8 @@ "name": "group_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -937,12 +858,8 @@ "name": "group_mobile_home_board_id_board_id_fk", "tableFrom": "group", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1020,12 +937,8 @@ "name": "icon_icon_repository_id_iconRepository_id_fk", "tableFrom": "icon", "tableTo": "iconRepository", - "columnsFrom": [ - "icon_repository_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["icon_repository_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1065,12 +978,8 @@ "name": "integrationGroupPermissions_integration_id_integration_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1078,23 +987,15 @@ "name": "integrationGroupPermissions_group_id_group_id_fk", "tableFrom": "integrationGroupPermissions", "tableTo": "group", - "columnsFrom": [ - "group_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["group_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationGroupPermissions_integration_id_group_id_permission_pk": { - "columns": [ - "integration_id", - "group_id", - "permission" - ], + "columns": ["integration_id", "group_id", "permission"], "name": "integrationGroupPermissions_integration_id_group_id_permission_pk" } }, @@ -1125,12 +1026,8 @@ "name": "integration_item_item_id_item_id_fk", "tableFrom": "integration_item", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1138,22 +1035,15 @@ "name": "integration_item_integration_id_integration_id_fk", "tableFrom": "integration_item", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integration_item_item_id_integration_id_pk": { - "columns": [ - "item_id", - "integration_id" - ], + "columns": ["item_id", "integration_id"], "name": "integration_item_item_id_integration_id_pk" } }, @@ -1195,16 +1085,12 @@ "indexes": { "integration_secret__kind_idx": { "name": "integration_secret__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false }, "integration_secret__updated_at_idx": { "name": "integration_secret__updated_at_idx", - "columns": [ - "updated_at" - ], + "columns": ["updated_at"], "isUnique": false } }, @@ -1213,22 +1099,15 @@ "name": "integrationSecret_integration_id_integration_id_fk", "tableFrom": "integrationSecret", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationSecret_integration_id_kind_pk": { - "columns": [ - "integration_id", - "kind" - ], + "columns": ["integration_id", "kind"], "name": "integrationSecret_integration_id_kind_pk" } }, @@ -1266,12 +1145,8 @@ "name": "integrationUserPermission_integration_id_integration_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1279,23 +1154,15 @@ "name": "integrationUserPermission_user_id_user_id_fk", "tableFrom": "integrationUserPermission", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "integrationUserPermission_integration_id_user_id_permission_pk": { - "columns": [ - "integration_id", - "user_id", - "permission" - ], + "columns": ["integration_id", "user_id", "permission"], "name": "integrationUserPermission_integration_id_user_id_permission_pk" } }, @@ -1344,9 +1211,7 @@ "indexes": { "integration__kind_idx": { "name": "integration__kind_idx", - "columns": [ - "kind" - ], + "columns": ["kind"], "isUnique": false } }, @@ -1355,12 +1220,8 @@ "name": "integration_app_id_app_id_fk", "tableFrom": "integration", "tableTo": "app", - "columnsFrom": [ - "app_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["app_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1404,9 +1265,7 @@ "indexes": { "invite_token_unique": { "name": "invite_token_unique", - "columns": [ - "token" - ], + "columns": ["token"], "isUnique": true } }, @@ -1415,12 +1274,8 @@ "name": "invite_creator_id_user_id_fk", "tableFrom": "invite", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1488,12 +1343,8 @@ "name": "item_layout_item_id_item_id_fk", "tableFrom": "item_layout", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1501,12 +1352,8 @@ "name": "item_layout_section_id_section_id_fk", "tableFrom": "item_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1514,23 +1361,15 @@ "name": "item_layout_layout_id_layout_id_fk", "tableFrom": "item_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "item_layout_item_id_section_id_layout_id_pk": { - "columns": [ - "item_id", - "section_id", - "layout_id" - ], + "columns": ["item_id", "section_id", "layout_id"], "name": "item_layout_item_id_section_id_layout_id_pk" } }, @@ -1584,12 +1423,8 @@ "name": "item_board_id_board_id_fk", "tableFrom": "item", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1644,12 +1479,8 @@ "name": "layout_board_id_board_id_fk", "tableFrom": "layout", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1718,12 +1549,8 @@ "name": "media_creator_id_user_id_fk", "tableFrom": "media", "tableTo": "user", - "columnsFrom": [ - "creator_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["creator_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -1827,9 +1654,7 @@ "indexes": { "search_engine_short_unique": { "name": "search_engine_short_unique", - "columns": [ - "short" - ], + "columns": ["short"], "isUnique": true } }, @@ -1838,12 +1663,8 @@ "name": "search_engine_integration_id_integration_id_fk", "tableFrom": "search_engine", "tableTo": "integration", - "columnsFrom": [ - "integration_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["integration_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -1884,12 +1705,8 @@ "name": "section_collapse_state_user_id_user_id_fk", "tableFrom": "section_collapse_state", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1897,22 +1714,15 @@ "name": "section_collapse_state_section_id_section_id_fk", "tableFrom": "section_collapse_state", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "section_collapse_state_user_id_section_id_pk": { - "columns": [ - "user_id", - "section_id" - ], + "columns": ["user_id", "section_id"], "name": "section_collapse_state_user_id_section_id_pk" } }, @@ -1978,12 +1788,8 @@ "name": "section_layout_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -1991,12 +1797,8 @@ "name": "section_layout_layout_id_layout_id_fk", "tableFrom": "section_layout", "tableTo": "layout", - "columnsFrom": [ - "layout_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["layout_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" }, @@ -2004,22 +1806,15 @@ "name": "section_layout_parent_section_id_section_id_fk", "tableFrom": "section_layout", "tableTo": "section", - "columnsFrom": [ - "parent_section_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["parent_section_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "section_layout_section_id_layout_id_pk": { - "columns": [ - "section_id", - "layout_id" - ], + "columns": ["section_id", "layout_id"], "name": "section_layout_section_id_layout_id_pk" } }, @@ -2086,12 +1881,8 @@ "name": "section_board_id_board_id_fk", "tableFrom": "section", "tableTo": "board", - "columnsFrom": [ - "board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["board_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2122,9 +1913,7 @@ "indexes": { "serverSetting_settingKey_unique": { "name": "serverSetting_settingKey_unique", - "columns": [ - "setting_key" - ], + "columns": ["setting_key"], "isUnique": true } }, @@ -2161,9 +1950,7 @@ "indexes": { "user_id_idx": { "name": "user_id_idx", - "columns": [ - "user_id" - ], + "columns": ["user_id"], "isUnique": false } }, @@ -2172,12 +1959,8 @@ "name": "session_user_id_user_id_fk", "tableFrom": "session", "tableTo": "user", - "columnsFrom": [ - "user_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["user_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } @@ -2215,10 +1998,7 @@ "foreignKeys": {}, "compositePrimaryKeys": { "trusted_certificate_hostname_hostname_thumbprint_pk": { - "columns": [ - "hostname", - "thumbprint" - ], + "columns": ["hostname", "thumbprint"], "name": "trusted_certificate_hostname_hostname_thumbprint_pk" } }, @@ -2362,12 +2142,8 @@ "name": "user_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2375,12 +2151,8 @@ "name": "user_mobile_home_board_id_board_id_fk", "tableFrom": "user", "tableTo": "board", - "columnsFrom": [ - "mobile_home_board_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["mobile_home_board_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" }, @@ -2388,12 +2160,8 @@ "name": "user_default_search_engine_id_search_engine_id_fk", "tableFrom": "user", "tableTo": "search_engine", - "columnsFrom": [ - "default_search_engine_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["default_search_engine_id"], + "columnsTo": ["id"], "onDelete": "set null", "onUpdate": "no action" } @@ -2431,10 +2199,7 @@ "foreignKeys": {}, "compositePrimaryKeys": { "verificationToken_identifier_token_pk": { - "columns": [ - "identifier", - "token" - ], + "columns": ["identifier", "token"], "name": "verificationToken_identifier_token_pk" } }, @@ -2479,22 +2244,15 @@ "name": "widget_secret_item_id_item_id_fk", "tableFrom": "widget_secret", "tableTo": "item", - "columnsFrom": [ - "item_id" - ], - "columnsTo": [ - "id" - ], + "columnsFrom": ["item_id"], + "columnsTo": ["id"], "onDelete": "cascade", "onUpdate": "no action" } }, "compositePrimaryKeys": { "widget_secret_item_id_kind_pk": { - "columns": [ - "item_id", - "kind" - ], + "columns": ["item_id", "kind"], "name": "widget_secret_item_id_kind_pk" } }, diff --git a/packages/db/test/mysql-migration.spec.ts b/packages/db/test/mysql-migration.spec.ts index 4033ab40d..472c40c96 100644 --- a/packages/db/test/mysql-migration.spec.ts +++ b/packages/db/test/mysql-migration.spec.ts @@ -198,5 +198,5 @@ describe("Mysql Migration", () => { await sql.end(); await mysqlContainer.stop(); } - }, 90_000); + }, 120_000); }); diff --git a/packages/integrations/src/patchmon/patchmon-types.ts b/packages/integrations/src/patchmon/patchmon-types.ts index 96c3db293..87017acdf 100644 --- a/packages/integrations/src/patchmon/patchmon-types.ts +++ b/packages/integrations/src/patchmon/patchmon-types.ts @@ -82,5 +82,5 @@ export const mapPatchMonStats = (data: z.infer b.count - a.count), + osDistribution: [...data.os_distribution].map(mapOsDistributionEntry).toSorted((a, b) => b.count - a.count), }); diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 191706c23..f9f68b4c4 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -688,211 +688,6 @@ "add": "" } }, - "customWidget": { - "page": { - "list": { - "title": "", - "noResults": "", - "loading": "" - }, - "create": { - "title": "", - "subtitle": "" - }, - "edit": { - "title": "" - } - }, - "action": { - "create": "", - "import": "", - "save": "", - "delete": "", - "deleteConfirm": "", - "export": "", - "addMapping": "", - "addColumn": "", - "edit": "", - "removeMapping": "", - "removeColumn": "", - "addItem": "", - "removeItem": "", - "addBar": "", - "duplicate": "", - "copyAiPrompt": "", - "enable": "", - "disable": "", - "menu": "" - }, - "field": { - "name": "", - "description": "", - "iconUrl": "", - "url": "", - "authType": "", - "headerName": "", - "method": "", - "requestBody": "", - "displayType": "", - "jsonPath": "", - "jsonPathHint": "", - "label": "", - "unit": "", - "mappings": "", - "tablePath": "", - "tablePathHint": "", - "columns": "", - "header": "", - "items": "", - "gridColumns": "", - "cardStyle": "", - "bars": "", - "valuePath": "", - "maxPath": "", - "showPercentage": "", - "barSize": "", - "goodValues": "", - "dotSize": "", - "valueSize": "", - "labelPosition": "", - "kvLayout": "", - "striped": "", - "compact": "", - "maxHeight": "", - "color": "", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "", - "exampleLabelShort": "", - "exampleHeader": "", - "exampleUnit": "", - "iconUrl": "", - "url": "", - "headerName": "", - "jsonPath": "", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "", - "md": "", - "lg": "", - "xl": "" - }, - "labelPositionOption": { - "above": "", - "below": "" - }, - "fieldset": { - "general": "", - "connection": "", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "", - "POST": "", - "PUT": "", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "", - "apiKeyQuery": "" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "", - "password": "", - "savedPlaceholder": "" - }, - "preview": { - "title": "", - "test": "", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "Fonts RSS", "description": "Monitoritzeu i mostreu una o més fonts RSS, ATOM o JSON genèriques", @@ -3744,40 +3323,6 @@ "internalServerError": "" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "", "description": "", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "", "description": "", @@ -4171,6 +3696,256 @@ "subtitle": "" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Inici", "boards": "Taulers", "apps": "Aplicacions", "integrations": "Integracions", - "customWidgets": "", "searchEngies": "Motors de cerca", "medias": "Multimèdia", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Gestiona", "boards": { "label": "Taulers" @@ -5728,18 +5506,6 @@ "label": "Edita" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Usuaris", "create": { diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 8e9a14e72..1c7eeaa15 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -688,211 +688,6 @@ "add": "Přidat aplikaci" } }, - "customWidget": { - "page": { - "list": { - "title": "", - "noResults": "", - "loading": "Načítání..." - }, - "create": { - "title": "", - "subtitle": "" - }, - "edit": { - "title": "" - } - }, - "action": { - "create": "Vytvořit", - "import": "Import", - "save": "Uložit", - "delete": "", - "deleteConfirm": "", - "export": "Export", - "addMapping": "", - "addColumn": "", - "edit": "Upravit", - "removeMapping": "", - "removeColumn": "", - "addItem": "Přidat položku", - "removeItem": "Odebrat položku", - "addBar": "Přidat lištu", - "duplicate": "", - "copyAiPrompt": "", - "enable": "Povolit", - "disable": "Zakázat", - "menu": "Akce" - }, - "field": { - "name": "Název", - "description": "Popis", - "iconUrl": "URL ikony", - "url": "URL", - "authType": "Typ ověření", - "headerName": "", - "method": "Metoda", - "requestBody": "", - "displayType": "", - "jsonPath": "", - "jsonPathHint": "", - "label": "", - "unit": "", - "mappings": "", - "tablePath": "", - "tablePathHint": "", - "columns": "", - "header": "", - "items": "", - "gridColumns": "", - "cardStyle": "", - "bars": "", - "valuePath": "", - "maxPath": "", - "showPercentage": "", - "barSize": "", - "goodValues": "", - "dotSize": "", - "valueSize": "", - "labelPosition": "", - "kvLayout": "", - "striped": "", - "compact": "", - "maxHeight": "", - "color": "", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "Teplota CPU", - "exampleLabelShort": "Teplota CPU", - "exampleHeader": "Název", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API klíč", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.jméno", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "Malé", - "md": "Střední", - "lg": "Velké", - "xl": "Extra velké" - }, - "labelPositionOption": { - "above": "Nad", - "below": "Pod" - }, - "fieldset": { - "general": "Obecné", - "connection": "API propojení", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "Klíč API (záhlaví)", - "apiKeyQuery": "Klíč API (dotazy)" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "Uživatelské jméno", - "password": "Heslo", - "savedPlaceholder": "••••••• (uloženo, ponechte prázdné pro zachování)" - }, - "preview": { - "title": "Náhled", - "test": "Test", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "URL", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "", "description": "", @@ -3744,40 +3323,6 @@ "internalServerError": "" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "", "description": "", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Systémy Beszel (tabulka)", "description": "Tabulkový přehled všech monitorovaných systémů Beszel s řaditelnými sloupci a indikátory stavu", @@ -4171,6 +3696,256 @@ "subtitle": "" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Domovská stránka", "boards": "Plochy", "apps": "Aplikace", "integrations": "", - "customWidgets": "", "searchEngies": "", "medias": "", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Spravovat", "boards": { "label": "Plochy" @@ -5728,18 +5506,6 @@ "label": "Upravit" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Uživatelé", "create": { diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 89b71379e..61c62b090 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -688,211 +688,6 @@ "add": "" } }, - "customWidget": { - "page": { - "list": { - "title": "Προσαρμοσμένα Widgets", - "noResults": "Δεν υπάρχουν ακόμα προσαρμοσμένα widgets. Δημιουργήστε το πρώτο σας!", - "loading": "Φόρτωση..." - }, - "create": { - "title": "Δημιουργία Προσαρμοσμένου Widget", - "subtitle": "Ορίστε μια διεύθυνση URL API, πιστοποίηση και τον τρόπο εμφάνισης των δεδομένων απόκρισης." - }, - "edit": { - "title": "Επεξεργασία Προσαρμοσμένου Widget" - } - }, - "action": { - "create": "Δημιουργία", - "import": "Εισαγωγή", - "save": "Αποθήκευση", - "delete": "Διαγραφή Προσαρμοσμένου Widget", - "deleteConfirm": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το \"{name}\"; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", - "export": "Εξαγωγή", - "addMapping": "Προσθήκη Αντιστοίχισης", - "addColumn": "Προσθήκη Στήλης", - "edit": "Επεξεργασία", - "removeMapping": "Αφαίρεση αντιστοίχισης", - "removeColumn": "Αφαίρεση στήλης", - "addItem": "Προσθήκη Στοιχείου", - "removeItem": "Αφαίρεση στοιχείου", - "addBar": "Προσθήκη Μπάρας", - "duplicate": "Αντιγραφή", - "copyAiPrompt": "Αντιγραφή προτροπής AI", - "enable": "Ενεργοποίηση", - "disable": "Απενεργοποίηση", - "menu": "Ενέργειες" - }, - "field": { - "name": "Όνομα", - "description": "Περιγραφή", - "iconUrl": "URL Εικονιδίου", - "url": "URL", - "authType": "Τύπος Πιστοποίησης", - "headerName": "Όνομα Παραμέτρου Κεφαλίδας/Ερωτήματος", - "method": "Μέθοδος", - "requestBody": "Σώμα Αιτήματος", - "displayType": "Τύπος Εμφάνισης", - "jsonPath": "Διαδρομή JSON", - "jsonPathHint": "Χρησιμοποιήστε σύνταξη JSONPath για εξαγωγή τιμών, π.χ. $.data.temperature ή $.items[0].name", - "label": "Ετικέτα", - "unit": "Μονάδα", - "mappings": "Αντιστοιχίσεις", - "tablePath": "Διαδρομή JSON Πίνακα", - "tablePathHint": "Διαδρομή προς τον πίνακα στην απόκριση, π.χ. $.data.items", - "columns": "Στήλες", - "header": "Κεφαλίδα", - "items": "Στοιχεία", - "gridColumns": "Στήλες Πλέγματος", - "cardStyle": "Στυλ Κάρτας", - "bars": "Μπάρες", - "valuePath": "Διαδρομή JSON Τιμής", - "maxPath": "Διαδρομή JSON Μέγιστης Τιμής", - "showPercentage": "Εμφάνιση Ποσοστού", - "barSize": "Μέγεθος Μπάρας", - "goodValues": "Καλές Τιμές (διαχωρισμένες με κόμμα)", - "dotSize": "Μέγεθος Κουκκίδας", - "valueSize": "Μέγεθος Τιμής", - "labelPosition": "Θέση Ετικέτας", - "kvLayout": "Διάταξη", - "striped": "Ριγωτές Γραμμές", - "compact": "Συμπαγής Λειτουργία", - "maxHeight": "Μέγιστο Ύψος (px)", - "color": "Χρώμα", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "", - "exampleLabelShort": "", - "exampleHeader": "", - "exampleUnit": "", - "iconUrl": "", - "url": "", - "headerName": "", - "jsonPath": "", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "", - "md": "", - "lg": "", - "xl": "" - }, - "labelPositionOption": { - "above": "", - "below": "" - }, - "fieldset": { - "general": "", - "connection": "", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "", - "POST": "", - "PUT": "", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "", - "apiKeyQuery": "" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "", - "password": "", - "savedPlaceholder": "" - }, - "preview": { - "title": "", - "test": "", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "Αποτυχία λήψης δεδομένων Paperless-ngx" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "", "description": "", @@ -3744,40 +3323,6 @@ "internalServerError": "Αποτυχία λήψης δεδομένων διαθεσιμότητας" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "Στατιστικά Ήχου", "description": "Στατιστικά βιβλιοθήκης και αναπαραγωγής από Navidrome ή Audiobookshelf", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Beszel Συστήματα (Πίνακας)", "description": "Προβολή πίνακα όλων των συστημάτων που παρακολουθούνται από το Beszel με ταξινομήσιμες στήλες και δείκτες κατάστασης", @@ -4171,6 +3696,256 @@ "subtitle": "Κίνηση δικτύου των docker containers" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Αρχική", "boards": "Πίνακες", "apps": "Εφαρμογές", "integrations": "", - "customWidgets": "", "searchEngies": "", "medias": "", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Διαχείριση", "boards": { "label": "Πίνακες" @@ -5728,18 +5506,6 @@ "label": "Επεξεργασία" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Χρήστες", "create": { diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index 76abff9a8..908465523 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -710,187 +710,7 @@ "delete": "Delete Custom Widget", "deleteConfirm": "Are you sure you want to delete \"{name}\"? This action cannot be undone.", "export": "Export", - "addMapping": "Add Mapping", - "addColumn": "Add Column", - "edit": "Edit", - "removeMapping": "Remove mapping", - "removeColumn": "Remove column", - "addItem": "Add Item", - "removeItem": "Remove item", - "addBar": "Add Bar", - "duplicate": "Duplicate", - "copyAiPrompt": "Copy AI prompt", - "enable": "Enable", - "disable": "Disable", - "menu": "Actions" - }, - "field": { - "name": "Name", - "description": "Description", - "iconUrl": "Icon URL", - "url": "URL", - "authType": "Auth Type", - "headerName": "Header/Query Parameter Name", - "method": "Method", - "requestBody": "Request Body", - "displayType": "Display Type", - "jsonPath": "JSON Path", - "jsonPathHint": "Use JSONPath syntax to extract values, e.g. $.data.temperature or $.items[0].name", - "label": "Label", - "unit": "Unit", - "mappings": "Mappings", - "tablePath": "Array JSON Path", - "tablePathHint": "Path to the array in the response, e.g. $.data.items", - "columns": "Columns", - "header": "Header", - "items": "Items", - "gridColumns": "Grid Columns", - "cardStyle": "Card Style", - "bars": "Bars", - "valuePath": "Value JSON Path", - "maxPath": "Max Value JSON Path", - "showPercentage": "Show Percentage", - "barSize": "Bar Size", - "goodValues": "Good Values (comma-separated)", - "dotSize": "Dot Size", - "valueSize": "Value Size", - "labelPosition": "Label Position", - "kvLayout": "Layout", - "striped": "Striped Rows", - "compact": "Compact Mode", - "maxHeight": "Max Height (px)", - "color": "Colour", - "buttonLabel": "Button Label", - "buttonColor": "Button Colour", - "confirmText": "Confirmation Text", - "confirmTextHint": "If set, a confirmation dialogue will appear before executing the request", - "successMessage": "Success Message", - "successMessageHint": "Message shown after successful execution", - "enabled": "Enabled", - "template": { - "label": "JSX Template", - "description": "Mantine JSX template. Access API response fields via data bindings (e.g. data.name). Use whitelisted components only. Forbidden: constructor, __proto__, eval, Function, window, document." - } - }, - "placeholder": { - "exampleLabel": "CPU Temperature", - "exampleLabelShort": "CPU Temp", - "exampleHeader": "Name", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.name", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "online, true, up", - "color": "blue" - }, - "cardStyleOption": { - "filled": "Filled", - "outline": "Outline", - "subtle": "Subtle" - }, - "layoutOption": { - "list": "List", - "grid": "Grid" - }, - "sizeOption": { - "sm": "Small", - "md": "Medium", - "lg": "Large", - "xl": "Extra Large" - }, - "labelPositionOption": { - "above": "Above", - "below": "Below" - }, - "fieldset": { - "general": "General", - "connection": "API Connection", - "display": "Display Configuration" - }, - "displayTypeDescription": { - "singleValue": "Show one extracted value with a label and unit", - "keyValue": "Show multiple labeled values side by side", - "table": "Show rows of data in a table format", - "statGrid": "Colored stat cards in a grid — like Pi-Hole or Speedtest widgets", - "progressBars": "Progress bars showing usage or completion — for disk, memory, quotas", - "statusIndicator": "Colored status dots showing online/offline or health states", - "countGrid": "Compact number + label counters in a tight grid", - "raw": "Pretty-printed JSON output for debugging", - "actionButton": "A button that triggers a request when clicked", - "customJsx": "Custom JSX layout using whitelisted Mantine components with full API data binding" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "None", - "bearer": "Bearer Token", - "basic": "Basic Auth", - "apiKeyHeader": "API Key (Header)", - "apiKeyQuery": "API Key (Query)" - }, - "displayType": { - "singleValue": "Single Value", - "keyValue": "Key-Value", - "table": "Table", - "statGrid": "Stat Grid", - "progressBars": "Progress Bars", - "statusIndicator": "Status Indicator", - "countGrid": "Count Grid", - "raw": "Raw JSON", - "actionButton": "Action Button", - "customJsx": "Custom JSX" - }, - "secret": { - "apiKey": "API Key / Token", - "username": "Username", - "password": "Password", - "savedPlaceholder": "••••••• (saved, leave empty to keep)" - }, - "preview": { - "title": "Preview", - "test": "Test", - "hint": "Click Test to preview the API response with your current configuration.", - "rawResponse": "Raw JSON response" - }, - "notification": { - "created": "Widget \"{name}\" created successfully.", - "updated": "Widget \"{name}\" updated successfully.", - "deleted": "Widget \"{name}\" deleted.", - "imported": "Widget imported successfully.", - "aiPromptCopied": "AI prompt copied to clipboard", - "aiPromptDescription": "Copy a pre-built prompt to paste into any AI chatbot (ChatGPT, Claude, Gemini...). It includes the full widget schema and your API response so the AI can generate a ready-to-import JSON config for you.", - "aiPromptCopy": "Copy to clipboard", - "aiPromptNoResponse": "Tip: Run a test first to include your API response in the prompt for better results.", - "aiPromptCopyError": "Failed to copy prompt to clipboard. Your browser may not support this feature.", - "createError": "Failed to create widget. Check your API endpoint is reachable.", - "updateError": "Failed to update widget. Your changes were not saved.", - "importError": "Failed to import widget. Ensure the file is a valid custom widget JSON export.", - "exportError": "Failed to export widget.", - "duplicated": "Widget \"{name}\" duplicated.", - "duplicateError": "Failed to duplicate widget.", - "toggleError": "Failed to toggle widget status.", - "deleteError": "Failed to delete widget.", - "previewError": "Failed to fetch preview. Check the URL and try again.", - "executed": "Action executed successfully.", - "executeError": "Action failed: {error}" - }, - "table": { - "name": "Name", - "url": "URL", - "display": "Display" - }, - "widget": { - "disabled": "This widget is disabled" + "edit": "Edit" } }, "integration": { @@ -2828,193 +2648,6 @@ "internalServerError": "Failed to fetch Paperless-ngx data" } }, - "patchmon": { - "name": "PatchMon", - "description": "Overview of host patch status from PatchMon", - "title": "PatchMon Statistics", - "totalHosts": "Total Hosts", - "hostsNeedingUpdates": "Needs Updates", - "securityUpdates": "Security Updates", - "upToDateHosts": "Up-to-Date Hosts", - "hostsWithSecurityUpdates": "Hosts with Security Updates", - "recentUpdates24h": "Updates (24h)", - "totalOutdatedPackages": "Outdated Packages", - "totalRepos": "Repositories", - "osDistribution": "OS Distribution", - "compliance": "Patch Compliance", - "complianceRatio": "{upToDate} / {total}", - "lastUpdated": "Updated {time}", - "option": { - "showTotalHosts": { - "label": "Show total hosts", - "description": "Display the total number of monitored hosts" - }, - "showHostsNeedingUpdates": { - "label": "Show hosts needing updates", - "description": "Display hosts with at least one outdated package" - }, - "showSecurityUpdates": { - "label": "Show security updates", - "description": "Display the total number of security updates available" - }, - "showUpToDateHosts": { - "label": "Show up-to-date hosts", - "description": "Display hosts with zero outdated packages" - }, - "showHostsWithSecurityUpdates": { - "label": "Show hosts with security updates", - "description": "Display hosts requiring security patches" - }, - "showRecentUpdates24h": { - "label": "Show recent updates (24h)", - "description": "Display the number of updates applied in the last 24 hours" - }, - "showTotalOutdatedPackages": { - "label": "Show outdated packages", - "description": "Display the total number of outdated packages across all hosts" - }, - "showTotalRepos": { - "label": "Show repositories", - "description": "Display the number of active repositories being monitored" - }, - "enableThresholdColors": { - "label": "Enable threshold colours", - "description": "Colour stat values green, yellow, or red based on severity presets" - }, - "useCustomThresholds": { - "label": "Advanced thresholds", - "description": "Customise warning and critical thresholds per stat using absolute counts or percentages of total hosts" - }, - "thresholdMode": { - "option": { - "absolute": "Absolute count", - "percent": "Percent of total hosts" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "Needs updates threshold mode", - "description": "Compare the needs-updates count as an absolute value or percentage of total hosts" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "Needs updates warning threshold", - "description": "Enter yellow when the value reaches this threshold" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "Needs updates critical threshold", - "description": "Enter red when the value reaches this threshold" - }, - "securityUpdatesThresholdMode": { - "label": "Security updates threshold mode", - "description": "Compare the security-updates count as an absolute value or percentage of total hosts" - }, - "securityUpdatesWarningAt": { - "label": "Security updates warning threshold", - "description": "Enter yellow when the value reaches this threshold" - }, - "securityUpdatesCriticalAt": { - "label": "Security updates critical threshold", - "description": "Enter red when the value reaches this threshold" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "Hosts with security updates threshold mode", - "description": "Compare the host count as an absolute value or percentage of total hosts" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "Hosts with security updates warning threshold", - "description": "Enter yellow when the value reaches this threshold" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "Hosts with security updates critical threshold", - "description": "Enter red when the value reaches this threshold" - }, - "upToDateHostsThresholdMode": { - "label": "Up-to-date hosts threshold mode", - "description": "Compare the up-to-date host count as an absolute value or percentage of total hosts" - }, - "upToDateHostsWarningAt": { - "label": "Up-to-date hosts warning threshold", - "description": "Enter yellow when the value is at or above this threshold but below full coverage" - }, - "upToDateHostsCriticalAt": { - "label": "Up-to-date hosts critical threshold", - "description": "Enter red when the value falls below this threshold" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "Outdated packages threshold mode", - "description": "Compare the outdated-packages count as an absolute value or percentage of total hosts" - }, - "totalOutdatedPackagesWarningAt": { - "label": "Outdated packages warning threshold", - "description": "Enter yellow when the value reaches this threshold" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "Outdated packages critical threshold", - "description": "Enter red when the value reaches this threshold" - }, - "showOsDistribution": { - "label": "Show OS distribution", - "description": "Display a breakdown of monitored hosts by operating system" - }, - "osDistributionLimit": { - "label": "OS distribution limit", - "description": "Maximum number of operating systems to display", - "option": { - "3": "Top 3", - "5": "Top 5", - "10": "Top 10", - "all": "All" - } - }, - "showOsVersion": { - "label": "Show OS version", - "description": "Append the OS version to each distribution label when available" - }, - "showComplianceHero": { - "label": "Show compliance hero", - "description": "Display a compliance ring showing the percentage of up-to-date hosts" - }, - "osDisplayMode": { - "label": "OS display mode", - "description": "Choose how to display the operating system distribution", - "option": { - "bars": "Horizontal bars", - "donut": "Doughnut chart" - } - } - }, - "error": { - "internalServerError": "Failed to fetch PatchMon data" - } - }, - "bazarr": { - "name": "Bazarr", - "description": "Overview of missing subtitles and health status from your Bazarr instance", - "episodes": "Missing Episodes", - "movies": "Missing Movies", - "providers": "Provider Issues", - "status": "Health Issues", - "option": { - "showMissingEpisodes": { - "label": "Show missing episodes", - "description": "Display the number of episodes with missing subtitles" - }, - "showMissingMovies": { - "label": "Show missing movies", - "description": "Display the number of movies with missing subtitles" - }, - "showProviderIssues": { - "label": "Show provider issues", - "description": "Display the number of subtitle providers with issues" - }, - "showHealthIssues": { - "label": "Show health issues", - "description": "Display the number of Bazarr health issues" - } - }, - "error": { - "internalServerError": "Failed to fetch Bazarr data" - } - }, "immich-serverStats": { "name": "Immich Server Stats", "description": "Information about your Immich instance", @@ -3387,35 +3020,6 @@ } } }, - "mediaMissing": { - "name": "Missing & Queued Media", - "description": "Shows missing and queued movies and episodes from Radarr and Sonarr", - "option": { - "showMissing": { - "label": "Show missing items" - }, - "showQueued": { - "label": "Show queued items" - }, - "pageSize": { - "label": "Items per page" - } - }, - "tab": { - "missing": "Missing", - "queued": "Queued" - }, - "type": { - "movie": "Movie", - "episode": "Episode" - }, - "empty": { - "missing": "No missing items", - "queued": "No queued items", - "noTabsEnabled": "Enable at least one tab in the widget settings" - }, - "timeLeft": "Time left" - }, "rssFeed": { "name": "", "description": "", @@ -3744,40 +3348,6 @@ "internalServerError": "Failed to fetch uptime data" } }, - "traefik": { - "name": "Traefik", - "description": "Overview of Traefik routers, services, middlewares, and entry points", - "option": { - "showTcp": { - "label": "Show TCP" - }, - "showUdp": { - "label": "Show UDP" - }, - "showEntryPoints": { - "label": "Show entry points" - } - }, - "instances": "Traefik instances", - "versionUnknown": "Version unknown", - "summary": { - "routers": "Routers", - "entryPoints": "Entry points" - }, - "resource": { - "routers": "Routers", - "services": "Services", - "middlewares": "Middlewares" - }, - "status": { - "healthy": "Healthy", - "errors": "{count} errors", - "warnings": "{count} warnings" - }, - "error": { - "internalServerError": "Failed to fetch Traefik data" - } - }, "audioStats": { "name": "Audio stats", "description": "Library and playback statistics from Navidrome or Audiobookshelf", @@ -3901,26 +3471,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "Custom API", - "description": "Display data from any external API with custom configuration.", - "option": { - "definitionId": { - "label": "Definition ID" - }, - "refreshInterval": { - "label": "Refresh interval", - "description": "How often to refetch data from the API (in seconds)" - } - }, - "noDefinition": "No definition selected", - "definitionNotFound": "Widget definition not found. It may have been deleted.", - "noDisplayOutput": "No display output", - "executeConfirm": "Are you sure you want to execute this action?", - "executing": "Executing...", - "executeSuccess": "Action executed successfully", - "executeFailed": "Action failed. Check the widget configuration." - }, "beszelSystemTable": { "name": "Beszel Systems (Table)", "description": "Table view of all Beszel-monitored systems with sortable columns and status indicators", @@ -4171,6 +3721,256 @@ "subtitle": "Network traffic of docker containers" } } + }, + "patchmon": { + "name": "PatchMon", + "description": "Overview of host patch status from PatchMon", + "title": "PatchMon Statistics", + "totalHosts": "Total Hosts", + "hostsNeedingUpdates": "Needs Updates", + "securityUpdates": "Security Updates", + "upToDateHosts": "Up-to-Date Hosts", + "hostsWithSecurityUpdates": "Hosts with Security Updates", + "recentUpdates24h": "Updates (24h)", + "totalOutdatedPackages": "Outdated Packages", + "totalRepos": "Repositories", + "osDistribution": "OS Distribution", + "compliance": "Patch Compliance", + "complianceRatio": "{upToDate} / {total}", + "lastUpdated": "Updated {time}", + "option": { + "showTotalHosts": { + "label": "Show total hosts", + "description": "Display the total number of monitored hosts" + }, + "showHostsNeedingUpdates": { + "label": "Show hosts needing updates", + "description": "Display hosts with at least one outdated package" + }, + "showSecurityUpdates": { + "label": "Show security updates", + "description": "Display the total number of security updates available" + }, + "showUpToDateHosts": { + "label": "Show up-to-date hosts", + "description": "Display hosts with zero outdated packages" + }, + "showHostsWithSecurityUpdates": { + "label": "Show hosts with security updates", + "description": "Display hosts requiring security patches" + }, + "showRecentUpdates24h": { + "label": "Show recent updates (24h)", + "description": "Display the number of updates applied in the last 24 hours" + }, + "showTotalOutdatedPackages": { + "label": "Show outdated packages", + "description": "Display the total number of outdated packages across all hosts" + }, + "showTotalRepos": { + "label": "Show repositories", + "description": "Display the number of active repositories being monitored" + }, + "enableThresholdColors": { + "label": "Enable threshold colours", + "description": "Colour stat values green, yellow, or red based on severity presets" + }, + "useCustomThresholds": { + "label": "Advanced thresholds", + "description": "Customise warning and critical thresholds per stat using absolute counts or percentages of total hosts" + }, + "thresholdMode": { + "option": { + "absolute": "Absolute count", + "percent": "Percent of total hosts" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "Needs updates threshold mode", + "description": "Compare the needs-updates count as an absolute value or percentage of total hosts" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "Needs updates warning threshold", + "description": "Enter yellow when the value reaches this threshold" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "Needs updates critical threshold", + "description": "Enter red when the value reaches this threshold" + }, + "securityUpdatesThresholdMode": { + "label": "Security updates threshold mode", + "description": "Compare the security-updates count as an absolute value or percentage of total hosts" + }, + "securityUpdatesWarningAt": { + "label": "Security updates warning threshold", + "description": "Enter yellow when the value reaches this threshold" + }, + "securityUpdatesCriticalAt": { + "label": "Security updates critical threshold", + "description": "Enter red when the value reaches this threshold" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "Hosts with security updates threshold mode", + "description": "Compare the host count as an absolute value or percentage of total hosts" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "Hosts with security updates warning threshold", + "description": "Enter yellow when the value reaches this threshold" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "Hosts with security updates critical threshold", + "description": "Enter red when the value reaches this threshold" + }, + "upToDateHostsThresholdMode": { + "label": "Up-to-date hosts threshold mode", + "description": "Compare the up-to-date host count as an absolute value or percentage of total hosts" + }, + "upToDateHostsWarningAt": { + "label": "Up-to-date hosts warning threshold", + "description": "Enter yellow when the value is at or above this threshold but below full coverage" + }, + "upToDateHostsCriticalAt": { + "label": "Up-to-date hosts critical threshold", + "description": "Enter red when the value falls below this threshold" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "Outdated packages threshold mode", + "description": "Compare the outdated-packages count as an absolute value or percentage of total hosts" + }, + "totalOutdatedPackagesWarningAt": { + "label": "Outdated packages warning threshold", + "description": "Enter yellow when the value reaches this threshold" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "Outdated packages critical threshold", + "description": "Enter red when the value reaches this threshold" + }, + "showOsDistribution": { + "label": "Show OS distribution", + "description": "Display a breakdown of monitored hosts by operating system" + }, + "osDistributionLimit": { + "label": "OS distribution limit", + "description": "Maximum number of operating systems to display", + "option": { + "3": "Top 3", + "5": "Top 5", + "10": "Top 10", + "all": "All" + } + }, + "showOsVersion": { + "label": "Show OS version", + "description": "Append the OS version to each distribution label when available" + }, + "showComplianceHero": { + "label": "Show compliance hero", + "description": "Display a compliance ring showing the percentage of up-to-date hosts" + }, + "osDisplayMode": { + "label": "OS display mode", + "description": "Choose how to display the operating system distribution", + "option": { + "bars": "Horizontal bars", + "donut": "Doughnut chart" + } + } + }, + "error": { + "internalServerError": "Failed to fetch PatchMon data" + } + }, + "bazarr": { + "name": "Bazarr", + "description": "Overview of missing subtitles and health status from your Bazarr instance", + "episodes": "Missing Episodes", + "movies": "Missing Movies", + "providers": "Provider Issues", + "status": "Health Issues", + "option": { + "showMissingEpisodes": { + "label": "Show missing episodes", + "description": "Display the number of episodes with missing subtitles" + }, + "showMissingMovies": { + "label": "Show missing movies", + "description": "Display the number of movies with missing subtitles" + }, + "showProviderIssues": { + "label": "Show provider issues", + "description": "Display the number of subtitle providers with issues" + }, + "showHealthIssues": { + "label": "Show health issues", + "description": "Display the number of Bazarr health issues" + } + }, + "error": { + "internalServerError": "Failed to fetch Bazarr data" + } + }, + "mediaMissing": { + "name": "Missing & Queued Media", + "description": "Shows missing and queued movies and episodes from Radarr and Sonarr", + "option": { + "showMissing": { + "label": "Show missing items" + }, + "showQueued": { + "label": "Show queued items" + }, + "pageSize": { + "label": "Items per page" + } + }, + "tab": { + "missing": "Missing", + "queued": "Queued" + }, + "type": { + "movie": "Movie", + "episode": "Episode" + }, + "empty": { + "missing": "No missing items", + "queued": "No queued items", + "noTabsEnabled": "Enable at least one tab in the widget settings" + }, + "timeLeft": "Time left" + }, + "traefik": { + "name": "Traefik", + "description": "Overview of Traefik routers, services, middlewares, and entry points", + "option": { + "showTcp": { + "label": "Show TCP" + }, + "showUdp": { + "label": "Show UDP" + }, + "showEntryPoints": { + "label": "Show entry points" + } + }, + "instances": "Traefik instances", + "versionUnknown": "Version unknown", + "summary": { + "routers": "Routers", + "entryPoints": "Entry points" + }, + "resource": { + "routers": "Routers", + "services": "Services", + "middlewares": "Middlewares" + }, + "status": { + "healthy": "Healthy", + "errors": "{count} errors", + "warnings": "{count} warnings" + }, + "error": { + "internalServerError": "Failed to fetch Traefik data" + } } }, "widgetPreview": { @@ -4551,11 +4351,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "", "boards": "", "apps": "", "integrations": "", - "customWidgets": "Custom Widgets", "searchEngies": "", "medias": "", "users": { @@ -5694,6 +5494,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "", "boards": { "label": "" @@ -5728,18 +5531,6 @@ "label": "" } }, - "custom-widgets": { - "label": "Custom widgets", - "new": { - "label": "New" - }, - "edit": { - "label": "Edit", - "flow": { - "label": "Flow" - } - } - }, "users": { "label": "", "create": { diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 96665ae42..ae18d6853 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1642,6 +1642,10 @@ "name": "Traefik", "description": "Cloud-native reverse proxy and load balancer" }, + "wud": { + "name": "What's Up Docker", + "description": "Monitor which of your Docker containers have image updates available" + }, "paperlessNgx": { "name": "Paperless-ngx", "description": "Document management system for archiving and organizing scanned documents" @@ -2101,6 +2105,38 @@ } } }, + "wud": { + "name": "What's Up Docker", + "description": "Show how many watched containers have updates available.", + "title": "What's Up Docker", + "monitored": "Monitored", + "updatesAvailable": "{count, plural, one {# update available} other {# updates available}}", + "updateAvailable": "Update available", + "openReleaseNotes": "Open release notes", + "option": { + "showTitle": { + "label": "Show title" + }, + "showRing": { + "label": "Show update ring" + }, + "layout": { + "label": "Layout", + "option": { + "horizontal": { + "label": "Horizontal" + }, + "vertical": { + "label": "Vertical" + } + } + }, + "showUpdateList": { + "label": "Show container update list", + "description": "Lists each monitored container that has an image update available" + } + } + }, "dnsHoleSummary": { "name": "DNS Hole Summary", "description": "Displays the summary of your DNS Hole", @@ -2213,6 +2249,16 @@ "customDateFormat": { "label": "Custom date format", "description": "Use ISO 8601 to format date (this will override other options)" + }, + "showWeather": { + "label": "Show weather", + "description": "Display a small animated weather icon and temperature in the corner of the card" + }, + "weatherLocation": { + "label": "Weather location" + }, + "isWeatherFormatFahrenheit": { + "label": "Use Fahrenheit" } } }, @@ -2565,7 +2611,8 @@ "sunrise": "Sunrise", "sunset": "Sunset", "maxWindSpeed": "Max wind speed: {maxWindSpeed} {unit}", - "maxWindGusts": "Max wind gusts: {maxWindGusts} {unit}" + "maxWindGusts": "Max wind gusts: {maxWindGusts} {unit}", + "humidity": "Humidity: {humidity}%" }, "kind": { "clear": "Clear", @@ -2725,10 +2772,21 @@ }, "descendingDefaultSort": { "label": "Invert sorting" + }, + "columnOrder": { + "label": "Column order" + }, + "columnWidths": { + "label": "Column widths" } }, "error": { - "internalServerError": "Failed to fetch containers stats" + "internalServerError": "Failed to fetch containers stats", + "layoutSaveTitle": "Table layout not saved", + "layoutSaveMessage": "The Docker table layout could not be saved. Try moving or resizing the column again." + }, + "empty": { + "noContainers": "No containers found" } }, "coolify": { @@ -3022,8 +3080,20 @@ "showOnlyPlaying": { "label": "Show only currently playing", "description": "Disabling this will not work for plex" + }, + "showBitrate": { + "label": "Show bitrate", + "description": "Show the current playback bitrate next to the location" + }, + "showLocation": { + "label": "Show location", + "description": "Show whether the stream is on your LAN or WAN" } }, + "footer": { + "streams": "{count, plural, one {# active stream} other {# active streams}}", + "totalBitrate": "Total: {bitrate}" + }, "items": { "currentlyPlaying": "Currently playing", "user": "User", @@ -3031,6 +3101,9 @@ "id": "Id", "status": "Status", "directPlay": "Direct play", + "directStream": "Direct stream", + "transcodeVideo": "Transcoding video", + "transcodeAudio": "Transcoding audio", "transcoding": "Transcoding", "paused": "Paused", "remaining": "{minutes} min left", @@ -3314,10 +3387,11 @@ }, "immich-albumCarousel": { "name": "Immich Album", + "allPhotos": "All photos", "option": { "albumId": { "label": "Album", - "description": "Select the Immich album to show in the slideshow." + "description": "Select an Immich album or All photos. An empty selection also shows random photos from your full library." }, "rotationIntervalSeconds": { "label": "Interval in seconds", @@ -3332,9 +3406,8 @@ "description": "Show photos in a random order instead of always starting with the same album order." } }, - "description": "Slideshow of pictures in your Immich album", - "noAlbumSelected": "No album selected, edit widget and choose an album", - "noPhotos": "No photos in this album" + "description": "Slideshow of pictures from an Immich album or your full library", + "noPhotos": "No photos found" }, "downloads": { "name": "Download Client", @@ -3376,11 +3449,20 @@ "limitPerIntegration": { "label": "Limit items per integration", "description": "This will limit the number of items shown per integration, not globally" + }, + "columnOrder": { + "label": "Column order" + }, + "columnWidths": { + "label": "Column widths" } }, "errors": { "noColumns": "Select Columns in Items", - "noCommunications": "Can't load data from integration" + "noCommunications": "Can't load data from integration", + "noItems": "No downloads found", + "actionFailed": "Action failed", + "actionFailedMessage": "The action could not be completed. Please try again." }, "items": { "actions": { @@ -3403,7 +3485,8 @@ "detailsTitle": "Current index within client" }, "id": { - "columnTitle": "Id" + "columnTitle": "Id", + "detailsTitle": "Item ID" }, "integration": { "columnTitle": "Integration" @@ -3437,7 +3520,8 @@ }, "time": { "columnTitle": "Finish time", - "detailsTitle": "Time since/to completion" + "detailsTitle": "Time since/to completion", + "eta": "ETA" }, "type": { "columnTitle": "Type", @@ -3481,7 +3565,23 @@ } } }, - "globalRatio": "Global Ratio" + "globalRatio": "Global Ratio", + "contextMenu": { + "copyName": "Copy name", + "copyId": "Copy ID", + "clearFilters": "Clear filters" + }, + "footer": { + "filter": "Filter downloads" + }, + "stats": { + "show": "Show global stats", + "hide": "Hide global stats", + "overallProgress": "Overall queue progress", + "totalSize": "Total queue size", + "clients": "{count, plural, one {# client} other {# clients}}" + }, + "disconnected": "(disconnected)" }, "mediaReleases": { "name": "Media releases", @@ -4038,18 +4138,6 @@ "label": "Show songs", "description": "Show the total number of songs in your music library (Navidrome)" }, - "showNowPlaying": { - "label": "Show now playing", - "description": "Show tracks currently being played (Navidrome)" - }, - "showNowPlayingList": { - "label": "Show now playing list", - "description": "Show individual tracks instead of only the active stream count (Navidrome)" - }, - "maxNowPlayingItems": { - "label": "Max now playing items", - "description": "Maximum number of tracks to show in the now playing list (Navidrome)" - }, "showLibraryCount": { "label": "Show library count", "description": "Show the number of libraries on your instance (Audiobookshelf)" @@ -4083,8 +4171,6 @@ "podcasts": "Podcasts", "listeningTime": "Listening Time", "activeSessions": "Active Sessions", - "nowPlaying": "Now Playing", - "nowPlayingCount": "{count, plural, one {# stream} other {# streams}}", "error": { "internalServerError": "Failed to fetch audio stats data" } @@ -4261,11 +4347,19 @@ }, "showAgent": { "label": "Show agent version" + }, + "columnOrder": { + "label": "Column order" + }, + "columnWidths": { + "label": "Column widths" } }, "noRecords": "No systems found", "error": { - "internalServerError": "Unable to connect to Beszel. Check your integration settings." + "internalServerError": "Unable to connect to Beszel. Check your integration settings.", + "layoutSaveTitle": "Unable to save table layout", + "layoutSaveMessage": "Your column order or widths could not be saved. Please try again." }, "column": { "system": "System", @@ -5666,6 +5760,7 @@ }, "remove": { "label": "Remove", + "confirm": "Click again to remove permanently", "notification": { "success": { "title": "Containers removed", diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index b490502e0..283e6da38 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -688,211 +688,6 @@ "add": "" } }, - "customWidget": { - "page": { - "list": { - "title": "", - "noResults": "", - "loading": "" - }, - "create": { - "title": "", - "subtitle": "" - }, - "edit": { - "title": "" - } - }, - "action": { - "create": "", - "import": "", - "save": "", - "delete": "", - "deleteConfirm": "", - "export": "", - "addMapping": "", - "addColumn": "", - "edit": "", - "removeMapping": "", - "removeColumn": "", - "addItem": "", - "removeItem": "", - "addBar": "", - "duplicate": "", - "copyAiPrompt": "", - "enable": "", - "disable": "", - "menu": "" - }, - "field": { - "name": "", - "description": "", - "iconUrl": "", - "url": "", - "authType": "", - "headerName": "", - "method": "", - "requestBody": "", - "displayType": "", - "jsonPath": "", - "jsonPathHint": "", - "label": "", - "unit": "", - "mappings": "", - "tablePath": "", - "tablePathHint": "", - "columns": "", - "header": "", - "items": "", - "gridColumns": "", - "cardStyle": "", - "bars": "", - "valuePath": "", - "maxPath": "", - "showPercentage": "", - "barSize": "", - "goodValues": "", - "dotSize": "", - "valueSize": "", - "labelPosition": "", - "kvLayout": "", - "striped": "", - "compact": "", - "maxHeight": "", - "color": "", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "", - "exampleLabelShort": "", - "exampleHeader": "", - "exampleUnit": "", - "iconUrl": "", - "url": "", - "headerName": "", - "jsonPath": "", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "", - "md": "", - "lg": "", - "xl": "" - }, - "labelPositionOption": { - "above": "", - "below": "" - }, - "fieldset": { - "general": "", - "connection": "", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "", - "POST": "", - "PUT": "", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "", - "apiKeyQuery": "" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "", - "password": "", - "savedPlaceholder": "" - }, - "preview": { - "title": "", - "test": "", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "RSS-voogud", "description": "Jälgi ja kuva üht või enamat üldist RSS-, ATOM- või JSON-voogu", @@ -3744,40 +3323,6 @@ "internalServerError": "" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "", "description": "", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "", "description": "", @@ -4171,6 +3696,256 @@ "subtitle": "" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Kodu", "boards": "Töölauad", "apps": "Rakendused", "integrations": "Integratsioonid", - "customWidgets": "", "searchEngies": "Otsingumootorid", "medias": "Meedia", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "", "boards": { "label": "" @@ -5728,18 +5506,6 @@ "label": "" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "", "create": { diff --git a/packages/translation/src/lang/fi.json b/packages/translation/src/lang/fi.json index 5db39e6f4..6c8fe0f95 100644 --- a/packages/translation/src/lang/fi.json +++ b/packages/translation/src/lang/fi.json @@ -688,211 +688,6 @@ "add": "Lisää sovellus" } }, - "customWidget": { - "page": { - "list": { - "title": "Mukautetut widgetit", - "noResults": "Ei vielä mukautettuja widgettejä. Luo ensimmäinen!", - "loading": "Ladataan..." - }, - "create": { - "title": "Luo mukautettu widget", - "subtitle": "Määritä API-URL, todennus ja miten vastaustiedot näytetään." - }, - "edit": { - "title": "Muokkaa mukautettua widgettiä" - } - }, - "action": { - "create": "Luo", - "import": "Tuo", - "save": "Tallenna", - "delete": "Poista mukautettu widget", - "deleteConfirm": "Haluatko varmasti poistaa \"{name}\"? Tätä toimintoa ei voi peruuttaa.", - "export": "Vie", - "addMapping": "Lisää kartoitus", - "addColumn": "Lisää sarake", - "edit": "Muokkaa", - "removeMapping": "Poista kartoitus", - "removeColumn": "Poista sarake", - "addItem": "Lisää kohde", - "removeItem": "Poista kohde", - "addBar": "Lisää palkki", - "duplicate": "Monista", - "copyAiPrompt": "Kopioi AI-kehoteprompt", - "enable": "Ota käyttöön", - "disable": "Poista käytöstä", - "menu": "Toiminnot" - }, - "field": { - "name": "Nimi", - "description": "Kuvaus", - "iconUrl": "Kuvakkeen URL-osoite", - "url": "URL", - "authType": "Tunnistautumistyyppi", - "headerName": "Otsikko/kyselyparametrin nimi", - "method": "Menetelmä", - "requestBody": "Pyynnön runko", - "displayType": "Näyttötyyppi", - "jsonPath": "JSON-polku", - "jsonPathHint": "Käytä JSONPath-syntaksia arvojen poimimiseen, esim. $.data.temperature tai $.items[0].name", - "label": "Tunniste", - "unit": "Yksikkö", - "mappings": "Kartoitukset", - "tablePath": "Taulukon JSON-polku", - "tablePathHint": "Polku vastauksen taulukkoon, esim. $.data.items", - "columns": "Sarakkeet", - "header": "Otsikko", - "items": "Kohteet", - "gridColumns": "Ruudukon sarakkeet", - "cardStyle": "Kortin tyyli", - "bars": "Palkit", - "valuePath": "Arvon JSON-polku", - "maxPath": "Maksimiarvon JSON-polku", - "showPercentage": "Näytä prosenttiosuus", - "barSize": "Palkin koko", - "goodValues": "Hyvät arvot (pilkuin eroteltuina)", - "dotSize": "Pisteen koko", - "valueSize": "Arvon koko", - "labelPosition": "Tunnisteen sijainti", - "kvLayout": "Asettelu", - "striped": "Raidalliset rivit", - "compact": "Tiivis tila", - "maxHeight": "Maksimikorkeus (px)", - "color": "Väri", - "buttonLabel": "Painikkeen teksti", - "buttonColor": "Painikkeen väri", - "confirmText": "Vahvistusteksti", - "confirmTextHint": "Jos asetettu, vahvistusvalintaikkuna tulee esiin ennen pyynnön suorittamista", - "successMessage": "Onnistumisviesti", - "successMessageHint": "Viesti, joka näytetään onnistuneen suorituksen jälkeen", - "enabled": "Käytössä", - "template": { - "label": "JSX-mallipohja", - "description": "Mantine JSX -mallipohja. Käytä vastauskenttiä datan sidonnoilla (esim. data.name). Käytä vain sallittuja komponentteja. Kielletyt: constructor, __proto__, eval, Function, window, document." - } - }, - "placeholder": { - "exampleLabel": "CPU-lämpötila", - "exampleLabelShort": "CPU-lämpö", - "exampleHeader": "Nimi", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.nimi", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "online, true, up", - "color": "sininen" - }, - "cardStyleOption": { - "filled": "Täytetty", - "outline": "Ääriviiva", - "subtle": "Hienovarainen" - }, - "layoutOption": { - "list": "Luettelo", - "grid": "Ruudukko" - }, - "sizeOption": { - "sm": "Pieni", - "md": "Keskikokoinen", - "lg": "Suuri", - "xl": "Erittäin suuri" - }, - "labelPositionOption": { - "above": "Yläpuolella", - "below": "Alapuolella" - }, - "fieldset": { - "general": "Yleiset", - "connection": "API-yhteys", - "display": "Näyttöasetukset" - }, - "displayTypeDescription": { - "singleValue": "Näytä yksi poimittu arvo tunnisteella ja yksiköllä", - "keyValue": "Näytä useita tunnisteellisia arvoja vierekkäin", - "table": "Näytä tietorivit taulukkomuodossa", - "statGrid": "Värilliset tilastokortit ruudukossa – kuten Pi-Hole- tai Speedtest-widgetit", - "progressBars": "Edistymispalkit, jotka näyttävät käyttöasteen tai valmistumisen – levylle, muistille, kiintiöille", - "statusIndicator": "Värilliset tilapisteet, jotka näyttävät online/offline- tai terveydentilan", - "countGrid": "Tiiviit numero + tunniste -laskurit tiukassa ruudukossa", - "raw": "Muotoiltu JSON-tuloste vianetsintään", - "actionButton": "Painike, joka laukaisee pyynnön napsautettaessa", - "customJsx": "Mukautettu JSX-asettelu käyttäen sallittuja Mantine-komponentteja täydellä API-tietojen sidonnalla" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "Ei mitään", - "bearer": "Bearer-tunniste", - "basic": "Basic-todennus", - "apiKeyHeader": "API-avain (otsikko)", - "apiKeyQuery": "API-avain (kysely)" - }, - "displayType": { - "singleValue": "Yksittäinen arvo", - "keyValue": "Avain-arvo", - "table": "Taulukko", - "statGrid": "Tilastoruudukko", - "progressBars": "Edistymispalkit", - "statusIndicator": "Tilan ilmaisin", - "countGrid": "Laskuriruudukko", - "raw": "Raaka JSON", - "actionButton": "Toimintopainike", - "customJsx": "Mukautettu JSX" - }, - "secret": { - "apiKey": "API-avain / token", - "username": "Käyttäjätunnus", - "password": "Salasana", - "savedPlaceholder": "••••••• (tallennettu, jätä tyhjäksi säilyttääksesi)" - }, - "preview": { - "title": "Esikatselu", - "test": "Testaa", - "hint": "Napsauta Testaa nähdäksesi API-vastauksen nykyisillä asetuksillasi.", - "rawResponse": "Raaka JSON-vastaus" - }, - "notification": { - "created": "Widget \"{name}\" luotiin onnistuneesti.", - "updated": "Widget \"{name}\" päivitettiin onnistuneesti.", - "deleted": "Widget \"{name}\" poistettiin.", - "imported": "Widget tuotiin onnistuneesti.", - "aiPromptCopied": "AI-kehoteprompt kopioitu leikepöydälle", - "aiPromptDescription": "Kopioi valmis kehoteprompt liitettäväksi mihin tahansa AI-chatbottiin (ChatGPT, Claude, Gemini...). Se sisältää täyden widget-skeeman ja API-vastauksesi, jotta AI voi luoda sinulle tuotavissa olevan JSON-asetuksen.", - "aiPromptCopy": "Kopioi leikepöydälle", - "aiPromptNoResponse": "Vinkki: Suorita testi ensin sisällyttääksesi API-vastauksesi kehotepromptiin parempien tulosten saamiseksi.", - "aiPromptCopyError": "Kehotepromptin kopiointi leikepöydälle epäonnistui. Selaimesi ei ehkä tue tätä ominaisuutta.", - "createError": "Widgetin luonti epäonnistui. Tarkista, että API-päätepisteesi on tavoitettavissa.", - "updateError": "Widgetin päivitys epäonnistui. Muutoksiasi ei tallennettu.", - "importError": "Widgetin tuonti epäonnistui. Varmista, että tiedosto on kelvollinen mukautetun widgetin JSON-vienti.", - "exportError": "Widgetin vienti epäonnistui.", - "duplicated": "Widget \"{name}\" kopioitiin.", - "duplicateError": "Widgetin kopiointi epäonnistui.", - "toggleError": "Widgetin tilan vaihto epäonnistui.", - "deleteError": "Widgetin poisto epäonnistui.", - "previewError": "Esikatselun nouto epäonnistui. Tarkista URL ja yritä uudelleen.", - "executed": "Toiminto suoritettu onnistuneesti.", - "executeError": "Toiminto epäonnistui: {error}" - }, - "table": { - "name": "Nimi", - "url": "URL", - "display": "Näyttö" - }, - "widget": { - "disabled": "Tämä widget on poistettu käytöstä" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "Paperless-ngx-tietojen haku epäonnistui" } }, - "patchmon": { - "name": "PatchMon", - "description": "Yleiskatsaus isäntien päivitystilanteesta PatchMonista", - "title": "PatchMon-tilastot", - "totalHosts": "Isännät yhteensä", - "hostsNeedingUpdates": "Päivitystä tarvitsevat", - "securityUpdates": "Tietoturvapäivitykset", - "upToDateHosts": "Ajan tasalla olevat isännät", - "hostsWithSecurityUpdates": "Isännät, joilla on tietoturvapäivityksiä", - "recentUpdates24h": "Päivitykset (24 h)", - "totalOutdatedPackages": "Vanhentuneet paketit", - "totalRepos": "Pakettivarastot", - "osDistribution": "Käyttöjärjestelmien jakauma", - "compliance": "Päivityskattavuus", - "complianceRatio": "{upToDate} / {total}", - "lastUpdated": "Päivitetty {time}", - "option": { - "showTotalHosts": { - "label": "Näytä isännät yhteensä", - "description": "Näytä valvottujen isäntien kokonaismäärä" - }, - "showHostsNeedingUpdates": { - "label": "Näytä päivitystä tarvitsevat isännät", - "description": "Näytä isännät, joilla on vähintään yksi vanhentunut paketti" - }, - "showSecurityUpdates": { - "label": "Näytä tietoturvapäivitykset", - "description": "Näytä saatavilla olevien tietoturvapäivitysten kokonaismäärä" - }, - "showUpToDateHosts": { - "label": "Näytä ajan tasalla olevat isännät", - "description": "Näytä isännät, joissa ei ole vanhentuneita paketteja" - }, - "showHostsWithSecurityUpdates": { - "label": "Näytä isännät, joilla on tietoturvapäivityksiä", - "description": "Näytä isännät, jotka tarvitsevat tietoturvakorjauksia" - }, - "showRecentUpdates24h": { - "label": "Näytä viimeaikaiset päivitykset (24 h)", - "description": "Näytä viimeisen 24 tunnin aikana asennettujen päivitysten määrä" - }, - "showTotalOutdatedPackages": { - "label": "Näytä vanhentuneet paketit", - "description": "Näytä vanhentuneiden pakettien kokonaismäärä kaikissa isännissä" - }, - "showTotalRepos": { - "label": "Näytä repositoriot", - "description": "Näytä valvottavien aktiivisten repositorioiden määrä" - }, - "enableThresholdColors": { - "label": "Ota käyttöön kynnysarvovärit", - "description": "Väritä tilastoarvot vihreäksi, keltaiseksi tai punaiseksi vakavuusesiasetusten perusteella" - }, - "useCustomThresholds": { - "label": "Edistyneet kynnysarvot", - "description": "Mukauta varoitus- ja kriittiset kynnysarvot tilastoittain käyttäen absoluuttisia määriä tai prosenttiosuutta isäntien kokonaismäärästä" - }, - "thresholdMode": { - "option": { - "absolute": "Absoluuttinen määrä", - "percent": "Prosenttia isäntien kokonaismäärästä" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "Päivityksiä tarvitsevien kynnysarvotila", - "description": "Vertaa päivitystarpeiden määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "Päivitystarpeiden varoituskynnysarvo", - "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "Päivitystarpeiden kriittinen kynnysarvo", - "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "securityUpdatesThresholdMode": { - "label": "Tietoturvapäivitysten kynnysarvotila", - "description": "Vertaa tietoturvapäivitysten määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" - }, - "securityUpdatesWarningAt": { - "label": "Tietoturvapäivitysten varoituskynnysarvo", - "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "securityUpdatesCriticalAt": { - "label": "Tietoturvapäivitysten kriittinen kynnysarvo", - "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "Tietoturvapäivityksiä sisältävien isäntien kynnysarvotila", - "description": "Vertaa isäntien määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "Tietoturvapäivityksiä sisältävien isäntien varoituskynnysarvo", - "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "Tietoturvapäivityksiä sisältävien isäntien kriittinen kynnysarvo", - "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "upToDateHostsThresholdMode": { - "label": "Ajan tasalla olevien isäntien kynnysarvotila", - "description": "Vertaa ajan tasalla olevien isäntien määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" - }, - "upToDateHostsWarningAt": { - "label": "Ajan tasalla olevien isäntien varoituskynnysarvo", - "description": "Muuta keltaiseksi, kun arvo on vähintään tämä kynnysarvo, mutta alle täyden kattavuuden" - }, - "upToDateHostsCriticalAt": { - "label": "Ajan tasalla olevien isäntien kriittinen kynnysarvo", - "description": "Muuta punaiseksi, kun arvo laskee tämän kynnysarvon alle" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "Vanhentuneiden pakettien kynnysarvotila", - "description": "Vertaa vanhentuneiden pakettien määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" - }, - "totalOutdatedPackagesWarningAt": { - "label": "Vanhentuneiden pakettien varoituskynnysarvo", - "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "Vanhentuneiden pakettien kriittinen kynnysarvo", - "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" - }, - "showOsDistribution": { - "label": "Näytä käyttöjärjestelmäjakauma", - "description": "Näytä erittely valvotuista isännistä käyttöjärjestelmittäin" - }, - "osDistributionLimit": { - "label": "Käyttöjärjestelmäjakauman rajoitus", - "description": "Näytettävien käyttöjärjestelmien enimmäismäärä", - "option": { - "3": "3 parasta", - "5": "5 parasta", - "10": "10 parasta", - "all": "Kaikki" - } - }, - "showOsVersion": { - "label": "Näytä käyttöjärjestelmän versio", - "description": "Liitä käyttöjärjestelmän versio jokaiseen jakauman nimikkeeseen, kun se on saatavilla" - }, - "showComplianceHero": { - "label": "Näytä compliance-hero", - "description": "Näytä vaatimustenmukaisuusrengas, joka näyttää ajan tasalla olevien isäntien prosenttiosuuden" - }, - "osDisplayMode": { - "label": "Käyttöjärjestelmän näyttötila", - "description": "Valitse, miten käyttöjärjestelmän jakelu näytetään", - "option": { - "bars": "Vaakapalkit", - "donut": "Donitsikaavio" - } - } - }, - "error": { - "internalServerError": "PatchMon-tietojen nouto epäonnistui" - } - }, - "bazarr": { - "name": "Bazarr", - "description": "Yleiskatsaus puuttuvista tekstityksistä ja terveystilasta Bazarr-instanssistasi", - "episodes": "Puuttuvat jaksot", - "movies": "Puuttuvat elokuvat", - "providers": "Palveluntarjoajan ongelmat", - "status": "Terveysongelmat", - "option": { - "showMissingEpisodes": { - "label": "Näytä puuttuvat jaksot", - "description": "Näytä niiden jaksojen määrä, joista puuttuu tekstitys" - }, - "showMissingMovies": { - "label": "Näytä puuttuvat elokuvat", - "description": "Näytä niiden elokuvien määrä, joista puuttuu tekstitykset" - }, - "showProviderIssues": { - "label": "Näytä tarjoajien ongelmat", - "description": "Näytä ongelmallisten tekstitystarjoajien määrä" - }, - "showHealthIssues": { - "label": "Näytä kunto-ongelmat", - "description": "Näytä Bazarrin kunto-ongelmien määrä" - } - }, - "error": { - "internalServerError": "Bazarrin tietojen nouto epäonnistui" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "Puuttuva & jonossa oleva media", - "description": "Näyttää puuttuvat ja jonossa olevat elokuvat ja jaksot Radarr:sta ja Sonarr:sta", - "option": { - "showMissing": { - "label": "Näytä puuttuvat kohteet" - }, - "showQueued": { - "label": "Näytä jonossa olevat kohteet" - }, - "pageSize": { - "label": "Kohteita per sivu" - } - }, - "tab": { - "missing": "Puuttuvat", - "queued": "Jonossa" - }, - "type": { - "movie": "Elokuva", - "episode": "Jakso" - }, - "empty": { - "missing": "Ei puuttuvia kohteita", - "queued": "Ei jonossa olevia kohteita", - "noTabsEnabled": "Ota käyttöön vähintään yksi välilehti widgetin asetuksissa" - }, - "timeLeft": "Jäljellä oleva aika" - }, "rssFeed": { "name": "", "description": "", @@ -3744,40 +3323,6 @@ "internalServerError": "Käytettävyystietojen haku epäonnistui" } }, - "traefik": { - "name": "Traefik", - "description": "Yleiskatsaus Traefikin reitittimistä, palveluista, middlewareista ja sisääntulopisteistä", - "option": { - "showTcp": { - "label": "Näytä TCP" - }, - "showUdp": { - "label": "Näytä UDP" - }, - "showEntryPoints": { - "label": "Näytä sisääntulopisteet" - } - }, - "instances": "Traefik-instanssit", - "versionUnknown": "Versio tuntematon", - "summary": { - "routers": "Reitittimet", - "entryPoints": "Sisääntulopisteet" - }, - "resource": { - "routers": "Reitittimet", - "services": "Palvelut", - "middlewares": "Middlewaret" - }, - "status": { - "healthy": "Terve", - "errors": "{count} virhettä", - "warnings": "{count} varoitusta" - }, - "error": { - "internalServerError": "Traefikin tietojen nouto epäonnistui" - } - }, "audioStats": { "name": "Äänitilastot", "description": "Kirjasto- ja toistotilastot Navidromesta tai Audiobookshelfistä", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "Mukautettu API", - "description": "Näytä dataa mistä tahansa ulkoisesta API:sta mukautetuilla asetuksilla.", - "option": { - "definitionId": { - "label": "Määritelmän tunnus" - }, - "refreshInterval": { - "label": "Päivitysväli", - "description": "Kuinka usein data haetaan uudelleen API:sta (sekunteina)" - } - }, - "noDefinition": "Määritelmää ei valittu", - "definitionNotFound": "Widget-määritelmää ei löydy. Se on saatettu poistaa.", - "noDisplayOutput": "Ei näyttötulostetta", - "executeConfirm": "Haluatko varmasti suorittaa tämän toiminnon?", - "executing": "Suoritetaan...", - "executeSuccess": "Toiminto suoritettu onnistuneesti", - "executeFailed": "Toiminto epäonnistui. Tarkista widgetin asetukset." - }, "beszelSystemTable": { "name": "Beszel-järjestelmät (taulukko)", "description": "Taulukkonäkymä kaikista Beszel-valvotuista järjestelmistä, lajiteltavilla sarakkeilla ja tilaindikaattoreilla", @@ -4171,6 +3696,256 @@ "subtitle": "Docker-konttien verkkoliikenne" } } + }, + "patchmon": { + "name": "PatchMon", + "description": "Yleiskatsaus isäntien päivitystilanteesta PatchMonista", + "title": "PatchMon-tilastot", + "totalHosts": "Isännät yhteensä", + "hostsNeedingUpdates": "Päivitystä tarvitsevat", + "securityUpdates": "Tietoturvapäivitykset", + "upToDateHosts": "Ajan tasalla olevat isännät", + "hostsWithSecurityUpdates": "Isännät, joilla on tietoturvapäivityksiä", + "recentUpdates24h": "Päivitykset (24 h)", + "totalOutdatedPackages": "Vanhentuneet paketit", + "totalRepos": "Pakettivarastot", + "osDistribution": "Käyttöjärjestelmien jakauma", + "compliance": "Päivityskattavuus", + "complianceRatio": "{upToDate} / {total}", + "lastUpdated": "Päivitetty {time}", + "option": { + "showTotalHosts": { + "label": "Näytä isännät yhteensä", + "description": "Näytä valvottujen isäntien kokonaismäärä" + }, + "showHostsNeedingUpdates": { + "label": "Näytä päivitystä tarvitsevat isännät", + "description": "Näytä isännät, joilla on vähintään yksi vanhentunut paketti" + }, + "showSecurityUpdates": { + "label": "Näytä tietoturvapäivitykset", + "description": "Näytä saatavilla olevien tietoturvapäivitysten kokonaismäärä" + }, + "showUpToDateHosts": { + "label": "Näytä ajan tasalla olevat isännät", + "description": "Näytä isännät, joissa ei ole vanhentuneita paketteja" + }, + "showHostsWithSecurityUpdates": { + "label": "Näytä isännät, joilla on tietoturvapäivityksiä", + "description": "Näytä isännät, jotka tarvitsevat tietoturvakorjauksia" + }, + "showRecentUpdates24h": { + "label": "Näytä viimeaikaiset päivitykset (24 h)", + "description": "Näytä viimeisen 24 tunnin aikana asennettujen päivitysten määrä" + }, + "showTotalOutdatedPackages": { + "label": "Näytä vanhentuneet paketit", + "description": "Näytä vanhentuneiden pakettien kokonaismäärä kaikissa isännissä" + }, + "showTotalRepos": { + "label": "Näytä repositoriot", + "description": "Näytä valvottavien aktiivisten repositorioiden määrä" + }, + "enableThresholdColors": { + "label": "Ota käyttöön kynnysarvovärit", + "description": "Väritä tilastoarvot vihreäksi, keltaiseksi tai punaiseksi vakavuusesiasetusten perusteella" + }, + "useCustomThresholds": { + "label": "Edistyneet kynnysarvot", + "description": "Mukauta varoitus- ja kriittiset kynnysarvot tilastoittain käyttäen absoluuttisia määriä tai prosenttiosuutta isäntien kokonaismäärästä" + }, + "thresholdMode": { + "option": { + "absolute": "Absoluuttinen määrä", + "percent": "Prosenttia isäntien kokonaismäärästä" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "Päivityksiä tarvitsevien kynnysarvotila", + "description": "Vertaa päivitystarpeiden määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "Päivitystarpeiden varoituskynnysarvo", + "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "Päivitystarpeiden kriittinen kynnysarvo", + "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "securityUpdatesThresholdMode": { + "label": "Tietoturvapäivitysten kynnysarvotila", + "description": "Vertaa tietoturvapäivitysten määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" + }, + "securityUpdatesWarningAt": { + "label": "Tietoturvapäivitysten varoituskynnysarvo", + "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "securityUpdatesCriticalAt": { + "label": "Tietoturvapäivitysten kriittinen kynnysarvo", + "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "Tietoturvapäivityksiä sisältävien isäntien kynnysarvotila", + "description": "Vertaa isäntien määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "Tietoturvapäivityksiä sisältävien isäntien varoituskynnysarvo", + "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "Tietoturvapäivityksiä sisältävien isäntien kriittinen kynnysarvo", + "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "upToDateHostsThresholdMode": { + "label": "Ajan tasalla olevien isäntien kynnysarvotila", + "description": "Vertaa ajan tasalla olevien isäntien määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" + }, + "upToDateHostsWarningAt": { + "label": "Ajan tasalla olevien isäntien varoituskynnysarvo", + "description": "Muuta keltaiseksi, kun arvo on vähintään tämä kynnysarvo, mutta alle täyden kattavuuden" + }, + "upToDateHostsCriticalAt": { + "label": "Ajan tasalla olevien isäntien kriittinen kynnysarvo", + "description": "Muuta punaiseksi, kun arvo laskee tämän kynnysarvon alle" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "Vanhentuneiden pakettien kynnysarvotila", + "description": "Vertaa vanhentuneiden pakettien määrää absoluuttisena arvona tai prosenttiosuutena isäntien kokonaismäärästä" + }, + "totalOutdatedPackagesWarningAt": { + "label": "Vanhentuneiden pakettien varoituskynnysarvo", + "description": "Muuta keltaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "Vanhentuneiden pakettien kriittinen kynnysarvo", + "description": "Muuta punaiseksi, kun arvo saavuttaa tämän kynnysarvon" + }, + "showOsDistribution": { + "label": "Näytä käyttöjärjestelmäjakauma", + "description": "Näytä erittely valvotuista isännistä käyttöjärjestelmittäin" + }, + "osDistributionLimit": { + "label": "Käyttöjärjestelmäjakauman rajoitus", + "description": "Näytettävien käyttöjärjestelmien enimmäismäärä", + "option": { + "3": "3 parasta", + "5": "5 parasta", + "10": "10 parasta", + "all": "Kaikki" + } + }, + "showOsVersion": { + "label": "Näytä käyttöjärjestelmän versio", + "description": "Liitä käyttöjärjestelmän versio jokaiseen jakauman nimikkeeseen, kun se on saatavilla" + }, + "showComplianceHero": { + "label": "Näytä compliance-hero", + "description": "Näytä vaatimustenmukaisuusrengas, joka näyttää ajan tasalla olevien isäntien prosenttiosuuden" + }, + "osDisplayMode": { + "label": "Käyttöjärjestelmän näyttötila", + "description": "Valitse, miten käyttöjärjestelmän jakelu näytetään", + "option": { + "bars": "Vaakapalkit", + "donut": "Donitsikaavio" + } + } + }, + "error": { + "internalServerError": "PatchMon-tietojen nouto epäonnistui" + } + }, + "bazarr": { + "name": "Bazarr", + "description": "Yleiskatsaus puuttuvista tekstityksistä ja terveystilasta Bazarr-instanssistasi", + "episodes": "Puuttuvat jaksot", + "movies": "Puuttuvat elokuvat", + "providers": "Palveluntarjoajan ongelmat", + "status": "Terveysongelmat", + "option": { + "showMissingEpisodes": { + "label": "Näytä puuttuvat jaksot", + "description": "Näytä niiden jaksojen määrä, joista puuttuu tekstitys" + }, + "showMissingMovies": { + "label": "Näytä puuttuvat elokuvat", + "description": "Näytä niiden elokuvien määrä, joista puuttuu tekstitykset" + }, + "showProviderIssues": { + "label": "Näytä tarjoajien ongelmat", + "description": "Näytä ongelmallisten tekstitystarjoajien määrä" + }, + "showHealthIssues": { + "label": "Näytä kunto-ongelmat", + "description": "Näytä Bazarrin kunto-ongelmien määrä" + } + }, + "error": { + "internalServerError": "Bazarrin tietojen nouto epäonnistui" + } + }, + "mediaMissing": { + "name": "Puuttuva & jonossa oleva media", + "description": "Näyttää puuttuvat ja jonossa olevat elokuvat ja jaksot Radarr:sta ja Sonarr:sta", + "option": { + "showMissing": { + "label": "Näytä puuttuvat kohteet" + }, + "showQueued": { + "label": "Näytä jonossa olevat kohteet" + }, + "pageSize": { + "label": "Kohteita per sivu" + } + }, + "tab": { + "missing": "Puuttuvat", + "queued": "Jonossa" + }, + "type": { + "movie": "Elokuva", + "episode": "Jakso" + }, + "empty": { + "missing": "Ei puuttuvia kohteita", + "queued": "Ei jonossa olevia kohteita", + "noTabsEnabled": "Ota käyttöön vähintään yksi välilehti widgetin asetuksissa" + }, + "timeLeft": "Jäljellä oleva aika" + }, + "traefik": { + "name": "Traefik", + "description": "Yleiskatsaus Traefikin reitittimistä, palveluista, middlewareista ja sisääntulopisteistä", + "option": { + "showTcp": { + "label": "Näytä TCP" + }, + "showUdp": { + "label": "Näytä UDP" + }, + "showEntryPoints": { + "label": "Näytä sisääntulopisteet" + } + }, + "instances": "Traefik-instanssit", + "versionUnknown": "Versio tuntematon", + "summary": { + "routers": "Reitittimet", + "entryPoints": "Sisääntulopisteet" + }, + "resource": { + "routers": "Reitittimet", + "services": "Palvelut", + "middlewares": "Middlewaret" + }, + "status": { + "healthy": "Terve", + "errors": "{count} virhettä", + "warnings": "{count} varoitusta" + }, + "error": { + "internalServerError": "Traefikin tietojen nouto epäonnistui" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Aloitus", "boards": "Paneelit", "apps": "Sovellukset", "integrations": "Integraatiot", - "customWidgets": "Mukautetut widgetit", "searchEngies": "Hakukoneet", "medias": "Mediatiedostot", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "", "boards": { "label": "Paneelit" @@ -5728,18 +5506,6 @@ "label": "Muokkaa" } }, - "custom-widgets": { - "label": "Mukautetut widgetit", - "new": { - "label": "Uusi" - }, - "edit": { - "label": "Muokkaa", - "flow": { - "label": "Kulku" - } - } - }, "users": { "label": "Käyttäjät", "create": { diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 9c73c03c2..69595c004 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -710,14 +710,7 @@ "delete": "Supprimer le widget personnalisé", "deleteConfirm": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cette action est irréversible.", "export": "Exporter", - "addMapping": "Ajouter une correspondance", - "addColumn": "Ajouter une colonne", "edit": "Modifier", - "removeMapping": "Supprimer la correspondance", - "removeColumn": "Supprimer la colonne", - "addItem": "Ajouter un élément", - "removeItem": "Supprimer l'élément", - "addBar": "Ajouter une barre", "duplicate": "Dupliquer", "copyAiPrompt": "Copier le prompt IA", "enable": "Activer", @@ -727,150 +720,13 @@ "field": { "name": "Nom", "description": "Description", - "iconUrl": "URL de l'icône", - "url": "URL", - "authType": "Type d’authentification", - "headerName": "Nom du paramètre de l'entête/requête", - "method": "Méthode", - "requestBody": "Corps de la requête", - "displayType": "Type d'affichage", - "jsonPath": "Chemin JSON", - "jsonPathHint": "Utiliser la syntaxe JSONPath pour extraire des valeurs, par exemple $.data.temperature ou $.items[0].name", - "label": "Étiquette", - "unit": "Unité", - "mappings": "Correspondances", - "tablePath": "", - "tablePathHint": "", - "columns": "Colonnes", - "header": "En-tête", - "items": "Objets", - "gridColumns": "Nombre de colonnes", - "cardStyle": "Style des cartes", - "bars": "Barres", - "valuePath": "", - "maxPath": "", - "showPercentage": "Afficher le pourcentage", - "barSize": "Taille de la barre", - "goodValues": "Bonnes valeurs (séparées par des virgules)", - "dotSize": "Taille des points", - "valueSize": "Taille", - "labelPosition": "Position du libellé", - "kvLayout": "", - "striped": "", - "compact": "Mode Compact", - "maxHeight": "", - "color": "Couleur", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "Texte de confirmation", - "confirmTextHint": "", - "successMessage": "Message de réussite", - "successMessageHint": "", - "enabled": "Activé", - "template": { - "label": "Template JSX", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "Température du CPU", - "exampleLabelShort": "Température du CPU", - "exampleHeader": "Nom", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "", - "jsonPath": "$.data.value", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "Petit", - "md": "Moyen", - "lg": "Grand", - "xl": "Très grand" - }, - "labelPositionOption": { - "above": "Au-dessus", - "below": "En dessous" - }, - "fieldset": { - "general": "Général", - "connection": "Connexion API", - "display": "Configuration de l'affichage" - }, - "displayTypeDescription": { - "singleValue": "Afficher une valeur extraite avec une étiquette et une unité", - "keyValue": "Afficher plusieurs valeurs étiquetées côte à côte", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "Points d'état colorés montrant en ligne/hors ligne ou l'état de santé", - "countGrid": "", - "raw": "", - "actionButton": "Un bouton qui déclenche une requête lorsqu'elle est cliquée", - "customJsx": "" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "Aucun", - "bearer": "Jeton Bearer", - "basic": "Authentification basique", - "apiKeyHeader": "Clé API (En-tête)", - "apiKeyQuery": "Clé API (requête)" - }, - "displayType": { - "singleValue": "Valeur unique", - "keyValue": "Clé-Valeur", - "table": "Tableau", - "statGrid": "Grille de statistiques", - "progressBars": "Barre de progression", - "statusIndicator": "Indicateur de statut", - "countGrid": "Grille de valeurs", - "raw": "Raw JSON", - "actionButton": "Bouton d'action", - "customJsx": "JSX personnalisé" - }, - "secret": { - "apiKey": "", - "username": "Nom d'utilisateur", - "password": "Mot de passe", - "savedPlaceholder": "" - }, - "preview": { - "title": "Aperçu", - "test": "Tester", - "hint": "Cliquez sur Test pour prévisualiser la réponse API avec votre configuration actuelle.", - "rawResponse": "" + "iconUrl": "URL de l'icône" }, "notification": { "created": "Widget \"{name}\" créé avec succès.", "updated": "Widget \"{name}\" mis à jour avec succès.", "deleted": "Widget \"{name}\" supprimé.", "imported": "Widget importé avec succès.", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "Copier dans le presse-papiers", - "aiPromptNoResponse": "", "aiPromptCopyError": "Échec de la copie du prompt dans le presse-papiers. Votre navigateur peut ne pas prendre en charge cette fonctionnalité.", "createError": "Impossible de créer le widget. Vérifiez que votre point de terminaison API est joignable.", "updateError": "Impossible de mettre à jour le widget. Vos modifications n'ont pas été enregistrées.", @@ -883,14 +739,6 @@ "previewError": "Impossible de récupérer l'aperçu. Vérifiez l'URL et réessayez.", "executed": "Action exécutée avec succès.", "executeError": "Échec de l'action: {error}" - }, - "table": { - "name": "Nom", - "url": "URL", - "display": "Affichage" - }, - "widget": { - "disabled": "Ce widget est désactivé" } }, "integration": { @@ -2828,193 +2676,6 @@ "internalServerError": "" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "Statistiques du serveur Immich", "description": "Informations sur votre instance Immich", @@ -3387,35 +3048,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "Flux RSS", "description": "Surveiller et afficher un ou plusieurs flux RSS, ATOM ou JSON génériques", @@ -3744,40 +3376,6 @@ "internalServerError": "Impossible de récupérer les données de disponibilité" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "Statistiques audio", "description": "", @@ -3901,26 +3499,6 @@ "unhealthy": "Dysfonctionnement" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Systèmes Beszel (Tableau)", "description": "Vue en tableau de tous les systèmes surveillés par Beszel avec colonnes triables et indicateurs d'état", @@ -4171,6 +3749,256 @@ "subtitle": "" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4379,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Accueil", "boards": "Tableaux de bord", "apps": "Applications", "integrations": "Intégrations", - "customWidgets": "Widgets personnalisés", "searchEngies": "Moteurs de recherche", "medias": "Médias", "users": { @@ -5694,6 +5522,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Gérer", "boards": { "label": "Tableaux de bord" @@ -5728,18 +5559,6 @@ "label": "Modifier" } }, - "custom-widgets": { - "label": "Widgets personnalisés", - "new": { - "label": "Nouveau" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Utilisateurs", "create": { diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 536865656..62ea41156 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -688,211 +688,6 @@ "add": "" } }, - "customWidget": { - "page": { - "list": { - "title": "", - "noResults": "", - "loading": "" - }, - "create": { - "title": "", - "subtitle": "" - }, - "edit": { - "title": "" - } - }, - "action": { - "create": "", - "import": "", - "save": "", - "delete": "", - "deleteConfirm": "", - "export": "", - "addMapping": "", - "addColumn": "", - "edit": "", - "removeMapping": "", - "removeColumn": "", - "addItem": "", - "removeItem": "", - "addBar": "", - "duplicate": "", - "copyAiPrompt": "", - "enable": "", - "disable": "", - "menu": "" - }, - "field": { - "name": "", - "description": "", - "iconUrl": "", - "url": "", - "authType": "", - "headerName": "", - "method": "", - "requestBody": "", - "displayType": "", - "jsonPath": "", - "jsonPathHint": "", - "label": "", - "unit": "", - "mappings": "", - "tablePath": "", - "tablePathHint": "", - "columns": "", - "header": "", - "items": "", - "gridColumns": "", - "cardStyle": "", - "bars": "", - "valuePath": "", - "maxPath": "", - "showPercentage": "", - "barSize": "", - "goodValues": "", - "dotSize": "", - "valueSize": "", - "labelPosition": "", - "kvLayout": "", - "striped": "", - "compact": "", - "maxHeight": "", - "color": "", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "", - "exampleLabelShort": "", - "exampleHeader": "", - "exampleUnit": "", - "iconUrl": "", - "url": "", - "headerName": "", - "jsonPath": "", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "", - "md": "", - "lg": "", - "xl": "" - }, - "labelPositionOption": { - "above": "", - "below": "" - }, - "fieldset": { - "general": "", - "connection": "", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "", - "POST": "", - "PUT": "", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "", - "apiKeyQuery": "" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "", - "password": "", - "savedPlaceholder": "" - }, - "preview": { - "title": "", - "test": "", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "RSS kanali", "description": "Pratite i prikazujte jedan ili više općih RSS, ATOM ili JSON kanala", @@ -3744,40 +3323,6 @@ "internalServerError": "" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "", "description": "", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Beszel sustavi (tablica)", "description": "Tablični prikaz svih Beszel nadziranih sustava s sortabilnim stupcima i indikatorima statusa", @@ -4171,6 +3696,256 @@ "subtitle": "" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Dom", "boards": "Daske", "apps": "aplikacije", "integrations": "Integracije", - "customWidgets": "", "searchEngies": "Tražilice", "medias": "Mediji", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Upravljati", "boards": { "label": "Daske" @@ -5728,18 +5506,6 @@ "label": "Uredi" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Korisnici", "create": { diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 979b24bce..fd5a5cc48 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -688,211 +688,6 @@ "add": "Alkalmazás hozzáadása" } }, - "customWidget": { - "page": { - "list": { - "title": "Egyéni widgetek", - "noResults": "Még nincsenek egyéni widgetek. Hozd létre az elsőt!", - "loading": "Töltés..." - }, - "create": { - "title": "Egyéni widget létrehozása", - "subtitle": "Adj meg egy API URL-t, hitelesítést, és hogy hogyan jelenjenek meg a válaszadatok." - }, - "edit": { - "title": "Egyéni widget szerkesztése" - } - }, - "action": { - "create": "Létrehozás", - "import": "Importálás", - "save": "Mentés", - "delete": "Egyéni widget törlése", - "deleteConfirm": "Biztosan törölni szeretnéd \"{name}\" widgetet? Ez a művelet nem vonható vissza.", - "export": "Exportálás", - "addMapping": "Leképezés hozzáadása", - "addColumn": "Oszlop hozzáadása", - "edit": "Szerkesztés", - "removeMapping": "Leképezés eltávolítása", - "removeColumn": "Oszlop eltávolítása", - "addItem": "Elem hozzáadása", - "removeItem": "Elem eltávolítása", - "addBar": "Sáv hozzáadása", - "duplicate": "Duplikálás", - "copyAiPrompt": "AI prompt másolása", - "enable": "Engedélyezés", - "disable": "Letiltás", - "menu": "Műveletek" - }, - "field": { - "name": "Név", - "description": "Leírás", - "iconUrl": "Ikon URL", - "url": "URL", - "authType": "Hitelesítés típusa", - "headerName": "Fejléc/lekérdezési paraméter neve", - "method": "Metódus", - "requestBody": "Kérelem törzse", - "displayType": "Megjelenítés típusa", - "jsonPath": "JSON elérési út", - "jsonPathHint": "Használd a JSONPath szintaxist az értékek kinyeréséhez, pl. $.data.temperature vagy $.items[0].name", - "label": "Címke", - "unit": "Mértékegység", - "mappings": "Leképezések", - "tablePath": "Tömb JSON elérési útja", - "tablePathHint": "A válaszban lévő tömb elérési útja, pl. $.data.items", - "columns": "Oszlopok", - "header": "Fejléc", - "items": "Elemek", - "gridColumns": "Rács oszlopok", - "cardStyle": "Kártya stílus", - "bars": "Sávok", - "valuePath": "Érték JSON elérési út", - "maxPath": "Maximális érték JSON elérési út", - "showPercentage": "Százalék megjelenítése", - "barSize": "Sáv mérete", - "goodValues": "Jó értékek (vesszővel elválasztva)", - "dotSize": "Pont mérete", - "valueSize": "Érték mérete", - "labelPosition": "Címke pozíciója", - "kvLayout": "Elrendezés", - "striped": "Csíkos sorok", - "compact": "Kompakt mód", - "maxHeight": "Maximális magasság (px)", - "color": "Szín", - "buttonLabel": "Gomb felirata", - "buttonColor": "Gomb színe", - "confirmText": "Megerősítő szöveg", - "confirmTextHint": "Ha be van állítva, egy megerősítő ablak jelenik meg a kérés végrehajtása előtt", - "successMessage": "Sikerüzenet", - "successMessageHint": "A sikeres végrehajtás után megjelenő üzenet", - "enabled": "Engedélyezve", - "template": { - "label": "JSX sablon", - "description": "Mantine JSX sablon. Az API válasz mezőit adatkötéseken keresztül éred el (pl. data.name). Csak engedélyezett komponenseket használj. Tilos: constructor, __proto__, eval, Function, window, document." - } - }, - "placeholder": { - "exampleLabel": "CPU hőmérséklet", - "exampleLabelShort": "CPU hőm", - "exampleHeader": "Név", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.name", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "online, true, up", - "color": "kék" - }, - "cardStyleOption": { - "filled": "Kitöltött", - "outline": "Körvonal", - "subtle": "Halvány" - }, - "layoutOption": { - "list": "Lista", - "grid": "Rács" - }, - "sizeOption": { - "sm": "Kicsi", - "md": "Közepes", - "lg": "Nagy", - "xl": "Extra nagy" - }, - "labelPositionOption": { - "above": "Felette", - "below": "Alatta" - }, - "fieldset": { - "general": "Általános", - "connection": "API kapcsolat", - "display": "Megjelenítési konfiguráció" - }, - "displayTypeDescription": { - "singleValue": "Egy kinyert érték megjelenítése címkével és mértékegységgel", - "keyValue": "Több címkézett érték megjelenítése egymás mellett", - "table": "Adatsorok megjelenítése táblázatos formában", - "statGrid": "Színezett statisztikai kártyák rácsban – mint a Pi-Hole vagy Speedtest widgetek", - "progressBars": "Folyamatjelző sávok használat vagy készültség mutatására – lemez, memória, kvóta", - "statusIndicator": "Színezett állapotpontok, amelyek online/offline vagy egészségügyi állapotot mutatnak", - "countGrid": "Kompakt szám + címke számlálók sűrű rácsban", - "raw": "Szépen formázott JSON kimenet hibakereséshez", - "actionButton": "Egy gomb, ami kérés végrehajtását váltja ki kattintásra", - "customJsx": "Egyéni JSX elrendezés engedélyezett Mantine komponensekkel és teljes API adatkötéssel" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "Nincs", - "bearer": "Bearer token", - "basic": "Basic Auth", - "apiKeyHeader": "API-kulcs (fejléc)", - "apiKeyQuery": "API-kulcs (lekérdezés)" - }, - "displayType": { - "singleValue": "Egyedi érték", - "keyValue": "Kulcs-érték", - "table": "Táblázat", - "statGrid": "Statisztikai rács", - "progressBars": "Folyamatjelző sávok", - "statusIndicator": "Állapotjelző", - "countGrid": "Számláló rács", - "raw": "Nyers JSON", - "actionButton": "Műveleti gomb", - "customJsx": "Egyéni JSX" - }, - "secret": { - "apiKey": "API kulcs / token", - "username": "Felhasználónév", - "password": "Jelszó", - "savedPlaceholder": "••••••• (mentve, üresen hagyva megtartja)" - }, - "preview": { - "title": "Előnézet", - "test": "Teszt", - "hint": "Kattints a Teszt gombra az API válasz előnézetéhez a jelenlegi konfigurációval.", - "rawResponse": "Nyers JSON válasz" - }, - "notification": { - "created": "\"{name}\" widget sikeresen létrehozva.", - "updated": "\"{name}\" widget sikeresen frissítve.", - "deleted": "\"{name}\" widget törölve.", - "imported": "", - "aiPromptCopied": "AI prompt a vágólapra másolva", - "aiPromptDescription": "Másolj egy előre elkészített promptot bármelyik AI chatbotba (ChatGPT, Claude, Gemini...). Tartalmazza a teljes widget sémát és az API választ, így az AI generálhat egy importálásra kész JSON konfigurációt.", - "aiPromptCopy": "Másolás a vágólapra", - "aiPromptNoResponse": "Tipp: Futtass egy tesztet először, hogy az API válasz is bekerüljön a promptba a jobb eredmények érdekében.", - "aiPromptCopyError": "A prompt vágólapra másolása sikertelen. Előfordulhat, hogy a böngésződ nem támogatja ezt a funkciót.", - "createError": "A widget létrehozása sikertelen. Ellenőrizd, hogy az API végpont elérhető-e.", - "updateError": "A widget frissítése sikertelen. A módosításaid nem lettek mentve.", - "importError": "A widget importálása sikertelen. Ellenőrizd, hogy a fájl érvényes egyéni widget JSON export-e.", - "exportError": "A widget exportálása sikertelen.", - "duplicated": "\"{name}\" widget duplikálva.", - "duplicateError": "A widget duplikálása sikertelen.", - "toggleError": "A widget állapotának átkapcsolása sikertelen.", - "deleteError": "A widget törlése sikertelen.", - "previewError": "Az előnézet lekérése sikertelen. Ellenőrizd az URL-t és próbáld újra.", - "executed": "A művelet sikeresen végrehajtva.", - "executeError": "A művelet sikertelen: {error}" - }, - "table": { - "name": "Név", - "url": "URL", - "display": "Megjelenítés" - }, - "widget": { - "disabled": "Ez a widget le van tiltva" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "A Paperless-ngx adatok letöltése nem sikerült" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "Immich szerver statisztikák", "description": "Információk az Immich-példányodról", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "RSS feedek", "description": "Egy vagy több általános RSS-, ATOM- vagy JSON-hírcsatorna figyelése és megjelenítése", @@ -3744,40 +3323,6 @@ "internalServerError": "Az üzemidőadatok letöltése nem sikerült" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "Audió statisztikák", "description": "Könyvtári és lejátszási statisztikák Navidrome-ból vagy Audiobookshelf-ből", @@ -3901,26 +3446,6 @@ "unhealthy": "Hibás" } }, - "customApi": { - "name": "Egyéni API", - "description": "Adatok megjelenítése bármely külső API-ból egyedi konfigurációval.", - "option": { - "definitionId": { - "label": "Definíció azonosító" - }, - "refreshInterval": { - "label": "Frissítési időköz", - "description": "Milyen gyakran kérje le újra az adatokat az API-tól (másodpercben)" - } - }, - "noDefinition": "Nincs definíció kiválasztva", - "definitionNotFound": "A widget definíció nem található. Lehet, hogy törölték.", - "noDisplayOutput": "Nincs megjelenítési kimenet", - "executeConfirm": "Biztosan végre szeretnéd hajtani ezt a műveletet?", - "executing": "Végrehajtás...", - "executeSuccess": "A művelet sikeresen végrehajtva", - "executeFailed": "A művelet sikertelen. Ellenőrizd a widget konfigurációját." - }, "beszelSystemTable": { "name": "Beszel Rendszerek (Táblázat)", "description": "Az összes Beszel által figyelt rendszer táblázatos nézete rendezhető oszlopokkal és állapotjelzőkkel", @@ -4171,6 +3696,256 @@ "subtitle": "A Docker konténerek hálózati forgalma" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Nyitólap", "boards": "Táblák", "apps": "Alkalmazások", "integrations": "Integrációk", - "customWidgets": "", "searchEngies": "Keresőmotorok", "medias": "Média", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Kezelés", "boards": { "label": "Táblák" @@ -5728,18 +5506,6 @@ "label": "Szerkesztés" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Felhasználók", "create": { diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 9941463ff..08c1da46f 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -710,14 +710,7 @@ "delete": "사용자 지정 위젯 삭제", "deleteConfirm": "\"{name}\"을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "export": "내보내기", - "addMapping": "매핑 추가", - "addColumn": "열 추가", "edit": "편집", - "removeMapping": "매핑 제거", - "removeColumn": "열 제거", - "addItem": "항목 추가", - "removeItem": "항목 제거", - "addBar": "바 추가", "duplicate": "복사", "copyAiPrompt": "AI 프롬프트 복사", "enable": "활성화", @@ -727,140 +720,7 @@ "field": { "name": "이름", "description": "설명", - "iconUrl": "아이콘 URL", - "url": "URL", - "authType": "인증 유형", - "headerName": "헤더/쿼리 파라미터 이름", - "method": "메서드", - "requestBody": "요청 본문", - "displayType": "표시 유형", - "jsonPath": "JSON 경로", - "jsonPathHint": "JSONPath 문법으로 값을 추출하십시오. 예: $.data.temperature 또는 $.items[0].name", - "label": "레이블", - "unit": "단위", - "mappings": "매핑", - "tablePath": "JSON 경로 배열", - "tablePathHint": "응답에서 배열이 위치한 경로입니다. 예: $.data.items", - "columns": "열", - "header": "헤더", - "items": "항목", - "gridColumns": "그리드 열 개수", - "cardStyle": "카드 스타일", - "bars": "바", - "valuePath": "JSON 경로 값", - "maxPath": "JSON 경로 최댓값", - "showPercentage": "백분율 표시", - "barSize": "바 크기", - "goodValues": "정상 값(쉼표로 구분)", - "dotSize": "점 크기", - "valueSize": "값 크기", - "labelPosition": "레이블 위치", - "kvLayout": "레이아웃", - "striped": "줄무늬 행", - "compact": "컴팩트 모드", - "maxHeight": "최대 높이 (px)", - "color": "색상", - "buttonLabel": "버튼 명칭", - "buttonColor": "버튼 색상", - "confirmText": "확인 텍스트", - "confirmTextHint": "설정하면 요청을 실행하기 전에 확인 대화상자가 표시됩니다", - "successMessage": "성공 메세지", - "successMessageHint": "실행 성공 후 표시되는 메세지", - "enabled": "활성화됨", - "template": { - "label": "JSX 템플릿", - "description": "Mantine JSX 템플릿. 데이터 바인딩(예: data.name)을 통해 API 응답 필드에 액세스합니다. 허용된 구성 요소만 사용하십시오. 금지: constructor, __proto__, eval, Function, window, document." - } - }, - "placeholder": { - "exampleLabel": "CPU 온도", - "exampleLabelShort": "CPU 온도", - "exampleHeader": "이름", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.name", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "online, true, up", - "color": "파랑" - }, - "cardStyleOption": { - "filled": "채워짐", - "outline": "외곽선", - "subtle": "미묘한" - }, - "layoutOption": { - "list": "리스트", - "grid": "그리드" - }, - "sizeOption": { - "sm": "작음", - "md": "중간", - "lg": "큼", - "xl": "매우 큼" - }, - "labelPositionOption": { - "above": "위", - "below": "아래" - }, - "fieldset": { - "general": "일반", - "connection": "API 연결", - "display": "표시 설정" - }, - "displayTypeDescription": { - "singleValue": "레이블과 단위가 있는 하나의 추출된 값을 표시합니다", - "keyValue": "여러 레이블이 지정된 값을 나란히 표시합니다", - "table": "테이블 형식으로 데이터 행을 표시합니다", - "statGrid": "그리드의 색상이 지정된 통계 카드 — Pi-Hole 또는 Speedtest 위젯과 유사", - "progressBars": "사용량 또는 완료율을 표시하는 진행률 표시줄 — 디스크, 메모리, 할당량용", - "statusIndicator": "온라인/오프라인 또는 상태를 표시하는 색상 상태 점", - "countGrid": "좁은 그리드에 작은 숫자 + 레이블 카운터", - "raw": "디버깅을 위한 예쁘게 출력된 JSON", - "actionButton": "클릭 시 요청을 트리거하는 버튼", - "customJsx": "전체 API 데이터 바인딩과 함께 허용된 Mantine 구성 요소를 사용하는 사용자 정의 JSX 레이아웃" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "없음", - "bearer": "Bearer 토큰", - "basic": "기본 인증", - "apiKeyHeader": "API 키(헤더)", - "apiKeyQuery": "API 키(쿼리)" - }, - "displayType": { - "singleValue": "단일 값", - "keyValue": "키-값", - "table": "테이블", - "statGrid": "스택 그리드", - "progressBars": "진행 바", - "statusIndicator": "상태 인디케이터", - "countGrid": "카운트 그리드", - "raw": "원시 JSON", - "actionButton": "동작 버튼", - "customJsx": "사용자 지정 JSX" - }, - "secret": { - "apiKey": "API 키/토큰", - "username": "사용자명", - "password": "비밀번호", - "savedPlaceholder": "••••••• (저장됨, 유지하려면 공백)" - }, - "preview": { - "title": "미리보기", - "test": "테스트", - "hint": "현재 설정으로 API 응답을 미리 보려면 테스트를 클릭하십시오.", - "rawResponse": "원본 JSON 응답" + "iconUrl": "아이콘 URL" }, "notification": { "created": "\"{name}\" 위젯 생성 완료.", @@ -868,9 +728,6 @@ "deleted": "\"{name}\" 위젯 삭제 완료.", "imported": "위젯 가져오기 완료.", "aiPromptCopied": "AI 프롬프트 클립보드에 복사됨", - "aiPromptDescription": "사전 제작된 프롬프트를 복사하여 AI 챗봇(ChatGPT, Claude, Gemini 등)에 붙여넣습니다. 전체 위젯 스키마 및 API 응답이 포함되어 있으므로 즉시 가져올 수 있는 JSON 설정을 AI가 생성할 수 있습니다.", - "aiPromptCopy": "클립보드에 복사", - "aiPromptNoResponse": "팁: 더 나은 결과를 얻기 위해 먼저 테스트로 프롬프트에 API 응답을 포함하십시오.", "aiPromptCopyError": "프롬프트 클립보드 복사 실패. 브라우저에서 이 기능을 지원하지 않을 수도 있습니다.", "createError": "위젯 생성 실패. API 엔드포인트에 도달할 수 있는지 확인해 보십시오.", "updateError": "위젯 업데이트 실패. 변경 사항이 저장되지 않습니다.", @@ -883,14 +740,6 @@ "previewError": "미리보기 가져오기 실패. URL을 확인한 후 다시 시도해 주십시오.", "executed": "작업 실행 완료.", "executeError": "작업 실패: {error}" - }, - "table": { - "name": "이름", - "url": "URL", - "display": "표시" - }, - "widget": { - "disabled": "위젯 비활성화됨" } }, "integration": { @@ -2828,193 +2677,6 @@ "internalServerError": "Paperless-ngx 데이터를 가져오지 못함" } }, - "patchmon": { - "name": "PatchMon", - "description": "PatchMon의 호스트 패치 상태 개요", - "title": "PatchMon 통계", - "totalHosts": "총 호스트", - "hostsNeedingUpdates": "업데이트 필요", - "securityUpdates": "보안 업데이트", - "upToDateHosts": "최신 상태의 호스트", - "hostsWithSecurityUpdates": "보안 업데이트가 필요한 호스트", - "recentUpdates24h": "업데이트 (24시간)", - "totalOutdatedPackages": "오래된 패키지", - "totalRepos": "저장소", - "osDistribution": "OS 배포판", - "compliance": "패치 준수", - "complianceRatio": "{upToDate} / {total}", - "lastUpdated": "{time} 업데이트됨", - "option": { - "showTotalHosts": { - "label": "총 호스트 표시", - "description": "모니터링되는 총 호스트 수 표시" - }, - "showHostsNeedingUpdates": { - "label": "업데이트가 필요한 호스트 표시", - "description": "하나 이상의 오래된 패키지가 있는 호스트 표시" - }, - "showSecurityUpdates": { - "label": "보안 업데이트 표시", - "description": "사용 가능한 총 보안 업데이트 수 표시" - }, - "showUpToDateHosts": { - "label": "최신 호스트 표시", - "description": "오래된 패키지가 없는 호스트 표시" - }, - "showHostsWithSecurityUpdates": { - "label": "보안 업데이트가 필요한 호스트 표시", - "description": "보안 패치가 필요한 호스트 표시" - }, - "showRecentUpdates24h": { - "label": "최근 업데이트 (24시간) 표시", - "description": "지난 24시간 동안 적용된 업데이트 수 표시" - }, - "showTotalOutdatedPackages": { - "label": "오래된 패키지 표시", - "description": "모든 호스트에서의 총 오래된 패키지 수 표시" - }, - "showTotalRepos": { - "label": "저장소 표시", - "description": "모니터링되는 활성 저장소 수 표시" - }, - "enableThresholdColors": { - "label": "임계값 색상 활성화", - "description": "심각도 사전 설정에 따라 통계 값을 녹색, 노란색 또는 빨간색으로 표시" - }, - "useCustomThresholds": { - "label": "고급 임계값", - "description": "절대 개수 또는 전체 호스트 대비 백분율을 사용하여 통계별 경고 및 위험 임계값 사용자 정의" - }, - "thresholdMode": { - "option": { - "absolute": "절대 개수", - "percent": "전체 호스트 대비 백분율" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "업데이트 필요 임계값 모드", - "description": "업데이트 필요 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "업데이트 필요 경고 임계값", - "description": "이 임계값에 도달하면 노란색으로 표시" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "업데이트 필요 위험 임계값", - "description": "이 임계값에 도달하면 빨간색으로 표시" - }, - "securityUpdatesThresholdMode": { - "label": "보안 업데이트 임계값 모드", - "description": "보안 업데이트 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" - }, - "securityUpdatesWarningAt": { - "label": "보안 업데이트 경고 임계값", - "description": "이 임계값에 도달하면 노란색으로 표시" - }, - "securityUpdatesCriticalAt": { - "label": "보안 업데이트 위험 임계값", - "description": "이 임계값에 도달하면 빨간색으로 표시" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "보안 업데이트가 있는 호스트 임계값 모드", - "description": "호스트 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "보안 업데이트가 있는 호스트 경고 임계값", - "description": "이 임계값에 도달하면 노란색으로 표시" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "보안 업데이트가 있는 호스트 위험 임계값", - "description": "이 임계값에 도달하면 빨간색으로 표시" - }, - "upToDateHostsThresholdMode": { - "label": "최신 호스트 임계값 모드", - "description": "최신 호스트 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" - }, - "upToDateHostsWarningAt": { - "label": "최신 호스트 경고 임계값", - "description": "값이 이 임계값 이상이지만 전체 적용 범위 미만일 때 노란색으로 표시" - }, - "upToDateHostsCriticalAt": { - "label": "최신 호스트 위험 임계값", - "description": "값이 이 임계값 미만으로 떨어지면 빨간색으로 표시" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "오래된 패키지 임계값 모드", - "description": "오래된 패키지 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" - }, - "totalOutdatedPackagesWarningAt": { - "label": "오래된 패키지 경고 임계값", - "description": "이 임계값에 도달하면 노란색으로 표시" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "오래된 패키지 위험 임계값", - "description": "이 임계값에 도달하면 빨간색으로 표시" - }, - "showOsDistribution": { - "label": "OS 배포판 표시", - "description": "운영 체제별로 모니터링되는 호스트 분석 표시" - }, - "osDistributionLimit": { - "label": "OS 배포판 제한", - "description": "표시할 최대 운영 체제 수", - "option": { - "3": "상위 3개", - "5": "상위 5개", - "10": "상위 10개", - "all": "모두" - } - }, - "showOsVersion": { - "label": "OS 버전 표시", - "description": "사용 가능한 경우 각 배포판 레이블에 OS 버전 추가" - }, - "showComplianceHero": { - "label": "준수 상태 표시", - "description": "최신 호스트의 백분율을 표시하는 준수 링 표시" - }, - "osDisplayMode": { - "label": "OS 표시 모드", - "description": "운영 체제 배포판 표시 방법 선택", - "option": { - "bars": "가로 막대", - "donut": "도넛 차트" - } - } - }, - "error": { - "internalServerError": "PatchMon 데이터를 가져오지 못했습니다" - } - }, - "bazarr": { - "name": "Bazarr", - "description": "Bazarr 인스턴스의 누락된 자막 및 상태 개요", - "episodes": "누락된 에피소드", - "movies": "누락된 영화", - "providers": "제공자 문제", - "status": "상태 문제", - "option": { - "showMissingEpisodes": { - "label": "누락된 에피소드 표시", - "description": "누락된 자막이 있는 에피소드 수 표시" - }, - "showMissingMovies": { - "label": "누락된 영화 표시", - "description": "누락된 자막이 있는 영화 수 표시" - }, - "showProviderIssues": { - "label": "제공자 문제 표시", - "description": "문제가 있는 자막 제공자 수 표시" - }, - "showHealthIssues": { - "label": "상태 문제 표시", - "description": "Bazarr 상태 문제 수 표시" - } - }, - "error": { - "internalServerError": "Bazarr 데이터를 가져오지 못했습니다" - } - }, "immich-serverStats": { "name": "Immich 서버 정보", "description": "Immich 인스턴스에 대한 정보", @@ -3387,35 +3049,6 @@ } } }, - "mediaMissing": { - "name": "누락 및 대기 중인 미디어", - "description": "Radarr 및 Sonarr의 누락 및 대기 중인 영화와 에피소드 표시", - "option": { - "showMissing": { - "label": "누락된 항목 표시" - }, - "showQueued": { - "label": "대기 중인 항목 표시" - }, - "pageSize": { - "label": "페이지당 항목 수" - } - }, - "tab": { - "missing": "누락", - "queued": "대기 중" - }, - "type": { - "movie": "영화", - "episode": "에피소드" - }, - "empty": { - "missing": "누락된 항목 없음", - "queued": "대기 중인 항목 없음", - "noTabsEnabled": "위젯 설정에서 최소한 하나의 탭을 활성화하세요" - }, - "timeLeft": "남은 시간" - }, "rssFeed": { "name": "RSS 피드", "description": "하나 이상의 일반 RSS, ATOM 또는 JSON 피드를 모니터링하고 표시합니다", @@ -3744,40 +3377,6 @@ "internalServerError": "가동 시간 데이터를 가져오지 못함" } }, - "traefik": { - "name": "Traefik", - "description": "Traefik 라우터, 서비스, 미들웨어 및 진입점 개요", - "option": { - "showTcp": { - "label": "TCP 표시" - }, - "showUdp": { - "label": "UDP 표시" - }, - "showEntryPoints": { - "label": "진입점 표시" - } - }, - "instances": "Traefik 인스턴스", - "versionUnknown": "버전 알 수 없음", - "summary": { - "routers": "라우터", - "entryPoints": "진입점" - }, - "resource": { - "routers": "라우터", - "services": "서비스", - "middlewares": "미들웨어" - }, - "status": { - "healthy": "정상", - "errors": "{count}개 오류", - "warnings": "{count}개 경고" - }, - "error": { - "internalServerError": "Traefik 데이터를 가져오지 못함" - } - }, "audioStats": { "name": "오디오 정보", "description": "Navidrome 또는 Audiobookshelf의 라이브러리 및 재생 정보", @@ -3901,26 +3500,6 @@ "unhealthy": "비정상" } }, - "customApi": { - "name": "사용자 지정 API", - "description": "사용자 지정 설정으로 외부 API 데이터를 표시합니다.", - "option": { - "definitionId": { - "label": "정의 ID" - }, - "refreshInterval": { - "label": "새로고침 간격", - "description": "API에서 데이터를 다시 가져오는 빈도 (초 단위)" - } - }, - "noDefinition": "선택한 정의 없음", - "definitionNotFound": "위젯 정의를 찾을 수 없습니다. 삭제되었을 수 있습니다.", - "noDisplayOutput": "디스플레이 출력 없음", - "executeConfirm": "이 작업을 삭제하시겠습니까?", - "executing": "실행 중...", - "executeSuccess": "작업 실행 완료", - "executeFailed": "작업 실패. 위젯 설정을 확인하십시오." - }, "beszelSystemTable": { "name": "Beszel 시스템 (표)", "description": "정렬 가능한 열과 상태 표시기가 있는 모든 Beszel 모니터링 시스템의 표 보기", @@ -4171,6 +3750,256 @@ "subtitle": "Docker 컨테이너의 네트워크 트래픽" } } + }, + "patchmon": { + "name": "PatchMon", + "description": "PatchMon의 호스트 패치 상태 개요", + "title": "PatchMon 통계", + "totalHosts": "총 호스트", + "hostsNeedingUpdates": "업데이트 필요", + "securityUpdates": "보안 업데이트", + "upToDateHosts": "최신 상태의 호스트", + "hostsWithSecurityUpdates": "보안 업데이트가 필요한 호스트", + "recentUpdates24h": "업데이트 (24시간)", + "totalOutdatedPackages": "오래된 패키지", + "totalRepos": "저장소", + "osDistribution": "OS 배포판", + "compliance": "패치 준수", + "complianceRatio": "{upToDate} / {total}", + "lastUpdated": "{time} 업데이트됨", + "option": { + "showTotalHosts": { + "label": "총 호스트 표시", + "description": "모니터링되는 총 호스트 수 표시" + }, + "showHostsNeedingUpdates": { + "label": "업데이트가 필요한 호스트 표시", + "description": "하나 이상의 오래된 패키지가 있는 호스트 표시" + }, + "showSecurityUpdates": { + "label": "보안 업데이트 표시", + "description": "사용 가능한 총 보안 업데이트 수 표시" + }, + "showUpToDateHosts": { + "label": "최신 호스트 표시", + "description": "오래된 패키지가 없는 호스트 표시" + }, + "showHostsWithSecurityUpdates": { + "label": "보안 업데이트가 필요한 호스트 표시", + "description": "보안 패치가 필요한 호스트 표시" + }, + "showRecentUpdates24h": { + "label": "최근 업데이트 (24시간) 표시", + "description": "지난 24시간 동안 적용된 업데이트 수 표시" + }, + "showTotalOutdatedPackages": { + "label": "오래된 패키지 표시", + "description": "모든 호스트에서의 총 오래된 패키지 수 표시" + }, + "showTotalRepos": { + "label": "저장소 표시", + "description": "모니터링되는 활성 저장소 수 표시" + }, + "enableThresholdColors": { + "label": "임계값 색상 활성화", + "description": "심각도 사전 설정에 따라 통계 값을 녹색, 노란색 또는 빨간색으로 표시" + }, + "useCustomThresholds": { + "label": "고급 임계값", + "description": "절대 개수 또는 전체 호스트 대비 백분율을 사용하여 통계별 경고 및 위험 임계값 사용자 정의" + }, + "thresholdMode": { + "option": { + "absolute": "절대 개수", + "percent": "전체 호스트 대비 백분율" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "업데이트 필요 임계값 모드", + "description": "업데이트 필요 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "업데이트 필요 경고 임계값", + "description": "이 임계값에 도달하면 노란색으로 표시" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "업데이트 필요 위험 임계값", + "description": "이 임계값에 도달하면 빨간색으로 표시" + }, + "securityUpdatesThresholdMode": { + "label": "보안 업데이트 임계값 모드", + "description": "보안 업데이트 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" + }, + "securityUpdatesWarningAt": { + "label": "보안 업데이트 경고 임계값", + "description": "이 임계값에 도달하면 노란색으로 표시" + }, + "securityUpdatesCriticalAt": { + "label": "보안 업데이트 위험 임계값", + "description": "이 임계값에 도달하면 빨간색으로 표시" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "보안 업데이트가 있는 호스트 임계값 모드", + "description": "호스트 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "보안 업데이트가 있는 호스트 경고 임계값", + "description": "이 임계값에 도달하면 노란색으로 표시" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "보안 업데이트가 있는 호스트 위험 임계값", + "description": "이 임계값에 도달하면 빨간색으로 표시" + }, + "upToDateHostsThresholdMode": { + "label": "최신 호스트 임계값 모드", + "description": "최신 호스트 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" + }, + "upToDateHostsWarningAt": { + "label": "최신 호스트 경고 임계값", + "description": "값이 이 임계값 이상이지만 전체 적용 범위 미만일 때 노란색으로 표시" + }, + "upToDateHostsCriticalAt": { + "label": "최신 호스트 위험 임계값", + "description": "값이 이 임계값 미만으로 떨어지면 빨간색으로 표시" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "오래된 패키지 임계값 모드", + "description": "오래된 패키지 개수를 절대값 또는 전체 호스트 대비 백분율로 비교" + }, + "totalOutdatedPackagesWarningAt": { + "label": "오래된 패키지 경고 임계값", + "description": "이 임계값에 도달하면 노란색으로 표시" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "오래된 패키지 위험 임계값", + "description": "이 임계값에 도달하면 빨간색으로 표시" + }, + "showOsDistribution": { + "label": "OS 배포판 표시", + "description": "운영 체제별로 모니터링되는 호스트 분석 표시" + }, + "osDistributionLimit": { + "label": "OS 배포판 제한", + "description": "표시할 최대 운영 체제 수", + "option": { + "3": "상위 3개", + "5": "상위 5개", + "10": "상위 10개", + "all": "모두" + } + }, + "showOsVersion": { + "label": "OS 버전 표시", + "description": "사용 가능한 경우 각 배포판 레이블에 OS 버전 추가" + }, + "showComplianceHero": { + "label": "준수 상태 표시", + "description": "최신 호스트의 백분율을 표시하는 준수 링 표시" + }, + "osDisplayMode": { + "label": "OS 표시 모드", + "description": "운영 체제 배포판 표시 방법 선택", + "option": { + "bars": "가로 막대", + "donut": "도넛 차트" + } + } + }, + "error": { + "internalServerError": "PatchMon 데이터를 가져오지 못했습니다" + } + }, + "bazarr": { + "name": "Bazarr", + "description": "Bazarr 인스턴스의 누락된 자막 및 상태 개요", + "episodes": "누락된 에피소드", + "movies": "누락된 영화", + "providers": "제공자 문제", + "status": "상태 문제", + "option": { + "showMissingEpisodes": { + "label": "누락된 에피소드 표시", + "description": "누락된 자막이 있는 에피소드 수 표시" + }, + "showMissingMovies": { + "label": "누락된 영화 표시", + "description": "누락된 자막이 있는 영화 수 표시" + }, + "showProviderIssues": { + "label": "제공자 문제 표시", + "description": "문제가 있는 자막 제공자 수 표시" + }, + "showHealthIssues": { + "label": "상태 문제 표시", + "description": "Bazarr 상태 문제 수 표시" + } + }, + "error": { + "internalServerError": "Bazarr 데이터를 가져오지 못했습니다" + } + }, + "mediaMissing": { + "name": "누락 및 대기 중인 미디어", + "description": "Radarr 및 Sonarr의 누락 및 대기 중인 영화와 에피소드 표시", + "option": { + "showMissing": { + "label": "누락된 항목 표시" + }, + "showQueued": { + "label": "대기 중인 항목 표시" + }, + "pageSize": { + "label": "페이지당 항목 수" + } + }, + "tab": { + "missing": "누락", + "queued": "대기 중" + }, + "type": { + "movie": "영화", + "episode": "에피소드" + }, + "empty": { + "missing": "누락된 항목 없음", + "queued": "대기 중인 항목 없음", + "noTabsEnabled": "위젯 설정에서 최소한 하나의 탭을 활성화하세요" + }, + "timeLeft": "남은 시간" + }, + "traefik": { + "name": "Traefik", + "description": "Traefik 라우터, 서비스, 미들웨어 및 진입점 개요", + "option": { + "showTcp": { + "label": "TCP 표시" + }, + "showUdp": { + "label": "UDP 표시" + }, + "showEntryPoints": { + "label": "진입점 표시" + } + }, + "instances": "Traefik 인스턴스", + "versionUnknown": "버전 알 수 없음", + "summary": { + "routers": "라우터", + "entryPoints": "진입점" + }, + "resource": { + "routers": "라우터", + "services": "서비스", + "middlewares": "미들웨어" + }, + "status": { + "healthy": "정상", + "errors": "{count}개 오류", + "warnings": "{count}개 경고" + }, + "error": { + "internalServerError": "Traefik 데이터를 가져오지 못함" + } } }, "widgetPreview": { @@ -4551,11 +4380,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "홈", "boards": "보드", "apps": "앱", "integrations": "통합", - "customWidgets": "사용자 지정 위젯", "searchEngies": "검색 엔진", "medias": "미디어", "users": { @@ -5694,6 +5523,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "관리", "boards": { "label": "보드" diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index efd19f523..62ff79725 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -688,211 +688,6 @@ "add": "" } }, - "customWidget": { - "page": { - "list": { - "title": "", - "noResults": "", - "loading": "" - }, - "create": { - "title": "", - "subtitle": "" - }, - "edit": { - "title": "" - } - }, - "action": { - "create": "", - "import": "", - "save": "", - "delete": "", - "deleteConfirm": "", - "export": "", - "addMapping": "", - "addColumn": "", - "edit": "", - "removeMapping": "", - "removeColumn": "", - "addItem": "", - "removeItem": "", - "addBar": "", - "duplicate": "", - "copyAiPrompt": "", - "enable": "", - "disable": "", - "menu": "" - }, - "field": { - "name": "", - "description": "", - "iconUrl": "", - "url": "", - "authType": "", - "headerName": "", - "method": "", - "requestBody": "", - "displayType": "", - "jsonPath": "", - "jsonPathHint": "", - "label": "", - "unit": "", - "mappings": "", - "tablePath": "", - "tablePathHint": "", - "columns": "", - "header": "", - "items": "", - "gridColumns": "", - "cardStyle": "", - "bars": "", - "valuePath": "", - "maxPath": "", - "showPercentage": "", - "barSize": "", - "goodValues": "", - "dotSize": "", - "valueSize": "", - "labelPosition": "", - "kvLayout": "", - "striped": "", - "compact": "", - "maxHeight": "", - "color": "", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "", - "exampleLabelShort": "", - "exampleHeader": "", - "exampleUnit": "", - "iconUrl": "", - "url": "", - "headerName": "", - "jsonPath": "", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "", - "md": "", - "lg": "", - "xl": "" - }, - "labelPositionOption": { - "above": "", - "below": "" - }, - "fieldset": { - "general": "", - "connection": "", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "", - "POST": "", - "PUT": "", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "", - "apiKeyQuery": "" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "", - "password": "", - "savedPlaceholder": "" - }, - "preview": { - "title": "", - "test": "", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "Nepavyko gauti Paperless-ngx duomenų" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "RSS srautai", "description": "Stebėti ir rodyti vieną ar daugiau bendrų RSS, ATOM arba JSON srautų", @@ -3744,40 +3323,6 @@ "internalServerError": "Nepavyko gauti veikimo duomenų" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "Garso statistika", "description": "Bibliotekos ir atkūrimo statistika iš Navidrome arba Audiobookshelf", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Beszel sistemos (lentelė)", "description": "Visų Beszel stebimų sistemų lentelės vaizdas su rūšiuojamais stulpeliais ir būsenos indikatoriais", @@ -4171,6 +3696,256 @@ "subtitle": "Docker konteinerių tinklo srautas" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Pagrindinis", "boards": "Lentos", "apps": "Programėlės", "integrations": "Integracijos", - "customWidgets": "", "searchEngies": "Paieškos sistemos", "medias": "Medijos", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Valdyti", "boards": { "label": "Lentos" @@ -5728,18 +5506,6 @@ "label": "" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Vartotojai", "create": { diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 86cfc30b6..689d618a1 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -691,206 +691,11 @@ "customWidget": { "page": { "list": { - "title": "Pielāgotie logrīki", - "noResults": "Vēl nav pielāgotu logrīku. Izveidojiet pirmo!", "loading": "Notiek ielāde..." - }, - "create": { - "title": "Izveidot pielāgotu logrīku", - "subtitle": "Definējiet API URL, autentifikāciju un to, kā attēlot atbildes datus." - }, - "edit": { - "title": "Rediģēt pielāgoto logrīku" } }, "action": { - "create": "Izveidot", - "import": "Importēt", - "save": "Saglabāt", - "delete": "Dzēst pielāgoto logrīku", - "deleteConfirm": "Vai tiešām vēlaties dzēst \"{name}\"? Šo darbību nevar atsaukt.", - "export": "Eksportēt", - "addMapping": "Pievienot kartējumu", - "addColumn": "Pievienot kolonnu", - "edit": "Rediģēt", - "removeMapping": "Noņemt kartējumu", - "removeColumn": "Noņemt kolonnu", - "addItem": "", - "removeItem": "", - "addBar": "", - "duplicate": "", - "copyAiPrompt": "", - "enable": "", - "disable": "", - "menu": "" - }, - "field": { - "name": "", - "description": "", - "iconUrl": "", - "url": "", - "authType": "", - "headerName": "", - "method": "", - "requestBody": "", - "displayType": "", - "jsonPath": "", - "jsonPathHint": "", - "label": "", - "unit": "", - "mappings": "", - "tablePath": "", - "tablePathHint": "", - "columns": "", - "header": "", - "items": "", - "gridColumns": "", - "cardStyle": "", - "bars": "", - "valuePath": "", - "maxPath": "", - "showPercentage": "", - "barSize": "", - "goodValues": "", - "dotSize": "", - "valueSize": "", - "labelPosition": "", - "kvLayout": "", - "striped": "", - "compact": "", - "maxHeight": "", - "color": "", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "", - "exampleLabelShort": "", - "exampleHeader": "", - "exampleUnit": "", - "iconUrl": "", - "url": "", - "headerName": "", - "jsonPath": "", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "", - "md": "", - "lg": "", - "xl": "" - }, - "labelPositionOption": { - "above": "", - "below": "" - }, - "fieldset": { - "general": "", - "connection": "", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "", - "POST": "", - "PUT": "", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "", - "apiKeyQuery": "" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "", - "password": "", - "savedPlaceholder": "" - }, - "preview": { - "title": "", - "test": "", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" + "create": "Izveidot" } }, "integration": { @@ -2828,193 +2633,6 @@ "internalServerError": "Neizdevās iegūt Paperless-ngx datus" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +3005,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "", "description": "", @@ -3744,40 +3333,6 @@ "internalServerError": "Neizdevās iegūt pieejamības datus" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "Audio statistika", "description": "Bibliotēkas un atskaņošanas statistika no Navidrome vai Audiobookshelf", @@ -3901,26 +3456,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Beszel sistēmas (Tabula)", "description": "Tabulas skats visām Beszel uzraudzītajām sistēmām ar kārtojamām kolonnām un statusa indikatoriem", @@ -4171,6 +3706,256 @@ "subtitle": "Docker konteineru tīkla trafika" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4336,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Sākums", "boards": "Dēļi", "apps": "Lietotnes", "integrations": "", - "customWidgets": "", "searchEngies": "", "medias": "", "users": { @@ -5694,6 +5479,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Pārvaldīt", "boards": { "label": "Dēļi" @@ -5728,18 +5516,6 @@ "label": "Rediģēt" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Lietotāji", "create": { diff --git a/packages/translation/src/lang/pt-br.json b/packages/translation/src/lang/pt-br.json index d96857250..a78191198 100644 --- a/packages/translation/src/lang/pt-br.json +++ b/packages/translation/src/lang/pt-br.json @@ -710,16 +710,8 @@ "delete": "Excluir widget personalizado", "deleteConfirm": "Tem certeza de que deseja excluir \"{name}\"? Esta ação não pode ser desfeita.", "export": "Exportar", - "addMapping": "Adicionar Mapeamento", - "addColumn": "Adicionar Coluna", "edit": "Editar", - "removeMapping": "Remover Mapeamento", - "removeColumn": "Remover coluna", - "addItem": "Adicionar Item", - "removeItem": "Remover item", - "addBar": "Adicionar barra", "duplicate": "Duplicar", - "copyAiPrompt": "Copiar prompt de IA", "enable": "Habilitado", "disable": "Desabilitado", "menu": "Ações" @@ -727,150 +719,13 @@ "field": { "name": "Nome", "description": "Descrição", - "iconUrl": "URL do ícone", - "url": "URL", - "authType": "Tipo de Autenticação", - "headerName": "Nome do parâmetro de cabeçalho/consulta", - "method": "Método", - "requestBody": "Corpo da requisição", - "displayType": "Tipo de exibição", - "jsonPath": "Caminho JSON", - "jsonPathHint": "Usar sintaxe JSONPath para extrair valores, por exemplo, $.data.temperature ou $.items[0].name", - "label": "Rótulo", - "unit": "Unidade", - "mappings": "Mapeamentos", - "tablePath": "Caminho Array JSON", - "tablePathHint": "Caminho para o array na resposta, por exemplo, $.data.items", - "columns": "Colunas", - "header": "Header (cabeçalho)", - "items": "Itens", - "gridColumns": "Colunas da grade", - "cardStyle": "Estilo de cartão", - "bars": "Barras", - "valuePath": "Caminho do valor JSON", - "maxPath": "Caminho do Max Valor JSON", - "showPercentage": "Mostrar porcentagem", - "barSize": "Tamanho da barra", - "goodValues": "Valores bons (separados por vírgula)", - "dotSize": "Tamanho do ponto", - "valueSize": "Tamanho do valor", - "labelPosition": "Posição do rótulo", - "kvLayout": "Layout", - "striped": "Linhas Listradas", - "compact": "Modo Compacto", - "maxHeight": "Altura máxima (px)", - "color": "Cor", - "buttonLabel": "Rótulo do botão", - "buttonColor": "Cor do botão", - "confirmText": "Texto de confirmação", - "confirmTextHint": "Se definido, um diálogo de confirmação irá aparecer antes de executar a solicitação", - "successMessage": "Mensagem de Sucesso", - "successMessageHint": "Mensagem mostrada após execução com sucesso", - "enabled": "Habilitado", - "template": { - "label": "Template JSX", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "Temperatura da CPU", - "exampleLabelShort": "Temp CPU", - "exampleHeader": "Nome", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.exemplo.com/br/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.nome", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "online, true, up", - "color": "azul" - }, - "cardStyleOption": { - "filled": "Preenchido", - "outline": "Contorno", - "subtle": "Sutil" - }, - "layoutOption": { - "list": "Lista", - "grid": "Grade" - }, - "sizeOption": { - "sm": "Pequeno", - "md": "Médio", - "lg": "Grande", - "xl": "Extra grande" - }, - "labelPositionOption": { - "above": "Acima", - "below": "Abaixo" - }, - "fieldset": { - "general": "Geral", - "connection": "Conexão com API", - "display": "Configurações de tela" - }, - "displayTypeDescription": { - "singleValue": "Exibir um valor extraído com rótulo e unidade", - "keyValue": "Exibir vários valores rotulados lado a lado", - "table": "Exibir linhas de dados em formato de tabela", - "statGrid": "Estatísticas coloridas em uma grade — como Pi-Hole ou Widgets Rápidos", - "progressBars": "Barras de progresso mostrando uso ou conclusão — para disco, memória, quotas", - "statusIndicator": "Pontos de status coloridos mostrando estados online/offline ou de saúde", - "countGrid": "Contadores compactos de número + rótulo em uma grade apertada", - "raw": "Saída JSON impressa para depuração", - "actionButton": "Um botão que aciona uma solicitação quando clicado", - "customJsx": "Layout JSX personalizado usando componentes Mantine na lista branca com ligação completa de dados de API" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "Nenhum", - "bearer": "Token Bearer", - "basic": "Autenticação Básica", - "apiKeyHeader": "Chave API (Cabeçalho)", - "apiKeyQuery": "Chave API (Consulta)" - }, - "displayType": { - "singleValue": "Valor Único", - "keyValue": "Chave-Valor", - "table": "Tabela", - "statGrid": "Grade de Estatísticas", - "progressBars": "Barras de Progresso", - "statusIndicator": "Indicador de Status", - "countGrid": "Grade de Contagem", - "raw": "JSON Bruto", - "actionButton": "Botão de Ação", - "customJsx": "JSX personalizado" - }, - "secret": { - "apiKey": "Chave de API / Token", - "username": "Usuário", - "password": "Senha", - "savedPlaceholder": "••••••• (salvo, deixe em branco para manter)" - }, - "preview": { - "title": "Pré-visualizar", - "test": "Testar", - "hint": "Clique em Testar para visualizar a resposta da API com sua configuração atual.", - "rawResponse": "Resposta JSON Bruta" + "iconUrl": "URL do ícone" }, "notification": { "created": "Widget \"{name}\" criado com sucesso.", "updated": "Widget \"{name}atualizado com sucesso.", "deleted": "Widget \"{name}excluído.", "imported": "Widget importado com sucesso.", - "aiPromptCopied": "Prompt de IA copiado para a área de transferência", - "aiPromptDescription": "Copie um prompt pré-construído para colar qualquer chatbot de AI (ChatGPT, Claude, Gemini...). Ele inclui o esquema completo de widget e a sua resposta de API para que a AI possa gerar uma configuração JSON pronta para importar para você.", - "aiPromptCopy": "Copiar para área de transferência", - "aiPromptNoResponse": "Dica: Execute um teste primeiro para incluir a sua API de resposta no prompt para melhores resultados.", "aiPromptCopyError": "Falha ao copiar prompt para área de transferência. O seu navegador pode não suportar este recurso.", "createError": "Falha ao criar widget. Verifique se o endpoint API está acessível.", "updateError": "Falha ao atualizar o widget. Suas alterações não foram salvas.", @@ -883,14 +738,6 @@ "previewError": "Falha ao buscar a pré-visualização. Verifique a URL e tente novamente.", "executed": "Ação executada com sucesso.", "executeError": "A ação falhou: {error}" - }, - "table": { - "name": "Nome", - "url": "URL", - "display": "Exibição" - }, - "widget": { - "disabled": "Este widget está desabilitado" } }, "integration": { @@ -2828,193 +2675,6 @@ "internalServerError": "Falha ao buscar dados do Paperless-ngx" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "Estatísticas do Servidor Immich", "description": "Informações sobre sua instância do Immich", @@ -3387,35 +3047,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "Feeds RSS", "description": "Monitora e exibe um ou mais feeds RSS, ATOM ou JSON genéricos", @@ -3744,40 +3375,6 @@ "internalServerError": "Falha ao buscar dados de tempo de atividade" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "Estatísticas de áudio", "description": "Estatísticas de biblioteca e reprodução do Navidrome ou Audiobookshelf", @@ -3901,26 +3498,6 @@ "unhealthy": "Não saudável" } }, - "customApi": { - "name": "API personalizada", - "description": "Exibir dados de qualquer API externa com configuração personalizada.", - "option": { - "definitionId": { - "label": "ID de definição" - }, - "refreshInterval": { - "label": "Intervalo de atualização", - "description": "Com que frequência reobter dados da API (em segundos)" - } - }, - "noDefinition": "Nenhuma definição selecionada", - "definitionNotFound": "Definição do widget não encontrada. Ela pode ter sido excluída.", - "noDisplayOutput": "Nenhuma saída de exibição", - "executeConfirm": "Tem certeza de que deseja executar esta ação?", - "executing": "Executando...", - "executeSuccess": "Ação executada com sucesso", - "executeFailed": "Ação falhou. Verifique a configuração do widget." - }, "beszelSystemTable": { "name": "Sistemas Beszel (Tabela)", "description": "Visualização em tabela de todos os sistemas monitorados pelo Beszel com colunas classificáveis e indicadores de status", @@ -4171,6 +3748,256 @@ "subtitle": "Tráfego de rede dos contêineres Docker" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4378,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Início", "boards": "Placas", "apps": "Aplicativos", "integrations": "Integrações", - "customWidgets": "Widgets Personalizados", "searchEngies": "Mecanismos de busca", "medias": "Mídias", "users": { @@ -5694,6 +5521,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Gerenciar", "boards": { "label": "Placas" @@ -5728,18 +5558,6 @@ "label": "Editar" } }, - "custom-widgets": { - "label": "Widgets personalizados", - "new": { - "label": "Novo" - }, - "edit": { - "label": "Editar", - "flow": { - "label": "Fluxo" - } - } - }, "users": { "label": "Usuários", "create": { diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 580ba60b3..3367bad51 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -688,211 +688,6 @@ "add": "" } }, - "customWidget": { - "page": { - "list": { - "title": "", - "noResults": "", - "loading": "" - }, - "create": { - "title": "", - "subtitle": "" - }, - "edit": { - "title": "" - } - }, - "action": { - "create": "", - "import": "", - "save": "", - "delete": "", - "deleteConfirm": "", - "export": "", - "addMapping": "", - "addColumn": "", - "edit": "", - "removeMapping": "", - "removeColumn": "", - "addItem": "", - "removeItem": "", - "addBar": "", - "duplicate": "", - "copyAiPrompt": "", - "enable": "", - "disable": "", - "menu": "" - }, - "field": { - "name": "", - "description": "", - "iconUrl": "", - "url": "", - "authType": "", - "headerName": "", - "method": "", - "requestBody": "", - "displayType": "", - "jsonPath": "", - "jsonPathHint": "", - "label": "", - "unit": "", - "mappings": "", - "tablePath": "", - "tablePathHint": "", - "columns": "", - "header": "", - "items": "", - "gridColumns": "", - "cardStyle": "", - "bars": "", - "valuePath": "", - "maxPath": "", - "showPercentage": "", - "barSize": "", - "goodValues": "", - "dotSize": "", - "valueSize": "", - "labelPosition": "", - "kvLayout": "", - "striped": "", - "compact": "", - "maxHeight": "", - "color": "", - "buttonLabel": "", - "buttonColor": "", - "confirmText": "", - "confirmTextHint": "", - "successMessage": "", - "successMessageHint": "", - "enabled": "", - "template": { - "label": "", - "description": "" - } - }, - "placeholder": { - "exampleLabel": "", - "exampleLabelShort": "", - "exampleHeader": "", - "exampleUnit": "", - "iconUrl": "", - "url": "", - "headerName": "", - "jsonPath": "", - "tablePath": "", - "columnJsonPath": "", - "valuePath": "", - "maxPath": "", - "goodValues": "", - "color": "" - }, - "cardStyleOption": { - "filled": "", - "outline": "", - "subtle": "" - }, - "layoutOption": { - "list": "", - "grid": "" - }, - "sizeOption": { - "sm": "", - "md": "", - "lg": "", - "xl": "" - }, - "labelPositionOption": { - "above": "", - "below": "" - }, - "fieldset": { - "general": "", - "connection": "", - "display": "" - }, - "displayTypeDescription": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "method": { - "GET": "", - "POST": "", - "PUT": "", - "DELETE": "", - "PATCH": "" - }, - "authType": { - "none": "", - "bearer": "", - "basic": "", - "apiKeyHeader": "", - "apiKeyQuery": "" - }, - "displayType": { - "singleValue": "", - "keyValue": "", - "table": "", - "statGrid": "", - "progressBars": "", - "statusIndicator": "", - "countGrid": "", - "raw": "", - "actionButton": "", - "customJsx": "" - }, - "secret": { - "apiKey": "", - "username": "", - "password": "", - "savedPlaceholder": "" - }, - "preview": { - "title": "", - "test": "", - "hint": "", - "rawResponse": "" - }, - "notification": { - "created": "", - "updated": "", - "deleted": "", - "imported": "", - "aiPromptCopied": "", - "aiPromptDescription": "", - "aiPromptCopy": "", - "aiPromptNoResponse": "", - "aiPromptCopyError": "", - "createError": "", - "updateError": "", - "importError": "", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "Feeds RSS", "description": "Monitora e exibe um ou mais feeds RSS, ATOM ou JSON genéricos", @@ -3744,40 +3323,6 @@ "internalServerError": "" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "", "description": "", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Sistemas Beszel (Tabela)", "description": "Visualização em tabela de todos os sistemas monitorados pelo Beszel com colunas classificáveis e indicadores de status", @@ -4171,6 +3696,256 @@ "subtitle": "Tráfego de rede dos contêineres Docker" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Início", "boards": "Painéis", "apps": "Aplicativos", "integrations": "Integrações", - "customWidgets": "", "searchEngies": "Mecanismos de busca", "medias": "Mídias", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Gerenciar", "boards": { "label": "Painéis" @@ -5728,18 +5506,6 @@ "label": "Editar" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Usuários", "create": { diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index c19915673..a84511aa7 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -688,211 +688,6 @@ "add": "Pridajte aplikáciu" } }, - "customWidget": { - "page": { - "list": { - "title": "Vlastné widgety", - "noResults": "Zatiaľ žiadne vlastné widgety. Vytvorte svoj prvý!", - "loading": "Nahrávam..." - }, - "create": { - "title": "Vytvoriť vlastný widget", - "subtitle": "Definujte URL API, autentifikáciu a spôsob zobrazenia údajov odpovede." - }, - "edit": { - "title": "Upraviť vlastný widget" - } - }, - "action": { - "create": "Vytvoriť", - "import": "Importovať", - "save": "Uložiť", - "delete": "Odstrániť vlastný widget", - "deleteConfirm": "Naozaj chcete odstrániť \"{name}\"? Táto akcia sa nedá vrátiť späť.", - "export": "Exportovať", - "addMapping": "Pridať mapovanie", - "addColumn": "Pridať stĺpec", - "edit": "Upraviť", - "removeMapping": "Odstrániť mapovanie", - "removeColumn": "Odstrániť stĺpec", - "addItem": "Pridať položku", - "removeItem": "Odstrániť položku", - "addBar": "Pridať pruh", - "duplicate": "Duplikovať", - "copyAiPrompt": "Kopírovať AI prompt", - "enable": "Povoliť", - "disable": "Zakázať", - "menu": "Akcie" - }, - "field": { - "name": "Názov", - "description": "Popis", - "iconUrl": "URL ikony", - "url": "URL", - "authType": "Typ autentifikácie", - "headerName": "Názov hlavičky/parametra dotazu", - "method": "Metóda", - "requestBody": "Telo požiadavky", - "displayType": "Typ zobrazenia", - "jsonPath": "JSON cesta", - "jsonPathHint": "Použite syntax JSONPath na extrakciu hodnôt, napr. $.data.teplota alebo $.polozky[0].nazov", - "label": "Označenie", - "unit": "Jednotka", - "mappings": "Mapovania", - "tablePath": "JSON cesta poľa", - "tablePathHint": "Cesta k poľu v odpovedi, napr. $.data.polozky", - "columns": "Stĺpce", - "header": "Hlavička", - "items": "Položky", - "gridColumns": "Stĺpce mriežky", - "cardStyle": "Štýl karty", - "bars": "Pruhy", - "valuePath": "JSON cesta hodnoty", - "maxPath": "JSON cesta maximálnej hodnoty", - "showPercentage": "Zobraziť percentá", - "barSize": "Veľkosť pruhu", - "goodValues": "Dobré hodnoty (oddelené čiarkou)", - "dotSize": "Veľkosť bodky", - "valueSize": "Veľkosť hodnoty", - "labelPosition": "Pozícia označenia", - "kvLayout": "Rozloženie", - "striped": "Pruhované riadky", - "compact": "Kompaktný režim", - "maxHeight": "Max. výška (px)", - "color": "Farba", - "buttonLabel": "Označenie tlačidla", - "buttonColor": "Farba tlačidla", - "confirmText": "Text potvrdenia", - "confirmTextHint": "Ak je nastavený, pred vykonaním požiadavky sa zobrazí dialóg potvrdenia", - "successMessage": "Správa o úspechu", - "successMessageHint": "Správa zobrazená po úspešnom vykonaní", - "enabled": "Povolené", - "template": { - "label": "JSX šablóna", - "description": "Mantine JSX šablóna. Prístup k poliam odpovede API cez dátové väzby (napr. data.nazov). Používajte iba whitelistované komponenty. Zakázané: constructor, __proto__, eval, Function, window, document." - } - }, - "placeholder": { - "exampleLabel": "Teplota CPU", - "exampleLabelShort": "Teplota CPU", - "exampleHeader": "Názov", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.priklad.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.hodnota", - "tablePath": "$.data.polozky", - "columnJsonPath": "$.nazov", - "valuePath": "$.data.pouzite", - "maxPath": "$.data.celkom", - "goodValues": "online, true, up", - "color": "modrá" - }, - "cardStyleOption": { - "filled": "Vyplnené", - "outline": "Obrys", - "subtle": "Jemný" - }, - "layoutOption": { - "list": "Zoznam", - "grid": "Mriežka" - }, - "sizeOption": { - "sm": "Malé", - "md": "Stredné", - "lg": "Veľké", - "xl": "Extra veľké" - }, - "labelPositionOption": { - "above": "Nad", - "below": "Pod" - }, - "fieldset": { - "general": "Všeobecné", - "connection": "Pripojenie API", - "display": "Konfigurácia zobrazenia" - }, - "displayTypeDescription": { - "singleValue": "Zobraziť jednu extrahovanú hodnotu s označením a jednotkou", - "keyValue": "Zobraziť viacero označených hodnôt vedľa seba", - "table": "Zobraziť riadky údajov vo formáte tabuľky", - "statGrid": "Farebné karty štatistík v mriežke – ako widgety Pi-Hole alebo Speedtest", - "progressBars": "Pruhy postupu zobrazujúce využitie alebo dokončenie – pre disk, pamäť, kvóty", - "statusIndicator": "Farebné bodky stavu zobrazujúce online/offline alebo stavy zdravia", - "countGrid": "Kompaktné počítadlá číslo + označenie v tesnej mriežke", - "raw": "Prehľadne formátovaný JSON výstup pre ladenie", - "actionButton": "Tlačidlo, ktoré po kliknutí spustí požiadavku", - "customJsx": "Vlastné rozloženie JSX pomocou whitelistovaných komponentov Mantine s plnou väzbou API dát" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "Žiadna", - "bearer": "Bearer token", - "basic": "Basic Auth", - "apiKeyHeader": "API kľúč (hlavička)", - "apiKeyQuery": "API kľúč (dotaz)" - }, - "displayType": { - "singleValue": "Jedna hodnota", - "keyValue": "Kľúč-hodnota", - "table": "Tabuľka", - "statGrid": "Mriežka štatistík", - "progressBars": "Pruhy postupu", - "statusIndicator": "Indikátor stavu", - "countGrid": "Mriežka počtu", - "raw": "Surové JSON", - "actionButton": "Akčné tlačidlo", - "customJsx": "Vlastné JSX" - }, - "secret": { - "apiKey": "API kľúč / token", - "username": "Používateľské meno", - "password": "Heslo", - "savedPlaceholder": "••••••• (uložené, ponechajte prázdne pre zachovanie)" - }, - "preview": { - "title": "Náhľad", - "test": "Test", - "hint": "Kliknite na Test pre náhľad odpovede API s vašou aktuálnou konfiguráciou.", - "rawResponse": "Surová JSON odpoveď" - }, - "notification": { - "created": "Widget \"{name}\" bol úspešne vytvorený.", - "updated": "Widget \"{name}\" bol úspešne aktualizovaný.", - "deleted": "Widget \"{name}\" bol odstránený.", - "imported": "", - "aiPromptCopied": "AI prompt skopírovaný do schránky", - "aiPromptDescription": "Skopírujte pripravený prompt a vložte ho do akéhokoľvek AI chatbota (ChatGPT, Claude, Gemini...). Obsahuje úplnú schému widgetu a vašu odpoveď API, aby AI mohla vygenerovať pripravenú JSON konfiguráciu na import.", - "aiPromptCopy": "Skopírovať do schránky", - "aiPromptNoResponse": "Tip: Najprv spustite test, aby ste zahrnuli odpoveď API do výzvy pre lepšie výsledky.", - "aiPromptCopyError": "Nepodarilo sa skopírovať výzvu do schránky. Váš prehliadač možno nepodporuje túto funkciu.", - "createError": "Nepodarilo sa vytvoriť widget. Skontrolujte, či je váš API endpoint dostupný.", - "updateError": "Nepodarilo sa aktualizovať widget. Vaše zmeny neboli uložené.", - "importError": "Nepodarilo sa importovať widget. Uistite sa, že súbor je platný JSON export vlastného widgetu.", - "exportError": "", - "duplicated": "", - "duplicateError": "", - "toggleError": "", - "deleteError": "", - "previewError": "", - "executed": "", - "executeError": "" - }, - "table": { - "name": "", - "url": "", - "display": "" - }, - "widget": { - "disabled": "" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "Nepodarilo sa načítať údaje Paperless-ngx" } }, - "patchmon": { - "name": "", - "description": "", - "title": "", - "totalHosts": "", - "hostsNeedingUpdates": "", - "securityUpdates": "", - "upToDateHosts": "", - "hostsWithSecurityUpdates": "", - "recentUpdates24h": "", - "totalOutdatedPackages": "", - "totalRepos": "", - "osDistribution": "", - "compliance": "", - "complianceRatio": "", - "lastUpdated": "", - "option": { - "showTotalHosts": { - "label": "", - "description": "" - }, - "showHostsNeedingUpdates": { - "label": "", - "description": "" - }, - "showSecurityUpdates": { - "label": "", - "description": "" - }, - "showUpToDateHosts": { - "label": "", - "description": "" - }, - "showHostsWithSecurityUpdates": { - "label": "", - "description": "" - }, - "showRecentUpdates24h": { - "label": "", - "description": "" - }, - "showTotalOutdatedPackages": { - "label": "", - "description": "" - }, - "showTotalRepos": { - "label": "", - "description": "" - }, - "enableThresholdColors": { - "label": "", - "description": "" - }, - "useCustomThresholds": { - "label": "", - "description": "" - }, - "thresholdMode": { - "option": { - "absolute": "", - "percent": "" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "securityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "securityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "securityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "", - "description": "" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "", - "description": "" - }, - "upToDateHostsThresholdMode": { - "label": "", - "description": "" - }, - "upToDateHostsWarningAt": { - "label": "", - "description": "" - }, - "upToDateHostsCriticalAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesWarningAt": { - "label": "", - "description": "" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "", - "description": "" - }, - "showOsDistribution": { - "label": "", - "description": "" - }, - "osDistributionLimit": { - "label": "", - "description": "", - "option": { - "3": "", - "5": "", - "10": "", - "all": "" - } - }, - "showOsVersion": { - "label": "", - "description": "" - }, - "showComplianceHero": { - "label": "", - "description": "" - }, - "osDisplayMode": { - "label": "", - "description": "", - "option": { - "bars": "", - "donut": "" - } - } - }, - "error": { - "internalServerError": "" - } - }, - "bazarr": { - "name": "", - "description": "", - "episodes": "", - "movies": "", - "providers": "", - "status": "", - "option": { - "showMissingEpisodes": { - "label": "", - "description": "" - }, - "showMissingMovies": { - "label": "", - "description": "" - }, - "showProviderIssues": { - "label": "", - "description": "" - }, - "showHealthIssues": { - "label": "", - "description": "" - } - }, - "error": { - "internalServerError": "" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "", - "description": "", - "option": { - "showMissing": { - "label": "" - }, - "showQueued": { - "label": "" - }, - "pageSize": { - "label": "" - } - }, - "tab": { - "missing": "", - "queued": "" - }, - "type": { - "movie": "", - "episode": "" - }, - "empty": { - "missing": "", - "queued": "", - "noTabsEnabled": "" - }, - "timeLeft": "" - }, "rssFeed": { "name": "RSS kanály", "description": "Monitorujte a zobrazujte jeden alebo viac všeobecných informačných kanálov RSS, ATOM alebo JSON", @@ -3744,40 +3323,6 @@ "internalServerError": "Nepodarilo sa načítať údaje o dostupnosti" } }, - "traefik": { - "name": "", - "description": "", - "option": { - "showTcp": { - "label": "" - }, - "showUdp": { - "label": "" - }, - "showEntryPoints": { - "label": "" - } - }, - "instances": "", - "versionUnknown": "", - "summary": { - "routers": "", - "entryPoints": "" - }, - "resource": { - "routers": "", - "services": "", - "middlewares": "" - }, - "status": { - "healthy": "", - "errors": "", - "warnings": "" - }, - "error": { - "internalServerError": "" - } - }, "audioStats": { "name": "Audio štatistiky", "description": "Štatistiky knižnice a prehrávania z Navidrome alebo Audiobookshelf", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "", - "description": "", - "option": { - "definitionId": { - "label": "" - }, - "refreshInterval": { - "label": "", - "description": "" - } - }, - "noDefinition": "", - "definitionNotFound": "", - "noDisplayOutput": "", - "executeConfirm": "", - "executing": "", - "executeSuccess": "", - "executeFailed": "" - }, "beszelSystemTable": { "name": "Beszel systémy (tabuľka)", "description": "Tabuľkový pohľad všetkých systémov monitorovaných Beszel s triediteľnými stĺpcami a indikátormi stavu", @@ -4171,6 +3696,256 @@ "subtitle": "Sieťová prevádzka Docker kontajnerov" } } + }, + "patchmon": { + "name": "", + "description": "", + "title": "", + "totalHosts": "", + "hostsNeedingUpdates": "", + "securityUpdates": "", + "upToDateHosts": "", + "hostsWithSecurityUpdates": "", + "recentUpdates24h": "", + "totalOutdatedPackages": "", + "totalRepos": "", + "osDistribution": "", + "compliance": "", + "complianceRatio": "", + "lastUpdated": "", + "option": { + "showTotalHosts": { + "label": "", + "description": "" + }, + "showHostsNeedingUpdates": { + "label": "", + "description": "" + }, + "showSecurityUpdates": { + "label": "", + "description": "" + }, + "showUpToDateHosts": { + "label": "", + "description": "" + }, + "showHostsWithSecurityUpdates": { + "label": "", + "description": "" + }, + "showRecentUpdates24h": { + "label": "", + "description": "" + }, + "showTotalOutdatedPackages": { + "label": "", + "description": "" + }, + "showTotalRepos": { + "label": "", + "description": "" + }, + "enableThresholdColors": { + "label": "", + "description": "" + }, + "useCustomThresholds": { + "label": "", + "description": "" + }, + "thresholdMode": { + "option": { + "absolute": "", + "percent": "" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "securityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "securityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "securityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "", + "description": "" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "", + "description": "" + }, + "upToDateHostsThresholdMode": { + "label": "", + "description": "" + }, + "upToDateHostsWarningAt": { + "label": "", + "description": "" + }, + "upToDateHostsCriticalAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesWarningAt": { + "label": "", + "description": "" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "", + "description": "" + }, + "showOsDistribution": { + "label": "", + "description": "" + }, + "osDistributionLimit": { + "label": "", + "description": "", + "option": { + "3": "", + "5": "", + "10": "", + "all": "" + } + }, + "showOsVersion": { + "label": "", + "description": "" + }, + "showComplianceHero": { + "label": "", + "description": "" + }, + "osDisplayMode": { + "label": "", + "description": "", + "option": { + "bars": "", + "donut": "" + } + } + }, + "error": { + "internalServerError": "" + } + }, + "bazarr": { + "name": "", + "description": "", + "episodes": "", + "movies": "", + "providers": "", + "status": "", + "option": { + "showMissingEpisodes": { + "label": "", + "description": "" + }, + "showMissingMovies": { + "label": "", + "description": "" + }, + "showProviderIssues": { + "label": "", + "description": "" + }, + "showHealthIssues": { + "label": "", + "description": "" + } + }, + "error": { + "internalServerError": "" + } + }, + "mediaMissing": { + "name": "", + "description": "", + "option": { + "showMissing": { + "label": "" + }, + "showQueued": { + "label": "" + }, + "pageSize": { + "label": "" + } + }, + "tab": { + "missing": "", + "queued": "" + }, + "type": { + "movie": "", + "episode": "" + }, + "empty": { + "missing": "", + "queued": "", + "noTabsEnabled": "" + }, + "timeLeft": "" + }, + "traefik": { + "name": "", + "description": "", + "option": { + "showTcp": { + "label": "" + }, + "showUdp": { + "label": "" + }, + "showEntryPoints": { + "label": "" + } + }, + "instances": "", + "versionUnknown": "", + "summary": { + "routers": "", + "entryPoints": "" + }, + "resource": { + "routers": "", + "services": "", + "middlewares": "" + }, + "status": { + "healthy": "", + "errors": "", + "warnings": "" + }, + "error": { + "internalServerError": "" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Domovská stránka", "boards": "Dosky", "apps": "Aplikácie", "integrations": "Integrácie", - "customWidgets": "", "searchEngies": "Vyhľadávače", "medias": "Médiá", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Spravovať", "boards": { "label": "Dosky" @@ -5728,18 +5506,6 @@ "label": "Upraviť" } }, - "custom-widgets": { - "label": "", - "new": { - "label": "" - }, - "edit": { - "label": "", - "flow": { - "label": "" - } - } - }, "users": { "label": "Používatelia", "create": { diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 46296c573..b15519f95 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -688,211 +688,6 @@ "add": "Bir uygulama ekle" } }, - "customWidget": { - "page": { - "list": { - "title": "Özel Widget'lar", - "noResults": "Henüz özel widget yok. İlk widget'ınızı oluşturun!", - "loading": "Yükleniyor..." - }, - "create": { - "title": "Özel Widget Oluştur", - "subtitle": "API URL'sini, kimlik doğrulamasını ve yanıt verilerinin nasıl görüntüleneceğini tanımlayın." - }, - "edit": { - "title": "Özel Widget'ı Düzenle" - } - }, - "action": { - "create": "Oluştur", - "import": "İçe aktar", - "save": "Kaydet", - "delete": "Özel Widget'ı Sil", - "deleteConfirm": "“{name}” adlı widget'ı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "export": "Dışa aktar", - "addMapping": "Eşleme Ekle", - "addColumn": "Sütun Ekle", - "edit": "Düzenle", - "removeMapping": "Eşlemeyi kaldır", - "removeColumn": "Sütunu kaldır", - "addItem": "Öğe Ekle", - "removeItem": "Öğeyi kaldır", - "addBar": "Çubuk Ekle", - "duplicate": "Çoğalt", - "copyAiPrompt": "Yapay zekâ istemini kopyala", - "enable": "Etkinleştir", - "disable": "Devre dışı bırak", - "menu": "Eylemler" - }, - "field": { - "name": "Ad", - "description": "Açıklama", - "iconUrl": "Simge URL'si", - "url": "URL", - "authType": "Kimlik Doğrulama Türü", - "headerName": "Üst Bilgi/Sorgu Parametresi Adı", - "method": "Yöntem", - "requestBody": "İstek Gövdesi", - "displayType": "Görüntüleme Türü", - "jsonPath": "JSON Yolu", - "jsonPathHint": "Değerleri ayıklamak için JSONPath söz dizimini kullanın; ör. $.data.temperature veya $.items[0].name", - "label": "Etiket", - "unit": "Birim", - "mappings": "Eşlemeler", - "tablePath": "Dizi JSON Yolu", - "tablePathHint": "Yanıttaki dizinin yolu; ör. $.data.items", - "columns": "Sütunlar", - "header": "Başlık", - "items": "Öğeler", - "gridColumns": "Izgara Sütunları", - "cardStyle": "Kart Stili", - "bars": "Çubuklar", - "valuePath": "Değer JSON Yolu", - "maxPath": "En Yüksek Değer JSON Yolu", - "showPercentage": "Yüzdeyi Göster", - "barSize": "Çubuk Boyutu", - "goodValues": "İyi Değerler (virgülle ayrılmış)", - "dotSize": "Nokta Boyutu", - "valueSize": "Değer Boyutu", - "labelPosition": "Etiket Konumu", - "kvLayout": "Düzen", - "striped": "Şeritli Satırlar", - "compact": "Kompakt Mod", - "maxHeight": "En Fazla Yükseklik (px)", - "color": "Renk", - "buttonLabel": "Düğme Etiketi", - "buttonColor": "Düğme Rengi", - "confirmText": "Onay Metni", - "confirmTextHint": "Ayarlanırsa istek yürütülmeden önce bir onay iletişim kutusu gösterilir", - "successMessage": "Başarı Mesajı", - "successMessageHint": "Başarılı yürütmeden sonra gösterilecek mesaj", - "enabled": "Etkin", - "template": { - "label": "JSX Şablonu", - "description": "Mantine JSX şablonu. API yanıt alanlarına veri bağlamalarıyla (ör. data.name) erişin. Yalnızca izin verilen bileşenleri kullanın. Yasak: constructor, __proto__, eval, Function, window, document." - } - }, - "placeholder": { - "exampleLabel": "CPU Sıcaklığı", - "exampleLabelShort": "CPU Sıcaklığı", - "exampleHeader": "Ad", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.name", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "online, true, up", - "color": "mavi" - }, - "cardStyleOption": { - "filled": "Dolu", - "outline": "Çerçeveli", - "subtle": "Hafif" - }, - "layoutOption": { - "list": "Liste", - "grid": "Izgara" - }, - "sizeOption": { - "sm": "Küçük", - "md": "Orta", - "lg": "Büyük", - "xl": "Çok Büyük" - }, - "labelPositionOption": { - "above": "Üstte", - "below": "Altta" - }, - "fieldset": { - "general": "Genel", - "connection": "API Bağlantısı", - "display": "Görüntüleme Yapılandırması" - }, - "displayTypeDescription": { - "singleValue": "Ayıklanan tek bir değeri etiket ve birimle gösterir", - "keyValue": "Birden fazla etiketli değeri yan yana gösterir", - "table": "Veri satırlarını tablo biçiminde gösterir", - "statGrid": "Pi-hole veya Speedtest widget'ları gibi, ızgara içinde renkli istatistik kartları gösterir", - "progressBars": "Disk, bellek veya kotalar için kullanımı ya da tamamlanmayı gösteren ilerleme çubukları", - "statusIndicator": "Çevrimiçi/çevrimdışı ya da sağlık durumlarını gösteren renkli durum noktaları", - "countGrid": "Sıkı bir ızgarada kompakt sayı ve etiket sayaçları", - "raw": "Hata ayıklama için okunaklı biçimlendirilmiş JSON çıktısı", - "actionButton": "Tıklandığında istek başlatan bir düğme", - "customJsx": "Tam API veri bağlamasıyla izin verilen Mantine bileşenlerini kullanan özel JSX düzeni" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "Yok", - "bearer": "Bearer Token", - "basic": "Temel Kimlik Doğrulama", - "apiKeyHeader": "API Anahtarı (Üst Bilgi)", - "apiKeyQuery": "API Anahtarı (Sorgu)" - }, - "displayType": { - "singleValue": "Tek Değer", - "keyValue": "Anahtar-Değer", - "table": "Tablo", - "statGrid": "İstatistik Izgarası", - "progressBars": "İlerleme Çubukları", - "statusIndicator": "Durum Göstergesi", - "countGrid": "Sayaç Izgarası", - "raw": "Ham JSON", - "actionButton": "Eylem Düğmesi", - "customJsx": "Özel JSX" - }, - "secret": { - "apiKey": "API Anahtarı / Token", - "username": "Kullanıcı adı", - "password": "Parola", - "savedPlaceholder": "••••••• (kaydedildi, korumak için boş bırakın)" - }, - "preview": { - "title": "Önizleme", - "test": "Test Et", - "hint": "Geçerli yapılandırmanızla API yanıtını önizlemek için Test Et'e tıklayın.", - "rawResponse": "Ham JSON yanıtı" - }, - "notification": { - "created": "“{name}” widget'ı başarıyla oluşturuldu.", - "updated": "“{name}” widget'ı başarıyla güncellendi.", - "deleted": "“{name}” widget'ı silindi.", - "imported": "Widget başarıyla içe aktarıldı.", - "aiPromptCopied": "Yapay zekâ istemi panoya kopyalandı", - "aiPromptDescription": "Herhangi bir yapay zekâ sohbet botuna (ChatGPT, Claude, Gemini...) yapıştırmak üzere önceden hazırlanmış bir istemi kopyalayın. İstem, yapay zekânın içe aktarmaya hazır bir JSON yapılandırması oluşturabilmesi için widget şemasının tamamını ve API yanıtınızı içerir.", - "aiPromptCopy": "Panoya kopyala", - "aiPromptNoResponse": "İpucu: Daha iyi sonuçlar için önce bir test çalıştırarak API yanıtınızı isteme ekleyin.", - "aiPromptCopyError": "İstem panoya kopyalanamadı. Tarayıcınız bu özelliği desteklemiyor olabilir.", - "createError": "Widget oluşturulamadı. API uç noktanızın erişilebilir olduğunu kontrol edin.", - "updateError": "Widget güncellenemedi. Değişiklikleriniz kaydedilmedi.", - "importError": "Widget içe aktarılamadı. Dosyanın geçerli bir özel widget JSON dışa aktarımı olduğundan emin olun.", - "exportError": "Widget dışa aktarılamadı.", - "duplicated": "“{name}” widget'ı çoğaltıldı.", - "duplicateError": "Widget çoğaltılamadı.", - "toggleError": "Widget durumu değiştirilemedi.", - "deleteError": "Widget silinemedi.", - "previewError": "Önizleme alınamadı. URL'yi kontrol edip yeniden deneyin.", - "executed": "Eylem başarıyla yürütüldü.", - "executeError": "Eylem başarısız oldu: {error}" - }, - "table": { - "name": "Ad", - "url": "URL", - "display": "Görüntüleme" - }, - "widget": { - "disabled": "Bu widget devre dışı" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "Paperless-ngx verileri alınamadı" } }, - "patchmon": { - "name": "PatchMon", - "description": "PatchMon'daki ana makine yama durumunun genel görünümü", - "title": "PatchMon İstatistikleri", - "totalHosts": "Toplam Ana Makine", - "hostsNeedingUpdates": "Güncelleme Gerekiyor", - "securityUpdates": "Güvenlik Güncellemeleri", - "upToDateHosts": "Güncel Ana Makineler", - "hostsWithSecurityUpdates": "Güvenlik Güncellemesi Olan Ana Makineler", - "recentUpdates24h": "Güncellemeler (24 sa.)", - "totalOutdatedPackages": "Güncel Olmayan Paketler", - "totalRepos": "Depolar", - "osDistribution": "İşletim Sistemi Dağılımı", - "compliance": "Yama Uyumluluğu", - "complianceRatio": "{upToDate} / {total}", - "lastUpdated": "Güncellendi: {time}", - "option": { - "showTotalHosts": { - "label": "Toplam ana makine sayısını göster", - "description": "İzlenen toplam ana makine sayısını gösterir" - }, - "showHostsNeedingUpdates": { - "label": "Güncelleme gereken ana makineleri göster", - "description": "En az bir güncel olmayan paketi bulunan ana makineleri gösterir" - }, - "showSecurityUpdates": { - "label": "Güvenlik güncellemelerini göster", - "description": "Kullanılabilir toplam güvenlik güncellemesi sayısını gösterir" - }, - "showUpToDateHosts": { - "label": "Güncel ana makineleri göster", - "description": "Güncel olmayan paketi bulunmayan ana makineleri gösterir" - }, - "showHostsWithSecurityUpdates": { - "label": "Güvenlik güncellemesi olan ana makineleri göster", - "description": "Güvenlik yaması gereken ana makineleri gösterir" - }, - "showRecentUpdates24h": { - "label": "Son güncellemeleri göster (24 sa.)", - "description": "Son 24 saatte uygulanan güncelleme sayısını gösterir" - }, - "showTotalOutdatedPackages": { - "label": "Güncel olmayan paketleri göster", - "description": "Tüm ana makinelerdeki güncel olmayan paketlerin toplam sayısını gösterir" - }, - "showTotalRepos": { - "label": "Depoları göster", - "description": "İzlenen etkin depo sayısını gösterir" - }, - "enableThresholdColors": { - "label": "Eşik renklerini etkinleştir", - "description": "İstatistik değerlerini önem düzeyi ön ayarlarına göre yeşil, sarı veya kırmızı renklendirir" - }, - "useCustomThresholds": { - "label": "Gelişmiş eşikler", - "description": "Her istatistik için uyarı ve kritik eşikleri mutlak sayılarla veya toplam ana makine yüzdesiyle özelleştirin" - }, - "thresholdMode": { - "option": { - "absolute": "Mutlak sayı", - "percent": "Toplam ana makinelerin yüzdesi" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "Güncelleme gereksinimi eşik modu", - "description": "Güncelleme gerekenlerin sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "Güncelleme gereksinimi uyarı eşiği", - "description": "Değer bu eşiğe ulaştığında sarı renge geçer" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "Güncelleme gereksinimi kritik eşiği", - "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" - }, - "securityUpdatesThresholdMode": { - "label": "Güvenlik güncellemeleri eşik modu", - "description": "Güvenlik güncellemesi sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" - }, - "securityUpdatesWarningAt": { - "label": "Güvenlik güncellemeleri uyarı eşiği", - "description": "Değer bu eşiğe ulaştığında sarı renge geçer" - }, - "securityUpdatesCriticalAt": { - "label": "Güvenlik güncellemeleri kritik eşiği", - "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "Güvenlik güncellemesi olan ana makineler için eşik modu", - "description": "Ana makine sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "Güvenlik güncellemesi olan ana makineler için uyarı eşiği", - "description": "Değer bu eşiğe ulaştığında sarı renge geçer" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "Güvenlik güncellemesi olan ana makineler için kritik eşik", - "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" - }, - "upToDateHostsThresholdMode": { - "label": "Güncel ana makineler için eşik modu", - "description": "Güncel ana makine sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" - }, - "upToDateHostsWarningAt": { - "label": "Güncel ana makineler için uyarı eşiği", - "description": "Değer bu eşikte veya üzerinde, ancak tam kapsamanın altındaysa sarı renge geçer" - }, - "upToDateHostsCriticalAt": { - "label": "Güncel ana makineler için kritik eşik", - "description": "Değer bu eşiğin altına düştüğünde kırmızı renge geçer" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "Güncel olmayan paketler için eşik modu", - "description": "Güncel olmayan paketlerin sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" - }, - "totalOutdatedPackagesWarningAt": { - "label": "Güncel olmayan paketler için uyarı eşiği", - "description": "Değer bu eşiğe ulaştığında sarı renge geçer" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "Güncel olmayan paketler için kritik eşik", - "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" - }, - "showOsDistribution": { - "label": "İşletim sistemi dağılımını göster", - "description": "İzlenen ana makinelerin işletim sistemine göre dağılımını gösterir" - }, - "osDistributionLimit": { - "label": "İşletim sistemi dağılımı sınırı", - "description": "Gösterilecek en fazla işletim sistemi sayısı", - "option": { - "3": "İlk 3", - "5": "İlk 5", - "10": "İlk 10", - "all": "Tümü" - } - }, - "showOsVersion": { - "label": "İşletim sistemi sürümünü göster", - "description": "Mevcut olduğunda işletim sistemi sürümünü her dağılım etiketine ekler" - }, - "showComplianceHero": { - "label": "Uyumluluk özetini göster", - "description": "Güncel ana makinelerin yüzdesini gösteren bir uyumluluk halkası görüntüler" - }, - "osDisplayMode": { - "label": "İşletim sistemi görüntüleme modu", - "description": "İşletim sistemi dağılımının nasıl gösterileceğini seçin", - "option": { - "bars": "Yatay çubuklar", - "donut": "Halka grafik" - } - } - }, - "error": { - "internalServerError": "PatchMon verileri alınamadı" - } - }, - "bazarr": { - "name": "Bazarr", - "description": "Bazarr örneğinizdeki eksik altyazıların ve sağlık durumunun genel görünümü", - "episodes": "Eksik Bölümler", - "movies": "Eksik Filmler", - "providers": "Sağlayıcı Sorunları", - "status": "Sağlık Sorunları", - "option": { - "showMissingEpisodes": { - "label": "Eksik bölümleri göster", - "description": "Altyazısı eksik bölüm sayısını gösterir" - }, - "showMissingMovies": { - "label": "Eksik filmleri göster", - "description": "Altyazısı eksik film sayısını gösterir" - }, - "showProviderIssues": { - "label": "Sağlayıcı sorunlarını göster", - "description": "Sorun yaşayan altyazı sağlayıcılarının sayısını gösterir" - }, - "showHealthIssues": { - "label": "Sağlık sorunlarını göster", - "description": "Bazarr sağlık sorunlarının sayısını gösterir" - } - }, - "error": { - "internalServerError": "Bazarr verileri alınamadı" - } - }, "immich-serverStats": { "name": "Immich Sunucu İstatistikleri", "description": "Immich örneğiniz hakkında bilgiler", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "Eksik ve Kuyruktaki Medya", - "description": "Radarr ve Sonarr'daki eksik ve kuyruğa alınmış film ve bölümleri gösterir", - "option": { - "showMissing": { - "label": "Eksik öğeleri göster" - }, - "showQueued": { - "label": "Kuyruktaki öğeleri göster" - }, - "pageSize": { - "label": "Sayfa başına öğe" - } - }, - "tab": { - "missing": "Eksik", - "queued": "Kuyrukta" - }, - "type": { - "movie": "Film", - "episode": "Bölüm" - }, - "empty": { - "missing": "Eksik öğe yok", - "queued": "Kuyrukta öğe yok", - "noTabsEnabled": "Widget ayarlarında en az bir sekmeyi etkinleştirin" - }, - "timeLeft": "Kalan süre" - }, "rssFeed": { "name": "RSS Beslemeleri", "description": "Bir veya daha fazla RSS, ATOM veya JSON beslemesini takip edin ve görüntüleyin", @@ -3744,40 +3323,6 @@ "internalServerError": "Çalışma süresi verileri alınamadı" } }, - "traefik": { - "name": "Traefik", - "description": "Traefik yönlendiricilerinin, hizmetlerinin, ara yazılımlarının ve giriş noktalarının genel görünümü", - "option": { - "showTcp": { - "label": "TCP'yi göster" - }, - "showUdp": { - "label": "UDP'yi göster" - }, - "showEntryPoints": { - "label": "Giriş noktalarını göster" - } - }, - "instances": "Traefik örnekleri", - "versionUnknown": "Sürüm bilinmiyor", - "summary": { - "routers": "Yönlendiriciler", - "entryPoints": "Giriş noktaları" - }, - "resource": { - "routers": "Yönlendiriciler", - "services": "Hizmetler", - "middlewares": "Ara Yazılımlar" - }, - "status": { - "healthy": "Sağlıklı", - "errors": "{count} hata", - "warnings": "{count} uyarı" - }, - "error": { - "internalServerError": "Traefik verileri alınamadı" - } - }, "audioStats": { "name": "Ses İstatistikleri", "description": "Navidrome veya Audiobookshelf'ten kütüphane ve oynatma istatistikleri", @@ -3901,26 +3446,6 @@ "unhealthy": "Sağlıksız" } }, - "customApi": { - "name": "Özel API", - "description": "Özel yapılandırmayla herhangi bir harici API'den veri gösterir.", - "option": { - "definitionId": { - "label": "Tanım Kimliği" - }, - "refreshInterval": { - "label": "Yenileme aralığı", - "description": "Verilerin API'den hangi sıklıkta yeniden alınacağı (saniye)" - } - }, - "noDefinition": "Tanım seçilmedi", - "definitionNotFound": "Widget tanımı bulunamadı. Silinmiş olabilir.", - "noDisplayOutput": "Görüntülenecek çıktı yok", - "executeConfirm": "Bu eylemi yürütmek istediğinizden emin misiniz?", - "executing": "Yürütülüyor...", - "executeSuccess": "Eylem başarıyla yürütüldü", - "executeFailed": "Eylem başarısız oldu. Widget yapılandırmasını kontrol edin." - }, "beszelSystemTable": { "name": "Beszel Sistemleri (Tablo)", "description": "Sıralanabilir sütunlar ve durum göstergeleri ile tüm Beszel tarafından izlenen sistemlerin tablo görünümü", @@ -4171,6 +3696,256 @@ "subtitle": "Docker konteynerlerinin ağ trafiği" } } + }, + "patchmon": { + "name": "PatchMon", + "description": "PatchMon'daki ana makine yama durumunun genel görünümü", + "title": "PatchMon İstatistikleri", + "totalHosts": "Toplam Ana Makine", + "hostsNeedingUpdates": "Güncelleme Gerekiyor", + "securityUpdates": "Güvenlik Güncellemeleri", + "upToDateHosts": "Güncel Ana Makineler", + "hostsWithSecurityUpdates": "Güvenlik Güncellemesi Olan Ana Makineler", + "recentUpdates24h": "Güncellemeler (24 sa.)", + "totalOutdatedPackages": "Güncel Olmayan Paketler", + "totalRepos": "Depolar", + "osDistribution": "İşletim Sistemi Dağılımı", + "compliance": "Yama Uyumluluğu", + "complianceRatio": "{upToDate} / {total}", + "lastUpdated": "Güncellendi: {time}", + "option": { + "showTotalHosts": { + "label": "Toplam ana makine sayısını göster", + "description": "İzlenen toplam ana makine sayısını gösterir" + }, + "showHostsNeedingUpdates": { + "label": "Güncelleme gereken ana makineleri göster", + "description": "En az bir güncel olmayan paketi bulunan ana makineleri gösterir" + }, + "showSecurityUpdates": { + "label": "Güvenlik güncellemelerini göster", + "description": "Kullanılabilir toplam güvenlik güncellemesi sayısını gösterir" + }, + "showUpToDateHosts": { + "label": "Güncel ana makineleri göster", + "description": "Güncel olmayan paketi bulunmayan ana makineleri gösterir" + }, + "showHostsWithSecurityUpdates": { + "label": "Güvenlik güncellemesi olan ana makineleri göster", + "description": "Güvenlik yaması gereken ana makineleri gösterir" + }, + "showRecentUpdates24h": { + "label": "Son güncellemeleri göster (24 sa.)", + "description": "Son 24 saatte uygulanan güncelleme sayısını gösterir" + }, + "showTotalOutdatedPackages": { + "label": "Güncel olmayan paketleri göster", + "description": "Tüm ana makinelerdeki güncel olmayan paketlerin toplam sayısını gösterir" + }, + "showTotalRepos": { + "label": "Depoları göster", + "description": "İzlenen etkin depo sayısını gösterir" + }, + "enableThresholdColors": { + "label": "Eşik renklerini etkinleştir", + "description": "İstatistik değerlerini önem düzeyi ön ayarlarına göre yeşil, sarı veya kırmızı renklendirir" + }, + "useCustomThresholds": { + "label": "Gelişmiş eşikler", + "description": "Her istatistik için uyarı ve kritik eşikleri mutlak sayılarla veya toplam ana makine yüzdesiyle özelleştirin" + }, + "thresholdMode": { + "option": { + "absolute": "Mutlak sayı", + "percent": "Toplam ana makinelerin yüzdesi" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "Güncelleme gereksinimi eşik modu", + "description": "Güncelleme gerekenlerin sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "Güncelleme gereksinimi uyarı eşiği", + "description": "Değer bu eşiğe ulaştığında sarı renge geçer" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "Güncelleme gereksinimi kritik eşiği", + "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" + }, + "securityUpdatesThresholdMode": { + "label": "Güvenlik güncellemeleri eşik modu", + "description": "Güvenlik güncellemesi sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" + }, + "securityUpdatesWarningAt": { + "label": "Güvenlik güncellemeleri uyarı eşiği", + "description": "Değer bu eşiğe ulaştığında sarı renge geçer" + }, + "securityUpdatesCriticalAt": { + "label": "Güvenlik güncellemeleri kritik eşiği", + "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "Güvenlik güncellemesi olan ana makineler için eşik modu", + "description": "Ana makine sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "Güvenlik güncellemesi olan ana makineler için uyarı eşiği", + "description": "Değer bu eşiğe ulaştığında sarı renge geçer" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "Güvenlik güncellemesi olan ana makineler için kritik eşik", + "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" + }, + "upToDateHostsThresholdMode": { + "label": "Güncel ana makineler için eşik modu", + "description": "Güncel ana makine sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" + }, + "upToDateHostsWarningAt": { + "label": "Güncel ana makineler için uyarı eşiği", + "description": "Değer bu eşikte veya üzerinde, ancak tam kapsamanın altındaysa sarı renge geçer" + }, + "upToDateHostsCriticalAt": { + "label": "Güncel ana makineler için kritik eşik", + "description": "Değer bu eşiğin altına düştüğünde kırmızı renge geçer" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "Güncel olmayan paketler için eşik modu", + "description": "Güncel olmayan paketlerin sayısını mutlak değer veya toplam ana makinelerin yüzdesi olarak karşılaştırır" + }, + "totalOutdatedPackagesWarningAt": { + "label": "Güncel olmayan paketler için uyarı eşiği", + "description": "Değer bu eşiğe ulaştığında sarı renge geçer" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "Güncel olmayan paketler için kritik eşik", + "description": "Değer bu eşiğe ulaştığında kırmızı renge geçer" + }, + "showOsDistribution": { + "label": "İşletim sistemi dağılımını göster", + "description": "İzlenen ana makinelerin işletim sistemine göre dağılımını gösterir" + }, + "osDistributionLimit": { + "label": "İşletim sistemi dağılımı sınırı", + "description": "Gösterilecek en fazla işletim sistemi sayısı", + "option": { + "3": "İlk 3", + "5": "İlk 5", + "10": "İlk 10", + "all": "Tümü" + } + }, + "showOsVersion": { + "label": "İşletim sistemi sürümünü göster", + "description": "Mevcut olduğunda işletim sistemi sürümünü her dağılım etiketine ekler" + }, + "showComplianceHero": { + "label": "Uyumluluk özetini göster", + "description": "Güncel ana makinelerin yüzdesini gösteren bir uyumluluk halkası görüntüler" + }, + "osDisplayMode": { + "label": "İşletim sistemi görüntüleme modu", + "description": "İşletim sistemi dağılımının nasıl gösterileceğini seçin", + "option": { + "bars": "Yatay çubuklar", + "donut": "Halka grafik" + } + } + }, + "error": { + "internalServerError": "PatchMon verileri alınamadı" + } + }, + "bazarr": { + "name": "Bazarr", + "description": "Bazarr örneğinizdeki eksik altyazıların ve sağlık durumunun genel görünümü", + "episodes": "Eksik Bölümler", + "movies": "Eksik Filmler", + "providers": "Sağlayıcı Sorunları", + "status": "Sağlık Sorunları", + "option": { + "showMissingEpisodes": { + "label": "Eksik bölümleri göster", + "description": "Altyazısı eksik bölüm sayısını gösterir" + }, + "showMissingMovies": { + "label": "Eksik filmleri göster", + "description": "Altyazısı eksik film sayısını gösterir" + }, + "showProviderIssues": { + "label": "Sağlayıcı sorunlarını göster", + "description": "Sorun yaşayan altyazı sağlayıcılarının sayısını gösterir" + }, + "showHealthIssues": { + "label": "Sağlık sorunlarını göster", + "description": "Bazarr sağlık sorunlarının sayısını gösterir" + } + }, + "error": { + "internalServerError": "Bazarr verileri alınamadı" + } + }, + "mediaMissing": { + "name": "Eksik ve Kuyruktaki Medya", + "description": "Radarr ve Sonarr'daki eksik ve kuyruğa alınmış film ve bölümleri gösterir", + "option": { + "showMissing": { + "label": "Eksik öğeleri göster" + }, + "showQueued": { + "label": "Kuyruktaki öğeleri göster" + }, + "pageSize": { + "label": "Sayfa başına öğe" + } + }, + "tab": { + "missing": "Eksik", + "queued": "Kuyrukta" + }, + "type": { + "movie": "Film", + "episode": "Bölüm" + }, + "empty": { + "missing": "Eksik öğe yok", + "queued": "Kuyrukta öğe yok", + "noTabsEnabled": "Widget ayarlarında en az bir sekmeyi etkinleştirin" + }, + "timeLeft": "Kalan süre" + }, + "traefik": { + "name": "Traefik", + "description": "Traefik yönlendiricilerinin, hizmetlerinin, ara yazılımlarının ve giriş noktalarının genel görünümü", + "option": { + "showTcp": { + "label": "TCP'yi göster" + }, + "showUdp": { + "label": "UDP'yi göster" + }, + "showEntryPoints": { + "label": "Giriş noktalarını göster" + } + }, + "instances": "Traefik örnekleri", + "versionUnknown": "Sürüm bilinmiyor", + "summary": { + "routers": "Yönlendiriciler", + "entryPoints": "Giriş noktaları" + }, + "resource": { + "routers": "Yönlendiriciler", + "services": "Hizmetler", + "middlewares": "Ara Yazılımlar" + }, + "status": { + "healthy": "Sağlıklı", + "errors": "{count} hata", + "warnings": "{count} uyarı" + }, + "error": { + "internalServerError": "Traefik verileri alınamadı" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Ana Sayfa", "boards": "Paneller", "apps": "Uygulamalar", "integrations": "Entegrasyonlar", - "customWidgets": "Özel Widget'lar", "searchEngies": "Arama Motorları", "medias": "Medyalar", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Yönet", "boards": { "label": "Paneller" @@ -5728,18 +5506,6 @@ "label": "Düzenle" } }, - "custom-widgets": { - "label": "Özel widget'lar", - "new": { - "label": "Yeni" - }, - "edit": { - "label": "Düzenle", - "flow": { - "label": "Akış" - } - } - }, "users": { "label": "Kullanıcılar", "create": { diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index fd87688e4..bfda23c7b 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -691,206 +691,11 @@ "customWidget": { "page": { "list": { - "title": "Власні віджети", - "noResults": "Поки що немає власних віджетів. Створіть свій перший!", - "loading": "Завантаження..." - }, - "create": { - "title": "Створити власний віджет", - "subtitle": "Визначте URL-адресу API, автентифікацію та спосіб показу даних відповіді." - }, - "edit": { - "title": "Редагувати власний віджет" + "title": "Власні віджети" } }, - "action": { - "create": "Створити", - "import": "Імпорт", - "save": "Зберегти", - "delete": "Видалити власний віджет", - "deleteConfirm": "Ви впевнені, що хочете видалити \"{name}\"? Цю дію неможливо скасувати.", - "export": "Експорт", - "addMapping": "Додати зіставлення", - "addColumn": "Додати стовпець", - "edit": "Редагувати", - "removeMapping": "Видалити зіставлення", - "removeColumn": "Видалити стовпець", - "addItem": "Додати елемент", - "removeItem": "Видалити елемент", - "addBar": "Додати бар", - "duplicate": "Дублікат", - "copyAiPrompt": "Копіювати запит AI", - "enable": "Увімкнути", - "disable": "Вимкнути", - "menu": "Дії" - }, - "field": { - "name": "Назва", - "description": "Опис", - "iconUrl": "URL іконки", - "url": "URL-адреса", - "authType": "Тип авторизації", - "headerName": "Назва параметра заголовок/запиту", - "method": "Метод", - "requestBody": "Текст запиту", - "displayType": "Тип для показу", - "jsonPath": "Шлях до JSON", - "jsonPathHint": "Використовуйте синтаксис JSONPath для вилучення значень, наприклад, $.data.temperature або $.items[0].name", - "label": "Мітка", - "unit": "Одиниця", - "mappings": "Зіставлення", - "tablePath": "Шлях масиву JSON", - "tablePathHint": "Шлях до масиву у відповідь, наприклад, $.data.items", - "columns": "Стовпці", - "header": "Заголовок", - "items": "Елементи", - "gridColumns": "Стовпці сітки", - "cardStyle": "Стиль картки", - "bars": "Бари", - "valuePath": "Значення JSON шлях", - "maxPath": "Макс. значення JSON шляху", - "showPercentage": "Показувати відсоток", - "barSize": "Розмір панелі", - "goodValues": "Хороші значення (розділені комами)", - "dotSize": "Розмір точки", - "valueSize": "Розмір значення", - "labelPosition": "Позиція мітки", - "kvLayout": "Макет", - "striped": "Смугасті рядки", - "compact": "Компактний режим", - "maxHeight": "Макс висота (пікс.)", - "color": "Колір", - "buttonLabel": "Підпис кнопки", - "buttonColor": "Колір кнопки", - "confirmText": "Текст підтвердження", - "confirmTextHint": "Якщо встановлено, перед виконанням запиту з’явиться діалогове вікно підтвердження", - "successMessage": "Повідомлення про успіх", - "successMessageHint": "Повідомлення яке відображається після успішного виконання", - "enabled": "Увімкнено", - "template": { - "label": "Шаблон JSX", - "description": "Шаблон Mantine JSX. Доступ до полів відповіді API через прив'язки даних (наприклад, data.name). Використовуйте лише компоненти з білого списку. Заборонено: constructor, __proto__, eval, Function, window, document." - } - }, - "placeholder": { - "exampleLabel": "Температура ЦП", - "exampleLabelShort": "Темп процесора", - "exampleHeader": "Назва", - "exampleUnit": "°C", - "iconUrl": "https://...", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.name", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "онлайн, правда, вгору", - "color": "синій" - }, - "cardStyleOption": { - "filled": "Заповнений", - "outline": "Контур", - "subtle": "Тонкий" - }, - "layoutOption": { - "list": "Список", - "grid": "Сітка" - }, - "sizeOption": { - "sm": "Малий", - "md": "Середній", - "lg": "Великий", - "xl": "Дуже великий" - }, - "labelPositionOption": { - "above": "Вище", - "below": "Нижче" - }, - "fieldset": { - "general": "Загальне", - "connection": "API підключення", - "display": "Конфігурації дисплея" - }, - "displayTypeDescription": { - "singleValue": "Показати одне витягнуте значення з міткою та одиницею вимірювання", - "keyValue": "Показати кілька позначених значень поруч", - "table": "Показати рядки даних у форматі таблиці", - "statGrid": "Кольорові картки статистики в сітці — як-от віджети Pi-Hole або Speedtest", - "progressBars": "Індикатори виконання, що показують використання або завершення — для диска, пам'яті, квот", - "statusIndicator": "Кольорові крапки стану показують онлайн/оффлайн або охорони здоров'я", - "countGrid": "Компактне число + лічильники міток у вигляді сітки", - "raw": "Гарно надрукований JSON-вивід для налагодження", - "actionButton": "Кнопка яка виконує запит при натисканні", - "customJsx": "Користувацький макет JSX з пов'язування повним API даних з білого списку" - }, - "method": { - "GET": "ОТРИМАТИ", - "POST": "СТВОРИТИ", - "PUT": "Розміщення", - "DELETE": "ВИДАЛИТИ", - "PATCH": "ПАТЧ" - }, - "authType": { - "none": "Немає", - "bearer": "Пред'явити токен", - "basic": "Базова авторизація", - "apiKeyHeader": "Ключ API (Заголовок)", - "apiKeyQuery": "Ключ API (запит)" - }, - "displayType": { - "singleValue": "Одиночні Значення", - "keyValue": "Значення ключа", - "table": "Таблиця", - "statGrid": "Статистична сітка", - "progressBars": "Індикатори прогресу", - "statusIndicator": "Індикатор стану", - "countGrid": "Кількість сіток", - "raw": "Необроблений JSON", - "actionButton": "Кнопка дії", - "customJsx": "Користувацький JSX" - }, - "secret": { - "apiKey": "Ключ API / Токен", - "username": "Ім'я користувача", - "password": "Пароль", - "savedPlaceholder": "• • • • • • (збережено, залиште порожнім, щоб зберегти)" - }, - "preview": { - "title": "Попередній перегляд", - "test": "Перевірка", - "hint": "Натисніть Тест, щоб переглянути відповідь API з поточною конфігурацією.", - "rawResponse": "Необроблена відповідь JSON" - }, "notification": { - "created": "Віджет \"{name}\" успішно створено.", - "updated": "Віджет \"{name}\" успішно оновлено.", - "deleted": "Віджет \"{name}\" видалено.", - "imported": "Віджет успішно імпортовано.", - "aiPromptCopied": "Запит ШІ скопійовано до буферу обміну", - "aiPromptDescription": "Скопіюйте запит на вставку в будь-який AI чатбот (ChatGPT, Claude, Gemini ...). Вона включає в себе повну схему віджетів і вашу API відповідь, щоб ШІ могла генерувати конфігурацію AI для вашого коректного імпортування.", - "aiPromptCopy": "Скопіювати в буфер обміну", - "aiPromptNoResponse": "Порада: Спочатку запустіть тест, щоб включити відповідь API в командний рядок для отримання кращих результатів.", - "aiPromptCopyError": "Не вдалося скопіювати запит до буфера обміну. Можливо, ваш браузер не підтримує цю функцію.", - "createError": "Не вдалося створити віджет. Перевірте кінцеву точку API.", - "updateError": "Неможливо оновити віджет. Зміни не збережено.", - "importError": "Неможливо імпортувати віджет. Переконайтеся, що файл є допустимим експортом користувацьких віджетів JSON.", - "exportError": "Не вдалося експортувати віджет.", - "duplicated": "Віджет \"{name}\" продубльовано.", - "duplicateError": "Не вдалося продублювати віджет.", - "toggleError": "Не вдалося змінити стан віджету.", - "deleteError": "Не вдалося видалити віджет.", - "previewError": "Не вдалося отримати попередній перегляд. Перевірте URL-адресу та повторіть спробу.", - "executed": "Дію успішно виконано.", - "executeError": "Дію не виконано: {error}" - }, - "table": { - "name": "Назва", - "url": "URL", - "display": "Показати" - }, - "widget": { - "disabled": "Цей віджет вимкнено" + "toggleError": "Не вдалося змінити стан віджету." } }, "integration": { @@ -2828,193 +2633,6 @@ "internalServerError": "Не вдалося отримати дані Paperless-ngx" } }, - "patchmon": { - "name": "ПатчМон", - "description": "Огляд стану патчів хоста від PatchMon", - "title": "Статистика PatchMon", - "totalHosts": "Всього хостів", - "hostsNeedingUpdates": "Потребує оновлення", - "securityUpdates": "Оновлення безпеки", - "upToDateHosts": "Оновлені хости", - "hostsWithSecurityUpdates": "Хости з оновленнями безпеки", - "recentUpdates24h": "Оновлення (24г)", - "totalOutdatedPackages": "Застарілі пакети", - "totalRepos": "Репозитарії", - "osDistribution": "Розподіл ОС", - "compliance": "Відповідність патчам", - "complianceRatio": "{upToDate} / {total}", - "lastUpdated": "Оновлено {time}", - "option": { - "showTotalHosts": { - "label": "Показати хости загалом", - "description": "Відображати загальну кількість контрольованих хостів" - }, - "showHostsNeedingUpdates": { - "label": "Показувати потрібні оновлення хостів", - "description": "Відображати хости з принаймні одним застарілим пакетом" - }, - "showSecurityUpdates": { - "label": "Показати оновлення безпеки", - "description": "Відображати загальну кількість доступних оновлень безпеки" - }, - "showUpToDateHosts": { - "label": "Показувати актуальні хости", - "description": "Відображати хостингові системи без застарілих пакетів" - }, - "showHostsWithSecurityUpdates": { - "label": "Показувати хости з оновленнями безпеки", - "description": "Показувати хости, які потребують патчів безпеки" - }, - "showRecentUpdates24h": { - "label": "Показати останні оновлення (24h)", - "description": "Відображати кількість оновлень, застосованих за останні 24 години" - }, - "showTotalOutdatedPackages": { - "label": "Показати застарілі пакети", - "description": "Відображати загальну кількість застарілих пакетів у всіх хостах" - }, - "showTotalRepos": { - "label": "Показати репозиторії", - "description": "Відображати кількість активних репозиторіїв, що відслідковуються" - }, - "enableThresholdColors": { - "label": "Увімкнути кольори порогових значень", - "description": "Значення колірних характеристик: зелений, жовтий або червоний, залежно від пресетів серйозності" - }, - "useCustomThresholds": { - "label": "Розширені пороги", - "description": "Налаштуйте пороги попереджень та критичних значень для кожної статистики, використовуючи абсолютні показники або відсотки від загальної кількості хостів" - }, - "thresholdMode": { - "option": { - "absolute": "Абсолютна кількість", - "percent": "Відсоток від загальної кількості хостів" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "Потрібен поріг оновлення", - "description": "Порівняйте оновлення як абсолютне значення або відсоток від загальної кількості хостів" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "Поріг попередження про нові оновлення", - "description": "Вмикається жовтий колір, коли значення досягає цього порогового значення" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "Потребує оновлення критичного порогу", - "description": "Вмикається червоний коли значення досягає цього порогу" - }, - "securityUpdatesThresholdMode": { - "label": "Режим оновлення системи безпеки", - "description": "Порівняйте оновлення безпеки як абсолютне значення або відсоток від загальної кількості хостів" - }, - "securityUpdatesWarningAt": { - "label": "Поріг попередження про оновлення безпеки", - "description": "Вмикається жовтий колір, коли значення досягає цього порогового значення" - }, - "securityUpdatesCriticalAt": { - "label": "Критичний поріг оновлення системи безпеки", - "description": "Вмикається червоний коли значення досягає цього порогу" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "Хости з режимом порогу оновлень безпеки", - "description": "Порівняйте кількість хостів як абсолютне значення або відсоток від загальної кількості хостів" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "Хости з попередженням про оновлення безпеки", - "description": "Вмикається жовтий колір коли значення досягає цього порогу" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "Хости з критичним порогом оновлення безпеки", - "description": "Вмикається червоний коли значення досягає цього порогу" - }, - "upToDateHostsThresholdMode": { - "label": "Оновлений режим порогового хостів", - "description": "Порівняйте актуальний хост як абсолютне значення або відсоток від загальної кількості хостів" - }, - "upToDateHostsWarningAt": { - "label": "Поріг попередження для актуальних хостів", - "description": "Вмикається жовтий колір, коли значення дорівнює або перевищує цей поріг, але нижче повного покриття." - }, - "upToDateHostsCriticalAt": { - "label": "Критичний поріг для оновлених хостів", - "description": "Вмикається червоний, коли значення падає нижче цього порогу" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "Режим порогу застарілих пакетів", - "description": "Порівняйте застарілі пакети як абсолютне значення або відсоток від загальної кількості хостів" - }, - "totalOutdatedPackagesWarningAt": { - "label": "Поріг попередження про застарілі пакети", - "description": "Вмикається жовтий, коли значення досягає цього порогу" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "Критичний поріг застарілих пакетів", - "description": "Вмикається червоний коли значення досягає цього порогу" - }, - "showOsDistribution": { - "label": "Показати розподіл ОС", - "description": "Показати розподіл контрольованих хостів операційною системою" - }, - "osDistributionLimit": { - "label": "Обмеження розподілу ОС", - "description": "Максимальна кількість операційних систем для відображення", - "option": { - "3": "Топ 3", - "5": "Тор 5", - "10": "Топ 10", - "all": "Усі" - } - }, - "showOsVersion": { - "label": "Показати версію ОС", - "description": "Додавати версію ОС до кожної мітки дистрибуції, коли вона стане доступною" - }, - "showComplianceHero": { - "label": "Показати героя відповідності", - "description": "Відображати кільце відповідності, яке показує відсоток оновлених хостів" - }, - "osDisplayMode": { - "label": "Режим відображення ОС", - "description": "Виберіть спосіб відображення дистрибутива операційної системи", - "option": { - "bars": "Горизонтальні смуги", - "donut": "Кільцева діаграма" - } - } - }, - "error": { - "internalServerError": "Не вдалося отримати дані PatchMon" - } - }, - "bazarr": { - "name": "Bazarr", - "description": "Огляд відсутніх субтитрів та стану справності вашого екземпляра Bazarr", - "episodes": "Відсутні епізоди", - "movies": "Відсутні фільми", - "providers": "Проблеми p постачальником", - "status": "Проблеми зі здоров'ям", - "option": { - "showMissingEpisodes": { - "label": "Показати відсутні епізоди", - "description": "Відображати кількість епізодів без субтититрів" - }, - "showMissingMovies": { - "label": "Показати відсутні фільми", - "description": "Відобразити кількість фільмів без субтитрів" - }, - "showProviderIssues": { - "label": "Показати проблеми постачальника", - "description": "Відображати кількість постачальника субтитрів з проблемами" - }, - "showHealthIssues": { - "label": "Показувати проблеми зі здоров’ям", - "description": "Відображати кількість проблем зі здоров’ям Bazarr" - } - }, - "error": { - "internalServerError": "Не вдалося отримати дані Bazarr" - } - }, "immich-serverStats": { "name": "Статистика Immich на сервері", "description": "Інформація про Ваш екземпляр Immich", @@ -3387,35 +3005,6 @@ } } }, - "mediaMissing": { - "name": "Відсутня медіа в черзі", - "description": "Показує відсутні і в черзі фільми і епізоди з Radarr і Sonarr", - "option": { - "showMissing": { - "label": "Показати відсутні елементи" - }, - "showQueued": { - "label": "Показати елементи в черзі" - }, - "pageSize": { - "label": "Елементів на сторінці" - } - }, - "tab": { - "missing": "Відсутні", - "queued": "У черзі" - }, - "type": { - "movie": "Фільм", - "episode": "Епізод" - }, - "empty": { - "missing": "Немає відсутніх елементів", - "queued": "Немає елементів у черзі", - "noTabsEnabled": "Увімкнути принаймні одну вкладку в налаштуваннях віджету" - }, - "timeLeft": "Залишилося часу" - }, "rssFeed": { "name": "RSS-канали", "description": "Моніторинг та відображення однієї або кількох загальних RSS-, ATOM- або JSON-стрічок", @@ -3744,40 +3333,6 @@ "internalServerError": "Не вдалося отримати дані про час роботи" } }, - "traefik": { - "name": "Трафік", - "description": "Огляд маршрутизаторів, сервісів, проміжного програмного забезпечення та точок входу Traefik", - "option": { - "showTcp": { - "label": "Показати TCP" - }, - "showUdp": { - "label": "Show UDP" - }, - "showEntryPoints": { - "label": "Показувати точки входу" - } - }, - "instances": "Traefik екземпляри", - "versionUnknown": "Версія невідома", - "summary": { - "routers": "Маршрутизатори", - "entryPoints": "Точки входу" - }, - "resource": { - "routers": "Маршрутизатори", - "services": "Служби", - "middlewares": "Проміжне програмне забезпечення" - }, - "status": { - "healthy": "Здоровий", - "errors": "{count} помилок", - "warnings": "{count} застережень" - }, - "error": { - "internalServerError": "Неможливо отримати дані Traefik" - } - }, "audioStats": { "name": "Статистика аудіо", "description": "Бібліотека і відтворення статистики з Navidrome або Audiobookf", @@ -3901,26 +3456,6 @@ "unhealthy": "Нездоровий" } }, - "customApi": { - "name": "Користувацький API", - "description": "Відображення даних з будь-якої зовнішньої API з користувальницької конфігурації.", - "option": { - "definitionId": { - "label": "Ідентифікатор визначення" - }, - "refreshInterval": { - "label": "Інтервал оновлення", - "description": "Як часто слід оновлювати дані з API (в секундах)" - } - }, - "noDefinition": "Не обрано визначення", - "definitionNotFound": "Визначення віджета не знайдено. Можливо, його видалено.", - "noDisplayOutput": "Без виводу на екран", - "executeConfirm": "Ви впевнені, що хочете виконати цю дію?", - "executing": "Виконання...", - "executeSuccess": "Дія успішно виконана", - "executeFailed": "Не вдалося виконати дію. Перевірте налаштування віджету." - }, "beszelSystemTable": { "name": "Beszel системи (Таблиця)", "description": "Вид таблиць всіх систем, що контролюються в Beszel, з сортованими стовпцями і індикатори стану", @@ -4171,6 +3706,256 @@ "subtitle": "Мережевий трафік Docker контейнерів" } } + }, + "patchmon": { + "name": "ПатчМон", + "description": "Огляд стану патчів хоста від PatchMon", + "title": "Статистика PatchMon", + "totalHosts": "Всього хостів", + "hostsNeedingUpdates": "Потребує оновлення", + "securityUpdates": "Оновлення безпеки", + "upToDateHosts": "Оновлені хости", + "hostsWithSecurityUpdates": "Хости з оновленнями безпеки", + "recentUpdates24h": "Оновлення (24г)", + "totalOutdatedPackages": "Застарілі пакети", + "totalRepos": "Репозитарії", + "osDistribution": "Розподіл ОС", + "compliance": "Відповідність патчам", + "complianceRatio": "{upToDate} / {total}", + "lastUpdated": "Оновлено {time}", + "option": { + "showTotalHosts": { + "label": "Показати хости загалом", + "description": "Відображати загальну кількість контрольованих хостів" + }, + "showHostsNeedingUpdates": { + "label": "Показувати потрібні оновлення хостів", + "description": "Відображати хости з принаймні одним застарілим пакетом" + }, + "showSecurityUpdates": { + "label": "Показати оновлення безпеки", + "description": "Відображати загальну кількість доступних оновлень безпеки" + }, + "showUpToDateHosts": { + "label": "Показувати актуальні хости", + "description": "Відображати хостингові системи без застарілих пакетів" + }, + "showHostsWithSecurityUpdates": { + "label": "Показувати хости з оновленнями безпеки", + "description": "Показувати хости, які потребують патчів безпеки" + }, + "showRecentUpdates24h": { + "label": "Показати останні оновлення (24h)", + "description": "Відображати кількість оновлень, застосованих за останні 24 години" + }, + "showTotalOutdatedPackages": { + "label": "Показати застарілі пакети", + "description": "Відображати загальну кількість застарілих пакетів у всіх хостах" + }, + "showTotalRepos": { + "label": "Показати репозиторії", + "description": "Відображати кількість активних репозиторіїв, що відслідковуються" + }, + "enableThresholdColors": { + "label": "Увімкнути кольори порогових значень", + "description": "Значення колірних характеристик: зелений, жовтий або червоний, залежно від пресетів серйозності" + }, + "useCustomThresholds": { + "label": "Розширені пороги", + "description": "Налаштуйте пороги попереджень та критичних значень для кожної статистики, використовуючи абсолютні показники або відсотки від загальної кількості хостів" + }, + "thresholdMode": { + "option": { + "absolute": "Абсолютна кількість", + "percent": "Відсоток від загальної кількості хостів" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "Потрібен поріг оновлення", + "description": "Порівняйте оновлення як абсолютне значення або відсоток від загальної кількості хостів" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "Поріг попередження про нові оновлення", + "description": "Вмикається жовтий колір, коли значення досягає цього порогового значення" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "Потребує оновлення критичного порогу", + "description": "Вмикається червоний коли значення досягає цього порогу" + }, + "securityUpdatesThresholdMode": { + "label": "Режим оновлення системи безпеки", + "description": "Порівняйте оновлення безпеки як абсолютне значення або відсоток від загальної кількості хостів" + }, + "securityUpdatesWarningAt": { + "label": "Поріг попередження про оновлення безпеки", + "description": "Вмикається жовтий колір, коли значення досягає цього порогового значення" + }, + "securityUpdatesCriticalAt": { + "label": "Критичний поріг оновлення системи безпеки", + "description": "Вмикається червоний коли значення досягає цього порогу" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "Хости з режимом порогу оновлень безпеки", + "description": "Порівняйте кількість хостів як абсолютне значення або відсоток від загальної кількості хостів" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "Хости з попередженням про оновлення безпеки", + "description": "Вмикається жовтий колір коли значення досягає цього порогу" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "Хости з критичним порогом оновлення безпеки", + "description": "Вмикається червоний коли значення досягає цього порогу" + }, + "upToDateHostsThresholdMode": { + "label": "Оновлений режим порогового хостів", + "description": "Порівняйте актуальний хост як абсолютне значення або відсоток від загальної кількості хостів" + }, + "upToDateHostsWarningAt": { + "label": "Поріг попередження для актуальних хостів", + "description": "Вмикається жовтий колір, коли значення дорівнює або перевищує цей поріг, але нижче повного покриття." + }, + "upToDateHostsCriticalAt": { + "label": "Критичний поріг для оновлених хостів", + "description": "Вмикається червоний, коли значення падає нижче цього порогу" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "Режим порогу застарілих пакетів", + "description": "Порівняйте застарілі пакети як абсолютне значення або відсоток від загальної кількості хостів" + }, + "totalOutdatedPackagesWarningAt": { + "label": "Поріг попередження про застарілі пакети", + "description": "Вмикається жовтий, коли значення досягає цього порогу" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "Критичний поріг застарілих пакетів", + "description": "Вмикається червоний коли значення досягає цього порогу" + }, + "showOsDistribution": { + "label": "Показати розподіл ОС", + "description": "Показати розподіл контрольованих хостів операційною системою" + }, + "osDistributionLimit": { + "label": "Обмеження розподілу ОС", + "description": "Максимальна кількість операційних систем для відображення", + "option": { + "3": "Топ 3", + "5": "Тор 5", + "10": "Топ 10", + "all": "Усі" + } + }, + "showOsVersion": { + "label": "Показати версію ОС", + "description": "Додавати версію ОС до кожної мітки дистрибуції, коли вона стане доступною" + }, + "showComplianceHero": { + "label": "Показати героя відповідності", + "description": "Відображати кільце відповідності, яке показує відсоток оновлених хостів" + }, + "osDisplayMode": { + "label": "Режим відображення ОС", + "description": "Виберіть спосіб відображення дистрибутива операційної системи", + "option": { + "bars": "Горизонтальні смуги", + "donut": "Кільцева діаграма" + } + } + }, + "error": { + "internalServerError": "Не вдалося отримати дані PatchMon" + } + }, + "bazarr": { + "name": "Bazarr", + "description": "Огляд відсутніх субтитрів та стану справності вашого екземпляра Bazarr", + "episodes": "Відсутні епізоди", + "movies": "Відсутні фільми", + "providers": "Проблеми p постачальником", + "status": "Проблеми зі здоров'ям", + "option": { + "showMissingEpisodes": { + "label": "Показати відсутні епізоди", + "description": "Відображати кількість епізодів без субтититрів" + }, + "showMissingMovies": { + "label": "Показати відсутні фільми", + "description": "Відобразити кількість фільмів без субтитрів" + }, + "showProviderIssues": { + "label": "Показати проблеми постачальника", + "description": "Відображати кількість постачальника субтитрів з проблемами" + }, + "showHealthIssues": { + "label": "Показувати проблеми зі здоров’ям", + "description": "Відображати кількість проблем зі здоров’ям Bazarr" + } + }, + "error": { + "internalServerError": "Не вдалося отримати дані Bazarr" + } + }, + "mediaMissing": { + "name": "Відсутня медіа в черзі", + "description": "Показує відсутні і в черзі фільми і епізоди з Radarr і Sonarr", + "option": { + "showMissing": { + "label": "Показати відсутні елементи" + }, + "showQueued": { + "label": "Показати елементи в черзі" + }, + "pageSize": { + "label": "Елементів на сторінці" + } + }, + "tab": { + "missing": "Відсутні", + "queued": "У черзі" + }, + "type": { + "movie": "Фільм", + "episode": "Епізод" + }, + "empty": { + "missing": "Немає відсутніх елементів", + "queued": "Немає елементів у черзі", + "noTabsEnabled": "Увімкнути принаймні одну вкладку в налаштуваннях віджету" + }, + "timeLeft": "Залишилося часу" + }, + "traefik": { + "name": "Трафік", + "description": "Огляд маршрутизаторів, сервісів, проміжного програмного забезпечення та точок входу Traefik", + "option": { + "showTcp": { + "label": "Показати TCP" + }, + "showUdp": { + "label": "Show UDP" + }, + "showEntryPoints": { + "label": "Показувати точки входу" + } + }, + "instances": "Traefik екземпляри", + "versionUnknown": "Версія невідома", + "summary": { + "routers": "Маршрутизатори", + "entryPoints": "Точки входу" + }, + "resource": { + "routers": "Маршрутизатори", + "services": "Служби", + "middlewares": "Проміжне програмне забезпечення" + }, + "status": { + "healthy": "Здоровий", + "errors": "{count} помилок", + "warnings": "{count} застережень" + }, + "error": { + "internalServerError": "Неможливо отримати дані Traefik" + } } }, "widgetPreview": { @@ -4551,11 +4336,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "Головна", "boards": "Дошки", "apps": "Додатки", "integrations": "Інтеграції", - "customWidgets": "Власні віджети", "searchEngies": "Пошукові системи", "medias": "Медіа", "users": { @@ -5694,6 +5479,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "Керувати", "boards": { "label": "Дошки" @@ -5728,18 +5516,6 @@ "label": "Редагувати" } }, - "custom-widgets": { - "label": "Користувальницькі віджети", - "new": { - "label": "Новий" - }, - "edit": { - "label": "Редагувати", - "flow": { - "label": "Потік" - } - } - }, "users": { "label": "Користувачі", "create": { diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 58e679768..310cbf845 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -688,211 +688,6 @@ "add": "新增應用程式" } }, - "customWidget": { - "page": { - "list": { - "title": "自訂小工具", - "noResults": "尚無自訂小工具。建立您的第一個!", - "loading": "正在讀取……" - }, - "create": { - "title": "建立自訂小工具", - "subtitle": "定義 API URL、驗證方式以及如何顯示回應資料。" - }, - "edit": { - "title": "編輯自訂小工具" - } - }, - "action": { - "create": "建立", - "import": "匯入", - "save": "儲存", - "delete": "刪除自訂小工具", - "deleteConfirm": "確定要刪除 \"{name}\" 嗎?此動作無法復原。", - "export": "匯出", - "addMapping": "新增對應", - "addColumn": "新增欄", - "edit": "編輯", - "removeMapping": "移除對應", - "removeColumn": "移除欄", - "addItem": "新增項目", - "removeItem": "移除項目", - "addBar": "新增長條", - "duplicate": "複製", - "copyAiPrompt": "複製 AI 提示", - "enable": "啟用", - "disable": "停用", - "menu": "動作" - }, - "field": { - "name": "名稱", - "description": "描述", - "iconUrl": "圖示網址", - "url": "網址", - "authType": "驗證類型", - "headerName": "標頭/查詢參數名稱", - "method": "方法", - "requestBody": "請求主體", - "displayType": "顯示類型", - "jsonPath": "JSON 路徑", - "jsonPathHint": "使用 JSONPath 語法來擷取值,例如 $.data.temperature 或 $.items[0].name", - "label": "標籤", - "unit": "單位", - "mappings": "對應", - "tablePath": "陣列 JSON 路徑", - "tablePathHint": "回應中陣列的路徑,例如 $.data.items", - "columns": "欄", - "header": "標頭", - "items": "項目", - "gridColumns": "網格欄", - "cardStyle": "卡片樣式", - "bars": "長條", - "valuePath": "值 JSON 路徑", - "maxPath": "最大值 JSON 路徑", - "showPercentage": "顯示百分比", - "barSize": "長條大小", - "goodValues": "良好值 (逗號分隔)", - "dotSize": "點大小", - "valueSize": "值大小", - "labelPosition": "標籤位置", - "kvLayout": "佈局", - "striped": "條紋列", - "compact": "精簡模式", - "maxHeight": "最大高度 (像素)", - "color": "顏色", - "buttonLabel": "按鈕標籤", - "buttonColor": "按鈕顏色", - "confirmText": "確認文字", - "confirmTextHint": "若設定,執行請求前會顯示確認對話框", - "successMessage": "成功訊息", - "successMessageHint": "執行成功後顯示的訊息", - "enabled": "已啟用", - "template": { - "label": "JSX 樣板", - "description": "Mantine JSX 樣板。透過資料綁定存取 API 回應欄位 (例如 data.name)。僅使用白名單中的組件。禁止: constructor, __proto__, eval, Function, window, document。" - } - }, - "placeholder": { - "exampleLabel": "CPU 溫度", - "exampleLabelShort": "CPU 溫度", - "exampleHeader": "名稱", - "exampleUnit": "°C", - "iconUrl": "https://……", - "url": "https://api.example.com/api/v1/status", - "headerName": "X-API-Key", - "jsonPath": "$.data.value", - "tablePath": "$.data.items", - "columnJsonPath": "$.name", - "valuePath": "$.data.used", - "maxPath": "$.data.total", - "goodValues": "online, true, up", - "color": "blue" - }, - "cardStyleOption": { - "filled": "填滿", - "outline": "外框", - "subtle": "細微" - }, - "layoutOption": { - "list": "清單", - "grid": "網格" - }, - "sizeOption": { - "sm": "小", - "md": "中", - "lg": "大", - "xl": "特大" - }, - "labelPositionOption": { - "above": "上方", - "below": "下方" - }, - "fieldset": { - "general": "一般", - "connection": "API 連線", - "display": "顯示設定" - }, - "displayTypeDescription": { - "singleValue": "顯示一個帶有標籤和單位的擷取值", - "keyValue": "並排顯示多個帶有標籤的值", - "table": "以表格格式顯示資料列", - "statGrid": "以網格形式顯示彩色統計卡 — 類似 Pi-Hole 或 Speedtest 小工具", - "progressBars": "顯示使用量或完成度的進度條 — 適用於磁碟、記憶體、配額", - "statusIndicator": "彩色狀態點顯示線上/離線或健康狀態", - "countGrid": "在緊湊的網格中顯示精簡的數字 + 標籤計數器", - "raw": "用於偵錯的美化 JSON 輸出", - "actionButton": "點擊時觸發請求的按鈕", - "customJsx": "使用白名單 Mantine 組件的自訂 JSX 佈局,具有完整的 API 資料綁定" - }, - "method": { - "GET": "GET", - "POST": "POST", - "PUT": "PUT", - "DELETE": "DELETE", - "PATCH": "PATCH" - }, - "authType": { - "none": "無", - "bearer": "Bearer 令牌", - "basic": "基本驗證", - "apiKeyHeader": "API 金鑰 (標頭)", - "apiKeyQuery": "API 金鑰 (查詢)" - }, - "displayType": { - "singleValue": "單一值", - "keyValue": "鍵值", - "table": "表格", - "statGrid": "統計網格", - "progressBars": "進度條", - "statusIndicator": "狀態指示器", - "countGrid": "計數網格", - "raw": "原始 JSON", - "actionButton": "動作按鈕", - "customJsx": "自訂 JSX" - }, - "secret": { - "apiKey": "API 金鑰 / 令牌", - "username": "使用者名稱", - "password": "密碼", - "savedPlaceholder": "••••••• (已儲存,留空則保持不變)" - }, - "preview": { - "title": "預覽", - "test": "測試", - "hint": "點擊「測試」以用目前設定預覽 API 回應。", - "rawResponse": "原始 JSON 回應" - }, - "notification": { - "created": "小工具 \"{name}\" 建立成功。", - "updated": "小工具 \"{name}\" 更新成功。", - "deleted": "小工具 \"{name}\" 已刪除。", - "imported": "小工具匯入成功。", - "aiPromptCopied": "AI 提示已複製到剪貼簿", - "aiPromptDescription": "複製預先構建的提示,貼到任何 AI 聊天機器人 (ChatGPT、Claude、Gemini...)。其中包含完整的小工具綱要和您的 API 回應,讓 AI 能為您產生可直接匯入的 JSON 設定。", - "aiPromptCopy": "複製到剪貼簿", - "aiPromptNoResponse": "提示: 先執行測試將您的 API 回應包含在提示中,以獲得更好的結果。", - "aiPromptCopyError": "無法將提示複製到剪貼簿。您的瀏覽器可能不支援此功能。", - "createError": "建立小工具失敗。請檢查 API 端點是否可達。", - "updateError": "更新小工具失敗。您的變更未被儲存。", - "importError": "匯入小工具失敗。請確保檔案是有效的自訂小工具 JSON 匯出。", - "exportError": "匯出小工具失敗。", - "duplicated": "小工具 \"{name}\" 已複製。", - "duplicateError": "複製小工具失敗。", - "toggleError": "切換小工具狀態失敗。", - "deleteError": "刪除小工具失敗。", - "previewError": "無法取得預覽。請檢查網址並重試。", - "executed": "動作執行成功。", - "executeError": "動作失敗: {error}" - }, - "table": { - "name": "名稱", - "url": "網址", - "display": "顯示" - }, - "widget": { - "disabled": "此小工具已停用" - } - }, "integration": { "page": { "list": { @@ -2828,193 +2623,6 @@ "internalServerError": "無法取得 Paperless-ngx 資料" } }, - "patchmon": { - "name": "PatchMon", - "description": "來自 PatchMon 的主機修補狀態概覽", - "title": "PatchMon 統計", - "totalHosts": "主機總數", - "hostsNeedingUpdates": "需要更新", - "securityUpdates": "安全性更新", - "upToDateHosts": "已更新至最新", - "hostsWithSecurityUpdates": "有安全性更新的主機", - "recentUpdates24h": "更新 (24h)", - "totalOutdatedPackages": "過時套件", - "totalRepos": "儲存庫", - "osDistribution": "作業系統分佈", - "compliance": "修補合規性", - "complianceRatio": "{upToDate} / {total}", - "lastUpdated": "更新於 {time}", - "option": { - "showTotalHosts": { - "label": "顯示主機總數", - "description": "顯示受監控的主機總數" - }, - "showHostsNeedingUpdates": { - "label": "顯示需要更新的主機", - "description": "顯示至少有一個過時套件的主機" - }, - "showSecurityUpdates": { - "label": "顯示安全性更新總數", - "description": "顯示可用的安全性更新總數" - }, - "showUpToDateHosts": { - "label": "顯示已更新至最新主機", - "description": "顯示沒有任何過時套件的主機" - }, - "showHostsWithSecurityUpdates": { - "label": "顯示有安全性更新的主機", - "description": "顯示需要安全性修補的主機" - }, - "showRecentUpdates24h": { - "label": "顯示近期更新 (24h)", - "description": "顯示過去 24 小時內已套用的更新數量" - }, - "showTotalOutdatedPackages": { - "label": "顯示過時套件總數", - "description": "顯示所有主機上過時套件的總數" - }, - "showTotalRepos": { - "label": "顯示儲存庫數量", - "description": "顯示正在監控的活躍儲存庫數量" - }, - "enableThresholdColors": { - "label": "啟用閾值顏色", - "description": "根據嚴重性預設將統計值著色為綠色、黃色或紅色" - }, - "useCustomThresholds": { - "label": "進階閾值", - "description": "使用絕對計數或主機總數百分比,對每個統計值自訂警告和嚴重閾值" - }, - "thresholdMode": { - "option": { - "absolute": "絕對計數", - "percent": "主機總數百分比" - } - }, - "hostsNeedingUpdatesThresholdMode": { - "label": "需要更新閾值模式", - "description": "以絕對值或主機總數百分比比較需要更新的計數" - }, - "hostsNeedingUpdatesWarningAt": { - "label": "需要更新警告閾值", - "description": "數值達到此閾值時轉為黃色" - }, - "hostsNeedingUpdatesCriticalAt": { - "label": "需要更新嚴重閾值", - "description": "數值達到此閾值時轉為紅色" - }, - "securityUpdatesThresholdMode": { - "label": "安全性更新閾值模式", - "description": "以絕對值或主機總數百分比比較安全性更新的計數" - }, - "securityUpdatesWarningAt": { - "label": "安全性更新警告閾值", - "description": "數值達到此閾值時轉為黃色" - }, - "securityUpdatesCriticalAt": { - "label": "安全性更新嚴重閾值", - "description": "數值達到此閾值時轉為紅色" - }, - "hostsWithSecurityUpdatesThresholdMode": { - "label": "有安全性更新主機閾值模式", - "description": "以絕對值或主機總數百分比比較主機計數" - }, - "hostsWithSecurityUpdatesWarningAt": { - "label": "有安全性更新主機警告閾值", - "description": "數值達到此閾值時轉為黃色" - }, - "hostsWithSecurityUpdatesCriticalAt": { - "label": "有安全性更新主機嚴重閾值", - "description": "數值達到此閾值時轉為紅色" - }, - "upToDateHostsThresholdMode": { - "label": "已更新至最新主機閾值模式", - "description": "以絕對值或主機總數百分比比較已更新至最新主機計數" - }, - "upToDateHostsWarningAt": { - "label": "已更新至最新主機警告閾值", - "description": "數值達到或高於此閾值但低於全覆蓋時轉為黃色" - }, - "upToDateHostsCriticalAt": { - "label": "已更新至最新主機嚴重閾值", - "description": "數值低於此閾值時轉為紅色" - }, - "totalOutdatedPackagesThresholdMode": { - "label": "過時套件閾值模式", - "description": "以絕對值或主機總數百分比比較過時套件計數" - }, - "totalOutdatedPackagesWarningAt": { - "label": "過時套件警告閾值", - "description": "數值達到此閾值時轉為黃色" - }, - "totalOutdatedPackagesCriticalAt": { - "label": "過時套件嚴重閾值", - "description": "數值達到此閾值時轉為紅色" - }, - "showOsDistribution": { - "label": "顯示作業系統分佈", - "description": "顯示按作業系統細分的受監控主機" - }, - "osDistributionLimit": { - "label": "作業系統分佈限制", - "description": "最多顯示的作業系統數量", - "option": { - "3": "前 3 名", - "5": "前 5 名", - "10": "前 10 名", - "all": "全部" - } - }, - "showOsVersion": { - "label": "顯示作業系統版本", - "description": "當可用時,在每個分佈標籤後附加作業系統版本" - }, - "showComplianceHero": { - "label": "顯示合規性英雄", - "description": "顯示一個合規性環,展示已更新至最新主機的百分比" - }, - "osDisplayMode": { - "label": "作業系統顯示模式", - "description": "選擇如何顯示作業系統分佈", - "option": { - "bars": "水平長條", - "donut": "甜甜圈圖" - } - } - }, - "error": { - "internalServerError": "無法擷取 PatchMon 資料" - } - }, - "bazarr": { - "name": "Bazarr", - "description": "來自 Bazarr 實例的缺少字幕和健康狀態概覽", - "episodes": "缺少的集數", - "movies": "缺少的電影", - "providers": "提供者問題", - "status": "健康問題", - "option": { - "showMissingEpisodes": { - "label": "顯示缺少的集數", - "description": "顯示缺少字幕的集數數量" - }, - "showMissingMovies": { - "label": "顯示缺少的電影", - "description": "顯示缺少字幕的電影數量" - }, - "showProviderIssues": { - "label": "顯示提供者問題", - "description": "顯示有問題的字幕提供者數量" - }, - "showHealthIssues": { - "label": "顯示健康問題", - "description": "顯示 Bazarr 健康問題的數量" - } - }, - "error": { - "internalServerError": "無法擷取 Bazarr 資料" - } - }, "immich-serverStats": { "name": "", "description": "", @@ -3387,35 +2995,6 @@ } } }, - "mediaMissing": { - "name": "缺少和佇列中的媒體", - "description": "顯示來自 Radarr 和 Sonarr 的缺少和佇列中的電影及影集", - "option": { - "showMissing": { - "label": "顯示缺少的項目" - }, - "showQueued": { - "label": "顯示佇列中的項目" - }, - "pageSize": { - "label": "每頁項目數" - } - }, - "tab": { - "missing": "缺少", - "queued": "佇列中" - }, - "type": { - "movie": "電影", - "episode": "集數" - }, - "empty": { - "missing": "沒有缺少的項目", - "queued": "沒有佇列中的項目", - "noTabsEnabled": "在小工具設定中至少啟用一個分頁" - }, - "timeLeft": "剩餘時間" - }, "rssFeed": { "name": "RSS 訂閱", "description": "顯示一個或多個 RSS、ATOM、JSON 源", @@ -3744,40 +3323,6 @@ "internalServerError": "無法取得運作時間資料" } }, - "traefik": { - "name": "Traefik", - "description": "Traefik 路由器、服務、中間件和入口點概覽", - "option": { - "showTcp": { - "label": "顯示 TCP" - }, - "showUdp": { - "label": "顯示 UDP" - }, - "showEntryPoints": { - "label": "顯示入口點" - } - }, - "instances": "Traefik 實例", - "versionUnknown": "版本未知", - "summary": { - "routers": "路由器", - "entryPoints": "入口點" - }, - "resource": { - "routers": "路由器", - "services": "服務", - "middlewares": "中間件" - }, - "status": { - "healthy": "健康", - "errors": "{count} 個錯誤", - "warnings": "{count} 個警告" - }, - "error": { - "internalServerError": "無法擷取 Traefik 資料" - } - }, "audioStats": { "name": "音訊統計", "description": "來自 Navidrome 或 Audiobookshelf 的資料庫和播放統計資料", @@ -3901,26 +3446,6 @@ "unhealthy": "" } }, - "customApi": { - "name": "自訂 API", - "description": "使用自訂設定顯示來自任何外部 API 的資料。", - "option": { - "definitionId": { - "label": "定義 ID" - }, - "refreshInterval": { - "label": "重新整理間隔", - "description": "從 API 重新擷取資料的頻率 (秒)" - } - }, - "noDefinition": "未選擇定義", - "definitionNotFound": "找不到小工具定義。可能已被刪除。", - "noDisplayOutput": "無顯示輸出", - "executeConfirm": "確定要執行此動作嗎?", - "executing": "正在執行……", - "executeSuccess": "動作執行成功", - "executeFailed": "動作失敗。請檢查小工具設定。" - }, "beszelSystemTable": { "name": "Beszel 系統(表格)", "description": "所有 Beszel 監控系統的表格檢視,帶有可排序的欄位和狀態指示器", @@ -4171,6 +3696,256 @@ "subtitle": "Docker 容器的網路流量" } } + }, + "patchmon": { + "name": "PatchMon", + "description": "來自 PatchMon 的主機修補狀態概覽", + "title": "PatchMon 統計", + "totalHosts": "主機總數", + "hostsNeedingUpdates": "需要更新", + "securityUpdates": "安全性更新", + "upToDateHosts": "已更新至最新", + "hostsWithSecurityUpdates": "有安全性更新的主機", + "recentUpdates24h": "更新 (24h)", + "totalOutdatedPackages": "過時套件", + "totalRepos": "儲存庫", + "osDistribution": "作業系統分佈", + "compliance": "修補合規性", + "complianceRatio": "{upToDate} / {total}", + "lastUpdated": "更新於 {time}", + "option": { + "showTotalHosts": { + "label": "顯示主機總數", + "description": "顯示受監控的主機總數" + }, + "showHostsNeedingUpdates": { + "label": "顯示需要更新的主機", + "description": "顯示至少有一個過時套件的主機" + }, + "showSecurityUpdates": { + "label": "顯示安全性更新總數", + "description": "顯示可用的安全性更新總數" + }, + "showUpToDateHosts": { + "label": "顯示已更新至最新主機", + "description": "顯示沒有任何過時套件的主機" + }, + "showHostsWithSecurityUpdates": { + "label": "顯示有安全性更新的主機", + "description": "顯示需要安全性修補的主機" + }, + "showRecentUpdates24h": { + "label": "顯示近期更新 (24h)", + "description": "顯示過去 24 小時內已套用的更新數量" + }, + "showTotalOutdatedPackages": { + "label": "顯示過時套件總數", + "description": "顯示所有主機上過時套件的總數" + }, + "showTotalRepos": { + "label": "顯示儲存庫數量", + "description": "顯示正在監控的活躍儲存庫數量" + }, + "enableThresholdColors": { + "label": "啟用閾值顏色", + "description": "根據嚴重性預設將統計值著色為綠色、黃色或紅色" + }, + "useCustomThresholds": { + "label": "進階閾值", + "description": "使用絕對計數或主機總數百分比,對每個統計值自訂警告和嚴重閾值" + }, + "thresholdMode": { + "option": { + "absolute": "絕對計數", + "percent": "主機總數百分比" + } + }, + "hostsNeedingUpdatesThresholdMode": { + "label": "需要更新閾值模式", + "description": "以絕對值或主機總數百分比比較需要更新的計數" + }, + "hostsNeedingUpdatesWarningAt": { + "label": "需要更新警告閾值", + "description": "數值達到此閾值時轉為黃色" + }, + "hostsNeedingUpdatesCriticalAt": { + "label": "需要更新嚴重閾值", + "description": "數值達到此閾值時轉為紅色" + }, + "securityUpdatesThresholdMode": { + "label": "安全性更新閾值模式", + "description": "以絕對值或主機總數百分比比較安全性更新的計數" + }, + "securityUpdatesWarningAt": { + "label": "安全性更新警告閾值", + "description": "數值達到此閾值時轉為黃色" + }, + "securityUpdatesCriticalAt": { + "label": "安全性更新嚴重閾值", + "description": "數值達到此閾值時轉為紅色" + }, + "hostsWithSecurityUpdatesThresholdMode": { + "label": "有安全性更新主機閾值模式", + "description": "以絕對值或主機總數百分比比較主機計數" + }, + "hostsWithSecurityUpdatesWarningAt": { + "label": "有安全性更新主機警告閾值", + "description": "數值達到此閾值時轉為黃色" + }, + "hostsWithSecurityUpdatesCriticalAt": { + "label": "有安全性更新主機嚴重閾值", + "description": "數值達到此閾值時轉為紅色" + }, + "upToDateHostsThresholdMode": { + "label": "已更新至最新主機閾值模式", + "description": "以絕對值或主機總數百分比比較已更新至最新主機計數" + }, + "upToDateHostsWarningAt": { + "label": "已更新至最新主機警告閾值", + "description": "數值達到或高於此閾值但低於全覆蓋時轉為黃色" + }, + "upToDateHostsCriticalAt": { + "label": "已更新至最新主機嚴重閾值", + "description": "數值低於此閾值時轉為紅色" + }, + "totalOutdatedPackagesThresholdMode": { + "label": "過時套件閾值模式", + "description": "以絕對值或主機總數百分比比較過時套件計數" + }, + "totalOutdatedPackagesWarningAt": { + "label": "過時套件警告閾值", + "description": "數值達到此閾值時轉為黃色" + }, + "totalOutdatedPackagesCriticalAt": { + "label": "過時套件嚴重閾值", + "description": "數值達到此閾值時轉為紅色" + }, + "showOsDistribution": { + "label": "顯示作業系統分佈", + "description": "顯示按作業系統細分的受監控主機" + }, + "osDistributionLimit": { + "label": "作業系統分佈限制", + "description": "最多顯示的作業系統數量", + "option": { + "3": "前 3 名", + "5": "前 5 名", + "10": "前 10 名", + "all": "全部" + } + }, + "showOsVersion": { + "label": "顯示作業系統版本", + "description": "當可用時,在每個分佈標籤後附加作業系統版本" + }, + "showComplianceHero": { + "label": "顯示合規性英雄", + "description": "顯示一個合規性環,展示已更新至最新主機的百分比" + }, + "osDisplayMode": { + "label": "作業系統顯示模式", + "description": "選擇如何顯示作業系統分佈", + "option": { + "bars": "水平長條", + "donut": "甜甜圈圖" + } + } + }, + "error": { + "internalServerError": "無法擷取 PatchMon 資料" + } + }, + "bazarr": { + "name": "Bazarr", + "description": "來自 Bazarr 實例的缺少字幕和健康狀態概覽", + "episodes": "缺少的集數", + "movies": "缺少的電影", + "providers": "提供者問題", + "status": "健康問題", + "option": { + "showMissingEpisodes": { + "label": "顯示缺少的集數", + "description": "顯示缺少字幕的集數數量" + }, + "showMissingMovies": { + "label": "顯示缺少的電影", + "description": "顯示缺少字幕的電影數量" + }, + "showProviderIssues": { + "label": "顯示提供者問題", + "description": "顯示有問題的字幕提供者數量" + }, + "showHealthIssues": { + "label": "顯示健康問題", + "description": "顯示 Bazarr 健康問題的數量" + } + }, + "error": { + "internalServerError": "無法擷取 Bazarr 資料" + } + }, + "mediaMissing": { + "name": "缺少和佇列中的媒體", + "description": "顯示來自 Radarr 和 Sonarr 的缺少和佇列中的電影及影集", + "option": { + "showMissing": { + "label": "顯示缺少的項目" + }, + "showQueued": { + "label": "顯示佇列中的項目" + }, + "pageSize": { + "label": "每頁項目數" + } + }, + "tab": { + "missing": "缺少", + "queued": "佇列中" + }, + "type": { + "movie": "電影", + "episode": "集數" + }, + "empty": { + "missing": "沒有缺少的項目", + "queued": "沒有佇列中的項目", + "noTabsEnabled": "在小工具設定中至少啟用一個分頁" + }, + "timeLeft": "剩餘時間" + }, + "traefik": { + "name": "Traefik", + "description": "Traefik 路由器、服務、中間件和入口點概覽", + "option": { + "showTcp": { + "label": "顯示 TCP" + }, + "showUdp": { + "label": "顯示 UDP" + }, + "showEntryPoints": { + "label": "顯示入口點" + } + }, + "instances": "Traefik 實例", + "versionUnknown": "版本未知", + "summary": { + "routers": "路由器", + "entryPoints": "入口點" + }, + "resource": { + "routers": "路由器", + "services": "服務", + "middlewares": "中間件" + }, + "status": { + "healthy": "健康", + "errors": "{count} 個錯誤", + "warnings": "{count} 個警告" + }, + "error": { + "internalServerError": "無法擷取 Traefik 資料" + } } }, "widgetPreview": { @@ -4551,11 +4326,11 @@ }, "navbar": { "items": { + "workshop": "Workshop", "home": "首頁", "boards": "面板", "apps": "應用程式", "integrations": "集成", - "customWidgets": "自訂小工具", "searchEngies": "搜尋引擎", "medias": "多媒體", "users": { @@ -5694,6 +5469,9 @@ }, "navigationStructure": { "manage": { + "workshop": { + "label": "Workshop" + }, "label": "管理", "boards": { "label": "面板" @@ -5728,18 +5506,6 @@ "label": "編輯" } }, - "custom-widgets": { - "label": "自訂小工具", - "new": { - "label": "新增" - }, - "edit": { - "label": "編輯", - "flow": { - "label": "流程" - } - } - }, "users": { "label": "使用者", "create": { diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d0b866d98..fb07be119 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -15,9 +15,10 @@ ".": "./index.ts", "./_inputs/json-path-tree-picker": "./src/_inputs/json-path-tree-picker.tsx", "./custom-api/component": "./src/custom-api/component.tsx", + "./custom-api/custom-jsx-display": "./src/custom-api/custom-jsx-display.tsx", + "./custom-api/extract-display-data": "./src/custom-api/extract-display-data.ts", "./catalog": "./src/catalog.ts", "./definition": "./src/definition.ts", - "./custom-api/custom-jsx-display": "./src/custom-api/custom-jsx-display.tsx", "./errors": "./src/errors/component.tsx", "./manifest": "./src/manifest.ts", "./options": "./src/options.ts", diff --git a/packages/widgets/src/filter-storage-volumes.spec.ts b/packages/widgets/src/filter-storage-volumes.spec.ts index 51d84169a..25a459c06 100644 --- a/packages/widgets/src/filter-storage-volumes.spec.ts +++ b/packages/widgets/src/filter-storage-volumes.spec.ts @@ -1,10 +1,6 @@ import { describe, expect, test } from "vitest"; -import { - filterStorageVolumes, - normalizeStorageDeviceName, - toScopedStorageVolumeValue, -} from "./filter-storage-volumes"; +import { filterStorageVolumes, normalizeStorageDeviceName, toScopedStorageVolumeValue } from "./filter-storage-volumes"; import { matchFileSystemAndSmart } from "./health-monitoring/system-health"; describe("normalizeStorageDeviceName", () => { diff --git a/packages/widgets/src/filter-storage-volumes.ts b/packages/widgets/src/filter-storage-volumes.ts index 5e88584be..9c406c65e 100644 --- a/packages/widgets/src/filter-storage-volumes.ts +++ b/packages/widgets/src/filter-storage-volumes.ts @@ -35,11 +35,7 @@ const storageDeviceNamesMatch = (leftDeviceName: string, rightDeviceName: string ); }; -const matchesVisibleStorageVolume = ( - visibleVolume: string, - integrationId: string, - deviceName: string, -): boolean => { +const matchesVisibleStorageVolume = (visibleVolume: string, integrationId: string, deviceName: string): boolean => { const separatorIndex = visibleVolume.indexOf(":"); if (separatorIndex === -1) { return storageDeviceNamesMatch(visibleVolume, deviceName); diff --git a/packages/widgets/src/media-missing/component.tsx b/packages/widgets/src/media-missing/component.tsx index 69c1edf21..f952d057f 100644 --- a/packages/widgets/src/media-missing/component.tsx +++ b/packages/widgets/src/media-missing/component.tsx @@ -1,7 +1,21 @@ "use client"; import type { ReactNode } from "react"; -import { Badge, Box, Center, Group, Image, Paper, RingProgress, ScrollArea, SimpleGrid, Stack, Tabs, Text, ThemeIcon } from "@mantine/core"; +import { + Badge, + Box, + Center, + Group, + Image, + Paper, + RingProgress, + ScrollArea, + SimpleGrid, + Stack, + Tabs, + Text, + ThemeIcon, +} from "@mantine/core"; import { IconDownload, IconMovie, IconQuestionMark, IconVideo } from "@tabler/icons-react"; import { clientApi } from "@homarr/api/client"; @@ -13,7 +27,12 @@ import type { WidgetComponentProps } from "../definition"; import { NoIntegrationDataError } from "../errors/no-data-integration"; import classes from "./component.module.css"; -export default function MediaMissingWidget({ integrationIds, options, width, height }: WidgetComponentProps<"mediaMissing">) { +export default function MediaMissingWidget({ + integrationIds, + options, + width, + height, +}: WidgetComponentProps<"mediaMissing">) { const t = useScopedI18n("widget.mediaMissing"); const pageSize = Number(options.pageSize); const { data } = clientApi.widget.mediaOrganizer.getData.useQuery( @@ -32,12 +51,8 @@ export default function MediaMissingWidget({ integrationIds, options, width, hei ); - const missing = data.flatMap((entry) => - entry.missing.map((item) => ({ item, integrationId: entry.integrationId })), - ); - const queued = data.flatMap((entry) => - entry.queued.map((item) => ({ item, integrationId: entry.integrationId })), - ); + const missing = data.flatMap((entry) => entry.missing.map((item) => ({ item, integrationId: entry.integrationId }))); + const queued = data.flatMap((entry) => entry.queued.map((item) => ({ item, integrationId: entry.integrationId }))); const missingCount = data.reduce((sum, entry) => sum + entry.missingCount, 0); const queuedCount = data.reduce((sum, entry) => sum + entry.queuedCount, 0); @@ -47,10 +62,12 @@ export default function MediaMissingWidget({ integrationIds, options, width, hei const columns = width > 0 ? Math.max(1, Math.min(Math.floor(width / targetCardWidth), 4)) : 1; const density: Density = isThin ? "thin" : width > 0 && width / columns < 180 ? "compact" : "comfortable"; - const tabLabel = (label: string, shown: number, total: number) => - isThin ? total : `${label} (${shown}/${total})`; + const tabLabel = (label: string, shown: number, total: number) => (isThin ? total : `${label} (${shown}/${total})`); - const renderPanel = (entries: { item: MissingMediaItem | QueuedMediaItem; integrationId: string }[], emptyLabel: string) => ( + const renderPanel = ( + entries: { item: MissingMediaItem | QueuedMediaItem; integrationId: string }[], + emptyLabel: string, + ) => ( {entries.length === 0 ? ( @@ -116,7 +133,14 @@ const Poster = ({ src, type, density }: { src?: string | null; type: "movie" | " } return ( - + {type === "movie" ? : } ); @@ -183,8 +207,25 @@ const ProgressRing = ({ percent, density }: { percent: number; density: Density ); }; -const CardShell = ({ item, density, children }: { item: MissingMediaItem | QueuedMediaItem; density: Density; children: ReactNode }) => ( - +const CardShell = ({ + item, + density, + children, +}: { + item: MissingMediaItem | QueuedMediaItem; + density: Density; + children: ReactNode; +}) => ( + {item.imageUrl && ( )} diff --git a/packages/widgets/src/media-server/component.tsx b/packages/widgets/src/media-server/component.tsx index 5d0ebaca4..0fde9dff8 100644 --- a/packages/widgets/src/media-server/component.tsx +++ b/packages/widgets/src/media-server/component.tsx @@ -104,7 +104,9 @@ export default function MediaServerWidget({ options, integrationIds }: WidgetCom ? Math.min(100, Math.round((positionMs / durationMs) * 100)) : null; const remainingMinutes = - positionMs !== null && durationMs !== null ? Math.max(0, Math.round((durationMs - positionMs) / 60_000)) : null; + positionMs !== null && durationMs !== null + ? Math.max(0, Math.round((durationMs - positionMs) / 60_000)) + : null; return ( diff --git a/packages/widgets/src/patchmon/index.ts b/packages/widgets/src/patchmon/index.ts index 6f97be83f..884a1f46f 100644 --- a/packages/widgets/src/patchmon/index.ts +++ b/packages/widgets/src/patchmon/index.ts @@ -188,18 +188,42 @@ export const { definition, componentLoader } = createWidgetDefinition("patchmon" useCustomThresholds: { shouldHide: (options) => !options.enableThresholdColors, }, - hostsNeedingUpdatesThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - hostsNeedingUpdatesWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - hostsNeedingUpdatesCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - securityUpdatesThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - securityUpdatesWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - securityUpdatesCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - hostsWithSecurityUpdatesThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - hostsWithSecurityUpdatesWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - hostsWithSecurityUpdatesCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - upToDateHostsThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - upToDateHostsWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, - upToDateHostsCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds }, + hostsNeedingUpdatesThresholdMode: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + hostsNeedingUpdatesWarningAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + hostsNeedingUpdatesCriticalAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + securityUpdatesThresholdMode: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + securityUpdatesWarningAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + securityUpdatesCriticalAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + hostsWithSecurityUpdatesThresholdMode: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + hostsWithSecurityUpdatesWarningAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + hostsWithSecurityUpdatesCriticalAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + upToDateHostsThresholdMode: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + upToDateHostsWarningAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, + upToDateHostsCriticalAt: { + shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds, + }, totalOutdatedPackagesThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds || !options.showTotalOutdatedPackages, diff --git a/packages/widgets/src/patchmon/os-distribution-section.tsx b/packages/widgets/src/patchmon/os-distribution-section.tsx index cb21cb203..4cb03447c 100644 --- a/packages/widgets/src/patchmon/os-distribution-section.tsx +++ b/packages/widgets/src/patchmon/os-distribution-section.tsx @@ -9,16 +9,7 @@ import { useScopedI18n } from "@homarr/translation/client"; import classes from "./component.module.css"; -const OS_COLORS = [ - "blue.6", - "orange.6", - "green.6", - "grape.6", - "cyan.6", - "pink.6", - "yellow.6", - "teal.6", -] as const; +const OS_COLORS = ["blue.6", "orange.6", "green.6", "grape.6", "cyan.6", "pink.6", "yellow.6", "teal.6"] as const; interface OsDistributionSectionProps { entries: PatchMonOsDistributionEntry[]; @@ -73,13 +64,7 @@ export function OsDistributionSection({ )}
    - +
    {showLegend && (
    @@ -115,7 +100,12 @@ export function OsDistributionSection({
    {compactEntries.map((entry, i) => (
    - + {formatOsLabel(entry, showOsVersion)} diff --git a/packages/widgets/src/patchmon/stat-colors.ts b/packages/widgets/src/patchmon/stat-colors.ts index 7ecd035ac..1974f73a2 100644 --- a/packages/widgets/src/patchmon/stat-colors.ts +++ b/packages/widgets/src/patchmon/stat-colors.ts @@ -13,11 +13,7 @@ export type PatchMonStatKey = export type ColorablePatchMonStatKey = Extract< PatchMonStatKey, - | "hostsNeedingUpdates" - | "securityUpdates" - | "hostsWithSecurityUpdates" - | "upToDateHosts" - | "totalOutdatedPackages" + "hostsNeedingUpdates" | "securityUpdates" | "hostsWithSecurityUpdates" | "upToDateHosts" | "totalOutdatedPackages" >; export type StatSeverity = "green" | "yellow" | "red" | "neutral"; diff --git a/packages/widgets/src/patchmon/test/stat-colors.spec.ts b/packages/widgets/src/patchmon/test/stat-colors.spec.ts index 12596f499..22d296829 100644 --- a/packages/widgets/src/patchmon/test/stat-colors.spec.ts +++ b/packages/widgets/src/patchmon/test/stat-colors.spec.ts @@ -117,11 +117,16 @@ describe("resolveStatColor options", () => { test("handles zero total hosts for percent-based stats", () => { expect(resolveStatColor("upToDateHosts", 0, { totalHosts: 0 }, defaultOptions)).toBe("green"); expect( - resolveStatColor("hostsNeedingUpdates", 1, { totalHosts: 0 }, { - ...defaultOptions, - useCustomThresholds: true, - hostsNeedingUpdatesThresholdMode: "percent", - }), + resolveStatColor( + "hostsNeedingUpdates", + 1, + { totalHosts: 0 }, + { + ...defaultOptions, + useCustomThresholds: true, + hostsNeedingUpdatesThresholdMode: "percent", + }, + ), ).toBe("red"); }); diff --git a/packages/widgets/src/patchmon/test/threshold-validation.spec.ts b/packages/widgets/src/patchmon/test/threshold-validation.spec.ts index 00dafba3b..008d9746d 100644 --- a/packages/widgets/src/patchmon/test/threshold-validation.spec.ts +++ b/packages/widgets/src/patchmon/test/threshold-validation.spec.ts @@ -23,25 +23,27 @@ const baseOptions = { totalOutdatedPackagesCriticalAt: 50, }; -const optionsSchema = z.object({ - hostsNeedingUpdatesWarningAt: z.number().int().min(0), - hostsNeedingUpdatesCriticalAt: z.number().int().min(0), - securityUpdatesWarningAt: z.number().int().min(0), - securityUpdatesCriticalAt: z.number().int().min(0), - hostsWithSecurityUpdatesWarningAt: z.number().int().min(0), - hostsWithSecurityUpdatesCriticalAt: z.number().int().min(0), - upToDateHostsWarningAt: z.number().int().min(0), - upToDateHostsCriticalAt: z.number().int().min(0), - totalOutdatedPackagesWarningAt: z.number().int().min(0), - totalOutdatedPackagesCriticalAt: z.number().int().min(0), - enableThresholdColors: z.boolean(), - useCustomThresholds: z.boolean(), - hostsNeedingUpdatesThresholdMode: z.enum(["absolute", "percent"]), - securityUpdatesThresholdMode: z.enum(["absolute", "percent"]), - hostsWithSecurityUpdatesThresholdMode: z.enum(["absolute", "percent"]), - upToDateHostsThresholdMode: z.enum(["absolute", "percent"]), - totalOutdatedPackagesThresholdMode: z.enum(["absolute", "percent"]), -}).superRefine(patchmonOptionsSuperRefine); +const optionsSchema = z + .object({ + hostsNeedingUpdatesWarningAt: z.number().int().min(0), + hostsNeedingUpdatesCriticalAt: z.number().int().min(0), + securityUpdatesWarningAt: z.number().int().min(0), + securityUpdatesCriticalAt: z.number().int().min(0), + hostsWithSecurityUpdatesWarningAt: z.number().int().min(0), + hostsWithSecurityUpdatesCriticalAt: z.number().int().min(0), + upToDateHostsWarningAt: z.number().int().min(0), + upToDateHostsCriticalAt: z.number().int().min(0), + totalOutdatedPackagesWarningAt: z.number().int().min(0), + totalOutdatedPackagesCriticalAt: z.number().int().min(0), + enableThresholdColors: z.boolean(), + useCustomThresholds: z.boolean(), + hostsNeedingUpdatesThresholdMode: z.enum(["absolute", "percent"]), + securityUpdatesThresholdMode: z.enum(["absolute", "percent"]), + hostsWithSecurityUpdatesThresholdMode: z.enum(["absolute", "percent"]), + upToDateHostsThresholdMode: z.enum(["absolute", "percent"]), + totalOutdatedPackagesThresholdMode: z.enum(["absolute", "percent"]), + }) + .superRefine(patchmonOptionsSuperRefine); describe("patchmonOptionsSuperRefine", () => { test("accepts percent thresholds within 0-100", () => { diff --git a/packages/widgets/src/test/translation.spec.ts b/packages/widgets/src/test/translation.spec.ts index 7f65261e0..fb8f63843 100644 --- a/packages/widgets/src/test/translation.spec.ts +++ b/packages/widgets/src/test/translation.spec.ts @@ -5,38 +5,47 @@ import { createLanguageMapping } from "@homarr/translation"; import { loadAllWidgetDefinitions } from "../manifest"; +const doesOptionRenderTranslatedCopy = (option: unknown) => { + if (typeof option !== "object" || option === null || !("type" in option)) return false; + return option.type !== "internal" && option.type !== "customWidgetConfiguration"; +}; + const widgetDefinitions = await loadAllWidgetDefinitions(); const enTranslation = await createLanguageMapping().en(); describe("Widget properties with description should have matching translations", () => { for (const [key, definition] of widgetDefinitions) { - Object.entries(definition.createOptions({} as SettingsContextProps)).forEach(([optionKey, optionValue_]) => { - const optionValue = optionValue_ as { withDescription: boolean }; - it(`should have matching translations for ${optionKey} option description of ${key} widget`, () => { - const option = enTranslation.default.widget[key].option; - if (!(optionKey in option)) { - throw new Error(`Option ${optionKey} not found in translation`); - } - const value = option[optionKey as keyof typeof option]; + Object.entries(definition.createOptions({} as SettingsContextProps)) + .filter(([, option]) => doesOptionRenderTranslatedCopy(option)) + .forEach(([optionKey, optionValue_]) => { + const optionValue = optionValue_ as { withDescription: boolean }; + it(`should have matching translations for ${optionKey} option description of ${key} widget`, () => { + const option = enTranslation.default.widget[key].option; + if (!(optionKey in option)) { + throw new Error(`Option ${optionKey} not found in translation`); + } + const value = option[optionKey as keyof typeof option]; - expect("description" in value).toBe(optionValue.withDescription); + expect("description" in value).toBe(optionValue.withDescription); + }); }); - }); } }); describe("Widget properties should have matching name translations", () => { for (const [key, definition] of widgetDefinitions) { - Object.keys(definition.createOptions({} as SettingsContextProps)).forEach((optionKey) => { - it(`should have matching translations for ${optionKey} option name of ${key} widget`, () => { - const option = enTranslation.default.widget[key].option; - if (!(optionKey in option)) { - throw new Error(`Option ${optionKey} not found in translation`); - } - const value = option[optionKey as keyof typeof option]; + Object.entries(definition.createOptions({} as SettingsContextProps)) + .filter(([, option]) => doesOptionRenderTranslatedCopy(option)) + .forEach(([optionKey]) => { + it(`should have matching translations for ${optionKey} option name of ${key} widget`, () => { + const option = enTranslation.default.widget[key].option; + if (!(optionKey in option)) { + throw new Error(`Option ${optionKey} not found in translation`); + } + const value = option[optionKey as keyof typeof option]; - expect("label" in value).toBe(true); + expect("label" in value).toBe(true); + }); }); - }); } }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e12d3a71..00d6a7213 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,6 +12,9 @@ catalogs: '@auth/drizzle-adapter': specifier: ^1.11.2 version: 1.11.2 + '@babel/parser': + specifier: ^7.29.7 + version: 7.29.7 '@codemirror/autocomplete': specifier: ^6.20.3 version: 6.20.3 @@ -130,14 +133,14 @@ catalogs: specifier: ^0.9.54 version: 0.9.54 '@semantic-release/changelog': - specifier: ^6.0.3 - version: 6.0.3 + specifier: ^7.0.0 + version: 7.0.0 '@semantic-release/commit-analyzer': specifier: ^13.0.1 version: 13.0.1 '@semantic-release/git': - specifier: ^10.0.1 - version: 10.0.1 + specifier: ^11.0.1 + version: 11.0.1 '@semantic-release/github': specifier: ^12.0.9 version: 12.0.9 @@ -156,9 +159,9 @@ catalogs: '@tabler/icons-react': specifier: ^3.44.0 version: 3.44.0 - '@tanstack/query-async-storage-persister': - specifier: ^5.101.2 - version: 5.101.2 + '@tanstack/react-devtools': + specifier: ^0.10.8 + version: 0.10.9 '@tanstack/react-query': specifier: ^5.101.2 version: 5.101.2 @@ -168,9 +171,6 @@ catalogs: '@tanstack/react-query-next-experimental': specifier: ^5.101.2 version: 5.101.2 - '@tanstack/react-query-persist-client': - specifier: ^5.101.2 - version: 5.101.2 '@testcontainers/mysql': specifier: ^12.0.4 version: 12.0.4 @@ -466,8 +466,8 @@ catalogs: specifier: 3.22.6 version: 3.22.6 next: - specifier: 16.2.10 - version: 16.2.10 + specifier: 16.3.0-preview.9 + version: 16.3.0-preview.9 next-auth: specifier: 5.0.0-beta.31 version: 5.0.0-beta.31 @@ -580,8 +580,8 @@ catalogs: specifier: ^2.10.4 version: 2.10.4 typescript: - specifier: npm:@typescript/typescript6@^6.0.2 - version: 6.0.2 + specifier: 7.0.2 + version: 7.0.2 undici: specifier: 7.28.0 version: 7.28.0 @@ -655,36 +655,39 @@ importers: specifier: 'catalog:' version: 10.4.0 devDependencies: + '@babel/parser': + specifier: 'catalog:' + version: 7.29.7 '@playwright/test': specifier: 'catalog:' version: 1.61.1 '@semantic-release/changelog': specifier: 'catalog:' - version: 6.0.3(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + version: 7.0.0(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2)) '@semantic-release/commit-analyzer': specifier: 'catalog:' - version: 13.0.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + version: 13.0.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) '@semantic-release/git': specifier: 'catalog:' - version: 10.0.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + version: 11.0.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) '@semantic-release/github': specifier: 'catalog:' - version: 12.0.9(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + version: 12.0.9(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) '@semantic-release/npm': specifier: 'catalog:' - version: 13.1.5(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + version: 13.1.5(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2)) '@semantic-release/release-notes-generator': specifier: 'catalog:' - version: 14.1.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + version: 14.1.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) '@testcontainers/redis': specifier: 'catalog:' - version: 12.0.4 + version: 12.0.4(supports-color@10.2.2) '@turbo/gen': specifier: 'catalog:' version: 2.10.4(@types/node@24.13.3) '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(vitest@4.1.10) @@ -711,25 +714,28 @@ importers: version: 1.73.0 semantic-release: specifier: 'catalog:' - version: 25.0.5(@typescript/typescript6@6.0.2) + version: 25.0.5(supports-color@10.2.2)(typescript@7.0.2) testcontainers: specifier: 'catalog:' - version: 12.0.4 + version: 12.0.4(supports-color@10.2.2) + tsx: + specifier: 'catalog:' + version: 4.20.4 turbo: specifier: 'catalog:' version: 2.10.4 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 vite: specifier: 'catalog:' - version: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) + version: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0) vite-tsconfig-paths: specifier: 'catalog:' - version: 6.1.1(@typescript/typescript6@6.0.2)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 6.1.1(supports-color@10.2.2)(typescript@7.0.2)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)) vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)) apps/docs: dependencies: @@ -738,25 +744,25 @@ importers: version: 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.17)(date-fns@4.4.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@docusaurus/core': specifier: ^3.10.1 - version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/faster': specifier: ^3.10.1 - version: 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16) + version: 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3) '@docusaurus/plugin-content-docs': specifier: ^3.10.1 - version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/plugin-sitemap': specifier: ^3.10.1 - version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/preset-classic': specifier: ^3.10.1 - version: 3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3) + version: 3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/theme-common': specifier: ^3.10.1 - version: 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(76621e8bff6c45bac3fc2219e99bbda8) '@docusaurus/theme-mermaid': specifier: ^3.10.1 - version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(61e2dfd21fb4d409e7bca036dfc2b268) '@homarr/custom-widgets': specifier: workspace:^ version: link:../../packages/custom-widgets @@ -777,7 +783,7 @@ importers: version: 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@scalar/api-reference-react': specifier: 'catalog:' - version: 0.9.54(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(zod@4.4.3) + version: 0.9.54(nprogress@0.2.0)(react@19.2.7)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)(zod@4.4.3) '@shadcn/react': specifier: 'catalog:' version: 0.2.1(@types/react@19.2.17)(react@19.2.7) @@ -804,7 +810,7 @@ importers: version: 1.11.21 docusaurus-plugin-image-zoom: specifier: ^3.0.1 - version: 3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)) + version: 3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)) embla-carousel-react: specifier: 'catalog:' version: 8.6.0(react@19.2.7) @@ -862,13 +868,13 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: ^3.10.1 - version: 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@docusaurus/tsconfig': specifier: ^3.10.1 version: 3.10.1 '@docusaurus/types': specifier: ^3.10.1 - version: 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@fec/remark-a11y-emoji': specifier: ^4.0.2 version: 4.0.2 @@ -886,7 +892,7 @@ importers: version: 1.2.0 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 zod: specifier: 'catalog:' version: 4.4.3 @@ -1030,16 +1036,16 @@ importers: version: 9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tiptap/extension-link@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))(@tiptap/react@3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@modelcontextprotocol/sdk': specifier: 'catalog:' - version: 1.29.0(zod@4.4.3) + version: 1.29.0(supports-color@10.2.2)(zod@4.4.3) '@scalar/api-reference-react': specifier: 'catalog:' - version: 0.9.54(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(zod@4.4.3) + version: 0.9.54(nprogress@0.2.0)(react@19.2.7)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)(zod@4.4.3) '@tabler/icons-react': specifier: 'catalog:' version: 3.44.0(react@19.2.7) - '@tanstack/query-async-storage-persister': + '@tanstack/react-devtools': specifier: 'catalog:' - version: 5.101.2 + version: 0.10.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(csstype@3.2.3)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(solid-js@1.9.14) '@tanstack/react-query': specifier: 'catalog:' version: 5.101.2(react@19.2.7) @@ -1048,22 +1054,19 @@ importers: version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(react@19.2.7) '@tanstack/react-query-next-experimental': specifier: 'catalog:' - version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7) - '@tanstack/react-query-persist-client': - specifier: 'catalog:' - version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(react@19.2.7) + version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7) '@trpc/client': specifier: 'catalog:' - version: 11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2) + version: 11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2) '@trpc/next': specifier: 'catalog:' - version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.2) '@trpc/react-query': specifier: 'catalog:' - version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7) + version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2) '@trpc/server': specifier: 'catalog:' - version: 11.18.0(@typescript/typescript6@6.0.2) + version: 11.18.0(typescript@7.0.2) '@xterm/addon-canvas': specifier: 'catalog:' version: 0.7.0(@xterm/xterm@6.0.0) @@ -1096,7 +1099,7 @@ importers: version: 17.4.2 drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) + version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) flag-icons: specifier: 'catalog:' version: 7.5.0 @@ -1108,7 +1111,7 @@ importers: version: 3.18.0(@noble/hashes@2.0.1) jotai: specifier: 'catalog:' - version: 2.20.1(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7) + version: 2.20.1(@babel/core@7.29.0(supports-color@10.2.2))(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7) jszip: specifier: 'catalog:' version: 3.10.1 @@ -1123,10 +1126,10 @@ importers: version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) mcp-handler: specifier: 'catalog:' - version: 1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)) + version: 1.1.0(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.4.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)) next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) postcss-preset-mantine: specifier: 'catalog:' version: 1.18.0(postcss@8.5.16) @@ -1159,7 +1162,7 @@ importers: version: 2.2.6 trpc-to-mcp: specifier: 'catalog:' - version: 1.3.2(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.10)(vue@3.5.35(@typescript/typescript6@6.0.2)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3) + version: 1.3.2(7c45d4095abf7cef4938a6fc2cc62863) use-deep-compare-effect: specifier: 'catalog:' version: 1.8.1(react@19.2.7) @@ -1199,10 +1202,10 @@ importers: version: 10.0.3 node-loader: specifier: 'catalog:' - version: 2.1.0(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16)) + version: 2.1.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 apps/tasks: dependencies: @@ -1290,7 +1293,7 @@ importers: version: 4.20.4 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 apps/websocket: dependencies: @@ -1339,7 +1342,7 @@ importers: version: 0.28.0 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/analytics: dependencies: @@ -1367,7 +1370,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/api: dependencies: @@ -1436,28 +1439,28 @@ importers: version: link:../workshop '@kubernetes/client-node': specifier: 'catalog:' - version: 1.4.0 + version: 1.4.0(supports-color@10.2.2) '@tanstack/react-query': specifier: 'catalog:' version: 5.101.2(react@19.2.7) '@trpc/client': specifier: 'catalog:' - version: 11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2) + version: 11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2) '@trpc/react-query': specifier: 'catalog:' - version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7) + version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2) '@trpc/server': specifier: 'catalog:' - version: 11.18.0(@typescript/typescript6@6.0.2) + version: 11.18.0(typescript@7.0.2) '@trpc/tanstack-react-query': specifier: 'catalog:' - version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7) + version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2) lodash.clonedeep: specifier: 'catalog:' version: 4.5.0 next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: specifier: 'catalog:' version: 19.2.7 @@ -1469,10 +1472,10 @@ importers: version: 2.2.6 trpc-to-mcp: specifier: 'catalog:' - version: 1.3.2(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.10)(vue@3.5.35(@typescript/typescript6@6.0.2)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3) + version: 1.3.2(09f4f932022b61bbb1db30a9d75546c7) trpc-to-openapi: specifier: 'catalog:' - version: 3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(zod-openapi@5.3.0(zod@4.4.3))(zod@4.4.3) + version: 3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(typescript@7.0.2))(zod-openapi@5.4.6(zod@4.4.3))(zod@4.4.3) undici: specifier: 'catalog:' version: 7.28.0 @@ -1485,7 +1488,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/auth: dependencies: @@ -1521,10 +1524,10 @@ importers: version: 8.1.8 next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) next-auth: specifier: 'catalog:' - version: 5.0.0-beta.31(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7) + version: 5.0.0-beta.31(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7) react: specifier: 'catalog:' version: 19.2.7 @@ -1546,7 +1549,7 @@ importers: version: 0.9.2 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/boards: dependencies: @@ -1565,7 +1568,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/cli: dependencies: @@ -1596,7 +1599,7 @@ importers: version: 0.28.0 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/common: dependencies: @@ -1614,7 +1617,7 @@ importers: version: 1.11.21 next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) octokit: specifier: 'catalog:' version: 5.0.5 @@ -1639,13 +1642,13 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/core: dependencies: '@t3-oss/env-nextjs': specifier: 'catalog:' - version: 0.13.11(@typescript/typescript6@6.0.2)(arktype@2.1.20)(zod@4.4.3) + version: 0.13.11(arktype@2.1.20)(typescript@7.0.2)(zod@4.4.3) better-sqlite3: specifier: 'catalog:' version: 12.11.1 @@ -1654,10 +1657,10 @@ importers: version: 0.2.9 drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) + version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) ioredis: specifier: 'catalog:' - version: 5.11.1 + version: 5.11.1(supports-color@10.2.2) mysql2: specifier: 'catalog:' version: 3.22.6(@types/node@24.13.3) @@ -1685,7 +1688,7 @@ importers: version: 8.20.0 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/cron-job-status: dependencies: @@ -1698,7 +1701,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/cron-jobs: dependencies: @@ -1762,7 +1765,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/cron-jobs-core: dependencies: @@ -1784,7 +1787,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/custom-widgets: dependencies: @@ -1875,10 +1878,10 @@ importers: version: 19.2.7(react@19.2.7) typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) packages/db: dependencies: @@ -1911,10 +1914,10 @@ importers: version: 3.3.0 '@testcontainers/mysql': specifier: 'catalog:' - version: 12.0.4 + version: 12.0.4(supports-color@10.2.2) '@testcontainers/postgresql': specifier: 'catalog:' - version: 12.0.4 + version: 12.0.4(supports-color@10.2.2) better-sqlite3: specifier: 'catalog:' version: 12.11.1 @@ -1926,10 +1929,10 @@ importers: version: 0.31.10 drizzle-orm: specifier: 'catalog:' - version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) + version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) drizzle-zod: specifier: 'catalog:' - version: 0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3) + version: 0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3) mysql2: specifier: 'catalog:' version: 3.22.6(@types/node@24.13.3) @@ -1960,7 +1963,7 @@ importers: version: 4.20.4 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/definitions: dependencies: @@ -1982,7 +1985,7 @@ importers: version: 4.20.4 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/docker: dependencies: @@ -1994,7 +1997,7 @@ importers: version: link:../core dockerode: specifier: 'catalog:' - version: 5.0.1 + version: 5.0.1(supports-color@10.2.2) devDependencies: '@homarr/tsconfig': specifier: workspace:^0.1.0 @@ -2004,7 +2007,7 @@ importers: version: 4.0.1 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/form: dependencies: @@ -2029,7 +2032,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/forms-collection: dependencies: @@ -2072,7 +2075,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/icons: dependencies: @@ -2091,7 +2094,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/image-proxy: dependencies: @@ -2116,7 +2119,7 @@ importers: version: 6.0.0 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/integrations: dependencies: @@ -2146,7 +2149,7 @@ importers: version: link:../image-proxy '@homarr/node-unifi': specifier: 'catalog:' - version: 2.6.0(undici@7.28.0) + version: 2.6.0(debug@4.4.3(supports-color@10.2.2))(undici@7.28.0) '@homarr/redis': specifier: workspace:^0.1.0 version: link:../redis @@ -2161,7 +2164,7 @@ importers: version: 3.0.2 '@jellyfin/sdk': specifier: 'catalog:' - version: 0.13.0(axios@1.15.0) + version: 0.13.0(axios@1.15.0(debug@4.4.3(supports-color@10.2.2))) ical.js: specifier: 'catalog:' version: 2.2.1 @@ -2179,7 +2182,7 @@ importers: version: 2.2.1 tsdav: specifier: 'catalog:' - version: 2.3.0 + version: 2.3.0(supports-color@10.2.2) undici: specifier: 'catalog:' version: 7.28.0 @@ -2207,7 +2210,7 @@ importers: version: 0.4.14 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/modals: dependencies: @@ -2232,7 +2235,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/modals-collection: dependencies: @@ -2280,7 +2283,7 @@ importers: version: 1.11.21 next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: specifier: 'catalog:' version: 19.2.7 @@ -2296,7 +2299,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/notifications: dependencies: @@ -2315,7 +2318,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/old-import: dependencies: @@ -2363,7 +2366,7 @@ importers: version: 0.5.18 next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: specifier: 'catalog:' version: 19.2.7 @@ -2388,7 +2391,7 @@ importers: version: 0.5.8 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/old-schema: dependencies: @@ -2404,7 +2407,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/ping: dependencies: @@ -2420,7 +2423,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/redis: dependencies: @@ -2438,7 +2441,7 @@ importers: version: link:../definitions ioredis: specifier: 'catalog:' - version: 5.11.1 + version: 5.11.1(supports-color@10.2.2) superjson: specifier: 'catalog:' version: 2.2.6 @@ -2448,7 +2451,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/request-handler: dependencies: @@ -2497,7 +2500,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/server-settings: dependencies: @@ -2513,7 +2516,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/settings: dependencies: @@ -2528,7 +2531,7 @@ importers: version: 9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: specifier: 'catalog:' version: 19.2.7 @@ -2541,7 +2544,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/spotlight: dependencies: @@ -2592,10 +2595,10 @@ importers: version: 3.44.0(react@19.2.7) jotai: specifier: 'catalog:' - version: 2.20.1(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7) + version: 2.20.1(@babel/core@7.29.0(supports-color@10.2.2))(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7) next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: specifier: 'catalog:' version: 19.2.7 @@ -2611,7 +2614,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/translation: dependencies: @@ -2632,10 +2635,10 @@ importers: version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) next-intl: specifier: 'catalog:' - version: 4.13.1(@typescript/typescript6@6.0.2)(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7) + version: 4.13.1(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)(typescript@7.0.2) react: specifier: 'catalog:' version: 19.2.7 @@ -2648,7 +2651,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/ui: dependencies: @@ -2687,7 +2690,7 @@ importers: version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: specifier: 'catalog:' version: 19.2.7 @@ -2709,7 +2712,7 @@ importers: version: 1.0.5 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/validation: dependencies: @@ -2737,7 +2740,7 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/widgets: dependencies: @@ -2902,7 +2905,7 @@ importers: version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) next: specifier: 'catalog:' - version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + version: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: specifier: 'catalog:' version: 19.2.7 @@ -2911,7 +2914,7 @@ importers: version: 19.2.7(react@19.2.7) react-markdown: specifier: 'catalog:' - version: 10.1.0(@types/react@19.2.17)(react@19.2.7) + version: 10.1.0(@types/react@19.2.17)(react@19.2.7)(supports-color@10.2.2) react-quill-new: specifier: 'catalog:' version: 3.8.3(quill-delta@5.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -2933,7 +2936,7 @@ importers: version: 7.3.58 typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 packages/workshop: dependencies: @@ -2958,10 +2961,10 @@ importers: version: link:../../tooling/typescript typescript: specifier: 'catalog:' - version: '@typescript/typescript6@6.0.2' + version: 7.0.2 vitest: specifier: 'catalog:' - version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) tooling/github: {} @@ -5324,156 +5327,165 @@ packages: '@iconify/utils@3.1.3': resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==} - '@img/colour@1.0.0': - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} 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} + '@img/sharp-darwin-arm64@0.35.3': + resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} + engines: {node: '>=20.9.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} + '@img/sharp-darwin-x64@0.35.3': + resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + '@img/sharp-freebsd-wasm32@0.35.3': + resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.2': + resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + '@img/sharp-libvips-darwin-x64@1.3.2': + resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + '@img/sharp-libvips-linux-arm64@1.3.2': + resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + '@img/sharp-libvips-linux-arm@1.3.2': + resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + '@img/sharp-libvips-linux-ppc64@1.3.2': + resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + '@img/sharp-libvips-linux-riscv64@1.3.2': + resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + '@img/sharp-libvips-linux-s390x@1.3.2': + resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + '@img/sharp-libvips-linux-x64@1.3.2': + resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + '@img/sharp-libvips-linuxmusl-x64@1.3.2': + resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} cpu: [x64] os: [linux] libc: [musl] - '@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} + '@img/sharp-linux-arm64@0.35.3': + resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@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} + '@img/sharp-linux-arm@0.35.3': + resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} + engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-ppc64@0.35.3': + resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} + engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] libc: [glibc] - '@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} + '@img/sharp-linux-riscv64@0.35.3': + resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} + engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-s390x@0.35.3': + resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} + engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-x64@0.35.3': + resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-arm64@0.35.3': + resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-x64@0.35.3': + resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-wasm32@0.35.3': + resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.3': + resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} + engines: {node: '>=20.9.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} + '@img/sharp-win32-arm64@0.35.3': + resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} + engines: {node: '>=20.9.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} + '@img/sharp-win32-ia32@0.35.3': + resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} + engines: {node: ^20.9.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} + '@img/sharp-win32-x64@0.35.3': + resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] @@ -6030,57 +6042,57 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@next/env@16.2.10': - resolution: {integrity: sha512-zLPxg9M0MEHmygpj5OuxjQ+vHMiy/K7cSp74G8ecYolmgUWw0RwN02tF56npup/+qaI8JB97hQgS/r2Hb6QwVA==} + '@next/env@16.3.0-preview.9': + resolution: {integrity: sha512-BcD+/sVDfoHckHcEx6e4RaLfWrUb+DpXgL9jOc6f29RTyvNwVVtnAaPljp3ok4zFQan6RhFE7q32lSXAFjjV9A==} - '@next/swc-darwin-arm64@16.2.10': - resolution: {integrity: sha512-v9IdJCa0H0mbo+8z5zwUpOk1Vj7RjkcI5uNYf5Ws1y6szf/p3Mzl9hLaST8SCt6L9h8NGnruZcd2+o0NTNwDhA==} + '@next/swc-darwin-arm64@16.3.0-preview.9': + resolution: {integrity: sha512-42OV/jDhHoKuqq+kp0RYrW1uksykLhXQeX+zx4SYFEG45ec9HnLHnsGgG1vy5W+LaSDvj3BPMBPTKMCh1vl1Ew==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.2.10': - resolution: {integrity: sha512-17IS0jJRViROGmA9uGdNR8VPJpfbnaVG7E9qhso5jDLkmyd0lSDORWxbcKINzcFqzZqGwGtMSnrFRxBpuUYjLQ==} + '@next/swc-darwin-x64@16.3.0-preview.9': + resolution: {integrity: sha512-j6dvZHjhjB3l+uDQiBmuajzzCyCetWdQw+eouwR0mE455b+OvPY32dUNIY+D33oTOe3f0My9wSw4Um5hxywUlA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.2.10': - resolution: {integrity: sha512-GRQRsRtuciNJvB54AvvuQTiq0oZtFwa1owQqtZD8wwnGpM2L39MV22kpI72YSXLKIyY40LC66EiLFv4PiicXxg==} + '@next/swc-linux-arm64-gnu@16.3.0-preview.9': + resolution: {integrity: sha512-2+1WzP2+ngzCkXiyzBwowgBiYaUycjAB/9b5ah5TjP0icBHOHf7oaPnjSZlZ8iq6x2G6QuR9S840jkOKNInUCw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.2.10': - resolution: {integrity: sha512-zkN9MQYS7UQBro+FnISUq1itaQjXI9xqISzuQ+2bc921NcJ1x4yPCqrn77tVN6/dOOXaaWVX3k6/bR07pPwK+A==} + '@next/swc-linux-arm64-musl@16.3.0-preview.9': + resolution: {integrity: sha512-2Tq6H0LtObGQj2s7u56TYakTJ3NmDOWnNRaT2TI17oQEUfPv3O4a22jt4xIDVkxvaYfB2L4y2hl8DGAEw1WV6g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.2.10': - resolution: {integrity: sha512-iCVJnwvrPYECvA6WM/7+oo+OiTvedIKLxtCLAZP4xZR3nXa1zmzZyLPbYCmWvpd4CvMYF1EMTafd0ii3DygLvA==} + '@next/swc-linux-x64-gnu@16.3.0-preview.9': + resolution: {integrity: sha512-H2bCT2w2H/W6xRLRw4oWgOEMIyWc1tn65c46u0zC60omKig9hPWj7vrhMBqwOMTmZcFZwNqBTpJTF0LuopEfHA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.2.10': - resolution: {integrity: sha512-ov2g4H0dHY9bPoOU83m91hWT7Iq5qy13bUnyyshLU3HGR1Ownn0X9QpmDPc5iIUaahTp7f7LeGAhV4DSFtackw==} + '@next/swc-linux-x64-musl@16.3.0-preview.9': + resolution: {integrity: sha512-WK0CI8ky1oDGwqzi8oJjtC5rfMNOUx4DMBiVr1o9mvsMwkCUkVh7n6+AAx2Qxk8llRJxpaGlBZv1fhHytsENVw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.2.10': - resolution: {integrity: sha512-DwAnhLX76HQiFFQNgWlcK+JzlnD1rZ+UK/WY0ZMI/deXpvgnesjNYrqcfo1JzBuz4Kf7o3brIBL0glI1junatA==} + '@next/swc-win32-arm64-msvc@16.3.0-preview.9': + resolution: {integrity: sha512-COFwXsMQsStyBv4qBn6E3tKHuPVifMkpVvF2k2/I0HsLAwuelgj+5uO8jS4e+sfTcdvczdvuiG8BjJz3aAa0IQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.2.10': - resolution: {integrity: sha512-0JXq3b85Jk9Jg4ntLUbXSPvoDw3gpZou7twuKdoFG2jOw635v7+IiXfTaa0TxVMyx78pUjnrVYwLgjKfX4e6/A==} + '@next/swc-win32-x64-msvc@16.3.0-preview.9': + resolution: {integrity: sha512-RG4rEpg3ynGwTP6mnsDZHLuFbKksXkQCd9A5MDkgPY9+wYawIrc23pJYHZxyBxisuV/t+dwCgbpZoclW8icE7A==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -7261,11 +7273,11 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@semantic-release/changelog@6.0.3': - resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} - engines: {node: '>=14.17'} + '@semantic-release/changelog@7.0.0': + resolution: {integrity: sha512-TNPyag5db24o7jWjre7UwKB4EcL8oJxbRhnDQ7hmZRAYqzreAc6PgdxQuU3pppp5xQinYtiumL0iG8SSKvnlzg==} + engines: {node: ^22.22.2 || >=24.15} peerDependencies: - semantic-release: '>=18.0.0' + semantic-release: '>=20.1.0' '@semantic-release/commit-analyzer@13.0.1': resolution: {integrity: sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==} @@ -7273,19 +7285,15 @@ packages: peerDependencies: semantic-release: '>=20.1.0' - '@semantic-release/error@3.0.0': - resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} - engines: {node: '>=14.17'} - '@semantic-release/error@4.0.0': resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} engines: {node: '>=18'} - '@semantic-release/git@10.0.1': - resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} - engines: {node: '>=14.17'} + '@semantic-release/git@11.0.1': + resolution: {integrity: sha512-Zr8BUYCTZMc8V6wDKN2dpR7nJgewd9I6THL3ydLTnp3OEdTo1/4RBLNYaeRucYMsjMv+BXoCNfXA0NADj1kwhw==} + engines: {node: ^22.22.2 || >=24.15} peerDependencies: - semantic-release: '>=18.0.0' + semantic-release: '>=20.1.0' '@semantic-release/github@12.0.9': resolution: {integrity: sha512-ODIqb0V3QqndipryEEiaBxUQCFjvv7Oese5Dt4omMGa60YRNEW0Sx3K+zri0uac2Y6S9nOlMehciWIzvvRCTGQ==} @@ -7352,6 +7360,36 @@ packages: '@so-ric/colorspace@1.1.6': resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} + '@solid-primitives/event-listener@2.4.6': + resolution: {integrity: sha512-5I0YJcTVYIWoMmgBSROBZGcz+ymhew/pGTg2dHW74BUjFKsV8Li4bOZYl0YAGP4mHw5o4UBd9/BEesqBci3wxw==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/keyboard@1.3.7': + resolution: {integrity: sha512-558RPNYnXx4nGh537DSqAn4xMrC8iFipl/5+xzgzWoTNFst4RnUN3BOLmtDjJ0UGGoQXVMALYR3bNOHM0xnt1Q==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/resize-observer@2.2.0': + resolution: {integrity: sha512-9Fuu/EWBeGj+atGHRJp70HKhdfalmpjwxY8a32NZixdLNmfCJ45AfhLQNr6uOzETbbiMx4iCKlTrJ8KZCHC2Ww==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/rootless@1.5.4': + resolution: {integrity: sha512-TOIZa1VUfVJ+9nkCcRajw3U4t9vBOP1HxX1WHNTbXq32mXwlqTvUnC4CRIilohcryBkT9u2ZkhUDSHRTaGp55g==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/static-store@0.1.4': + resolution: {integrity: sha512-LgtVaVBtB7EbmS4+M0b8xY5Iq6pUWXBsIC4VgtrFKDGDdyCaDt88sHk0fUlx1Enxm/XZnZyLXJABRoa39RjJqA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/utils@6.4.1': + resolution: {integrity: sha512-ISSB5QX1qP2ynrheIpYwc4oKR5Ny4siNuUyf1qZniy+Il+p/PtDB0QK1Dnle8noiHpwRD3gpPdubOC3qI/Zamg==} + peerDependencies: + solid-js: ^1.6.12 + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -7738,21 +7776,50 @@ packages: '@tailwindcss/postcss@4.3.2': resolution: {integrity: sha512-rjVWYCa7Ngbi5AarT6k8TkxUG3Wl1QKzHdIZVsjZSzf36Jmo2IKZt/NHRAwly8oDkbBOH0YTu+CHuf9jPxMc+g==} + '@tanstack/devtools-client@0.0.8': + resolution: {integrity: sha512-cG3iZkGWCwN330bLBKa8+9r4Of2AXNoz2zUqcsy/4XsD3105ghVBx78cGyvJj9fSclNomPxoqAnDGXXhg1WLvA==} + engines: {node: '>=18'} + + '@tanstack/devtools-event-bus@0.4.2': + resolution: {integrity: sha512-2LHzhwBFlKHCcklsQrGe8TeyjHd4XAF8nuCO6wHmva5fePUkJUULbu6CsCNAlGlCi0KkEsMXZSvRdR4HgMq4yA==} + engines: {node: '>=18'} + + '@tanstack/devtools-event-client@0.5.0': + resolution: {integrity: sha512-H+OH3zC6Vhu/K0NaVfQKknEKawc/+2PT+D3SB3Ox0V8SiMlTo0abbmH2rH0721R2aNYbjdMXA1oENOd8E2UVoA==} + engines: {node: '>=18'} + hasBin: true + + '@tanstack/devtools-ui@0.6.0': + resolution: {integrity: sha512-CVaM6rT6Nl5ijo83vJYFa2SjofvpuOl/uOvbYGhBrRgUhhelNHhx8zZX+hnZCHmIr0/lzM65hsocnZ72592Rvg==} + engines: {node: '>=18'} + peerDependencies: + solid-js: '>=1.9.7' + + '@tanstack/devtools@0.13.0': + resolution: {integrity: sha512-p/nOH9bS/OO/u3402zPjoGu+Mz6Fzi/iRqJuYghuuYRUY32kZt+C0/d+pP/bi6/2JTi1FdT6oEXI2lWlA5tXxw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + solid-js: '>=1.9.7' + '@tanstack/match-sorter-utils@8.19.4': resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-async-storage-persister@5.101.2': - resolution: {integrity: sha512-jf7zvVKZ5q2j/xuhbTIBUpw5xt6cw/ioOFQquxK7fRY0AmMQP8A0JVMOgYoeQLA4PKdeT7RxsuLAF0Lft9oJ8Q==} - '@tanstack/query-core@5.101.2': resolution: {integrity: sha512-hH5MLoJhF7KaIGd7q3xTXGXvslI+GYlM1Z/35aSHHWaCJWB7XvTSHYuV3eM7tw+aE0mT/xMro4M4Q9rCGHT0lw==} '@tanstack/query-devtools@5.101.2': resolution: {integrity: sha512-o+wHcqgN7Pp0s8v1i0UGq/ZrrEKrxdIiMQmKRdYb2w7NPtylYSJ4+wg/tIn71m9DLstwUwdEGAvROdly6HXP6w==} - '@tanstack/query-persist-client-core@5.101.2': - resolution: {integrity: sha512-rgMsbvBVpSPDUsprC9FYxojdG0Q1LH6yq1i3DXz2aps4VEqv2l4Msj3YDqIifU3xkl/DrYe9YWntZAJLrM6xTg==} + '@tanstack/react-devtools@0.10.9': + resolution: {integrity: sha512-lS6mtccEmUaodsWiRORGM/MGKT0jgzcy5v+eY6pzOPxEgzTHUDhca+WGxShFqKxmF4oneRxXjww1gkvMrWq6uw==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': '>=16.8' + '@types/react-dom': '>=16.8' + react: '>=16.8' + react-dom: '>=16.8' '@tanstack/react-query-devtools@5.101.2': resolution: {integrity: sha512-eU7HctdA9gDjqoERoEdzLbw9DiqnBDfh5+Hu0u26gjqoHJezOpQAuiesDL2VvkU+2cPV76zgv0tMZsOrI4LjnQ==} @@ -7767,12 +7834,6 @@ packages: next: ^13 || ^14 || ^15 || ^16 react: ^18 || ^19 - '@tanstack/react-query-persist-client@5.101.2': - resolution: {integrity: sha512-19UpaRtf0lvB2QAJ2MoixxtGf3osMOd508g99EsttUj4+3eLs+ulnNgYjB7AkQMHrRlcbVXqpVNqWkB4a7g8Zw==} - peerDependencies: - '@tanstack/react-query': ^5.101.2 - react: ^18 || ^19 - '@tanstack/react-query@5.101.2': resolution: {integrity: sha512-seDkr6kzGzX1okaaTtZPtgA688CDPlXUz1C6xSg0ESqn04Vuc8tlrYms1s3de+znBqhPVxFRfpAfUf+6XvfPWg==} peerDependencies: @@ -8465,9 +8526,125 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript/typescript6@6.0.2': - resolution: {integrity: sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w==} - hasBin: true + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} @@ -9694,6 +9871,7 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + deprecated: Active development of CryptoJS has been discontinued. This library is no longer maintained. crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} @@ -10602,6 +10780,10 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} + execa@10.0.1: + resolution: {integrity: sha512-ge98qjkRK4IB7tL7Ju/6qmm5LHoH1eEMt5FNZrz3f4UIYhF28lggX20z3FaX1sgc67msLEn0N0BscOs29iuwyw==} + engines: {node: '>=22'} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -10991,6 +11173,11 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + goober@2.1.19: + resolution: {integrity: sha512-U7veizMqxyKlM58+Z5j2ngJBH/r9siDmxpvNxSw0PylF6WQvrASJEZrxh1hidRBJc2jqoBVSyOban5u8m+6Rxg==} + peerDependencies: + csstype: ^3.0.10 + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -11280,6 +11467,10 @@ packages: resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} engines: {node: '>=18.18.0'} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + hyperdyperid@1.2.0: resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} @@ -12569,8 +12760,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@16.2.10: - resolution: {integrity: sha512-2som5AVXb3kE6Yjine3/mNbBayYF58eguBWIVVUdr1y/L426xyVEgYxgBG+1QC34P2x5E+tcDup6XkuOAX3dCA==} + next@16.3.0-preview.9: + resolution: {integrity: sha512-ruev+K1No0Cm/05hSrgKLtzaBdUIT+2I/Bj8x+K8/vk3j/dW+9YJOqGdDEkqNBOXtQlLxuEgeTH71jgsKTfWiQ==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -12903,10 +13094,6 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} - p-reduce@2.1.0: - resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} - engines: {node: '>=8'} - p-reduce@3.0.0: resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} engines: {node: '>=12'} @@ -13584,8 +13771,8 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + postcss@8.5.10: + resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} engines: {node: ^10 || ^12 || >=14} postcss@8.5.15: @@ -14367,6 +14554,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.2: resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} @@ -14378,6 +14570,16 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + seroval-plugins@1.5.6: + resolution: {integrity: sha512-HXuLAX2pu/UByPpaeo/TaMfvMIi+1QqIoPJYCcAtU8QkVNwgR6MPlGuCQTErV1JwraaMbYaWVIBX7mppzGLATQ==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.5.6: + resolution: {integrity: sha512-rVQVWjjSvlINzaQPZH5JFqsqEsIWdTxY3iJZCnTL/5gQbXIRooVZKI60tVCkOVfzcRPejboxO2t0P89dg5mQaA==} + engines: {node: '>=10'} + serve-handler@6.1.7: resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==} @@ -14416,9 +14618,14 @@ packages: shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.35.3: + resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -14513,6 +14720,9 @@ packages: resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + solid-js@1.9.14: + resolution: {integrity: sha512-sAEXC0Kk0S1EDg+8ysEWJDbYhA3RRoEjwuySUGlKIemeo0I5YZfOyumNjNs9Sv3y2nmhD+0rW66ag2HsMuQiGQ==} + sonic-boom@4.2.1: resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} @@ -15154,9 +15364,9 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} - engines: {node: '>=14.17'} + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} hasBin: true ufo@1.6.4: @@ -15641,6 +15851,11 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which-command@0.1.0: + resolution: {integrity: sha512-XZyoF5/5hZtXitIwzrU4NKK+Wtbb9aB9CezUEw2Q0wlYK8NUYQxC1rRXgNueYLtBAJwXIb+/tFVk4dozciNJMA==} + engines: {node: '>=22'} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -15812,6 +16027,10 @@ packages: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} + yoctocolors@2.2.0: + resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} + engines: {node: '>=18'} + zip-stream@6.0.1: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} @@ -15821,8 +16040,8 @@ packages: peerDependencies: zod: '>= 3.25.0' - zod-openapi@5.3.0: - resolution: {integrity: sha512-hv3DU37kV39v0MEiQ0vcL06NLS9bTHTb7FNtuFk2zhuATsi+UNcNN6y03z7qbI9NdC6LJS+Knk5shOSCUMwsDQ==} + zod-openapi@5.4.6: + resolution: {integrity: sha512-P2jsOOBAq/6hCwUsMCjUATZ8szkMsV5VAwZENfyxp2Hc/XPJQpVwAgevWZc65xZauCwWB9LAn7zYeiCJFAEL+A==} engines: {node: '>=20'} peerDependencies: zod: ^3.25.74 || ^4.0.0 @@ -15880,12 +16099,12 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/vue@3.0.33(vue@3.5.35(@typescript/typescript6@6.0.2))(zod@4.4.3)': + '@ai-sdk/vue@3.0.33(vue@3.5.35(typescript@7.0.2))(zod@4.4.3)': dependencies: '@ai-sdk/provider-utils': 4.0.5(zod@4.4.3) ai: 6.0.33(zod@4.4.3) - swrv: 1.2.0(vue@3.5.35(@typescript/typescript6@6.0.2)) - vue: 3.5.35(@typescript/typescript6@6.0.2) + swrv: 1.2.0(vue@3.5.35(typescript@7.0.2)) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - zod @@ -16084,20 +16303,20 @@ snapshots: '@babel/compat-data@7.29.7': {} - '@babel/core@7.29.0': + '@babel/core@7.29.0(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helpers': 7.29.2 '@babel/parser': 7.29.7 '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -16132,32 +16351,32 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.0)': + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2) '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.7(supports-color@10.2.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.0)': + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)': + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) lodash.debounce: 4.0.8 resolve: 1.22.12 transitivePeerDependencies: @@ -16167,26 +16386,26 @@ snapshots: '@babel/helper-globals@7.29.7': {} - '@babel/helper-member-expression-to-functions@7.29.7': + '@babel/helper-member-expression-to-functions@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.29.7': + '@babel/helper-module-imports@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.0)': + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.29.7 + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -16198,27 +16417,27 @@ snapshots: '@babel/helper-plugin-utils@7.29.7': {} - '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.0)': + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-wrap-function': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/helper-wrap-function': 7.29.7(supports-color@10.2.2) + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.0)': + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-member-expression-to-functions': 7.29.7(supports-color@10.2.2) '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + '@babel/helper-skip-transparent-expression-wrappers@7.29.7(supports-color@10.2.2)': dependencies: - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -16229,10 +16448,10 @@ snapshots: '@babel/helper-validator-option@7.29.7': {} - '@babel/helper-wrap-function@7.29.7': + '@babel/helper-wrap-function@7.29.7(supports-color@10.2.2)': dependencies: '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -16246,578 +16465,578 @@ snapshots: dependencies: '@babel/types': 7.29.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.29.7 + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.0) + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-globals': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/template': 7.29.7 - '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.0) - '@babel/traverse': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/traverse': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0) + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-constant-elements@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-react-constant-elements@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-module-imports': 7.29.7 + '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.29.7 + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-module-imports': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7(supports-color@10.2.2) + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.0)': + '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) '@babel/helper-plugin-utils': 7.29.7 - '@babel/preset-env@7.29.7(@babel/core@7.29.0)': + '@babel/preset-env@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0) - '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0) - '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0) - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0) - babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0(supports-color@10.2.2)) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) core-js-compat: 3.49.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/types': 7.29.7 esutils: 2.0.3 - '@babel/preset-react@7.29.7(@babel/core@7.29.0)': + '@babel/preset-react@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.0) + '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.29.7(@babel/core@7.29.0)': + '@babel/preset-typescript@7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -16835,7 +17054,7 @@ snapshots: '@babel/parser': 7.29.7 '@babel/types': 7.29.7 - '@babel/traverse@7.29.0': + '@babel/traverse@7.29.0(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.0 @@ -16843,11 +17062,11 @@ snapshots: '@babel/parser': 7.29.7 '@babel/template': 7.28.6 '@babel/types': 7.29.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@babel/traverse@7.29.7': + '@babel/traverse@7.29.7(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.7 @@ -16855,7 +17074,7 @@ snapshots: '@babel/parser': 7.29.7 '@babel/template': 7.29.7 '@babel/types': 7.29.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -16907,12 +17126,12 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.0 - '@better-auth/drizzle-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))': + '@better-auth/drizzle-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))': dependencies: '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) '@better-auth/utils': 0.4.1 optionalDependencies: - drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) + drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) '@better-auth/kysely-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(kysely@0.29.2)': dependencies: @@ -17510,19 +17729,19 @@ snapshots: - '@algolia/client-search' - algoliasearch - '@docusaurus/babel@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/babel@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/generator': 7.29.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.0) - '@babel/preset-env': 7.29.7(@babel/core@7.29.0) - '@babel/preset-react': 7.29.7(@babel/core@7.29.0) - '@babel/preset-typescript': 7.29.7(@babel/core@7.29.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/preset-env': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/preset-react': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) '@babel/runtime': 7.29.7 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@10.2.2) '@docusaurus/logger': 3.10.1 - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.2.0 tslib: 2.8.1 @@ -17544,34 +17763,34 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/bundler@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@babel/core': 7.29.0 - '@docusaurus/babel': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@docusaurus/babel': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@docusaurus/cssnano-preset': 3.10.1 '@docusaurus/logger': 3.10.1 - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + babel-loader: 9.2.1(@babel/core@7.29.0(supports-color@10.2.2))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) - css-loader: 6.11.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + copy-webpack-plugin: 11.0.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + css-loader: 6.11.0(@rspack/core@1.7.11)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) cssnano: 6.1.2(postcss@8.5.16) - file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.10.2(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) - null-loader: 4.0.1(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + mini-css-extract-plugin: 2.10.2(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + null-loader: 4.0.1(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) postcss: 8.5.16 - postcss-loader: 7.3.4(@typescript/typescript6@6.0.2)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + postcss-loader: 7.3.4(postcss@8.5.16)(typescript@7.0.2)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) postcss-preset-env: 10.6.1(postcss@8.5.16) - terser-webpack-plugin: 5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + terser-webpack-plugin: 5.6.0(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) - webpackbar: 7.0.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) + webpackbar: 7.0.0(@rspack/core@1.7.11)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) optionalDependencies: - '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16) + '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@minify-html/node' - '@parcel/css' @@ -17589,15 +17808,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/babel': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/bundler': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/babel': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/bundler': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7) boxen: 6.2.1 chalk: 4.1.2 @@ -17606,14 +17825,14 @@ snapshots: combine-promises: 1.2.0 commander: 5.1.0 core-js: 3.49.0 - detect-port: 1.6.1 + detect-port: 1.6.1(supports-color@10.2.2) escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 execa: 5.1.1 fs-extra: 11.2.0 html-tags: 3.3.1 - html-webpack-plugin: 5.6.7(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + html-webpack-plugin: 5.6.7(@rspack/core@1.7.11)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) leven: 3.1.0 lodash: 4.18.1 open: 8.4.2 @@ -17623,7 +17842,7 @@ snapshots: react-dom: 19.2.7(react@19.2.7) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.7)' - react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) react-router: 5.3.4(react@19.2.7) react-router-config: 5.1.1(react-router@5.3.4(react@19.2.7))(react@19.2.7) react-router-dom: 5.3.4(react@19.2.7) @@ -17632,12 +17851,12 @@ snapshots: tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.4(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + webpack-dev-server: 5.2.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) webpack-merge: 6.0.1 optionalDependencies: - '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16) + '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@minify-html/node' - '@parcel/css' @@ -17667,18 +17886,18 @@ snapshots: postcss-sort-media-queries: 5.2.0(postcss@8.5.16) tslib: 2.8.1 - '@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16)': + '@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3)': dependencies: - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@rspack/core': 1.7.11(@swc/helpers@0.5.15) - '@swc/core': 1.15.3(@swc/helpers@0.5.15) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@rspack/core': 1.7.11 + '@swc/core': 1.15.3 '@swc/html': 1.15.40 browserslist: 4.28.2 lightningcss: 1.32.0 semver: 7.7.4 - swc-loader: 0.2.7(@swc/core@1.15.3(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + swc-loader: 0.2.7(@swc/core@1.15.3)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) tslib: 2.8.1 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@minify-html/node' - '@swc/css' @@ -17697,34 +17916,34 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/mdx-loader@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3)': dependencies: '@docusaurus/logger': 3.10.1 - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@mdx-js/mdx': 3.1.1 + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@mdx-js/mdx': 3.1.1(supports-color@10.2.2) '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.5.0 - file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) fs-extra: 11.2.0 image-size: 2.0.2 - mdast-util-mdx: 3.0.0 + mdast-util-mdx: 3.0.0(supports-color@10.2.2) mdast-util-to-string: 4.0.0 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) rehype-raw: 7.0.0 - remark-directive: 3.0.1 + remark-directive: 3.0.1(supports-color@10.2.2) remark-emoji: 4.0.1 - remark-frontmatter: 5.0.0 - remark-gfm: 4.0.1 + remark-frontmatter: 5.0.0(supports-color@10.2.2) + remark-gfm: 4.0.1(supports-color@10.2.2) stringify-object: 3.3.0 tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.1.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) vfile: 6.0.3 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -17741,9 +17960,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/module-type-aliases@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@types/history': 4.7.11 '@types/react': 19.2.17 '@types/react-router-config': 5.0.11 @@ -17768,17 +17987,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-content-blog@3.10.1(61e2dfd21fb4d409e7bca036dfc2b268)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/theme-common': 3.10.1(76621e8bff6c45bac3fc2219e99bbda8) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) cheerio: 1.0.0-rc.12 combine-promises: 1.2.0 feed: 4.2.2 @@ -17791,7 +18010,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.1.0 utility-types: 3.11.0 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -17816,17 +18035,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/theme-common': 3.10.1(76621e8bff6c45bac3fc2219e99bbda8) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.2.0 @@ -17837,7 +18056,7 @@ snapshots: schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -17862,18 +18081,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-content-pages@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) fs-extra: 11.2.0 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -17898,12 +18117,12 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-css-cascade-layers@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -17931,11 +18150,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-debug@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) fs-extra: 11.2.0 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -17965,11 +18184,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-google-analytics@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 @@ -17997,11 +18216,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-google-gtag@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@types/gtag.js': 0.0.20 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -18030,11 +18249,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-google-tag-manager@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 @@ -18062,14 +18281,14 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-sitemap@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) fs-extra: 11.2.0 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -18099,18 +18318,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/plugin-svgr@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2) - '@svgr/webpack': 8.1.0(@typescript/typescript6@6.0.2) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@svgr/core': 8.1.0(supports-color@10.2.2)(typescript@7.0.2) + '@svgr/webpack': 8.1.0(supports-color@10.2.2)(typescript@7.0.2) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) tslib: 2.8.1 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -18135,23 +18354,23 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)': + '@docusaurus/preset-classic@3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-css-cascade-layers': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-debug': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-google-analytics': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-google-gtag': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-google-tag-manager': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-sitemap': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-svgr': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-search-algolia': 3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-content-blog': 3.10.1(61e2dfd21fb4d409e7bca036dfc2b268) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-css-cascade-layers': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-debug': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-google-analytics': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-google-gtag': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-google-tag-manager': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-sitemap': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-svgr': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/theme-common': 3.10.1(76621e8bff6c45bac3fc2219e99bbda8) + '@docusaurus/theme-search-algolia': 3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) transitivePeerDependencies: @@ -18186,21 +18405,21 @@ snapshots: '@types/react': 19.2.17 react: 19.2.7 - '@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/plugin-content-blog': 3.10.1(61e2dfd21fb4d409e7bca036dfc2b268) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/theme-common': 3.10.1(76621e8bff6c45bac3fc2219e99bbda8) '@docusaurus/theme-translations': 3.10.1 - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7) clsx: 2.1.1 copy-text-to-clipboard: 3.2.2 @@ -18239,13 +18458,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/theme-common@3.10.1(76621e8bff6c45bac3fc2219e99bbda8)': dependencies: - '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) '@types/history': 4.7.11 '@types/react': 19.2.17 '@types/react-router-config': 5.0.11 @@ -18272,13 +18491,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-mermaid@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/theme-mermaid@3.10.1(61e2dfd21fb4d409e7bca036dfc2b268)': dependencies: - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/theme-common': 3.10.1(76621e8bff6c45bac3fc2219e99bbda8) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) mermaid: 11.15.0 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) @@ -18308,17 +18527,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-search-algolia@3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)': + '@docusaurus/theme-search-algolia@3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)': dependencies: '@algolia/autocomplete-core': 1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3) '@docsearch/react': 4.6.3(@algolia/client-search@5.53.0)(@types/react@19.2.17)(algoliasearch@5.53.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3) - '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) '@docusaurus/logger': 3.10.1 - '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) + '@docusaurus/theme-common': 3.10.1(76621e8bff6c45bac3fc2219e99bbda8) '@docusaurus/theme-translations': 3.10.1 - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) algoliasearch: 5.53.0 algoliasearch-helper: 3.29.1(algoliasearch@5.53.0) clsx: 2.1.1 @@ -18363,9 +18582,9 @@ snapshots: '@docusaurus/tsconfig@3.10.1': {} - '@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3)': dependencies: - '@mdx-js/mdx': 3.1.1 + '@mdx-js/mdx': 3.1.1(supports-color@10.2.2) '@types/history': 4.7.11 '@types/mdast': 4.0.4 '@types/react': 19.2.17 @@ -18375,7 +18594,7 @@ snapshots: react-dom: 19.2.7(react@19.2.7) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)' utility-types: 3.11.0 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) webpack-merge: 5.10.0 transitivePeerDependencies: - '@minify-html/node' @@ -18393,9 +18612,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils-common@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3)': dependencies: - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) tslib: 2.8.1 transitivePeerDependencies: - '@minify-html/node' @@ -18415,11 +18634,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils-validation@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3)': dependencies: '@docusaurus/logger': 3.10.1 - '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) fs-extra: 11.2.0 joi: 17.13.3 js-yaml: 4.1.1 @@ -18443,14 +18662,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@docusaurus/utils@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3)': dependencies: '@docusaurus/logger': 3.10.1 - '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/types': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) fs-extra: 11.2.0 github-slugger: 1.5.0 globby: 11.1.0 @@ -18463,9 +18682,9 @@ snapshots: prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) utility-types: 3.11.0 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' @@ -18895,20 +19114,20 @@ snapshots: '@floating-ui/utils@0.2.11': {} - '@floating-ui/vue@1.1.11(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@floating-ui/vue@1.1.11(vue@3.5.35(typescript@7.0.2))': dependencies: '@floating-ui/dom': 1.7.6 '@floating-ui/utils': 0.2.11 - vue-demi: 0.14.10(vue@3.5.35(@typescript/typescript6@6.0.2)) + vue-demi: 0.14.10(vue@3.5.35(typescript@7.0.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@floating-ui/vue@1.1.9(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@floating-ui/vue@1.1.9(vue@3.5.35(typescript@7.0.2))': dependencies: '@floating-ui/dom': 1.7.6 '@floating-ui/utils': 0.2.11 - vue-demi: 0.14.10(vue@3.5.35(@typescript/typescript6@6.0.2)) + vue-demi: 0.14.10(vue@3.5.35(typescript@7.0.2)) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -18977,16 +19196,16 @@ snapshots: dependencies: tailwindcss: 4.3.2 - '@headlessui/vue@1.7.23(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@headlessui/vue@1.7.23(vue@3.5.35(typescript@7.0.2))': dependencies: - '@tanstack/vue-virtual': 3.13.28(vue@3.5.35(@typescript/typescript6@6.0.2)) - vue: 3.5.35(@typescript/typescript6@6.0.2) + '@tanstack/vue-virtual': 3.13.28(vue@3.5.35(typescript@7.0.2)) + vue: 3.5.35(typescript@7.0.2) '@homarr/gridstack@1.12.0': {} - '@homarr/node-unifi@2.6.0(undici@7.28.0)': + '@homarr/node-unifi@2.6.0(debug@4.4.3(supports-color@10.2.2))(undici@7.28.0)': dependencies: - axios: 1.9.0 + axios: 1.9.0(debug@4.4.3(supports-color@10.2.2)) eventemitter2: 6.4.9 http-cookie-agent: 6.0.8(tough-cookie@5.1.2)(undici@7.28.0) tough-cookie: 5.1.2 @@ -19009,101 +19228,111 @@ snapshots: '@iconify/types': 2.0.0 import-meta-resolve: 4.2.0 - '@img/colour@1.0.0': + '@img/colour@1.1.0': optional: true - '@img/sharp-darwin-arm64@0.34.5': + '@img/sharp-darwin-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-arm64': 1.3.2 optional: true - '@img/sharp-darwin-x64@0.34.5': + '@img/sharp-darwin-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.3.2 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': + '@img/sharp-freebsd-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': + '@img/sharp-libvips-darwin-arm64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': + '@img/sharp-libvips-darwin-x64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': + '@img/sharp-libvips-linux-arm64@1.3.2': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': + '@img/sharp-libvips-linux-arm@1.3.2': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': + '@img/sharp-libvips-linux-ppc64@1.3.2': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': + '@img/sharp-libvips-linux-riscv64@1.3.2': optional: true - '@img/sharp-libvips-linux-x64@1.2.4': + '@img/sharp-libvips-linux-s390x@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + '@img/sharp-libvips-linux-x64@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': optional: true - '@img/sharp-linux-arm64@0.34.5': + '@img/sharp-libvips-linuxmusl-x64@1.3.2': + optional: true + + '@img/sharp-linux-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.3.2 optional: true - '@img/sharp-linux-arm@0.34.5': + '@img/sharp-linux-arm@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.3.2 optional: true - '@img/sharp-linux-ppc64@0.34.5': + '@img/sharp-linux-ppc64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.3.2 optional: true - '@img/sharp-linux-riscv64@0.34.5': + '@img/sharp-linux-riscv64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.3.2 optional: true - '@img/sharp-linux-s390x@0.34.5': + '@img/sharp-linux-s390x@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.3.2 optional: true - '@img/sharp-linux-x64@0.34.5': + '@img/sharp-linux-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.3.2 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': + '@img/sharp-linuxmusl-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': + '@img/sharp-linuxmusl-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 optional: true - '@img/sharp-wasm32@0.34.5': + '@img/sharp-wasm32@0.35.3': dependencies: '@emnapi/runtime': 1.11.1 optional: true - '@img/sharp-win32-arm64@0.34.5': + '@img/sharp-webcontainers-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 optional: true - '@img/sharp-win32-ia32@0.34.5': + '@img/sharp-win32-arm64@0.35.3': optional: true - '@img/sharp-win32-x64@0.34.5': + '@img/sharp-win32-ia32@0.35.3': + optional: true + + '@img/sharp-win32-x64@0.35.3': optional: true '@immich/sdk@3.0.2': @@ -19288,9 +19517,9 @@ snapshots: '@isaacs/cliui@9.0.0': {} - '@jellyfin/sdk@0.13.0(axios@1.15.0)': + '@jellyfin/sdk@0.13.0(axios@1.15.0(debug@4.4.3(supports-color@10.2.2)))': dependencies: - axios: 1.15.0 + axios: 1.15.0(debug@4.4.3(supports-color@10.2.2)) '@jest/schemas@29.6.3': dependencies: @@ -19466,7 +19695,7 @@ snapshots: '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) tslib: 2.8.1 - '@kubernetes/client-node@1.4.0': + '@kubernetes/client-node@1.4.0(supports-color@10.2.2)': dependencies: '@types/js-yaml': 4.0.9 '@types/node': 24.13.2 @@ -19480,7 +19709,7 @@ snapshots: node-fetch: 2.7.0 openid-client: 6.3.3 rfc4648: 1.5.4 - socks-proxy-agent: 8.0.5 + socks-proxy-agent: 8.0.5(supports-color@10.2.2) stream-buffers: 3.0.3 tar-fs: 3.1.2 ws: 8.21.0 @@ -19491,9 +19720,9 @@ snapshots: - supports-color - utf-8-validate - '@kwsites/file-exists@1.1.1': + '@kwsites/file-exists@1.1.1(supports-color@10.2.2)': dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -19648,7 +19877,7 @@ snapshots: '@marijn/find-cluster-break@1.0.2': {} - '@mdx-js/mdx@3.1.1': + '@mdx-js/mdx@3.1.1(supports-color@10.2.2)': dependencies: '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 @@ -19660,14 +19889,14 @@ snapshots: 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 + hast-util-to-jsx-runtime: 2.3.6(supports-color@10.2.2) markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 recma-jsx: 1.0.1(acorn@8.16.0) recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.1 - remark-parse: 11.0.0 + rehype-recma: 1.0.0(supports-color@10.2.2) + remark-mdx: 3.1.1(supports-color@10.2.2) + remark-parse: 11.0.0(supports-color@10.2.2) remark-rehype: 11.1.2 source-map: 0.7.6 unified: 11.0.5 @@ -19688,7 +19917,7 @@ snapshots: dependencies: '@chevrotain/types': 11.1.2 - '@modelcontextprotocol/sdk@1.26.0(zod@4.4.3)': + '@modelcontextprotocol/sdk@1.26.0(supports-color@10.2.2)(zod@4.4.3)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.24) ajv: 8.18.0 @@ -19698,8 +19927,8 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.1.0 - express: 5.2.1 - express-rate-limit: 8.5.2(express@5.2.1) + express: 5.2.1(supports-color@10.2.2) + express-rate-limit: 8.5.2(express@5.2.1(supports-color@10.2.2)) hono: 4.12.24 jose: 6.2.3 json-schema-typed: 8.0.2 @@ -19710,7 +19939,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)': + '@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.4.3)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.24) ajv: 8.18.0 @@ -19720,8 +19949,8 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.1.0 - express: 5.2.1 - express-rate-limit: 8.5.2(express@5.2.1) + express: 5.2.1(supports-color@10.2.2) + express-rate-limit: 8.5.2(express@5.2.1(supports-color@10.2.2)) hono: 4.12.24 jose: 6.2.3 json-schema-typed: 8.0.2 @@ -19781,30 +20010,30 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true - '@next/env@16.2.10': {} + '@next/env@16.3.0-preview.9': {} - '@next/swc-darwin-arm64@16.2.10': + '@next/swc-darwin-arm64@16.3.0-preview.9': optional: true - '@next/swc-darwin-x64@16.2.10': + '@next/swc-darwin-x64@16.3.0-preview.9': optional: true - '@next/swc-linux-arm64-gnu@16.2.10': + '@next/swc-linux-arm64-gnu@16.3.0-preview.9': optional: true - '@next/swc-linux-arm64-musl@16.2.10': + '@next/swc-linux-arm64-musl@16.3.0-preview.9': optional: true - '@next/swc-linux-x64-gnu@16.2.10': + '@next/swc-linux-x64-gnu@16.3.0-preview.9': optional: true - '@next/swc-linux-x64-musl@16.2.10': + '@next/swc-linux-x64-musl@16.3.0-preview.9': optional: true - '@next/swc-win32-arm64-msvc@16.2.10': + '@next/swc-win32-arm64-msvc@16.3.0-preview.9': optional: true - '@next/swc-win32-x64-msvc@16.2.10': + '@next/swc-win32-x64-msvc@16.3.0-preview.9': optional: true '@nivo/annotations@0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': @@ -20780,39 +21009,37 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 1.7.11 '@rspack/binding-win32-x64-msvc': 1.7.11 - '@rspack/core@1.7.11(@swc/helpers@0.5.15)': + '@rspack/core@1.7.11': dependencies: '@module-federation/runtime-tools': 0.22.0 '@rspack/binding': 1.7.11 '@rspack/lite-tapable': 1.1.0 - optionalDependencies: - '@swc/helpers': 0.5.15 '@rspack/lite-tapable@1.1.0': {} '@rvf/set-get@7.0.1': {} - '@scalar/agent-chat@0.12.18(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(tailwindcss@4.3.2)(zod@4.4.3)': + '@scalar/agent-chat@0.12.18(nprogress@0.2.0)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)(zod@4.4.3)': dependencies: - '@ai-sdk/vue': 3.0.33(vue@3.5.35(@typescript/typescript6@6.0.2))(zod@4.4.3) - '@scalar/api-client': 3.13.3(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(tailwindcss@4.3.2) - '@scalar/components': 0.27.6(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) + '@ai-sdk/vue': 3.0.33(vue@3.5.35(typescript@7.0.2))(zod@4.4.3) + '@scalar/api-client': 3.13.3(nprogress@0.2.0)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) + '@scalar/components': 0.27.6(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) '@scalar/helpers': 0.9.0 - '@scalar/icons': 0.7.3(@typescript/typescript6@6.0.2) + '@scalar/icons': 0.7.3(typescript@7.0.2) '@scalar/json-magic': 0.12.17 '@scalar/openapi-types': 0.9.1 '@scalar/schemas': 0.7.2 '@scalar/themes': 0.16.2 '@scalar/types': 0.16.2 - '@scalar/use-toasts': 0.10.2(@typescript/typescript6@6.0.2) + '@scalar/use-toasts': 0.10.2(typescript@7.0.2) '@scalar/validation': 0.6.0 - '@scalar/workspace-store': 0.55.3(@typescript/typescript6@6.0.2) - '@vueuse/core': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@scalar/workspace-store': 0.55.3(typescript@7.0.2) + '@vueuse/core': 13.9.0(vue@3.5.35(typescript@7.0.2)) ai: 6.0.33(zod@4.4.3) js-base64: 3.7.8 neverpanic: 0.0.8 truncate-json: 3.0.1 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - '@vue/composition-api' - async-validator @@ -20830,36 +21057,36 @@ snapshots: - universal-cookie - zod - '@scalar/api-client@3.13.3(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(tailwindcss@4.3.2)': + '@scalar/api-client@3.13.3(nprogress@0.2.0)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)': dependencies: '@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.2) - '@headlessui/vue': 1.7.23(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@scalar/blocks': 0.1.4(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) - '@scalar/components': 0.27.6(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) + '@headlessui/vue': 1.7.23(vue@3.5.35(typescript@7.0.2)) + '@scalar/blocks': 0.1.4(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) + '@scalar/components': 0.27.6(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) '@scalar/helpers': 0.9.0 - '@scalar/icons': 0.7.3(@typescript/typescript6@6.0.2) - '@scalar/oas-utils': 0.19.4(@typescript/typescript6@6.0.2) + '@scalar/icons': 0.7.3(typescript@7.0.2) + '@scalar/oas-utils': 0.19.4(typescript@7.0.2) '@scalar/openapi-types': 0.9.1 - '@scalar/sidebar': 0.9.29(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) + '@scalar/sidebar': 0.9.29(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) '@scalar/snippetz': 0.9.21 '@scalar/themes': 0.16.2 '@scalar/typebox': 0.1.3 '@scalar/types': 0.16.2 - '@scalar/use-codemirror': 0.14.12(@typescript/typescript6@6.0.2) - '@scalar/use-hooks': 0.4.7(@typescript/typescript6@6.0.2) - '@scalar/use-toasts': 0.10.2(@typescript/typescript6@6.0.2) - '@scalar/workspace-store': 0.55.3(@typescript/typescript6@6.0.2) - '@vueuse/core': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@vueuse/integrations': 13.9.0(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@scalar/use-codemirror': 0.14.12(typescript@7.0.2) + '@scalar/use-hooks': 0.4.7(typescript@7.0.2) + '@scalar/use-toasts': 0.10.2(typescript@7.0.2) + '@scalar/workspace-store': 0.55.3(typescript@7.0.2) + '@vueuse/core': 13.9.0(vue@3.5.35(typescript@7.0.2)) + '@vueuse/integrations': 13.9.0(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.35(typescript@7.0.2)) focus-trap: 7.8.0 fuse.js: 7.4.2 js-base64: 3.7.8 jsonc-parser: 3.3.1 nanoid: 5.1.16 pretty-ms: 9.3.0 - radix-vue: 1.9.17(vue@3.5.35(@typescript/typescript6@6.0.2)) + radix-vue: 1.9.17(vue@3.5.35(typescript@7.0.2)) set-cookie-parser: 3.1.0 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) yaml: 2.9.0 zod: 4.4.3 transitivePeerDependencies: @@ -20878,9 +21105,9 @@ snapshots: - typescript - universal-cookie - '@scalar/api-reference-react@0.9.54(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(zod@4.4.3)': + '@scalar/api-reference-react@0.9.54(nprogress@0.2.0)(react@19.2.7)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)(zod@4.4.3)': dependencies: - '@scalar/api-reference': 1.62.5(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(tailwindcss@4.3.2)(zod@4.4.3) + '@scalar/api-reference': 1.62.5(nprogress@0.2.0)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)(zod@4.4.3) '@scalar/types': 0.16.2 react: 19.2.7 transitivePeerDependencies: @@ -20900,32 +21127,32 @@ snapshots: - universal-cookie - zod - '@scalar/api-reference@1.62.5(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(tailwindcss@4.3.2)(zod@4.4.3)': + '@scalar/api-reference@1.62.5(nprogress@0.2.0)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)(zod@4.4.3)': dependencies: - '@headlessui/vue': 1.7.23(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@scalar/agent-chat': 0.12.18(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(tailwindcss@4.3.2)(zod@4.4.3) - '@scalar/api-client': 3.13.3(@typescript/typescript6@6.0.2)(nprogress@0.2.0)(tailwindcss@4.3.2) - '@scalar/blocks': 0.1.4(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) - '@scalar/code-highlight': 0.4.1 - '@scalar/components': 0.27.6(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) + '@headlessui/vue': 1.7.23(vue@3.5.35(typescript@7.0.2)) + '@scalar/agent-chat': 0.12.18(nprogress@0.2.0)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)(zod@4.4.3) + '@scalar/api-client': 3.13.3(nprogress@0.2.0)(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) + '@scalar/blocks': 0.1.4(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) + '@scalar/code-highlight': 0.4.1(supports-color@10.2.2) + '@scalar/components': 0.27.6(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) '@scalar/helpers': 0.9.0 - '@scalar/icons': 0.7.3(@typescript/typescript6@6.0.2) - '@scalar/oas-utils': 0.19.4(@typescript/typescript6@6.0.2) + '@scalar/icons': 0.7.3(typescript@7.0.2) + '@scalar/oas-utils': 0.19.4(typescript@7.0.2) '@scalar/schemas': 0.7.2 - '@scalar/sidebar': 0.9.29(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) + '@scalar/sidebar': 0.9.29(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) '@scalar/snippetz': 0.9.21 '@scalar/themes': 0.16.2 '@scalar/types': 0.16.2 - '@scalar/use-hooks': 0.4.7(@typescript/typescript6@6.0.2) - '@scalar/use-toasts': 0.10.2(@typescript/typescript6@6.0.2) + '@scalar/use-hooks': 0.4.7(typescript@7.0.2) + '@scalar/use-toasts': 0.10.2(typescript@7.0.2) '@scalar/validation': 0.6.0 - '@scalar/workspace-store': 0.55.3(@typescript/typescript6@6.0.2) - '@unhead/vue': 2.1.15(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@vueuse/core': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@scalar/workspace-store': 0.55.3(typescript@7.0.2) + '@unhead/vue': 2.1.15(vue@3.5.35(typescript@7.0.2)) + '@vueuse/core': 13.9.0(vue@3.5.35(typescript@7.0.2)) fuse.js: 7.4.2 microdiff: 1.5.0 nanoid: 5.1.16 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) yaml: 2.9.0 transitivePeerDependencies: - '@vue/composition-api' @@ -20948,25 +21175,25 @@ snapshots: dependencies: '@scalar/helpers': 0.9.0 - '@scalar/blocks@0.1.4(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2)': + '@scalar/blocks@0.1.4(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)': dependencies: - '@scalar/components': 0.27.6(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) + '@scalar/components': 0.27.6(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) '@scalar/helpers': 0.9.0 - '@scalar/icons': 0.7.3(@typescript/typescript6@6.0.2) + '@scalar/icons': 0.7.3(typescript@7.0.2) '@scalar/snippetz': 0.9.21 '@scalar/themes': 0.16.2 '@scalar/types': 0.16.2 - '@scalar/workspace-store': 0.55.3(@typescript/typescript6@6.0.2) + '@scalar/workspace-store': 0.55.3(typescript@7.0.2) '@types/har-format': 1.2.16 js-base64: 3.7.8 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - '@vue/composition-api' - supports-color - tailwindcss - typescript - '@scalar/code-highlight@0.4.1': + '@scalar/code-highlight@0.4.1(supports-color@10.2.2)': dependencies: hast-util-to-text: 4.0.2 highlight.js: 11.11.1 @@ -20977,8 +21204,8 @@ snapshots: rehype-raw: 7.0.0 rehype-sanitize: 6.0.0 rehype-stringify: 10.0.1 - remark-gfm: 4.0.1 - remark-parse: 11.0.0 + remark-gfm: 4.0.1(supports-color@10.2.2) + remark-parse: 11.0.0(supports-color@10.2.2) remark-rehype: 11.1.2 remark-stringify: 11.0.0 unified: 11.0.5 @@ -20986,21 +21213,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@scalar/components@0.27.6(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2)': + '@scalar/components@0.27.6(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)': dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/vue': 1.1.9(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@floating-ui/vue': 1.1.9(vue@3.5.35(typescript@7.0.2)) '@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.2) - '@headlessui/vue': 1.7.23(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@scalar/code-highlight': 0.4.1 + '@headlessui/vue': 1.7.23(vue@3.5.35(typescript@7.0.2)) + '@scalar/code-highlight': 0.4.1(supports-color@10.2.2) '@scalar/helpers': 0.9.0 - '@scalar/icons': 0.7.3(@typescript/typescript6@6.0.2) + '@scalar/icons': 0.7.3(typescript@7.0.2) '@scalar/themes': 0.16.2 - '@scalar/use-hooks': 0.4.7(@typescript/typescript6@6.0.2) - '@vueuse/core': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) - cva: 1.0.0-beta.4(@typescript/typescript6@6.0.2) - radix-vue: 1.9.17(vue@3.5.35(@typescript/typescript6@6.0.2)) - vue: 3.5.35(@typescript/typescript6@6.0.2) + '@scalar/use-hooks': 0.4.7(typescript@7.0.2) + '@vueuse/core': 13.9.0(vue@3.5.35(typescript@7.0.2)) + cva: 1.0.0-beta.4(typescript@7.0.2) + radix-vue: 1.9.17(vue@3.5.35(typescript@7.0.2)) + vue: 3.5.35(typescript@7.0.2) vue-component-type-helpers: 3.3.4 transitivePeerDependencies: - '@vue/composition-api' @@ -21010,12 +21237,12 @@ snapshots: '@scalar/helpers@0.9.0': {} - '@scalar/icons@0.7.3(@typescript/typescript6@6.0.2)': + '@scalar/icons@0.7.3(typescript@7.0.2)': dependencies: '@phosphor-icons/core': 2.1.1 '@types/node': 24.13.3 chalk: 5.6.2 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - typescript @@ -21025,14 +21252,14 @@ snapshots: pathe: 2.0.3 yaml: 2.9.0 - '@scalar/oas-utils@0.19.4(@typescript/typescript6@6.0.2)': + '@scalar/oas-utils@0.19.4(typescript@7.0.2)': dependencies: '@scalar/helpers': 0.9.0 '@scalar/themes': 0.16.2 '@scalar/types': 0.16.2 - '@scalar/workspace-store': 0.55.3(@typescript/typescript6@6.0.2) + '@scalar/workspace-store': 0.55.3(typescript@7.0.2) flatted: 3.4.2 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) yaml: 2.9.0 transitivePeerDependencies: - typescript @@ -21048,15 +21275,15 @@ snapshots: '@scalar/helpers': 0.9.0 '@scalar/validation': 0.6.0 - '@scalar/sidebar@0.9.29(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2)': + '@scalar/sidebar@0.9.29(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2)': dependencies: - '@scalar/components': 0.27.6(@typescript/typescript6@6.0.2)(tailwindcss@4.3.2) + '@scalar/components': 0.27.6(supports-color@10.2.2)(tailwindcss@4.3.2)(typescript@7.0.2) '@scalar/helpers': 0.9.0 - '@scalar/icons': 0.7.3(@typescript/typescript6@6.0.2) + '@scalar/icons': 0.7.3(typescript@7.0.2) '@scalar/themes': 0.16.2 - '@scalar/use-hooks': 0.4.7(@typescript/typescript6@6.0.2) - '@scalar/workspace-store': 0.55.3(@typescript/typescript6@6.0.2) - vue: 3.5.35(@typescript/typescript6@6.0.2) + '@scalar/use-hooks': 0.4.7(typescript@7.0.2) + '@scalar/workspace-store': 0.55.3(typescript@7.0.2) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - '@vue/composition-api' - supports-color @@ -21083,7 +21310,7 @@ snapshots: type-fest: 5.7.0 zod: 4.4.3 - '@scalar/use-codemirror@0.14.12(@typescript/typescript6@6.0.2)': + '@scalar/use-codemirror@0.14.12(typescript@7.0.2)': dependencies: '@codemirror/autocomplete': 6.20.3 '@codemirror/commands': 6.10.3 @@ -21099,31 +21326,31 @@ snapshots: '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 '@replit/codemirror-css-color-picker': 6.3.0(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.43.0) - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - typescript - '@scalar/use-hooks@0.4.7(@typescript/typescript6@6.0.2)': + '@scalar/use-hooks@0.4.7(typescript@7.0.2)': dependencies: - '@scalar/use-toasts': 0.10.2(@typescript/typescript6@6.0.2) + '@scalar/use-toasts': 0.10.2(typescript@7.0.2) '@scalar/validation': 0.6.0 - '@vueuse/core': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) - cva: 1.0.0-beta.4(@typescript/typescript6@6.0.2) + '@vueuse/core': 13.9.0(vue@3.5.35(typescript@7.0.2)) + cva: 1.0.0-beta.4(typescript@7.0.2) tailwind-merge: 3.5.0 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - typescript - '@scalar/use-toasts@0.10.2(@typescript/typescript6@6.0.2)': + '@scalar/use-toasts@0.10.2(typescript@7.0.2)': dependencies: - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) vue-sonner: 1.3.2 transitivePeerDependencies: - typescript '@scalar/validation@0.6.0': {} - '@scalar/workspace-store@0.55.3(@typescript/typescript6@6.0.2)': + '@scalar/workspace-store@0.55.3(typescript@7.0.2)': dependencies: '@scalar/asyncapi-upgrader': 0.1.2 '@scalar/helpers': 0.9.0 @@ -21136,7 +21363,7 @@ snapshots: '@scalar/validation': 0.6.0 js-base64: 3.7.8 type-fest: 5.7.0 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) yaml: 2.9.0 transitivePeerDependencies: - typescript @@ -21145,47 +21372,44 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@25.0.5(@typescript/typescript6@6.0.2))': + '@semantic-release/changelog@7.0.0(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))': dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 - fs-extra: 11.2.0 - lodash: 4.18.1 - semantic-release: 25.0.5(@typescript/typescript6@6.0.2) + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + lodash-es: 4.17.21 + semantic-release: 25.0.5(supports-color@10.2.2)(typescript@7.0.2) - '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2)': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.4.3 - import-from-esm: 2.0.0 + debug: 4.4.3(supports-color@10.2.2) + import-from-esm: 2.0.0(supports-color@10.2.2) lodash-es: 4.17.21 micromatch: 4.0.8 - semantic-release: 25.0.5(@typescript/typescript6@6.0.2) + semantic-release: 25.0.5(supports-color@10.2.2)(typescript@7.0.2) transitivePeerDependencies: - supports-color - '@semantic-release/error@3.0.0': {} - '@semantic-release/error@4.0.0': {} - '@semantic-release/git@10.0.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2))': + '@semantic-release/git@11.0.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2)': dependencies: - '@semantic-release/error': 3.0.0 - aggregate-error: 3.1.0 - debug: 4.4.3 + '@semantic-release/error': 4.0.0 + aggregate-error: 5.0.0 + debug: 4.4.3(supports-color@10.2.2) dir-glob: 3.0.1 - execa: 5.1.1 - lodash: 4.18.1 + execa: 10.0.1 + lodash-es: 4.17.21 micromatch: 4.0.8 - p-reduce: 2.1.0 - semantic-release: 25.0.5(@typescript/typescript6@6.0.2) + p-reduce: 3.0.0 + semantic-release: 25.0.5(supports-color@10.2.2)(typescript@7.0.2) transitivePeerDependencies: - supports-color - '@semantic-release/github@12.0.9(semantic-release@25.0.5(@typescript/typescript6@6.0.2))': + '@semantic-release/github@12.0.9(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2)': dependencies: '@octokit/core': 7.0.6 '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) @@ -21193,22 +21417,22 @@ snapshots: '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) dir-glob: 3.0.1 - http-proxy-agent: 9.0.0 - https-proxy-agent: 9.0.0 + http-proxy-agent: 9.0.0(supports-color@10.2.2) + https-proxy-agent: 9.0.0(supports-color@10.2.2) issue-parser: 7.0.1 lodash-es: 4.17.21 mime: 4.0.4 p-filter: 4.1.0 - semantic-release: 25.0.5(@typescript/typescript6@6.0.2) + semantic-release: 25.0.5(supports-color@10.2.2)(typescript@7.0.2) tinyglobby: 0.2.17 undici: 7.28.0 url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@13.1.5(semantic-release@25.0.5(@typescript/typescript6@6.0.2))': + '@semantic-release/npm@13.1.5(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))': dependencies: '@actions/core': 3.0.0 '@semantic-release/error': 4.0.0 @@ -21223,21 +21447,21 @@ snapshots: rc: 1.2.8 read-pkg: 10.0.0 registry-auth-token: 5.0.2 - semantic-release: 25.0.5(@typescript/typescript6@6.0.2) + semantic-release: 25.0.5(supports-color@10.2.2)(typescript@7.0.2) semver: 7.7.4 tempy: 3.1.0 - '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2))': + '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2)': dependencies: conventional-changelog-angular: 8.0.0 conventional-changelog-writer: 8.0.0 conventional-commits-filter: 5.0.0 conventional-commits-parser: 6.0.0 - debug: 4.4.3 - import-from-esm: 2.0.0 + debug: 4.4.3(supports-color@10.2.2) + import-from-esm: 2.0.0(supports-color@10.2.2) lodash-es: 4.17.21 read-package-up: 11.0.0 - semantic-release: 25.0.5(@typescript/typescript6@6.0.2) + semantic-release: 25.0.5(supports-color@10.2.2)(typescript@7.0.2) transitivePeerDependencies: - supports-color @@ -21283,60 +21507,94 @@ snapshots: color: 5.0.2 text-hex: 1.0.0 + '@solid-primitives/event-listener@2.4.6(solid-js@1.9.14)': + dependencies: + '@solid-primitives/utils': 6.4.1(solid-js@1.9.14) + solid-js: 1.9.14 + + '@solid-primitives/keyboard@1.3.7(solid-js@1.9.14)': + dependencies: + '@solid-primitives/event-listener': 2.4.6(solid-js@1.9.14) + '@solid-primitives/rootless': 1.5.4(solid-js@1.9.14) + '@solid-primitives/utils': 6.4.1(solid-js@1.9.14) + solid-js: 1.9.14 + + '@solid-primitives/resize-observer@2.2.0(solid-js@1.9.14)': + dependencies: + '@solid-primitives/event-listener': 2.4.6(solid-js@1.9.14) + '@solid-primitives/rootless': 1.5.4(solid-js@1.9.14) + '@solid-primitives/static-store': 0.1.4(solid-js@1.9.14) + '@solid-primitives/utils': 6.4.1(solid-js@1.9.14) + solid-js: 1.9.14 + + '@solid-primitives/rootless@1.5.4(solid-js@1.9.14)': + dependencies: + '@solid-primitives/utils': 6.4.1(solid-js@1.9.14) + solid-js: 1.9.14 + + '@solid-primitives/static-store@0.1.4(solid-js@1.9.14)': + dependencies: + '@solid-primitives/utils': 6.4.1(solid-js@1.9.14) + solid-js: 1.9.14 + + '@solid-primitives/utils@6.4.1(solid-js@1.9.14)': + dependencies: + solid-js: 1.9.14 + '@standard-schema/spec@1.1.0': {} '@standard-schema/utils@0.3.0': {} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.29.0)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) - '@svgr/babel-preset@8.1.0(@babel/core@7.29.0)': + '@svgr/babel-preset@8.1.0(@babel/core@7.29.0(supports-color@10.2.2))': dependencies: - '@babel/core': 7.29.0 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.29.0) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.29.0) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.29.0(supports-color@10.2.2)) - '@svgr/core@8.1.0(@typescript/typescript6@6.0.2)': + '@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2)': dependencies: - '@babel/core': 7.29.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@svgr/babel-preset': 8.1.0(@babel/core@7.29.0(supports-color@10.2.2)) camelcase: 6.3.0 - cosmiconfig: 8.3.6(@typescript/typescript6@6.0.2) + cosmiconfig: 8.3.6(typescript@7.0.2) snake-case: 3.0.4 transitivePeerDependencies: - supports-color @@ -21347,35 +21605,35 @@ snapshots: '@babel/types': 7.29.7 entities: 4.5.0 - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2))': + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.29.0) - '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@svgr/babel-preset': 8.1.0(@babel/core@7.29.0(supports-color@10.2.2)) + '@svgr/core': 8.1.0(supports-color@10.2.2)(typescript@7.0.2) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)': + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2))(typescript@7.0.2)': dependencies: - '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2) - cosmiconfig: 8.3.6(@typescript/typescript6@6.0.2) + '@svgr/core': 8.1.0(supports-color@10.2.2)(typescript@7.0.2) + cosmiconfig: 8.3.6(typescript@7.0.2) deepmerge: 4.3.1 svgo: 3.3.3 transitivePeerDependencies: - typescript - '@svgr/webpack@8.1.0(@typescript/typescript6@6.0.2)': + '@svgr/webpack@8.1.0(supports-color@10.2.2)(typescript@7.0.2)': dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-constant-elements': 7.29.7(@babel/core@7.29.0) - '@babel/preset-env': 7.29.7(@babel/core@7.29.0) - '@babel/preset-react': 7.29.7(@babel/core@7.29.0) - '@babel/preset-typescript': 7.29.7(@babel/core@7.29.0) - '@svgr/core': 8.1.0(@typescript/typescript6@6.0.2) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/plugin-transform-react-constant-elements': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2)) + '@babel/preset-env': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/preset-react': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) + '@svgr/core': 8.1.0(supports-color@10.2.2)(typescript@7.0.2) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(supports-color@10.2.2)(typescript@7.0.2))(typescript@7.0.2) transitivePeerDependencies: - supports-color - typescript @@ -21410,7 +21668,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.15.3': optional: true - '@swc/core@1.15.3(@swc/helpers@0.5.15)': + '@swc/core@1.15.3': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 @@ -21425,7 +21683,6 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.15.3 '@swc/core-win32-ia32-msvc': 1.15.3 '@swc/core-win32-x64-msvc': 1.15.3 - '@swc/helpers': 0.5.15 '@swc/counter@0.1.3': {} @@ -21494,18 +21751,18 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@t3-oss/env-core@0.13.11(@typescript/typescript6@6.0.2)(arktype@2.1.20)(zod@4.4.3)': + '@t3-oss/env-core@0.13.11(arktype@2.1.20)(typescript@7.0.2)(zod@4.4.3)': optionalDependencies: arktype: 2.1.20 - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 zod: 4.4.3 - '@t3-oss/env-nextjs@0.13.11(@typescript/typescript6@6.0.2)(arktype@2.1.20)(zod@4.4.3)': + '@t3-oss/env-nextjs@0.13.11(arktype@2.1.20)(typescript@7.0.2)(zod@4.4.3)': dependencies: - '@t3-oss/env-core': 0.13.11(@typescript/typescript6@6.0.2)(arktype@2.1.20)(zod@4.4.3) + '@t3-oss/env-core': 0.13.11(arktype@2.1.20)(typescript@7.0.2)(zod@4.4.3) optionalDependencies: arktype: 2.1.20 - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 zod: 4.4.3 '@tabler/icons-react@3.44.0(react@19.2.7)': @@ -21584,22 +21841,64 @@ snapshots: postcss: 8.5.15 tailwindcss: 4.3.2 + '@tanstack/devtools-client@0.0.8': + dependencies: + '@tanstack/devtools-event-client': 0.5.0 + + '@tanstack/devtools-event-bus@0.4.2': + dependencies: + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@tanstack/devtools-event-client@0.5.0': {} + + '@tanstack/devtools-ui@0.6.0(csstype@3.2.3)(solid-js@1.9.14)': + dependencies: + clsx: 2.1.1 + dayjs: 1.11.21 + goober: 2.1.19(csstype@3.2.3) + solid-js: 1.9.14 + transitivePeerDependencies: + - csstype + + '@tanstack/devtools@0.13.0(csstype@3.2.3)(solid-js@1.9.14)': + dependencies: + '@solid-primitives/event-listener': 2.4.6(solid-js@1.9.14) + '@solid-primitives/keyboard': 1.3.7(solid-js@1.9.14) + '@solid-primitives/resize-observer': 2.2.0(solid-js@1.9.14) + '@tanstack/devtools-client': 0.0.8 + '@tanstack/devtools-event-bus': 0.4.2 + '@tanstack/devtools-ui': 0.6.0(csstype@3.2.3)(solid-js@1.9.14) + clsx: 2.1.1 + goober: 2.1.19(csstype@3.2.3) + solid-js: 1.9.14 + transitivePeerDependencies: + - bufferutil + - csstype + - utf-8-validate + '@tanstack/match-sorter-utils@8.19.4': dependencies: remove-accents: 0.5.0 - '@tanstack/query-async-storage-persister@5.101.2': - dependencies: - '@tanstack/query-core': 5.101.2 - '@tanstack/query-persist-client-core': 5.101.2 - '@tanstack/query-core@5.101.2': {} '@tanstack/query-devtools@5.101.2': {} - '@tanstack/query-persist-client-core@5.101.2': + '@tanstack/react-devtools@0.10.9(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(csstype@3.2.3)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(solid-js@1.9.14)': dependencies: - '@tanstack/query-core': 5.101.2 + '@tanstack/devtools': 0.13.0(csstype@3.2.3)(solid-js@1.9.14) + '@types/react': 19.2.17 + '@types/react-dom': 19.2.3(@types/react@19.2.17) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + transitivePeerDependencies: + - bufferutil + - csstype + - solid-js + - utf-8-validate '@tanstack/react-query-devtools@5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(react@19.2.7)': dependencies: @@ -21607,16 +21906,10 @@ snapshots: '@tanstack/react-query': 5.101.2(react@19.2.7) react: 19.2.7 - '@tanstack/react-query-next-experimental@5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)': + '@tanstack/react-query-next-experimental@5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)': dependencies: '@tanstack/react-query': 5.101.2(react@19.2.7) - next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) - react: 19.2.7 - - '@tanstack/react-query-persist-client@5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(react@19.2.7)': - dependencies: - '@tanstack/query-persist-client-core': 5.101.2 - '@tanstack/react-query': 5.101.2(react@19.2.7) + next: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: 19.2.7 '@tanstack/react-query@5.101.2(react@19.2.7)': @@ -21642,28 +21935,28 @@ snapshots: '@tanstack/virtual-core@3.17.0': {} - '@tanstack/vue-virtual@3.13.28(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@tanstack/vue-virtual@3.13.28(vue@3.5.35(typescript@7.0.2))': dependencies: '@tanstack/virtual-core': 3.17.0 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) - '@testcontainers/mysql@12.0.4': + '@testcontainers/mysql@12.0.4(supports-color@10.2.2)': dependencies: - testcontainers: 12.0.4 + testcontainers: 12.0.4(supports-color@10.2.2) transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/postgresql@12.0.4': + '@testcontainers/postgresql@12.0.4(supports-color@10.2.2)': dependencies: - testcontainers: 12.0.4 + testcontainers: 12.0.4(supports-color@10.2.2) transitivePeerDependencies: - bare-buffer - supports-color - '@testcontainers/redis@12.0.4': + '@testcontainers/redis@12.0.4(supports-color@10.2.2)': dependencies: - testcontainers: 12.0.4 + testcontainers: 12.0.4(supports-color@10.2.2) transitivePeerDependencies: - bare-buffer - supports-color @@ -21889,42 +22182,42 @@ snapshots: '@tiptap/extensions': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3) '@tiptap/pm': 3.27.3 - '@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)': + '@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2)': dependencies: - '@trpc/server': 11.18.0(@typescript/typescript6@6.0.2) - typescript: '@typescript/typescript6@6.0.2' + '@trpc/server': 11.18.0(typescript@7.0.2) + typescript: 7.0.2 - '@trpc/next@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@trpc/next@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.2)': dependencies: - '@trpc/client': 11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2) - '@trpc/server': 11.18.0(@typescript/typescript6@6.0.2) - next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2) + '@trpc/server': 11.18.0(typescript@7.0.2) + next: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 optionalDependencies: '@tanstack/react-query': 5.101.2(react@19.2.7) - '@trpc/react-query': 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7) + '@trpc/react-query': 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2) - '@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7)': + '@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2)': dependencies: '@tanstack/react-query': 5.101.2(react@19.2.7) - '@trpc/client': 11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2) - '@trpc/server': 11.18.0(@typescript/typescript6@6.0.2) + '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2) + '@trpc/server': 11.18.0(typescript@7.0.2) react: 19.2.7 - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 - '@trpc/server@11.18.0(@typescript/typescript6@6.0.2)': + '@trpc/server@11.18.0(typescript@7.0.2)': dependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 - '@trpc/tanstack-react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2))(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2)(react@19.2.7)': + '@trpc/tanstack-react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2))(@trpc/server@11.18.0(typescript@7.0.2))(react@19.2.7)(typescript@7.0.2)': dependencies: '@tanstack/react-query': 5.101.2(react@19.2.7) - '@trpc/client': 11.18.0(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(@typescript/typescript6@6.0.2) - '@trpc/server': 11.18.0(@typescript/typescript6@6.0.2) + '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@7.0.2))(typescript@7.0.2) + '@trpc/server': 11.18.0(typescript@7.0.2) react: 19.2.7 - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 '@tsconfig/docusaurus@2.0.9': {} @@ -22362,17 +22655,73 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript/typescript6@6.0.2': - dependencies: - '@typescript/old': typescript@6.0.3 + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true '@ungap/structured-clone@1.3.0': {} - '@unhead/vue@2.1.15(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@unhead/vue@2.1.15(vue@3.5.35(typescript@7.0.2))': dependencies: hookable: 6.1.1 unhead: 2.1.15 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) '@upsetjs/venn.js@2.0.0': optionalDependencies: @@ -22408,10 +22757,10 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))': + '@vitejs/plugin-react@6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) + vite: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0) optionalDependencies: babel-plugin-react-compiler: 1.0.0 @@ -22427,7 +22776,7 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)) '@vitest/expect@4.1.10': dependencies: @@ -22438,13 +22787,22 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2) + msw: 2.14.6(@types/node@24.13.3)(typescript@7.0.2) + vite: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0) + + '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.14.6(@types/node@24.13.3)(typescript@7.0.2) vite: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': @@ -22474,7 +22832,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)) '@vitest/utils@4.1.10': dependencies: @@ -22528,36 +22886,36 @@ snapshots: '@vue/shared': 3.5.35 csstype: 3.2.3 - '@vue/server-renderer@3.5.35(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@vue/server-renderer@3.5.35(vue@3.5.35(typescript@7.0.2))': dependencies: '@vue/compiler-ssr': 3.5.35 '@vue/shared': 3.5.35 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) '@vue/shared@3.5.35': {} - '@vueuse/core@10.11.1(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@vueuse/core@10.11.1(vue@3.5.35(typescript@7.0.2))': dependencies: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.35(@typescript/typescript6@6.0.2)) - vue-demi: 0.14.10(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@vueuse/shared': 10.11.1(vue@3.5.35(typescript@7.0.2)) + vue-demi: 0.14.10(vue@3.5.35(typescript@7.0.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/core@13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@vueuse/core@13.9.0(vue@3.5.35(typescript@7.0.2))': dependencies: '@types/web-bluetooth': 0.0.21 '@vueuse/metadata': 13.9.0 - '@vueuse/shared': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) - vue: 3.5.35(@typescript/typescript6@6.0.2) + '@vueuse/shared': 13.9.0(vue@3.5.35(typescript@7.0.2)) + vue: 3.5.35(typescript@7.0.2) - '@vueuse/integrations@13.9.0(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@vueuse/integrations@13.9.0(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.35(typescript@7.0.2))': dependencies: - '@vueuse/core': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@vueuse/shared': 13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2)) - vue: 3.5.35(@typescript/typescript6@6.0.2) + '@vueuse/core': 13.9.0(vue@3.5.35(typescript@7.0.2)) + '@vueuse/shared': 13.9.0(vue@3.5.35(typescript@7.0.2)) + vue: 3.5.35(typescript@7.0.2) optionalDependencies: focus-trap: 7.8.0 fuse.js: 7.4.2 @@ -22567,16 +22925,16 @@ snapshots: '@vueuse/metadata@13.9.0': {} - '@vueuse/shared@10.11.1(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@vueuse/shared@10.11.1(vue@3.5.35(typescript@7.0.2))': dependencies: - vue-demi: 0.14.10(vue@3.5.35(@typescript/typescript6@6.0.2)) + vue-demi: 0.14.10(vue@3.5.35(typescript@7.0.2)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/shared@13.9.0(vue@3.5.35(@typescript/typescript6@6.0.2))': + '@vueuse/shared@13.9.0(vue@3.5.35(typescript@7.0.2))': dependencies: - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) '@webassemblyjs/ast@1.14.1': dependencies: @@ -22909,17 +23267,17 @@ snapshots: aws-ssl-profiles@1.1.2: {} - axios@1.15.0: + axios@1.15.0(debug@4.4.3(supports-color@10.2.2)): dependencies: - follow-redirects: 1.16.0 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@10.2.2)) form-data: 4.0.6 proxy-from-env: 2.1.0 transitivePeerDependencies: - debug - axios@1.9.0: + axios@1.9.0(debug@4.4.3(supports-color@10.2.2)): dependencies: - follow-redirects: 1.16.0 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@10.2.2)) form-data: 4.0.6 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -22927,46 +23285,46 @@ snapshots: b4a@1.6.6: {} - babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + babel-loader@9.2.1(@babel/core@7.29.0(supports-color@10.2.2))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) babel-plugin-dynamic-import-node@2.3.3: dependencies: object.assign: 4.1.7 - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2): dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0): + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2): dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0): + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2): dependencies: - '@babel/core': 7.29.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0(supports-color@10.2.2))(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -23024,10 +23382,10 @@ snapshots: before-after-hook@4.0.0: {} - better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.10)(vue@3.5.35(@typescript/typescript6@6.0.2)): + better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(solid-js@1.9.14)(vitest@4.1.10)(vue@3.5.35(typescript@7.0.2)): dependencies: '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/drizzle-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1)) + '@better-auth/drizzle-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1)) '@better-auth/kysely-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(kysely@0.29.2) '@better-auth/memory-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1) '@better-auth/mongo-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1) @@ -23046,14 +23404,15 @@ snapshots: optionalDependencies: better-sqlite3: 12.11.1 drizzle-kit: 0.31.10 - drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) + drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) mysql2: 3.22.6(@types/node@24.13.3) - next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + next: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) pg: 8.22.0 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) - vue: 3.5.35(@typescript/typescript6@6.0.2) + solid-js: 1.9.14 + vitest: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - '@cloudflare/workers-types' - '@opentelemetry/api' @@ -23094,11 +23453,11 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.5: + body-parser@1.20.5(supports-color@10.2.2): dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.1 @@ -23111,11 +23470,11 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.2: + body-parser@2.2.2(supports-color@10.2.2): dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 @@ -23513,11 +23872,11 @@ snapshots: dependencies: mime-db: 1.54.0 - compression@1.8.1: + compression@1.8.1(supports-color@10.2.2): dependencies: bytes: 3.1.2 compressible: 2.0.18 - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) negotiator: 0.6.4 on-headers: 1.1.0 safe-buffer: 5.2.1 @@ -23614,7 +23973,7 @@ snapshots: copy-text-to-clipboard@3.2.2: {} - copy-webpack-plugin@11.0.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + copy-webpack-plugin@11.0.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -23622,7 +23981,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) core-js-compat@3.49.0: dependencies: @@ -23645,23 +24004,23 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig@8.3.6(@typescript/typescript6@6.0.2): + cosmiconfig@8.3.6(typescript@7.0.2): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 - cosmiconfig@9.0.0(@typescript/typescript6@6.0.2): + cosmiconfig@9.0.0(typescript@7.0.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 cpu-features@0.0.10: dependencies: @@ -23717,7 +24076,7 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - css-loader@6.11.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + css-loader@6.11.0(@rspack/core@1.7.11)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: icss-utils: 5.1.0(postcss@8.5.16) postcss: 8.5.16 @@ -23728,10 +24087,10 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.4 optionalDependencies: - '@rspack/core': 1.7.11(@swc/helpers@0.5.15) - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + '@rspack/core': 1.7.11 + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(csso@5.0.5)(esbuild@0.28.1)(lightningcss@1.32.0)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.16) @@ -23739,10 +24098,12 @@ snapshots: postcss: 8.5.16 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) optionalDependencies: clean-css: 5.3.3 + csso: 5.0.5 esbuild: 0.28.1 + lightningcss: 1.32.0 css-prefers-color-scheme@10.0.0(postcss@8.5.16): dependencies: @@ -23846,11 +24207,11 @@ snapshots: csstype@3.2.3: {} - cva@1.0.0-beta.4(@typescript/typescript6@6.0.2): + cva@1.0.0-beta.4(typescript@7.0.2): dependencies: clsx: 2.1.1 optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.0): dependencies: @@ -24057,13 +24418,17 @@ snapshots: debounce@1.2.1: {} - debug@2.6.9: + debug@2.6.9(supports-color@10.2.2): dependencies: ms: 2.0.0 + optionalDependencies: + supports-color: 10.2.2 - debug@4.4.3: + debug@4.4.3(supports-color@10.2.2): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 10.2.2 decimal.js-light@2.5.1: {} @@ -24139,10 +24504,10 @@ snapshots: detect-node@2.1.0: {} - detect-port@1.6.1: + detect-port@1.6.1(supports-color@10.2.2): dependencies: address: 1.2.2 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -24166,40 +24531,40 @@ snapshots: dependencies: yaml: 2.9.0 - docker-modem@5.0.7: + docker-modem@5.0.7(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) readable-stream: 3.6.2 split-ca: 1.0.1 ssh2: 1.16.0 transitivePeerDependencies: - supports-color - dockerode@5.0.0: + dockerode@5.0.0(supports-color@10.2.2): dependencies: '@balena/dockerignore': 1.0.2 '@grpc/grpc-js': 1.12.5 '@grpc/proto-loader': 0.7.13 - docker-modem: 5.0.7 + docker-modem: 5.0.7(supports-color@10.2.2) protobufjs: 7.4.0 tar-fs: 2.1.4 transitivePeerDependencies: - supports-color - dockerode@5.0.1: + dockerode@5.0.1(supports-color@10.2.2): dependencies: '@balena/dockerignore': 1.0.2 '@grpc/grpc-js': 1.12.5 '@grpc/proto-loader': 0.7.13 - docker-modem: 5.0.7 + docker-modem: 5.0.7(supports-color@10.2.2) protobufjs: 7.4.0 tar-fs: 2.1.4 transitivePeerDependencies: - supports-color - docusaurus-plugin-image-zoom@3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)): + docusaurus-plugin-image-zoom@3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3)): dependencies: - '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(uglify-js@3.19.3))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(uglify-js@3.19.3))(@rspack/core@1.7.11)(@swc/core@1.15.3)(@swc/html@1.15.40)(@types/react@19.2.17)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(debug@4.4.3(supports-color@10.2.2))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(supports-color@10.2.2)(typescript@7.0.2)(uglify-js@3.19.3) medium-zoom: 1.1.0 validate-peer-dependencies: 2.2.0 @@ -24287,22 +24652,22 @@ snapshots: esbuild: 0.25.12 tsx: 4.21.0 - drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1): + drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@opentelemetry/api': 1.9.0 '@types/better-sqlite3': 7.6.13 '@types/pg': 8.20.0 better-sqlite3: 12.11.1 - gel: 2.0.0 + gel: 2.0.0(supports-color@10.2.2) kysely: 0.29.2 mysql2: 3.22.6(@types/node@24.13.3) pg: 8.22.0 sql.js: 1.14.1 - drizzle-zod@0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3): + drizzle-zod@0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3): dependencies: - drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) + drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1) zod: 4.4.3 dunder-proto@1.0.1: @@ -24642,6 +25007,21 @@ snapshots: dependencies: eventsource-parser: 3.1.0 + execa@10.0.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + which-command: 0.1.0 + yoctocolors: 2.2.0 + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -24685,26 +25065,26 @@ snapshots: expect-type@1.3.0: {} - express-rate-limit@8.5.2(express@5.2.1): + express-rate-limit@8.5.2(express@5.2.1(supports-color@10.2.2)): dependencies: - express: 5.2.1 + express: 5.2.1(supports-color@10.2.2) ip-address: 10.2.0 - express@4.22.2: + express@4.22.2(supports-color@10.2.2): dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.5 + body-parser: 1.20.5(supports-color@10.2.2) content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.0.7 - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.2 + finalhandler: 1.3.2(supports-color@10.2.2) fresh: 0.5.2 http-errors: 2.0.1 merge-descriptors: 1.0.3 @@ -24716,8 +25096,8 @@ snapshots: qs: 6.15.2 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.2 - serve-static: 1.16.3 + send: 0.19.2(supports-color@10.2.2) + serve-static: 1.16.3(supports-color@10.2.2) setprototypeof: 1.2.0 statuses: 2.0.2 type-is: 1.6.18 @@ -24726,20 +25106,20 @@ snapshots: transitivePeerDependencies: - supports-color - express@5.2.1: + express@5.2.1(supports-color@10.2.2): dependencies: accepts: 2.0.0 - body-parser: 2.2.2 + body-parser: 2.2.2(supports-color@10.2.2) content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.1 + finalhandler: 2.1.1(supports-color@10.2.2) fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -24750,9 +25130,9 @@ snapshots: proxy-addr: 2.0.7 qs: 6.15.2 range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.1 - serve-static: 2.2.1 + router: 2.2.0(supports-color@10.2.2) + send: 1.2.1(supports-color@10.2.2) + serve-static: 2.2.1(supports-color@10.2.2) statuses: 2.0.2 type-is: 2.1.0 vary: 1.1.2 @@ -24889,11 +25269,11 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 - file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) file-selector@2.1.2: dependencies: @@ -24905,9 +25285,9 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.2: + finalhandler@1.3.2(supports-color@10.2.2): dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -24917,9 +25297,9 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@2.1.1: + finalhandler@2.1.1(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -24967,7 +25347,9 @@ snapshots: dependencies: tabbable: 6.4.0 - follow-redirects@1.16.0: {} + follow-redirects@1.16.0(debug@4.4.3(supports-color@10.2.2)): + optionalDependencies: + debug: 4.4.3(supports-color@10.2.2) foreground-child@3.3.1: dependencies: @@ -25014,12 +25396,12 @@ snapshots: fuse.js@7.4.2: {} - gel@2.0.0: + gel@2.0.0(supports-color@10.2.2): dependencies: '@petamoriken/float16': 3.9.3 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) env-paths: 3.0.0 - semver: 7.7.4 + semver: 7.8.5 shell-quote: 1.8.4 which: 4.0.0 transitivePeerDependencies: @@ -25149,6 +25531,10 @@ snapshots: globrex@0.1.2: {} + goober@2.1.19(csstype@3.2.3): + dependencies: + csstype: 3.2.3 + gopd@1.2.0: {} got@12.6.1: @@ -25319,7 +25705,7 @@ snapshots: '@ungap/structured-clone': 1.3.0 unist-util-position: 5.0.0 - hast-util-to-estree@3.1.3: + hast-util-to-estree@3.1.3(supports-color@10.2.2): dependencies: '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 @@ -25329,9 +25715,9 @@ snapshots: 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 + mdast-util-mdx-expression: 2.0.1(supports-color@10.2.2) + mdast-util-mdx-jsx: 3.2.0(supports-color@10.2.2) + mdast-util-mdxjs-esm: 2.0.1(supports-color@10.2.2) property-information: 7.0.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.16 @@ -25354,7 +25740,7 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.6: + hast-util-to-jsx-runtime@2.3.6(supports-color@10.2.2): dependencies: '@types/estree': 1.0.8 '@types/hast': 3.0.4 @@ -25363,9 +25749,9 @@ snapshots: 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 + mdast-util-mdx-expression: 2.0.1(supports-color@10.2.2) + mdast-util-mdx-jsx: 3.2.0(supports-color@10.2.2) + mdast-util-mdxjs-esm: 2.0.1(supports-color@10.2.2) property-information: 7.0.0 space-separated-tokens: 2.0.2 style-to-js: 1.1.16 @@ -25487,7 +25873,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.7(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + html-webpack-plugin@5.6.7(@rspack/core@1.7.11)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -25495,8 +25881,8 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.3 optionalDependencies: - '@rspack/core': 1.7.11(@swc/helpers@0.5.15) - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + '@rspack/core': 1.7.11 + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) html-whitespace-sensitive-tag-names@3.0.1: {} @@ -25550,17 +25936,17 @@ snapshots: http-parser-js@0.5.10: {} - http-proxy-agent@9.0.0: + http-proxy-agent@9.0.0(supports-color@10.2.2): dependencies: agent-base: 9.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.25): + http-proxy-middleware@2.0.9(@types/express@4.17.25)(debug@4.4.3(supports-color@10.2.2)): dependencies: '@types/http-proxy': 1.17.17 - http-proxy: 1.18.1 + http-proxy: 1.18.1(debug@4.4.3(supports-color@10.2.2)) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 @@ -25569,10 +25955,10 @@ snapshots: transitivePeerDependencies: - debug - http-proxy@1.18.1: + http-proxy@1.18.1(debug@4.4.3(supports-color@10.2.2)): dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.16.0 + follow-redirects: 1.16.0(debug@4.4.3(supports-color@10.2.2)) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -25582,10 +25968,10 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-proxy-agent@9.0.0: + https-proxy-agent@9.0.0(supports-color@10.2.2): dependencies: agent-base: 9.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -25595,6 +25981,8 @@ snapshots: human-signals@8.0.0: {} + human-signals@8.0.1: {} + hyperdyperid@1.2.0: {} ical.js@2.2.1: {} @@ -25642,9 +26030,9 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-from-esm@2.0.0: + import-from-esm@2.0.0(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) import-meta-resolve: 4.2.0 transitivePeerDependencies: - supports-color @@ -25693,11 +26081,11 @@ snapshots: dependencies: loose-envify: 1.4.0 - ioredis@5.11.1: + ioredis@5.11.1(supports-color@10.2.2): dependencies: '@ioredis/commands': 1.10.0 cluster-key-slot: 1.1.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) denque: 2.1.0 redis-errors: 1.2.0 redis-parser: 3.0.0 @@ -25928,9 +26316,9 @@ snapshots: jose@6.2.3: {} - jotai@2.20.1(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7): + jotai@2.20.1(@babel/core@7.29.0(supports-color@10.2.2))(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7): optionalDependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) '@babel/template': 7.29.7 '@types/react': 19.2.17 react: 19.2.7 @@ -26301,31 +26689,31 @@ snapshots: math-intrinsics@1.1.0: {} - mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)): + mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(supports-color@10.2.2)(zod@4.4.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)): dependencies: - '@modelcontextprotocol/sdk': 1.26.0(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.26.0(supports-color@10.2.2)(zod@4.4.3) chalk: 5.6.2 commander: 11.1.0 redis: 4.7.1 optionalDependencies: - next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + next: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) - mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)): + mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.4.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)): dependencies: - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.29.0(supports-color@10.2.2)(zod@4.4.3) chalk: 5.6.2 commander: 11.1.0 redis: 4.7.1 optionalDependencies: - next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + next: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) - mdast-util-directive@3.1.0: + mdast-util-directive@3.1.0(supports-color@10.2.2): dependencies: '@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-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -26346,14 +26734,14 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - mdast-util-from-markdown@2.0.2: + mdast-util-from-markdown@2.0.2(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.1.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.2 + micromark: 4.0.2(supports-color@10.2.2) micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-decode-string: 2.0.1 micromark-util-normalize-identifier: 2.0.1 @@ -26363,12 +26751,12 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-frontmatter@2.0.1: + mdast-util-frontmatter@2.0.1(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: @@ -26382,67 +26770,67 @@ snapshots: mdast-util-find-and-replace: 3.0.2 micromark-util-character: 2.1.1 - mdast-util-gfm-footnote@2.1.0: + mdast-util-gfm-footnote@2.1.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.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: + mdast-util-gfm-strikethrough@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm-table@2.0.0: + mdast-util-gfm-table@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm-task-list-item@2.0.0: + mdast-util-gfm-task-list-item@2.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-gfm@3.1.0: + mdast-util-gfm@3.1.0(supports-color@10.2.2): dependencies: - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.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-gfm-footnote: 2.1.0(supports-color@10.2.2) + mdast-util-gfm-strikethrough: 2.0.0(supports-color@10.2.2) + mdast-util-gfm-table: 2.0.0(supports-color@10.2.2) + mdast-util-gfm-task-list-item: 2.0.0(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-expression@2.0.1: + mdast-util-mdx-expression@2.0.1(supports-color@10.2.2): 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-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdx-jsx@3.2.0: + mdast-util-mdx-jsx@3.2.0(supports-color@10.2.2): dependencies: '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 @@ -26450,7 +26838,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -26459,23 +26847,23 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-mdx@3.0.0: + mdast-util-mdx@3.0.0(supports-color@10.2.2): 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-from-markdown: 2.0.2(supports-color@10.2.2) + mdast-util-mdx-expression: 2.0.1(supports-color@10.2.2) + mdast-util-mdx-jsx: 3.2.0(supports-color@10.2.2) + mdast-util-mdxjs-esm: 2.0.1(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color - mdast-util-mdxjs-esm@2.0.1: + mdast-util-mdxjs-esm@2.0.1(supports-color@10.2.2): 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-from-markdown: 2.0.2(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -26853,10 +27241,10 @@ snapshots: micromark-util-types@2.0.2: {} - micromark@4.0.2: + micromark@4.0.2(supports-color@10.2.2): dependencies: '@types/debug': 4.1.12 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) decode-named-character-reference: 1.1.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -26914,11 +27302,11 @@ snapshots: dependencies: dom-walk: 0.1.2 - mini-css-extract-plugin@2.10.2(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + mini-css-extract-plugin@2.10.2(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: schema-utils: 4.3.3 tapable: 2.3.3 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) minimalistic-assert@1.0.1: {} @@ -26959,7 +27347,7 @@ snapshots: ms@2.1.3: {} - msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2): + msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2): dependencies: '@inquirer/confirm': 6.0.13(@types/node@24.13.3) '@mswjs/interceptors': 0.41.9 @@ -26980,7 +27368,7 @@ snapshots: until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 transitivePeerDependencies: - '@types/node' optional: true @@ -27045,28 +27433,28 @@ snapshots: neverpanic@0.0.8: {} - next-auth@5.0.0-beta.31(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7): + next-auth@5.0.0-beta.31(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7): dependencies: '@auth/core': 0.41.2 - next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + next: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) react: 19.2.7 next-intl-swc-plugin-extractor@4.13.1: {} - next-intl@4.13.1(@typescript/typescript6@6.0.2)(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7): + next-intl@4.13.1(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)(typescript@7.0.2): dependencies: '@formatjs/intl-localematcher': 0.8.1 '@parcel/watcher': 2.4.1 - '@swc/core': 1.15.3(@swc/helpers@0.5.15) + '@swc/core': 1.15.3 icu-minify: 4.13.1 negotiator: 1.0.0 - next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) + next: 16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0) next-intl-swc-plugin-extractor: 4.13.1 po-parser: 2.1.1 react: 19.2.7 use-intl: 4.13.1(react@19.2.7) optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 transitivePeerDependencies: - '@swc/helpers' @@ -27075,32 +27463,33 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0): + next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0): dependencies: - '@next/env': 16.2.10 + '@next/env': 16.3.0-preview.9 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.10.31 caniuse-lite: 1.0.30001793 - postcss: 8.4.31 + postcss: 8.5.10 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.7) + styled-jsx: 5.1.6(@babel/core@7.29.0(supports-color@10.2.2))(react@19.2.7) optionalDependencies: - '@next/swc-darwin-arm64': 16.2.10 - '@next/swc-darwin-x64': 16.2.10 - '@next/swc-linux-arm64-gnu': 16.2.10 - '@next/swc-linux-arm64-musl': 16.2.10 - '@next/swc-linux-x64-gnu': 16.2.10 - '@next/swc-linux-x64-musl': 16.2.10 - '@next/swc-win32-arm64-msvc': 16.2.10 - '@next/swc-win32-x64-msvc': 16.2.10 + '@next/swc-darwin-arm64': 16.3.0-preview.9 + '@next/swc-darwin-x64': 16.3.0-preview.9 + '@next/swc-linux-arm64-gnu': 16.3.0-preview.9 + '@next/swc-linux-arm64-musl': 16.3.0-preview.9 + '@next/swc-linux-x64-gnu': 16.3.0-preview.9 + '@next/swc-linux-x64-musl': 16.3.0-preview.9 + '@next/swc-win32-arm64-msvc': 16.3.0-preview.9 + '@next/swc-win32-x64-msvc': 16.3.0-preview.9 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.61.1 babel-plugin-react-compiler: 1.0.0 sass: 1.101.0 - sharp: 0.34.5 + sharp: 0.35.3(@types/node@24.13.3) transitivePeerDependencies: - '@babel/core' + - '@types/node' - babel-plugin-macros no-case@3.0.4: @@ -27131,10 +27520,10 @@ snapshots: node-gyp-build@4.8.4: {} - node-loader@2.1.0(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16)): + node-loader@2.1.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 - webpack: 5.107.1(esbuild@0.28.1)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) node-mock-http@1.0.4: {} @@ -27179,11 +27568,11 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + null-loader@4.0.1(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) oauth4webapi@3.3.0: {} @@ -27362,8 +27751,6 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 - p-reduce@2.1.0: {} - p-reduce@3.0.0: {} p-retry@6.2.1: @@ -27770,13 +28157,13 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.5.16) postcss: 8.5.16 - postcss-loader@7.3.4(@typescript/typescript6@6.0.2)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + postcss-loader@7.3.4(postcss@8.5.16)(typescript@7.0.2)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: - cosmiconfig: 8.3.6(@typescript/typescript6@6.0.2) + cosmiconfig: 8.3.6(typescript@7.0.2) jiti: 1.21.7 postcss: 8.5.16 semver: 7.7.4 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - typescript @@ -28086,7 +28473,7 @@ snapshots: dependencies: postcss: 8.5.16 - postcss@8.4.31: + postcss@8.5.10: dependencies: nanoid: 3.3.12 picocolors: 1.1.1 @@ -28211,9 +28598,9 @@ snapshots: retry: 0.12.0 signal-exit: 3.0.7 - properties-reader@3.0.1: + properties-reader@3.0.1(supports-color@10.2.2): dependencies: - '@kwsites/file-exists': 1.1.1 + '@kwsites/file-exists': 1.1.1(supports-color@10.2.2) mkdirp: 3.0.1 transitivePeerDependencies: - supports-color @@ -28366,20 +28753,20 @@ snapshots: parchment: 3.0.0 quill-delta: 5.1.0 - radix-vue@1.9.17(vue@3.5.35(@typescript/typescript6@6.0.2)): + radix-vue@1.9.17(vue@3.5.35(typescript@7.0.2)): dependencies: '@floating-ui/dom': 1.7.6 - '@floating-ui/vue': 1.1.11(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@floating-ui/vue': 1.1.11(vue@3.5.35(typescript@7.0.2)) '@internationalized/date': 3.12.2 '@internationalized/number': 3.6.7 - '@tanstack/vue-virtual': 3.13.28(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@vueuse/core': 10.11.1(vue@3.5.35(@typescript/typescript6@6.0.2)) - '@vueuse/shared': 10.11.1(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@tanstack/vue-virtual': 3.13.28(vue@3.5.35(typescript@7.0.2)) + '@vueuse/core': 10.11.1(vue@3.5.35(typescript@7.0.2)) + '@vueuse/shared': 10.11.1(vue@3.5.35(typescript@7.0.2)) aria-hidden: 1.2.6 defu: 6.1.7 fast-deep-equal: 3.1.3 nanoid: 5.1.16 - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) transitivePeerDependencies: - '@vue/composition-api' @@ -28448,23 +28835,23 @@ snapshots: dependencies: react: 19.2.7 - react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: '@babel/runtime': 7.29.7 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.7)' - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) - react-markdown@10.1.0(@types/react@19.2.17)(react@19.2.7): + react-markdown@10.1.0(@types/react@19.2.17)(react@19.2.7)(supports-color@10.2.2): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 '@types/react': 19.2.17 devlop: 1.1.0 - hast-util-to-jsx-runtime: 2.3.6 + hast-util-to-jsx-runtime: 2.3.6(supports-color@10.2.2) html-url-attributes: 3.0.1 mdast-util-to-hast: 13.2.0 react: 19.2.7 - remark-parse: 11.0.0 + remark-parse: 11.0.0(supports-color@10.2.2) remark-rehype: 11.1.2 unified: 11.0.5 unist-util-visit: 5.1.0 @@ -28788,11 +29175,11 @@ snapshots: hast-util-raw: 9.1.0 vfile: 6.0.3 - rehype-recma@1.0.0: + rehype-recma@1.0.0(supports-color@10.2.2): dependencies: '@types/estree': 1.0.8 '@types/hast': 3.0.4 - hast-util-to-estree: 3.1.3 + hast-util-to-estree: 3.1.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -28809,10 +29196,10 @@ snapshots: relateurl@0.2.7: {} - remark-directive@3.0.1: + remark-directive@3.0.1(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-directive: 3.1.0 + mdast-util-directive: 3.1.0(supports-color@10.2.2) micromark-extension-directive: 3.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -28826,37 +29213,37 @@ snapshots: node-emoji: 2.2.0 unified: 11.0.5 - remark-frontmatter@5.0.0: + remark-frontmatter@5.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-frontmatter: 2.0.1 + mdast-util-frontmatter: 2.0.1(supports-color@10.2.2) micromark-extension-frontmatter: 2.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-gfm@4.0.1: + remark-gfm@4.0.1(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0 + mdast-util-gfm: 3.1.0(supports-color@10.2.2) micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 + remark-parse: 11.0.0(supports-color@10.2.2) remark-stringify: 11.0.0 unified: 11.0.5 transitivePeerDependencies: - supports-color - remark-mdx@3.1.1: + remark-mdx@3.1.1(supports-color@10.2.2): dependencies: - mdast-util-mdx: 3.0.0 + mdast-util-mdx: 3.0.0(supports-color@10.2.2) micromark-extension-mdxjs: 3.0.0 transitivePeerDependencies: - supports-color - remark-parse@11.0.0: + remark-parse@11.0.0(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.2(supports-color@10.2.2) micromark-util-types: 2.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -28976,9 +29363,9 @@ snapshots: points-on-curve: 0.2.0 points-on-path: 0.2.1 - router@2.2.0: + router@2.2.0(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -29064,16 +29451,16 @@ snapshots: '@peculiar/x509': 1.14.3 pkijs: 3.4.0 - semantic-release@25.0.5(@typescript/typescript6@6.0.2): + semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 12.0.9(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) - '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) - '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(@typescript/typescript6@6.0.2)) + '@semantic-release/github': 12.0.9(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) + '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2)) + '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(supports-color@10.2.2)(typescript@7.0.2))(supports-color@10.2.2) aggregate-error: 5.0.0 - cosmiconfig: 9.0.0(@typescript/typescript6@6.0.2) - debug: 4.4.3 + cosmiconfig: 9.0.0(typescript@7.0.2) + debug: 4.4.3(supports-color@10.2.2) env-ci: 11.2.0 execa: 9.5.2 figures: 6.1.0 @@ -29082,7 +29469,7 @@ snapshots: git-log-parser: 1.2.1 hook-std: 4.0.0 hosted-git-info: 9.0.2 - import-from-esm: 2.0.0 + import-from-esm: 2.0.0(supports-color@10.2.2) lodash-es: 4.17.21 marked: 15.0.11 marked-terminal: 7.3.0(marked@15.0.11) @@ -29110,9 +29497,12 @@ snapshots: semver@7.7.4: {} - send@0.19.2: + semver@7.8.5: + optional: true + + send@0.19.2(supports-color@10.2.2): dependencies: - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) depd: 2.0.0 destroy: 1.2.0 encodeurl: 2.0.0 @@ -29128,9 +29518,9 @@ snapshots: transitivePeerDependencies: - supports-color - send@1.2.1: + send@1.2.1(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -29148,6 +29538,12 @@ snapshots: dependencies: randombytes: 2.1.0 + seroval-plugins@1.5.6(seroval@1.5.6): + dependencies: + seroval: 1.5.6 + + seroval@1.5.6: {} + serve-handler@6.1.7: dependencies: bytes: 3.0.0 @@ -29158,11 +29554,11 @@ snapshots: path-to-regexp: 3.3.0 range-parser: 1.2.0 - serve-index@1.9.2: + serve-index@1.9.2(supports-color@10.2.2): dependencies: accepts: 1.3.8 batch: 0.6.1 - debug: 2.6.9 + debug: 2.6.9(supports-color@10.2.2) escape-html: 1.0.3 http-errors: 1.8.1 mime-types: 2.1.35 @@ -29170,21 +29566,21 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.16.3: + serve-static@1.16.3(supports-color@10.2.2): dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.2 + send: 0.19.2(supports-color@10.2.2) transitivePeerDependencies: - supports-color - serve-static@2.2.1: + serve-static@2.2.1(supports-color@10.2.2): dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.1 + send: 1.2.1(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -29211,36 +29607,38 @@ snapshots: shallowequal@1.1.0: {} - sharp@0.34.5: + sharp@0.35.3(@types/node@24.13.3): dependencies: - '@img/colour': 1.0.0 + '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.7.4 + semver: 7.8.5 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 + '@img/sharp-darwin-arm64': 0.35.3 + '@img/sharp-darwin-x64': 0.35.3 + '@img/sharp-freebsd-wasm32': 0.35.3 + '@img/sharp-libvips-darwin-arm64': 1.3.2 + '@img/sharp-libvips-darwin-x64': 1.3.2 + '@img/sharp-libvips-linux-arm': 1.3.2 + '@img/sharp-libvips-linux-arm64': 1.3.2 + '@img/sharp-libvips-linux-ppc64': 1.3.2 + '@img/sharp-libvips-linux-riscv64': 1.3.2 + '@img/sharp-libvips-linux-s390x': 1.3.2 + '@img/sharp-libvips-linux-x64': 1.3.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + '@img/sharp-linux-arm': 0.35.3 + '@img/sharp-linux-arm64': 0.35.3 + '@img/sharp-linux-ppc64': 0.35.3 + '@img/sharp-linux-riscv64': 0.35.3 + '@img/sharp-linux-s390x': 0.35.3 + '@img/sharp-linux-x64': 0.35.3 + '@img/sharp-linuxmusl-arm64': 0.35.3 + '@img/sharp-linuxmusl-x64': 0.35.3 + '@img/sharp-webcontainers-wasm32': 0.35.3 + '@img/sharp-win32-arm64': 0.35.3 + '@img/sharp-win32-ia32': 0.35.3 + '@img/sharp-win32-x64': 0.35.3 + '@types/node': 24.13.3 optional: true shebang-command@2.0.0: @@ -29341,10 +29739,10 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.5 - socks-proxy-agent@8.0.5: + socks-proxy-agent@8.0.5(supports-color@10.2.2): dependencies: agent-base: 7.1.3 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -29354,6 +29752,12 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 + solid-js@1.9.14: + dependencies: + csstype: 3.2.3 + seroval: 1.5.6 + seroval-plugins: 1.5.6(seroval@1.5.6) + sonic-boom@4.2.1: dependencies: atomic-sleep: 1.0.0 @@ -29394,9 +29798,9 @@ snapshots: spdx-license-ids@3.0.20: {} - spdy-transport@3.0.0: + spdy-transport@3.0.0(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -29405,13 +29809,13 @@ snapshots: transitivePeerDependencies: - supports-color - spdy@4.0.2: + spdy@4.0.2(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 - spdy-transport: 3.0.0 + spdy-transport: 3.0.0(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -29565,12 +29969,12 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.7): + styled-jsx@5.1.6(@babel/core@7.29.0(supports-color@10.2.2))(react@19.2.7): dependencies: client-only: 0.0.1 react: 19.2.7 optionalDependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@10.2.2) stylehacks@6.1.1(postcss@8.5.16): dependencies: @@ -29631,17 +30035,17 @@ snapshots: deep-rename-keys: 0.2.1 xml-reader: 2.4.3 - swc-loader@0.2.7(@swc/core@1.15.3(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + swc-loader@0.2.7(@swc/core@1.15.3)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: - '@swc/core': 1.15.3(@swc/helpers@0.5.15) + '@swc/core': 1.15.3 '@swc/counter': 0.1.3 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) swiper@14.0.5: {} - swrv@1.2.0(vue@3.5.35(@typescript/typescript6@6.0.2)): + swrv@1.2.0(vue@3.5.35(typescript@7.0.2)): dependencies: - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) symbol-tree@3.2.4: {} @@ -29707,45 +30111,24 @@ snapshots: type-fest: 2.19.0 unique-string: 3.0.0 - terser-webpack-plugin@5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + terser-webpack-plugin@5.6.0(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.1 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) optionalDependencies: - '@swc/core': 1.15.3(@swc/helpers@0.5.15) + '@swc/core': 1.15.3 '@swc/html': 1.15.40 - esbuild: 0.28.1 - lightningcss: 1.32.0 - postcss: 8.5.16 - - terser-webpack-plugin@5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.46.1 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) - optionalDependencies: - '@swc/core': 1.15.3(@swc/helpers@0.5.15) clean-css: 5.3.3 cssnano: 6.1.2(postcss@8.5.16) + csso: 5.0.5 esbuild: 0.28.1 html-minifier-terser: 7.2.0 + lightningcss: 1.32.0 postcss: 8.5.16 - - terser-webpack-plugin@5.6.0(esbuild@0.28.1)(postcss@8.5.16)(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - terser: 5.46.1 - webpack: 5.107.1(esbuild@0.28.1)(postcss@8.5.16) - optionalDependencies: - esbuild: 0.28.1 - postcss: 8.5.16 + uglify-js: 3.19.3 terser@5.46.1: dependencies: @@ -29754,19 +30137,19 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - testcontainers@12.0.4: + testcontainers@12.0.4(supports-color@10.2.2): dependencies: '@balena/dockerignore': 1.0.2 '@types/dockerode': 4.0.1 archiver: 7.0.1 async-lock: 1.4.1 byline: 5.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) docker-compose: 1.4.2 - dockerode: 5.0.0 + dockerode: 5.0.0(supports-color@10.2.2) get-port: 5.1.1 proper-lockfile: 4.1.2 - properties-reader: 3.0.1 + properties-reader: 3.0.1(supports-color@10.2.2) ssh-remote-port-forward: 1.0.4 tar-fs: 3.1.2 tmp: 0.2.7 @@ -29881,36 +30264,36 @@ snapshots: trough@2.2.0: {} - trpc-to-mcp@1.3.2(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.10)(vue@3.5.35(@typescript/typescript6@6.0.2)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3): + trpc-to-mcp@1.3.2(09f4f932022b61bbb1db30a9d75546c7): dependencies: - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) - '@trpc/server': 11.18.0(@typescript/typescript6@6.0.2) - better-auth: 1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.10)(vue@3.5.35(@typescript/typescript6@6.0.2)) - mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)) + '@modelcontextprotocol/sdk': 1.29.0(supports-color@10.2.2)(zod@4.4.3) + '@trpc/server': 11.18.0(typescript@7.0.2) + better-auth: 1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(solid-js@1.9.14)(vitest@4.1.10)(vue@3.5.35(typescript@7.0.2)) + mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.26.0(supports-color@10.2.2)(zod@4.4.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)) zod: 4.4.3 transitivePeerDependencies: - '@cfworker/json-schema' - supports-color - trpc-to-mcp@1.3.2(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.10)(vue@3.5.35(@typescript/typescript6@6.0.2)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3): + trpc-to-mcp@1.3.2(7c45d4095abf7cef4938a6fc2cc62863): dependencies: - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) - '@trpc/server': 11.18.0(@typescript/typescript6@6.0.2) - better-auth: 1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.10)(vue@3.5.35(@typescript/typescript6@6.0.2)) - mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)) + '@modelcontextprotocol/sdk': 1.29.0(supports-color@10.2.2)(zod@4.4.3) + '@trpc/server': 11.18.0(typescript@7.0.2) + better-auth: 1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0(supports-color@10.2.2))(kysely@0.29.2)(mysql2@3.22.6(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.6(@types/node@24.13.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(solid-js@1.9.14)(vitest@4.1.10)(vue@3.5.35(typescript@7.0.2)) + mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.4.3))(next@16.3.0-preview.9(@babel/core@7.29.0(supports-color@10.2.2))(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(@types/node@24.13.3)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)) zod: 4.4.3 transitivePeerDependencies: - '@cfworker/json-schema' - supports-color - trpc-to-openapi@3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(@typescript/typescript6@6.0.2))(zod-openapi@5.3.0(zod@4.4.3))(zod@4.4.3): + trpc-to-openapi@3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(typescript@7.0.2))(zod-openapi@5.4.6(zod@4.4.3))(zod@4.4.3): dependencies: - '@trpc/server': 11.18.0(@typescript/typescript6@6.0.2) + '@trpc/server': 11.18.0(typescript@7.0.2) co-body: 6.2.0 h3: 1.15.11 openapi3-ts: 4.4.0 zod: 4.4.3 - zod-openapi: 5.3.0(zod@4.4.3) + zod-openapi: 5.4.6(zod@4.4.3) optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.6.1 @@ -29922,13 +30305,13 @@ snapshots: ts-dedent@2.2.0: {} - tsconfck@3.1.3(@typescript/typescript6@6.0.2): + tsconfck@3.1.3(typescript@7.0.2): optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 - tsdav@2.3.0: + tsdav@2.3.0(supports-color@10.2.2): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) xml-js: 1.6.11 transitivePeerDependencies: - supports-color @@ -30003,7 +30386,28 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript@6.0.3: {} + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 ufo@1.6.4: {} @@ -30146,14 +30550,14 @@ snapshots: url-join@5.0.0: {} - url-loader@4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)))(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) optionalDependencies: - file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) use-callback-ref@1.3.3(@types/react@19.2.17)(react@19.2.7): dependencies: @@ -30276,16 +30680,34 @@ snapshots: dependencies: global: 4.4.0 - vite-tsconfig-paths@6.1.1(@typescript/typescript6@6.0.2)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)): + vite-tsconfig-paths@6.1.1(supports-color@10.2.2)(typescript@7.0.2)(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@10.2.2) globrex: 0.1.2 - tsconfck: 3.1.3(@typescript/typescript6@6.0.2) - vite: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) + tsconfck: 3.1.3(typescript@7.0.2) + vite: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0) transitivePeerDependencies: - supports-color - typescript + vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.5 + postcss: 8.5.16 + rolldown: 1.1.4 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.13.3 + esbuild: 0.28.1 + fsevents: 2.3.3 + jiti: 2.7.0 + sass: 1.101.0 + sugarss: 5.0.0(postcss@8.5.16) + terser: 5.46.1 + tsx: 4.20.4 + yaml: 2.9.0 + vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 @@ -30304,10 +30726,41 @@ snapshots: tsx: 4.21.0 yaml: 2.9.0 - vitest@4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@24.13.3)(@typescript/typescript6@6.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.2 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.20.4)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@types/node': 24.13.3 + '@vitest/coverage-v8': 4.1.10(vitest@4.1.10) + '@vitest/ui': 4.1.10(vitest@4.1.10) + jsdom: 29.1.1(@noble/hashes@2.0.1) + transitivePeerDependencies: + - msw + + vitest@4.1.10(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.10)(@vitest/ui@4.1.10)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@24.13.3)(typescript@7.0.2))(vite@8.1.4(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -30337,21 +30790,21 @@ snapshots: vue-component-type-helpers@3.3.4: {} - vue-demi@0.14.10(vue@3.5.35(@typescript/typescript6@6.0.2)): + vue-demi@0.14.10(vue@3.5.35(typescript@7.0.2)): dependencies: - vue: 3.5.35(@typescript/typescript6@6.0.2) + vue: 3.5.35(typescript@7.0.2) vue-sonner@1.3.2: {} - vue@3.5.35(@typescript/typescript6@6.0.2): + vue@3.5.35(typescript@7.0.2): dependencies: '@vue/compiler-dom': 3.5.35 '@vue/compiler-sfc': 3.5.35 '@vue/runtime-dom': 3.5.35 - '@vue/server-renderer': 3.5.35(vue@3.5.35(@typescript/typescript6@6.0.2)) + '@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@7.0.2)) '@vue/shared': 3.5.35 optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' + typescript: 7.0.2 w3c-keyname@2.2.8: {} @@ -30394,7 +30847,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: colorette: 2.0.20 memfs: 4.57.6(tslib@2.8.1) @@ -30403,11 +30856,11 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - tslib - webpack-dev-server@5.2.4(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + webpack-dev-server@5.2.4(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -30421,24 +30874,24 @@ snapshots: bonjour-service: 1.4.0 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.8.1 + compression: 1.8.1(supports-color@10.2.2) connect-history-api-fallback: 2.0.0 - express: 4.22.2 + express: 4.22.2(supports-color@10.2.2) graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.25) + http-proxy-middleware: 2.0.9(@types/express@4.17.25)(debug@4.4.3(supports-color@10.2.2)) ipaddr.js: 2.3.0 launch-editor: 2.14.1 open: 10.2.0 p-retry: 6.2.1 schema-utils: 4.3.3 selfsigned: 5.5.0 - serve-index: 1.9.2 + serve-index: 1.9.2(supports-color@10.2.2) sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + spdy: 4.0.2(supports-color@10.2.2) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) ws: 8.21.0 optionalDependencies: - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) transitivePeerDependencies: - bufferutil - debug @@ -30460,7 +30913,7 @@ snapshots: webpack-sources@3.5.0: {} - webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16): + webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3): dependencies: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 @@ -30482,7 +30935,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) + terser-webpack-plugin: 5.6.0(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)) watchpack: 2.5.1 webpack-sources: 3.5.0 transitivePeerDependencies: @@ -30499,93 +30952,15 @@ snapshots: - postcss - uglify-js - webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16): - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.16.0 - acorn-import-phases: 1.0.4(acorn@8.16.0) - browserslist: 4.28.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.22.0 - es-module-lexer: 2.1.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - loader-runner: 4.3.2 - mime-db: 1.54.0 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.3 - terser-webpack-plugin: 5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)) - watchpack: 2.5.1 - webpack-sources: 3.5.0 - transitivePeerDependencies: - - '@minify-html/node' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - - esbuild - - html-minifier-terser - - lightningcss - - postcss - - uglify-js - - webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16): - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.16.0 - acorn-import-phases: 1.0.4(acorn@8.16.0) - browserslist: 4.28.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.22.0 - es-module-lexer: 2.1.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - loader-runner: 4.3.2 - mime-db: 1.54.0 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.3 - terser-webpack-plugin: 5.6.0(esbuild@0.28.1)(postcss@8.5.16)(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16)) - watchpack: 2.5.1 - webpack-sources: 3.5.0 - transitivePeerDependencies: - - '@minify-html/node' - - '@swc/core' - - '@swc/css' - - '@swc/html' - - clean-css - - cssnano - - csso - - esbuild - - html-minifier-terser - - lightningcss - - postcss - - uglify-js - - webpackbar@7.0.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)): + webpackbar@7.0.0(@rspack/core@1.7.11)(webpack@5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3)): dependencies: ansis: 3.17.0 consola: 3.4.2 pretty-time: 1.1.0 std-env: 3.10.0 optionalDependencies: - '@rspack/core': 1.7.11(@swc/helpers@0.5.15) - webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16) + '@rspack/core': 1.7.11 + webpack: 5.107.1(@swc/core@1.15.3)(@swc/html@1.15.40)(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(csso@5.0.5)(esbuild@0.28.1)(html-minifier-terser@7.2.0)(lightningcss@1.32.0)(postcss@8.5.16)(uglify-js@3.19.3) websocket-driver@0.7.5: dependencies: @@ -30616,6 +30991,8 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + which-command@0.1.0: {} + which@2.0.2: dependencies: isexe: 2.0.0 @@ -30778,6 +31155,8 @@ snapshots: yoctocolors@2.1.1: {} + yoctocolors@2.2.0: {} + zip-stream@6.0.1: dependencies: archiver-utils: 5.0.2 @@ -30789,7 +31168,7 @@ snapshots: '@rvf/set-get': 7.0.1 zod: 4.4.3 - zod-openapi@5.3.0(zod@4.4.3): + zod-openapi@5.4.6(zod@4.4.3): dependencies: zod: 4.4.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2680c92cd..f22d6bff9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -46,8 +46,8 @@ catalog: "@octokit/auth-app": ^8.2.0 "@paralleldrive/cuid2": ^3.3.0 "@playwright/test": ^1.61.1 - "@semantic-release/changelog": ^7.0.0 pocketbase: ^0.26.2 + "@semantic-release/changelog": ^7.0.0 "@semantic-release/commit-analyzer": ^13.0.1 "@semantic-release/git": ^11.0.1 "@semantic-release/github": ^12.0.9 @@ -173,7 +173,6 @@ catalog: oxfmt: ^0.58.0 oxlint: ^1.73.0 pg: ^8.22.0 - pocketbase: ^0.26.2 postcss-preset-mantine: ^1.18.0 prismjs: ^1.30.0 proxmox-api: 1.1.1 @@ -213,10 +212,7 @@ catalog: zod: ^4.4.3 zod-form-data: ^3.0.2 zod-validation-error: ^5.0.0 - class-variance-authority: ^0.7.1 - tailwind-merge: ^3.6.0 - framer-motion: ^12.40.0 - "@base-ui/react": ^1.5.0 + catalogMode: strict nodeLinker: hoisted strictPeerDependencies: false @@ -237,8 +233,8 @@ minimumReleaseAgeExclude: # Renovate security update: esbuild@0.28.1 - esbuild@0.28.1 overrides: - "@babel/helpers@<7.26.10": "^7.29.7" - "@babel/runtime@<7.26.10": "^7.29.7" + "@babel/helpers@<7.26.10": ">=7.29.7" + "@babel/runtime@<7.26.10": ">=7.29.7" "axios@>=1.0.0 <1.8.2": ">=1.18.1" "brace-expansion@>=2.0.0 <=2.0.1": ">=5.0.7" "brace-expansion@>=1.0.0 <=1.1.11": ">=5.0.7" @@ -278,4 +274,3 @@ allowBuilds: msw: false protobufjs: false vue-demi: false - "@parcel/watcher": true diff --git a/scripts/ci/workshop-act.sh b/scripts/ci/workshop-act.sh deleted file mode 100755 index e0ff13b5f..000000000 --- a/scripts/ci/workshop-act.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -set -eu - -if ! command -v act >/dev/null 2>&1; then - echo "act is required: https://nektosact.com/installation/" >&2 - exit 1 -fi - -socket="${DOCKER_HOST:-}" -if [ -z "$socket" ]; then - socket="$(docker context inspect --format '{{ (index .Endpoints "docker").Host }}' 2>/dev/null || true)" -fi -if [ -z "$socket" ]; then - socket="unix:///var/run/docker.sock" -fi - -exec act workflow_dispatch \ - --workflows .github/workflows/deployment-workshop.yml \ - --job deploy \ - --env ACT=true \ - --container-daemon-socket "$socket" \ - --container-architecture linux/amd64