diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 67b81ccac..fb53bd257 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -33,6 +33,7 @@ body: options: # The below comment is used to insert a new version with on-release.yml #NEXT_VERSION# + - 1.37.0 - 1.36.1 - 1.36.0 - 1.35.1 diff --git a/.github/workflows/automatic-approval.yml b/.github/workflows/automatic-approval.yml index 72e6aaea2..7a38b6e02 100644 --- a/.github/workflows/automatic-approval.yml +++ b/.github/workflows/automatic-approval.yml @@ -3,6 +3,8 @@ on: pull_request: types: [opened, synchronize] +permissions: {} + jobs: approve-automatic-prs: runs-on: ubuntu-latest @@ -12,10 +14,12 @@ jobs: uses: actions/checkout@v5 - name: Obtain token id: obtainToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }} - app_id: ${{ secrets.RENOVATE_APPROVE_APP_ID }} + private-key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }} + app-id: ${{ secrets.RENOVATE_APPROVE_APP_ID }} + permission-pull-requests: write # required to approve pull request + - name: Install GitHub CLI run: sudo apt-get install -y gh - name: Approve automatic PRs diff --git a/.github/workflows/crowdin-schedule-download.yml b/.github/workflows/crowdin-schedule-download.yml index f5814f120..c2f12042a 100644 --- a/.github/workflows/crowdin-schedule-download.yml +++ b/.github/workflows/crowdin-schedule-download.yml @@ -5,6 +5,9 @@ on: schedule: - cron: "0 0 * * *" # every day at midnight +permissions: + contents: read # required for code checkout + jobs: download-crowdin-translations: runs-on: ubuntu-latest @@ -15,10 +18,12 @@ jobs: - name: Obtain token id: obtainToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.CROWDIN_APP_PRIVATE_KEY }} - app_id: ${{ secrets.CROWDIN_APP_ID }} + private-key: ${{ secrets.CROWDIN_APP_PRIVATE_KEY }} + app-id: ${{ secrets.CROWDIN_APP_ID }} + permission-contents: write # required to commit to crowdin branch + permission-pull-requests: write # required to create pull request - name: Download Crowdin translations id: crowdin-download diff --git a/.github/workflows/deployment-docker-image.yml b/.github/workflows/deployment-docker-image.yml index 307930137..1223b4db1 100644 --- a/.github/workflows/deployment-docker-image.yml +++ b/.github/workflows/deployment-docker-image.yml @@ -49,18 +49,23 @@ jobs: - name: Obtain token if: env.SKIP_RELEASE == 'false' id: obtainToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} - app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} + app-id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + permission-contents: write # required to commit package.json & changelog changes, merge them to dev and publish the release + - uses: actions/checkout@v5 if: env.SKIP_RELEASE == 'false' with: persist-credentials: false - - uses: actions/setup-node@v4 + - uses: pnpm/action-setup@v4 + if: env.SKIP_RELEASE == 'false' + - uses: actions/setup-node@v5 if: env.SKIP_RELEASE == 'false' with: node-version: 22.19.0 + cache: "pnpm" - run: npm i -g pnpm if: env.SKIP_RELEASE == 'false' - name: Install dependencies diff --git a/.github/workflows/deployment-weekly-release.yml b/.github/workflows/deployment-weekly-release.yml index a0fdcc723..e96cf4eec 100644 --- a/.github/workflows/deployment-weekly-release.yml +++ b/.github/workflows/deployment-weekly-release.yml @@ -49,10 +49,11 @@ jobs: args: "Created a release PR ${{ steps.create-pull-request.outputs.url }} for version ${{ steps.semver.outputs.next }} (new behaviour: ${{ steps.semver.outputs.bump }})" - name: Obtain token id: obtainApprovalToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }} - app_id: ${{ secrets.RENOVATE_APPROVE_APP_ID }} + private-key: ${{ secrets.RENOVATE_APPROVE_PRIVATE_KEY }} + app-id: ${{ secrets.RENOVATE_APPROVE_APP_ID }} + permission-pull-requests: write - name: Approve PR env: GITHUB_TOKEN: ${{ steps.obtainApprovalToken.outputs.token }} @@ -60,10 +61,12 @@ jobs: gh pr review --approve --body "Automatically approved by GitHub Action" - name: Obtain token id: obtainMergeToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} - app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} + app-id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + permission-contents: write # write to main branch (due to merge) + permission-pull-requests: write # merge pull request - id: automerge if: ${{ steps.semver.outputs.bump != 'major' }} name: automerge diff --git a/.github/workflows/on-release.yml b/.github/workflows/on-release.yml index 83357cafe..9aac94c45 100644 --- a/.github/workflows/on-release.yml +++ b/.github/workflows/on-release.yml @@ -11,12 +11,14 @@ jobs: steps: - name: Obtain token id: obtainToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.HOMARR_DOCS_RELEASE_APP_PRIVATE_KEY }} - app_id: ${{ vars.HOMARR_DOCS_RELEASE_APP_ID }} - installation_retrieval_mode: repository - installation_retrieval_payload: homarr-labs/documentation + private-key: ${{ secrets.HOMARR_DOCS_RELEASE_APP_PRIVATE_KEY }} + app-id: ${{ vars.HOMARR_DOCS_RELEASE_APP_ID }} + owner: homarr-labs + repositories: | + documentation + permission-contents: write # required to dispatch repository workflow - name: Trigger documentation release env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} @@ -40,10 +42,12 @@ jobs: steps: - name: Obtain token id: obtainToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} - app_id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + private-key: ${{ secrets.RENOVATE_MERGE_PRIVATE_KEY }} + app-id: ${{ secrets.RENOVATE_MERGE_APP_ID }} + permission-contents: write # required to commit to branch + permission-pull-requests: write # required to create pr & enable automerge - name: Checkout code uses: actions/checkout@v5 with: @@ -57,6 +61,7 @@ jobs: run: | git config --global user.email "175486441+homarr-releases[bot]@users.noreply.github.com" git config --global user.name "Releases Homarr" + git checkout -b update-bug-report-template git add . git commit -m "chore: update bug report template" diff --git a/.github/workflows/skip-renovate-stability-days.yml b/.github/workflows/skip-renovate-stability-days.yml index 2fc403525..5492103b7 100644 --- a/.github/workflows/skip-renovate-stability-days.yml +++ b/.github/workflows/skip-renovate-stability-days.yml @@ -3,11 +3,11 @@ permissions: on: pull_request: - branches-ignore: "renovate/*" types: [opened, synchronize] jobs: skip-stability-days: + if: ${{ !startsWith(github.head_ref, 'renovate/') }} name: Skip Stability Days runs-on: ubuntu-latest steps: diff --git a/.github/workflows/update-contributors.yml b/.github/workflows/update-contributors.yml index 86f7c95d5..c8cb1efde 100644 --- a/.github/workflows/update-contributors.yml +++ b/.github/workflows/update-contributors.yml @@ -9,9 +9,6 @@ env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" CROWDIN_TOKEN: "${{ secrets.CROWDIN_UPDATE_CONTRIBUTORS_TOKEN }}" -permissions: - contents: write - jobs: update-contributors: runs-on: ubuntu-latest @@ -21,20 +18,24 @@ jobs: steps: - name: Obtain token id: obtainToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }} - app_id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }} + private-key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }} + app-id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }} + permission-contents: write # required to commit to branch + permission-pull-requests: write # required to create pr & enable automerge - name: Checkout repository uses: actions/checkout@v5 env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} + - uses: pnpm/action-setup@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} + cache: "pnpm" - name: Run update script run: node ./scripts/update-contributors.mjs diff --git a/.github/workflows/update-integration-list.yml b/.github/workflows/update-integration-list.yml index dc90ce5c3..ff7ad9ae8 100644 --- a/.github/workflows/update-integration-list.yml +++ b/.github/workflows/update-integration-list.yml @@ -1,7 +1,7 @@ name: Update integration list on: - workflow_dispatch: { } + workflow_dispatch: {} push: paths: - packages/definitions/src/integration.ts @@ -20,10 +20,12 @@ jobs: steps: - name: Obtain token id: obtainToken - uses: tibdex/github-app-token@v2 + uses: actions/create-github-app-token@v2 with: - private_key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }} - app_id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }} + private-key: ${{ secrets.HOMARR_UPDATE_CONTRIBUTORS_PRIVATE_KEY }} + app-id: ${{ vars.HOMARR_UPDATE_CONTRIBUTORS_APP_ID }} + permission-contents: write # required to commit to branch + permission-pull-requests: write # required to create pr & enable automerge - name: Checkout code uses: actions/checkout@v5 env: @@ -59,4 +61,4 @@ jobs: env: GITHUB_TOKEN: ${{ steps.obtainToken.outputs.token }} run: | - gh pr merge ${{steps.create-pull-request.outputs.pull-request-number}} --auto --squash \ No newline at end of file + gh pr merge ${{steps.create-pull-request.outputs.pull-request-number}} --auto --squash diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 6f22469eb..8210ac850 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -50,17 +50,17 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^8.2.8", - "@mantine/core": "^8.2.8", - "@mantine/dropzone": "^8.2.8", - "@mantine/hooks": "^8.2.8", - "@mantine/modals": "^8.2.8", - "@mantine/tiptap": "^8.2.8", + "@mantine/colors-generator": "^8.3.1", + "@mantine/core": "^8.3.1", + "@mantine/dropzone": "^8.3.1", + "@mantine/hooks": "^8.3.1", + "@mantine/modals": "^8.3.1", + "@mantine/tiptap": "^8.3.1", "@million/lint": "1.0.14", "@tabler/icons-react": "^3.34.1", - "@tanstack/react-query": "^5.87.1", - "@tanstack/react-query-devtools": "^5.87.1", - "@tanstack/react-query-next-experimental": "^5.87.1", + "@tanstack/react-query": "^5.87.4", + "@tanstack/react-query-devtools": "^5.87.4", + "@tanstack/react-query-next-experimental": "^5.87.4", "@trpc/client": "^11.5.1", "@trpc/next": "^11.5.1", "@trpc/react-query": "^11.5.1", @@ -74,9 +74,9 @@ "dotenv": "^17.2.2", "flag-icons": "^7.5.0", "glob": "^11.0.3", - "jotai": "^2.13.1", + "jotai": "^2.14.0", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.2", + "next": "15.5.3", "postcss-preset-mantine": "^1.18.0", "prismjs": "^1.30.0", "react": "19.1.1", @@ -85,18 +85,18 @@ "react-simple-code-editor": "^0.14.1", "sass": "^1.92.1", "superjson": "2.2.2", - "swagger-ui-react": "^5.28.1", + "swagger-ui-react": "^5.29.0", "use-deep-compare-effect": "^1.8.1", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.1", - "@types/node": "^22.18.1", + "@types/node": "^22.18.3", "@types/prismjs": "^1.26.5", - "@types/react": "19.1.12", + "@types/react": "19.1.13", "@types/react-dom": "19.1.9", "@types/swagger-ui-react": "^5.18.0", "concurrently": "^9.2.1", diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts index 0faccc11c..652cad7aa 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts +++ b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts @@ -2,6 +2,7 @@ import { IconCode, IconGrid3x3, IconKey, + IconLink, IconMessage, IconPassword, IconPasswordUser, @@ -21,6 +22,7 @@ export const integrationSecretIcons = { tokenId: IconGrid3x3, personalAccessToken: IconPasswordUser, topic: IconMessage, + url: IconLink, opnsenseApiKey: IconKey, opnsenseApiSecret: IconPassword, githubAppId: IconCode, diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx index 3b97e65f1..3aa5f3707 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx @@ -33,6 +33,8 @@ export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => { integration.secrets.every((secret) => secretKinds.includes(secret.kind)), ) ?? getDefaultSecretKinds(integration.kind); + const hasUrlSecret = secretsKinds.includes("url"); + const router = useRouter(); const form = useZodForm(integrationUpdateSchema.omit({ id: true }), { initialValues: { @@ -50,10 +52,14 @@ export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => { const secretsMap = new Map(integration.secrets.map((secret) => [secret.kind, secret])); const handleSubmitAsync = async (values: FormType) => { + const url = hasUrlSecret + ? new URL(values.secrets.find((secret) => secret.kind === "url")?.value ?? values.url).origin + : values.url; await mutateAsync( { id: integration.id, ...values, + url, secrets: values.secrets.map((secret) => ({ kind: secret.kind, value: secret.value === "" ? null : secret.value, @@ -92,7 +98,9 @@ export const EditIntegrationForm = ({ integration }: EditIntegrationForm) => { - + {hasUrlSecret ? null : ( + + )}
diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx index 3bb768e5e..078e1d3e1 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx @@ -55,12 +55,19 @@ const formSchema = integrationCreateSchema.omit({ kind: true }).and( export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => { const t = useI18n(); const secretKinds = getAllSecretKindOptions(searchParams.kind); + const hasUrlSecret = secretKinds.some((kinds) => kinds.includes("url")); const router = useRouter(); const [opened, setOpened] = useState(false); + + let url = searchParams.url ?? getIntegrationDefaultUrl(searchParams.kind) ?? ""; + if (hasUrlSecret) { + // Placeholder Url, replaced with origin of the secret Url on submit + url = "http://localhost"; + } const form = useZodForm(formSchema, { initialValues: { name: searchParams.name ?? getIntegrationName(searchParams.kind), - url: searchParams.url ?? getIntegrationDefaultUrl(searchParams.kind) ?? "", + url, secrets: secretKinds[0].map((kind) => ({ kind, value: "", @@ -83,10 +90,14 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => const [error, setError] = useState(null); const handleSubmitAsync = async (values: FormType) => { + const url = hasUrlSecret + ? new URL(values.secrets.find((secret) => secret.kind === "url")?.value ?? values.url).origin + : values.url; await createIntegrationAsync( { kind: searchParams.kind, ...values, + url, }, { async onSuccess(data) { @@ -114,10 +125,10 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => await createAppAsync( { name: values.name, - href: hasCustomHref ? values.appHref : values.url, + href: hasCustomHref ? values.appHref : url, iconUrl: getIconUrl(searchParams.kind), description: null, - pingUrl: values.url, + pingUrl: url, }, { async onSettled() { @@ -149,7 +160,9 @@ export const NewIntegrationForm = ({ searchParams }: NewIntegrationFormProps) => - + {hasUrlSecret ? null : ( + + )}
diff --git a/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx b/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx index 0117c4913..ceb27aa81 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/tasks/_components/tasks-table.tsx @@ -17,6 +17,10 @@ import { useTranslatedMantineReactTable } from "@homarr/ui/hooks"; import { IconPowerOff } from "@homarr/ui/icons"; const cronExpressions = [ + { + value: "*/1 * * * * *", + label: (t: TranslationFunction) => t("management.page.tool.tasks.interval.seconds", { interval: 1 }), + }, { value: "*/5 * * * * *", label: (t: TranslationFunction) => t("management.page.tool.tasks.interval.seconds", { interval: 5 }), diff --git a/apps/tasks/package.json b/apps/tasks/package.json index b342cafb0..2dc4050f9 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -41,13 +41,13 @@ "dotenv": "^17.2.2", "fastify": "^5.6.0", "superjson": "2.2.2", - "undici": "7.15.0" + "undici": "7.16.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "@types/node": "^22.18.1", + "@types/node": "^22.18.3", "dotenv-cli": "^10.0.0", "esbuild": "^0.25.9", "eslint": "^9.35.0", diff --git a/docs/README.md b/docs/README.md index 1ecb24c40..bc258e332 100644 --- a/docs/README.md +++ b/docs/README.md @@ -30,6 +30,8 @@

+![](img/screenshot.png) + ![](img/headers/features.png) - 🖌️ Highly customizable with an extensive drag and drop grid system @@ -132,6 +134,13 @@ + + iCal +
+

iCal

+
+ + Jellyfin
@@ -144,15 +153,15 @@

Jellyseerr

- - + + Lidarr

Lidarr

- - + + LinuxServer.io
@@ -193,15 +202,15 @@

OpenMediaVault

- - + + OPNsense

OPNsense

- - + + Overseerr
@@ -242,15 +251,15 @@

qBittorrent

- - + + Quay

Quay

- - + + Radarr
@@ -291,15 +300,15 @@

Transmission

- - + + TrueNAS

TrueNAS

- - + + Unifi Controller
diff --git a/docs/img/screenshot.png b/docs/img/screenshot.png new file mode 100644 index 000000000..963f6d8fb Binary files /dev/null and b/docs/img/screenshot.png differ diff --git a/package.json b/package.json index ec1753c33..3131a23a0 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.1", "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "^11.0.5", + "@semantic-release/github": "^11.0.6", "@semantic-release/npm": "^12.0.2", "@semantic-release/release-notes-generator": "^14.1.0", "@testcontainers/redis": "^11.5.1", @@ -49,7 +49,7 @@ "@vitest/ui": "^3.2.4", "conventional-changelog-conventionalcommits": "^9.1.0", "cross-env": "^10.0.0", - "jsdom": "^26.1.0", + "jsdom": "^27.0.0", "prettier": "^3.6.2", "semantic-release": "^24.2.8", "testcontainers": "^11.5.1", @@ -58,7 +58,7 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.2.4" }, - "packageManager": "pnpm@10.15.1", + "packageManager": "pnpm@10.16.1", "engines": { "node": ">=22.19.0" }, @@ -77,16 +77,17 @@ "overrides": { "@babel/helpers@<7.26.10": ">=7.28.4", "@babel/runtime@<7.26.10": ">=7.28.4", - "axios@>=1.0.0 <1.8.2": ">=1.12.1", + "axios@>=1.0.0 <1.8.2": ">=1.12.2", "brace-expansion@>=2.0.0 <=2.0.1": ">=4.0.1", "brace-expansion@>=1.0.0 <=1.1.11": ">=4.0.1", "esbuild@<=0.24.2": ">=0.25.9", "form-data@>=4.0.0 <4.0.4": ">=4.0.4", - "hono@<4.6.5": ">=4.9.6", + "hono@<4.6.5": ">=4.9.7", "linkifyjs@<4.3.2": ">=4.3.2", "nanoid@>=4.0.0 <5.0.9": ">=5.1.5", "prismjs@<1.30.0": ">=1.30.0", - "proxmox-api>undici": "7.15.0", + "proxmox-api>undici": "7.16.0", + "react-is": "^19.1.1", "rollup@>=4.0.0 <4.22.4": ">=4.50.1", "sha.js@<=2.4.11": ">=2.4.12", "tar-fs@>=3.0.0 <3.0.9": ">=3.1.0", diff --git a/packages/api/package.json b/packages/api/package.json index 803e6ee97..22103603e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -42,18 +42,18 @@ "@homarr/server-settings": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@kubernetes/client-node": "^1.3.0", - "@tanstack/react-query": "^5.87.1", + "@tanstack/react-query": "^5.87.4", "@trpc/client": "^11.5.1", "@trpc/react-query": "^11.5.1", "@trpc/server": "^11.5.1", "@trpc/tanstack-react-query": "^11.5.1", "lodash.clonedeep": "^4.5.0", - "next": "15.5.2", + "next": "15.5.3", "react": "19.1.1", "react-dom": "19.1.1", "superjson": "2.2.2", "trpc-to-openapi": "^3.0.1", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/auth/package.json b/packages/auth/package.json index b77b10524..ba44cefad 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -35,11 +35,11 @@ "bcrypt": "^6.0.0", "cookies": "^0.9.1", "ldapts": "8.0.9", - "next": "15.5.2", + "next": "15.5.3", "next-auth": "5.0.0-beta.29", "react": "19.1.1", "react-dom": "19.1.1", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/certificates/package.json b/packages/certificates/package.json index ca3fc4add..b7e7b7885 100644 --- a/packages/certificates/package.json +++ b/packages/certificates/package.json @@ -24,7 +24,7 @@ "dependencies": { "@homarr/common": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", - "undici": "7.15.0" + "undici": "7.16.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/common/package.json b/packages/common/package.json index fca2e9586..c82ed933f 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -32,12 +32,12 @@ "@paralleldrive/cuid2": "^2.2.2", "dayjs": "^1.11.18", "dns-caching": "^0.2.5", - "next": "15.5.2", + "next": "15.5.3", "octokit": "^5.0.3", "react": "19.1.1", "react-dom": "19.1.1", - "undici": "7.15.0", - "zod": "^4.1.5", + "undici": "7.16.0", + "zod": "^4.1.8", "zod-validation-error": "^4.0.1" }, "devDependencies": { diff --git a/packages/common/src/fetch-agent.ts b/packages/common/src/fetch-agent.ts index b541f5301..ca670cd36 100644 --- a/packages/common/src/fetch-agent.ts +++ b/packages/common/src/fetch-agent.ts @@ -12,7 +12,11 @@ export class LoggingAgent extends Agent { } dispatch(options: Dispatcher.DispatchOptions, handler: Dispatcher.DispatchHandler): boolean { - const url = new URL(`${options.origin as string}${options.path}`); + const path = options.path + .split("/") + .map((segment) => (segment.length >= 32 && !segment.startsWith("?") ? "REDACTED" : segment)) + .join("/"); + const url = new URL(`${options.origin as string}${path}`); // The below code should prevent sensitive data from being logged as // some integrations use query parameters for auth diff --git a/packages/common/src/test/fetch-agent.spec.ts b/packages/common/src/test/fetch-agent.spec.ts index 12cb8040d..9617a9587 100644 --- a/packages/common/src/test/fetch-agent.spec.ts +++ b/packages/common/src/test/fetch-agent.spec.ts @@ -66,6 +66,7 @@ describe("LoggingAgent should log all requests", () => { ["/?one=a1&two=b2&three=c3", `/?one=${REDACTED}&two=${REDACTED}&three=${REDACTED}`], ["/?numberWith13Chars=1234567890123", `/?numberWith13Chars=${REDACTED}`], [`/?stringWith13Chars=${"a".repeat(13)}`, `/?stringWith13Chars=${REDACTED}`], + [`/${"a".repeat(32)}/?param=123`, `/${REDACTED}/?param=123`], ])("should redact sensitive data in url https://homarr.dev%s", (path, expected) => { // Arrange const infoLogSpy = vi.spyOn(logger, "debug"); diff --git a/packages/core/package.json b/packages/core/package.json index 83677b1af..15ef33538 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -26,7 +26,7 @@ "dependencies": { "@t3-oss/env-nextjs": "^0.13.8", "ioredis": "5.7.0", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/core/src/infrastructure/redis/client.ts b/packages/core/src/infrastructure/redis/client.ts index e35ee9220..ef68c0474 100644 --- a/packages/core/src/infrastructure/redis/client.ts +++ b/packages/core/src/infrastructure/redis/client.ts @@ -15,6 +15,7 @@ export const createRedisClient = () => ...defaultRedisOptions, host: redisEnv.HOST, port: redisEnv.PORT, + db: redisEnv.DATABASE_INDEX, tls: redisEnv.TLS_CA ? { ca: redisEnv.TLS_CA, diff --git a/packages/core/src/infrastructure/redis/env.ts b/packages/core/src/infrastructure/redis/env.ts index f54ec128c..0c7b1503a 100644 --- a/packages/core/src/infrastructure/redis/env.ts +++ b/packages/core/src/infrastructure/redis/env.ts @@ -12,6 +12,7 @@ export const redisEnv = createEnv({ TLS_CA: z.string().optional(), USERNAME: z.string().optional(), PASSWORD: z.string().optional(), + DATABASE_INDEX: z.coerce.number().optional(), }, runtimeEnv: runtimeEnvWithPrefix("REDIS_"), }); diff --git a/packages/cron-job-api/package.json b/packages/cron-job-api/package.json index 41f2e0c08..52c61d737 100644 --- a/packages/cron-job-api/package.json +++ b/packages/cron-job-api/package.json @@ -29,20 +29,20 @@ "@homarr/core": "workspace:^0.1.0", "@homarr/cron-jobs": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", - "@tanstack/react-query": "^5.87.1", + "@tanstack/react-query": "^5.87.4", "@trpc/client": "^11.5.1", "@trpc/server": "^11.5.1", "@trpc/tanstack-react-query": "^11.5.1", "node-cron": "^4.2.1", "react": "19.1.1", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "@types/react": "19.1.12", + "@types/react": "19.1.13", "eslint": "^9.35.0", "typescript": "^5.9.2" } diff --git a/packages/db/package.json b/packages/db/package.json index 0968462ae..acadcec53 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -49,7 +49,7 @@ "@homarr/definitions": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/core": "^8.2.8", + "@mantine/core": "^8.3.1", "@paralleldrive/cuid2": "^2.2.2", "@testcontainers/mysql": "^11.5.1", "@testcontainers/postgresql": "^11.5.1", @@ -58,7 +58,7 @@ "drizzle-kit": "^0.31.4", "drizzle-orm": "^0.44.5", "drizzle-zod": "^0.8.3", - "mysql2": "3.14.4", + "mysql2": "3.14.5", "pg": "^8.16.3", "superjson": "2.2.2" }, diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 10bc70ea5..338227d40 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -25,7 +25,7 @@ "dependencies": { "@homarr/common": "workspace:^0.1.0", "fast-xml-parser": "^5.2.5", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index 59ea973b4..6815530cc 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -183,6 +183,7 @@ export type HomarrDocumentationPath = | "/docs/integrations/sonarr" | "/docs/integrations/tdarr" | "/docs/integrations/transmission" + | "/docs/integrations/truenas" | "/docs/integrations/unifi-controller" | "/docs/management/api" | "/docs/management/apps" diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts index 54dba1d49..1e8269bbc 100644 --- a/packages/definitions/src/integration.ts +++ b/packages/definitions/src/integration.ts @@ -13,6 +13,7 @@ export const integrationSecretKindObject = { topic: { isPublic: true, multiline: false }, opnsenseApiKey: { isPublic: false, multiline: false }, opnsenseApiSecret: { isPublic: false, multiline: false }, + url: { isPublic: false, multiline: false }, privateKey: { isPublic: false, multiline: true }, githubAppId: { isPublic: true, multiline: false }, githubInstallationId: { isPublic: true, multiline: false }, @@ -283,6 +284,13 @@ export const integrationDefs = { category: ["notifications"], documentationUrl: createDocumentationLink("/docs/integrations/ntfy"), }, + ical: { + name: "iCal", + secretKinds: [["url"]], + iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/ical.svg", + category: ["calendar"], + documentationUrl: createDocumentationLink("/docs/integrations/ical"), + }, truenas: { name: "TrueNAS", secretKinds: [["username", "password"]], diff --git a/packages/docker/package.json b/packages/docker/package.json index 954936af5..7349ad9ee 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -26,7 +26,7 @@ "dependencies": { "@homarr/common": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0", - "dockerode": "^4.0.7" + "dockerode": "^4.0.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/form/package.json b/packages/form/package.json index 36fad1dc0..42aaa3f7b 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,9 +26,9 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^8.2.8", + "@mantine/form": "^8.3.1", "mantine-form-zod-resolver": "^1.3.0", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/forms-collection/package.json b/packages/forms-collection/package.json index e0431a4ea..c796e6b06 100644 --- a/packages/forms-collection/package.json +++ b/packages/forms-collection/package.json @@ -29,9 +29,9 @@ "@homarr/notifications": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.2.8", + "@mantine/core": "^8.3.1", "react": "19.1.1", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 125fe2b48..f68168096 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -41,14 +41,15 @@ "@homarr/validation": "workspace:^0.1.0", "@jellyfin/sdk": "^0.11.0", "@octokit/auth-app": "^8.1.0", + "ical.js": "^2.2.1", "maria2": "^0.4.1", "node-ical": "^0.20.1", "octokit": "^5.0.3", "proxmox-api": "1.1.1", "tsdav": "^2.1.5", - "undici": "7.15.0", + "undici": "7.16.0", "xml2js": "^0.6.2", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/integrations/src/base/creator.ts b/packages/integrations/src/base/creator.ts index 1d34528b0..e0bdd2ab4 100644 --- a/packages/integrations/src/base/creator.ts +++ b/packages/integrations/src/base/creator.ts @@ -18,6 +18,7 @@ import { GitHubContainerRegistryIntegration } from "../github-container-registry import { GithubIntegration } from "../github/github-integration"; import { GitlabIntegration } from "../gitlab/gitlab-integration"; import { HomeAssistantIntegration } from "../homeassistant/homeassistant-integration"; +import { ICalIntegration } from "../ical/ical-integration"; import { JellyfinIntegration } from "../jellyfin/jellyfin-integration"; import { JellyseerrIntegration } from "../jellyseerr/jellyseerr-integration"; import { LinuxServerIOIntegration } from "../linuxserverio/linuxserverio-integration"; @@ -112,6 +113,7 @@ export const integrationCreators = { codeberg: CodebergIntegration, linuxServerIO: LinuxServerIOIntegration, gitHubContainerRegistry: GitHubContainerRegistryIntegration, + ical: ICalIntegration, quay: QuayIntegration, ntfy: NTFYIntegration, mock: MockIntegration, diff --git a/packages/integrations/src/ical/ical-integration.ts b/packages/integrations/src/ical/ical-integration.ts new file mode 100644 index 000000000..8280d4303 --- /dev/null +++ b/packages/integrations/src/ical/ical-integration.ts @@ -0,0 +1,67 @@ +import ICAL from "ical.js"; + +import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; + +import type { IntegrationTestingInput } from "../base/integration"; +import { Integration } from "../base/integration"; +import { TestConnectionError } from "../base/test-connection/test-connection-error"; +import type { TestingResult } from "../base/test-connection/test-connection-service"; +import type { ICalendarIntegration } from "../interfaces/calendar/calendar-integration"; +import type { CalendarEvent } from "../interfaces/calendar/calendar-types"; + +export class ICalIntegration extends Integration implements ICalendarIntegration { + async getCalendarEventsAsync(start: Date, end: Date): Promise { + const response = await fetchWithTrustedCertificatesAsync(super.getSecretValue("url")); + const result = await response.text(); + const jcal = ICAL.parse(result) as unknown[]; + const comp = new ICAL.Component(jcal); + + return comp.getAllSubcomponents("vevent").reduce((prev, vevent) => { + const event = new ICAL.Event(vevent); + const startDate = event.startDate.toJSDate(); + const endDate = event.endDate.toJSDate(); + + if (startDate > end) return prev; + if (endDate < start) return prev; + + return prev.concat({ + title: event.summary, + subTitle: null, + description: event.description, + startDate, + endDate, + image: null, + location: event.location, + indicatorColor: "red", + links: [], + }); + }, [] as CalendarEvent[]); + } + + protected async testingAsync(input: IntegrationTestingInput): Promise { + const response = await input.fetchAsync(super.getSecretValue("url")); + if (!response.ok) return TestConnectionError.StatusResult(response); + + const result = await response.text(); + + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const jcal = ICAL.parse(result); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const comp = new ICAL.Component(jcal); + return comp.getAllSubcomponents("vevent").length > 0 + ? { success: true } + : TestConnectionError.ParseResult({ + name: "Calendar parse error", + message: "No events found", + cause: new Error("No events found"), + }); + } catch (error) { + return TestConnectionError.ParseResult({ + name: "Calendar parse error", + message: "Failed to parse calendar", + cause: error as Error, + }); + } + } +} diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts index ac21e3080..393264350 100644 --- a/packages/integrations/src/index.ts +++ b/packages/integrations/src/index.ts @@ -23,6 +23,7 @@ export { PlexIntegration } from "./plex/plex-integration"; export { ProwlarrIntegration } from "./prowlarr/prowlarr-integration"; export { TrueNasIntegration } from "./truenas/truenas-integration"; export { OPNsenseIntegration } from "./opnsense/opnsense-integration"; +export { ICalIntegration } from "./ical/ical-integration"; // Types export type { IntegrationInput } from "./base/integration"; diff --git a/packages/integrations/src/interfaces/calendar/calendar-types.ts b/packages/integrations/src/interfaces/calendar/calendar-types.ts index 0aad96b03..2466aa1b1 100644 --- a/packages/integrations/src/interfaces/calendar/calendar-types.ts +++ b/packages/integrations/src/interfaces/calendar/calendar-types.ts @@ -1,24 +1,41 @@ export const radarrReleaseTypes = ["inCinemas", "digitalRelease", "physicalRelease"] as const; export type RadarrReleaseType = (typeof radarrReleaseTypes)[number]; -export interface CalendarEvent { - name: string; - subName: string; - date: Date; - dates?: { type: RadarrReleaseType; date: Date }[]; - description?: string; - thumbnail?: string; - mediaInformation?: { - type: "audio" | "video" | "tv" | "movie"; - seasonNumber?: number; - episodeNumber?: number; - }; - links: { - href: string; - name: string; - color: string | undefined; - notificationColor?: string | undefined; - isDark: boolean | undefined; - logo: string; - }[]; +export interface RadarrMetadata { + type: "radarr"; + releaseType: RadarrReleaseType; +} + +export type CalendarMetadata = RadarrMetadata; + +export interface CalendarLink { + name: string; + isDark: boolean; + href: string; + color?: string; + logo?: string; +} + +export interface CalendarImageBadge { + content: string; + color: string; +} + +export interface CalendarImage { + src: string; + badge?: CalendarImageBadge; + aspectRatio?: { width: number; height: number }; +} + +export interface CalendarEvent { + title: string; + subTitle: string | null; + description: string | null; + startDate: Date; + endDate: Date | null; + image: CalendarImage | null; + location: string | null; + metadata?: CalendarMetadata; + indicatorColor: string; + links: CalendarLink[]; } diff --git a/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts b/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts index 6348f9ec1..f047048b1 100644 --- a/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts +++ b/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts @@ -8,7 +8,7 @@ import type { IntegrationTestingInput } from "../../base/integration"; import { TestConnectionError } from "../../base/test-connection/test-connection-error"; import type { TestingResult } from "../../base/test-connection/test-connection-service"; import type { ICalendarIntegration } from "../../interfaces/calendar/calendar-integration"; -import type { CalendarEvent } from "../../interfaces/calendar/calendar-types"; +import type { CalendarEvent, CalendarLink } from "../../interfaces/calendar/calendar-types"; import { mediaOrganizerPriorities } from "../media-organizer"; export class LidarrIntegration extends Integration implements ICalendarIntegration { @@ -44,22 +44,28 @@ export class LidarrIntegration extends Integration implements ICalendarIntegrati const lidarrCalendarEvents = await z.array(lidarrCalendarEventSchema).parseAsync(await response.json()); return lidarrCalendarEvents.map((lidarrCalendarEvent): CalendarEvent => { + const imageSrc = this.chooseBestImage(lidarrCalendarEvent); return { - name: lidarrCalendarEvent.title, - subName: lidarrCalendarEvent.artist.artistName, - description: lidarrCalendarEvent.overview, - thumbnail: this.chooseBestImageAsURL(lidarrCalendarEvent), - date: lidarrCalendarEvent.releaseDate, - mediaInformation: { - type: "audio", - }, + title: lidarrCalendarEvent.title, + subTitle: lidarrCalendarEvent.artist.artistName, + description: lidarrCalendarEvent.overview ?? null, + startDate: lidarrCalendarEvent.releaseDate, + endDate: null, + image: imageSrc + ? { + src: imageSrc.remoteUrl, + aspectRatio: { width: 7, height: 12 }, + } + : null, + location: null, + indicatorColor: "cyan", links: this.getLinksForLidarrCalendarEvent(lidarrCalendarEvent), }; }); } private getLinksForLidarrCalendarEvent = (event: z.infer) => { - const links: CalendarEvent["links"] = []; + const links: CalendarLink[] = []; for (const link of event.artist.links) { switch (link.name) { @@ -70,7 +76,6 @@ export class LidarrIntegration extends Integration implements ICalendarIntegrati color: "#f5c518", isDark: false, logo: "/images/apps/vgmdb.svg", - notificationColor: "cyan", }); break; case "imdb": @@ -80,7 +85,6 @@ export class LidarrIntegration extends Integration implements ICalendarIntegrati color: "#f5c518", isDark: false, logo: "/images/apps/imdb.png", - notificationColor: "cyan", }); break; case "last": @@ -90,7 +94,6 @@ export class LidarrIntegration extends Integration implements ICalendarIntegrati color: "#cf222a", isDark: false, logo: "/images/apps/lastfm.svg", - notificationColor: "cyan", }); break; } diff --git a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts index 8dc6aff87..a5a176a0d 100644 --- a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts +++ b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts @@ -1,15 +1,14 @@ import { z } from "zod/v4"; import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; -import type { AtLeastOneOf } from "@homarr/common/types"; import { logger } from "@homarr/log"; -import { Integration } from "../../base/integration"; import type { IntegrationTestingInput } from "../../base/integration"; +import { Integration } from "../../base/integration"; import { TestConnectionError } from "../../base/test-connection/test-connection-error"; import type { TestingResult } from "../../base/test-connection/test-connection-service"; import type { ICalendarIntegration } from "../../interfaces/calendar/calendar-integration"; -import type { CalendarEvent } from "../../interfaces/calendar/calendar-types"; +import type { CalendarEvent, CalendarLink } from "../../interfaces/calendar/calendar-types"; import { radarrReleaseTypes } from "../../interfaces/calendar/calendar-types"; import { mediaOrganizerPriorities } from "../media-organizer"; @@ -34,33 +33,44 @@ export class RadarrIntegration extends Integration implements ICalendarIntegrati }); const radarrCalendarEvents = await z.array(radarrCalendarEventSchema).parseAsync(await response.json()); - return radarrCalendarEvents.map((radarrCalendarEvent): CalendarEvent => { - const dates = radarrReleaseTypes - .map((type) => (radarrCalendarEvent[type] ? { type, date: radarrCalendarEvent[type] } : undefined)) - .filter((date) => date) as AtLeastOneOf[number]>; - return { - name: radarrCalendarEvent.title, - subName: radarrCalendarEvent.originalTitle, - description: radarrCalendarEvent.overview, - thumbnail: this.chooseBestImageAsURL(radarrCalendarEvent), - date: dates[0].date, - dates, - mediaInformation: { - type: "movie", - }, - links: this.getLinksForRadarrCalendarEvent(radarrCalendarEvent), - }; + return radarrCalendarEvents.flatMap((radarrCalendarEvent): CalendarEvent[] => { + const imageSrc = this.chooseBestImageAsURL(radarrCalendarEvent); + + return radarrReleaseTypes + .map((releaseType) => ({ type: releaseType, date: radarrCalendarEvent[releaseType] })) + .filter((item) => item.date !== undefined) + .map((item) => ({ + title: radarrCalendarEvent.title, + subTitle: radarrCalendarEvent.originalTitle, + description: radarrCalendarEvent.overview ?? null, + // Check is done above in the filter + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + startDate: item.date!, + endDate: null, + image: imageSrc + ? { + src: imageSrc, + aspectRatio: { width: 7, height: 12 }, + } + : null, + location: null, + metadata: { + type: "radarr", + releaseType: item.type, + }, + indicatorColor: "yellow", + links: this.getLinksForRadarrCalendarEvent(radarrCalendarEvent), + })); }); } private getLinksForRadarrCalendarEvent = (event: z.infer) => { - const links: CalendarEvent["links"] = [ + const links: CalendarLink[] = [ { href: this.url(`/movie/${event.titleSlug}`).toString(), name: "Radarr", logo: "/images/apps/radarr.svg", color: undefined, - notificationColor: "yellow", isDark: true, }, ]; diff --git a/packages/integrations/src/media-organizer/readarr/readarr-integration.ts b/packages/integrations/src/media-organizer/readarr/readarr-integration.ts index a9d8154cd..da5db4fb3 100644 --- a/packages/integrations/src/media-organizer/readarr/readarr-integration.ts +++ b/packages/integrations/src/media-organizer/readarr/readarr-integration.ts @@ -8,7 +8,7 @@ import type { IntegrationTestingInput } from "../../base/integration"; import { TestConnectionError } from "../../base/test-connection/test-connection-error"; import type { TestingResult } from "../../base/test-connection/test-connection-service"; import type { ICalendarIntegration } from "../../interfaces/calendar/calendar-integration"; -import type { CalendarEvent } from "../../interfaces/calendar/calendar-types"; +import type { CalendarEvent, CalendarLink } from "../../interfaces/calendar/calendar-types"; import { mediaOrganizerPriorities } from "../media-organizer"; export class ReadarrIntegration extends Integration implements ICalendarIntegration { @@ -50,15 +50,22 @@ export class ReadarrIntegration extends Integration implements ICalendarIntegrat const readarrCalendarEvents = await z.array(readarrCalendarEventSchema).parseAsync(await response.json()); return readarrCalendarEvents.map((readarrCalendarEvent): CalendarEvent => { + const imageSrc = this.chooseBestImageAsURL(readarrCalendarEvent); + return { - name: readarrCalendarEvent.title, - subName: readarrCalendarEvent.author.authorName, - description: readarrCalendarEvent.overview, - thumbnail: this.chooseBestImageAsURL(readarrCalendarEvent), - date: readarrCalendarEvent.releaseDate, - mediaInformation: { - type: "audio", - }, + title: readarrCalendarEvent.title, + subTitle: readarrCalendarEvent.author.authorName, + description: readarrCalendarEvent.overview ?? null, + startDate: readarrCalendarEvent.releaseDate, + endDate: null, + image: imageSrc + ? { + src: imageSrc, + aspectRatio: { width: 7, height: 12 }, + } + : null, + location: null, + indicatorColor: "#f5c518", links: this.getLinksForReadarrCalendarEvent(readarrCalendarEvent), }; }); @@ -72,9 +79,8 @@ export class ReadarrIntegration extends Integration implements ICalendarIntegrat isDark: false, logo: "/images/apps/readarr.svg", name: "Readarr", - notificationColor: "#f5c518", }, - ] satisfies CalendarEvent["links"]; + ] satisfies CalendarLink[]; }; private chooseBestImage = ( diff --git a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts index a3f623881..d44c53c58 100644 --- a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts +++ b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts @@ -8,7 +8,7 @@ import type { IntegrationTestingInput } from "../../base/integration"; import { TestConnectionError } from "../../base/test-connection/test-connection-error"; import type { TestingResult } from "../../base/test-connection/test-connection-service"; import type { ICalendarIntegration } from "../../interfaces/calendar/calendar-integration"; -import type { CalendarEvent } from "../../interfaces/calendar/calendar-types"; +import type { CalendarEvent, CalendarLink } from "../../interfaces/calendar/calendar-types"; import { mediaOrganizerPriorities } from "../media-organizer"; export class SonarrIntegration extends Integration implements ICalendarIntegration { @@ -33,33 +33,36 @@ export class SonarrIntegration extends Integration implements ICalendarIntegrati "X-Api-Key": super.getSecretValue("apiKey"), }, }); - const sonarCalendarEvents = await z.array(sonarrCalendarEventSchema).parseAsync(await response.json()); + const sonarrCalendarEvents = await z.array(sonarrCalendarEventSchema).parseAsync(await response.json()); - return sonarCalendarEvents.map( - (sonarCalendarEvent): CalendarEvent => ({ - name: sonarCalendarEvent.title, - subName: sonarCalendarEvent.series.title, - description: sonarCalendarEvent.series.overview, - thumbnail: this.chooseBestImageAsURL(sonarCalendarEvent), - date: sonarCalendarEvent.airDateUtc, - mediaInformation: { - type: "tv", - episodeNumber: sonarCalendarEvent.episodeNumber, - seasonNumber: sonarCalendarEvent.seasonNumber, - }, - links: this.getLinksForSonarCalendarEvent(sonarCalendarEvent), - }), - ); + return sonarrCalendarEvents.map((event): CalendarEvent => { + const imageSrc = this.chooseBestImageAsURL(event); + return { + title: event.title, + subTitle: event.series.title, + description: event.series.overview ?? null, + startDate: event.airDateUtc, + endDate: null, + image: imageSrc + ? { + src: imageSrc, + aspectRatio: { width: 7, height: 12 }, + } + : null, + location: null, + indicatorColor: "blue", + links: this.getLinksForSonarrCalendarEvent(event), + }; + }); } - private getLinksForSonarCalendarEvent = (event: z.infer) => { - const links: CalendarEvent["links"] = [ + private getLinksForSonarrCalendarEvent = (event: z.infer) => { + const links: CalendarLink[] = [ { href: this.url(`/series/${event.series.titleSlug}`).toString(), name: "Sonarr", logo: "/images/apps/sonarr.svg", color: undefined, - notificationColor: "blue", isDark: true, }, ]; diff --git a/packages/integrations/src/mock/data/calendar.ts b/packages/integrations/src/mock/data/calendar.ts index efc8576d7..9c298fc91 100644 --- a/packages/integrations/src/mock/data/calendar.ts +++ b/packages/integrations/src/mock/data/calendar.ts @@ -8,32 +8,46 @@ export class CalendarMockService implements ICalendarIntegration { } } -const homarrMeetup = (start: Date, end: Date): CalendarEvent => ({ - name: "Homarr Meetup", - subName: "", - description: "Yearly meetup of the Homarr community", - date: randomDateBetween(start, end), - links: [ - { - href: "https://homarr.dev", - name: "Homarr", - logo: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/homarr.svg", - color: "#000000", - notificationColor: "#fa5252", - isDark: true, - }, - ], -}); +const homarrMeetup = (start: Date, end: Date): CalendarEvent => { + const startDate = randomDateBetween(start, end); + const endDate = new Date(startDate.getTime() + 2 * 60 * 60 * 1000); // 2 hours later + return { + title: "Homarr Meetup", + subTitle: "", + description: "Yearly meetup of the Homarr community", + startDate, + endDate, + image: null, + location: "Mountains", + indicatorColor: "#fa5252", + links: [ + { + href: "https://homarr.dev", + name: "Homarr", + logo: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/homarr.svg", + color: "#000000", + isDark: true, + }, + ], + }; +}; const titanicRelease = (start: Date, end: Date): CalendarEvent => ({ - name: "Titanic", - subName: "A classic movie", + title: "Titanic", + subTitle: "A classic movie", description: "A tragic love story set on the ill-fated RMS Titanic.", - date: randomDateBetween(start, end), - thumbnail: "https://image.tmdb.org/t/p/original/5bTWA20cL9LCIGNpde4Epc2Ijzn.jpg", - mediaInformation: { - type: "movie", + startDate: randomDateBetween(start, end), + endDate: null, + image: { + src: "https://image.tmdb.org/t/p/original/5bTWA20cL9LCIGNpde4Epc2Ijzn.jpg", + aspectRatio: { width: 7, height: 12 }, }, + location: null, + metadata: { + type: "radarr", + releaseType: "inCinemas", + }, + indicatorColor: "cyan", links: [ { href: "https://www.imdb.com/title/tt0120338/", @@ -41,22 +55,26 @@ const titanicRelease = (start: Date, end: Date): CalendarEvent => ({ color: "#f5c518", isDark: false, logo: "/images/apps/imdb.svg", - notificationColor: "cyan", }, ], }); const seriesRelease = (start: Date, end: Date): CalendarEvent => ({ - name: "The Mandalorian", - subName: "A Star Wars Series", + title: "The Mandalorian", + subTitle: "A Star Wars Series", description: "A lone bounty hunter in the outer reaches of the galaxy.", - date: randomDateBetween(start, end), - thumbnail: "https://image.tmdb.org/t/p/original/ztvm7C7hiUpS3CZRXFmJxljICzK.jpg", - mediaInformation: { - type: "tv", - seasonNumber: 1, - episodeNumber: 1, + startDate: randomDateBetween(start, end), + endDate: null, + image: { + src: "https://image.tmdb.org/t/p/original/sWgBv7LV2PRoQgkxwlibdGXKz1S.jpg", + aspectRatio: { width: 7, height: 12 }, + badge: { + content: "S1:E1", + color: "red", + }, }, + location: null, + indicatorColor: "blue", links: [ { href: "https://www.imdb.com/title/tt8111088/", @@ -64,7 +82,6 @@ const seriesRelease = (start: Date, end: Date): CalendarEvent => ({ color: "#f5c518", isDark: false, logo: "/images/apps/imdb.svg", - notificationColor: "blue", }, ], }); diff --git a/packages/integrations/src/nextcloud/nextcloud.integration.ts b/packages/integrations/src/nextcloud/nextcloud.integration.ts index a855ce297..4e3dbb82e 100644 --- a/packages/integrations/src/nextcloud/nextcloud.integration.ts +++ b/packages/integrations/src/nextcloud/nextcloud.integration.ts @@ -63,17 +63,20 @@ export class NextcloudIntegration extends Integration implements ICalendarIntegr ); return { - name: veventObject.summary, - date, - subName: "", + title: veventObject.summary, + subTitle: null, description: veventObject.description, + startDate: date, + endDate: veventObject.end, + image: null, + location: veventObject.location || null, + indicatorColor: "#ff8600", links: [ { href: url.toString(), name: "Nextcloud", logo: "/images/apps/nextcloud.svg", color: undefined, - notificationColor: "#ff8600", isDark: true, }, ], diff --git a/packages/log/package.json b/packages/log/package.json index 92e397e67..3b6965039 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -27,7 +27,7 @@ "@homarr/core": "workspace:^0.1.0", "superjson": "2.2.2", "winston": "3.17.0", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 337d15aad..888938e34 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -33,13 +33,13 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.2.8", + "@mantine/core": "^8.3.1", "@tabler/icons-react": "^3.34.1", "dayjs": "^1.11.18", - "next": "15.5.2", + "next": "15.5.3", "react": "19.1.1", "react-dom": "19.1.1", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals/package.json b/packages/modals/package.json index e5a9a09ea..a889423ec 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -24,8 +24,8 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^8.2.8", - "@mantine/hooks": "^8.2.8", + "@mantine/core": "^8.3.1", + "@mantine/hooks": "^8.3.1", "react": "19.1.1" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 3d7f4ba34..abdfb39e9 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/ui": "workspace:^0.1.0", - "@mantine/notifications": "^8.2.8", + "@mantine/notifications": "^8.3.1", "@tabler/icons-react": "^3.34.1" }, "devDependencies": { diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 764a91c64..ff0c024ae 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,14 +37,14 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.2.8", - "@mantine/hooks": "^8.2.8", + "@mantine/core": "^8.3.1", + "@mantine/hooks": "^8.3.1", "adm-zip": "0.5.16", - "next": "15.5.2", + "next": "15.5.3", "react": "19.1.1", "react-dom": "19.1.1", "superjson": "2.2.2", - "zod": "^4.1.5", + "zod": "^4.1.8", "zod-form-data": "^3.0.1" }, "devDependencies": { diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index ec0727bbe..16ad821c4 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -23,7 +23,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/common": "workspace:^0.1.0", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index 222132001..b3b4f2171 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -32,7 +32,7 @@ "dayjs": "^1.11.18", "octokit": "^5.0.3", "superjson": "2.2.2", - "undici": "7.15.0" + "undici": "7.16.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/settings/package.json b/packages/settings/package.json index 9ad13793f..485e36b40 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -26,8 +26,8 @@ "@homarr/api": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", - "@mantine/dates": "^8.2.8", - "next": "15.5.2", + "@mantine/dates": "^8.3.1", + "next": "15.5.3", "react": "19.1.1", "react-dom": "19.1.1" }, diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 0e9451efc..613d71c06 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -33,12 +33,12 @@ "@homarr/settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^8.2.8", - "@mantine/hooks": "^8.2.8", - "@mantine/spotlight": "^8.2.8", + "@mantine/core": "^8.3.1", + "@mantine/hooks": "^8.3.1", + "@mantine/spotlight": "^8.3.1", "@tabler/icons-react": "^3.34.1", - "jotai": "^2.13.1", - "next": "15.5.2", + "jotai": "^2.14.0", + "next": "15.5.3", "react": "19.1.1", "react-dom": "19.1.1", "use-deep-compare-effect": "^1.8.1" diff --git a/packages/translation/package.json b/packages/translation/package.json index 67cc7e713..94b611906 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -32,8 +32,8 @@ "dayjs": "^1.11.18", "deepmerge": "4.3.1", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.2", - "next-intl": "4.3.7", + "next": "15.5.3", + "next-intl": "4.3.8", "react": "19.1.1", "react-dom": "19.1.1" }, diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index ebeed7066..1b5e2cde4 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index ae2c9ea77..8254d6c5b 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Hole 数据" }, - "sessionCleanup": { - "label": "会话清理" - }, "updateChecker": { "label": "更新检查" }, diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index ff33c26af..ee130d966 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 70cfda277..295d1a7d7 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Hole Data" }, - "sessionCleanup": { - "label": "Sessions Oprydning" - }, "updateChecker": { "label": "Opdaterings checker" }, diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json index f2071a2f7..09d389274 100644 --- a/packages/translation/src/lang/de-CH.json +++ b/packages/translation/src/lang/de-CH.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Hole Daten" }, - "sessionCleanup": { - "label": "Sitzung bereinigen" - }, "updateChecker": { "label": "Updateprüfer" }, diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index 2a3b4c273..3ade9ce45 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Hole Daten" }, - "sessionCleanup": { - "label": "Sitzung bereinigen" - }, "updateChecker": { "label": "Updateprüfer" }, diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index e0a85d523..c3d3d88a8 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json index e9d66e757..61461d20c 100644 --- a/packages/translation/src/lang/en-gb.json +++ b/packages/translation/src/lang/en-gb.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 8b5e89369..a8175679c 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -945,6 +945,10 @@ "label": "Topic", "newLabel": "New topic" }, + "url": { + "label": "Url", + "newLabel": "New url" + }, "opnsenseApiKey": { "label": "API Key (Key)", "newLabel": "New API Key (Key)" @@ -1543,7 +1547,15 @@ "width": "Width", "height": "Height" }, - "placeholder": "Start writing your notes" + "placeholder": "Start writing your notes", + "dismiss": { + "title": "Dismiss changes?", + "message": "You have unsaved changes in your notebook. Are you sure you want to discard them?", + "action": { + "discard": "Discard changes", + "keepEditing": "Keep editing" + } + } }, "iframe": { "name": "iFrame", @@ -2490,7 +2502,29 @@ "systemResources": { "name": "System resources", "description": "CPU, Memory, Disk and other hardware usage of your system", - "option": {}, + "option": { + "hasShadow": { + "label": "Enable chart shading" + }, + "visibleCharts": { + "label": "Visible charts", + "description": "Select the charts you want to be visible.", + "option": { + "cpu": "CPU", + "memory": "Memory", + "network": "Network" + } + }, + "labelDisplayMode": { + "label": "Label display mode", + "option": { + "textWithIcon": "Show text with icon", + "text": "Show only text", + "icon": "Show only icon", + "hidden": "Hide label" + } + } + }, "card": { "cpu": "CPU", "memory": "MEM", diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index 510b962e2..38f87ff2a 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -954,16 +954,16 @@ "newLabel": "Nueva clave API (Credencial)" }, "githubAppId": { - "label": "", - "newLabel": "" + "label": "ID de aplicación", + "newLabel": "Nuevo ID de aplicación" }, "githubInstallationId": { - "label": "", - "newLabel": "" + "label": "ID de instalación", + "newLabel": "Nuevo ID de instalación" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Clave privada", + "newLabel": "Nueva clave privada" } } }, @@ -975,7 +975,7 @@ }, "media": { "plural": "Imágenes", - "search": "Encuentra una imagen", + "search": "Buscar una imagen", "field": { "name": "Nombre", "size": "Tamaño", @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "Datos de agujero DNS" }, - "sessionCleanup": { - "label": "Limpieza de sesión" - }, "updateChecker": { "label": "Comprobador de actualización" }, @@ -3893,16 +3890,16 @@ "label": "Credenciales" }, "volumes": { - "label": "" + "label": "Volúmenes" } }, "logs": { - "label": "" + "label": "Registros" }, "certificates": { - "label": "", + "label": "Certificados", "hostnames": { - "label": "" + "label": "Nombres de host" } } }, @@ -3915,28 +3912,28 @@ } }, "search": { - "placeholder": "", - "nothingFound": "", + "placeholder": "Busca lo que quieras", + "nothingFound": "Ningún resultado encontrado", "error": { - "fetch": "" + "fetch": "Se produjo un error al recuperar los datos" }, "mode": { "appIntegrationBoard": { - "help": "", + "help": "Buscar aplicaciones, integraciones o tableros", "group": { "app": { "title": "Aplicaciones", "children": { "action": { "open": { - "label": "" + "label": "Abrir URL de aplicación" }, "edit": { - "label": "" + "label": "Editar aplicación" } }, "detail": { - "title": "" + "title": "Seleccionar una acción para la aplicación" } } }, @@ -3945,122 +3942,122 @@ "children": { "action": { "open": { - "label": "" + "label": "Abrir tablero" }, "homeBoard": { - "label": "" + "label": "Establecer como tablero de inicio" }, "mobileBoard": { - "label": "" + "label": "Establecer como tablero móvil" }, "settings": { - "label": "" + "label": "Abrir ajustes" } }, "detail": { - "title": "" + "title": "Seleccionar una acción para el tablero" } } }, "integration": { - "title": "" + "title": "Integraciones" } } }, "command": { - "help": "", + "help": "Activar modo comando", "group": { "localCommand": { - "title": "" + "title": "Comandos locales" }, "globalCommand": { - "title": "", + "title": "Comandos globales", "option": { "colorScheme": { - "light": "", - "dark": "" + "light": "Cambiar a modo claro", + "dark": "Cambiar a modo oscuro" }, "language": { - "label": "", + "label": "Cambiar idioma", "children": { "detail": { - "title": "" + "title": "Selecciona tu idioma preferido" } } }, "newBoard": { - "label": "" + "label": "Crear un nuevo tablero" }, "importBoard": { - "label": "" + "label": "Importar un tablero" }, "newApp": { - "label": "" + "label": "Crear una nueva aplicación" }, "newIntegration": { - "label": "", + "label": "Crear una nueva integración", "children": { "detail": { - "title": "" + "title": "Selecciona el tipo de integración que deseas crear" } } }, "newUser": { - "label": "" + "label": "Crear un nuevo usuario" }, "newInvite": { - "label": "" + "label": "Crear una nueva invitación" }, "newGroup": { - "label": "" + "label": "Crear un nuevo grupo" } } } } }, "media": { - "requestMovie": "", - "requestSeries": "", - "openIn": "" + "requestMovie": "Solicitar película", + "requestSeries": "Solicitar serie", + "openIn": "Abrir en {kind}" }, "external": { - "help": "", + "help": "Usar un motor de búsqueda externo", "group": { "searchEngine": { - "title": "", + "title": "Motores de búsqueda", "children": { "action": { "search": { - "label": "" + "label": "Buscar con {name}" } }, "detail": { - "title": "" + "title": "Selecciona una acción para el motor de búsqueda" }, "searchResults": { - "title": "" + "title": "Selecciona un resultado de búsqueda para acciones" } }, "option": { "google": { - "name": "", - "description": "" + "name": "Google", + "description": "Buscar en la web con Google" }, "bing": { - "name": "", - "description": "" + "name": "Bing", + "description": "Buscar en la web con Bing" }, "duckduckgo": { - "name": "", - "description": "" + "name": "DuckDuckGo", + "description": "Buscar en la web con DuckDuckGo" }, "torrent": { - "name": "", - "description": "" + "name": "Torrents", + "description": "Buscar torrents en torrentdownloads.pro" }, "youTube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Buscar vídeos en YouTube" } } } @@ -4069,7 +4066,7 @@ "help": { "group": { "mode": { - "title": "" + "title": "Modos" }, "help": { "title": "Ayuda", @@ -4078,7 +4075,7 @@ "label": "Documentación" }, "submitIssue": { - "label": "" + "label": "Enviar una incidencia" }, "discord": { "label": "Comunidad de Discord" @@ -4090,81 +4087,81 @@ "home": { "group": { "search": { - "title": "", + "title": "Buscar", "option": { "other": { - "label": "" + "label": "Buscar con otro motor de búsqueda" }, "no-default": { - "label": "", - "description": "" + "label": "Ningún motor de búsqueda por defecto", + "description": "Establece un motor de búsqueda predeterminado en las preferencias" }, "search": { - "label": "" + "label": "Buscar \"{query}\" con {name}" }, "from-integration": { - "description": "" + "description": "Empieza a escribir para buscar" } } }, "local": { - "title": "" + "title": "Resultados locales" } } }, "page": { - "help": "", + "help": "Buscar páginas", "group": { "page": { - "title": "", + "title": "Páginas", "option": { "manageHome": { - "label": "" + "label": "Administrar página de inicio" }, "manageBoard": { - "label": "" + "label": "Administrar tableros" }, "manageApp": { - "label": "" + "label": "Administrar aplicaciones" }, "manageIntegration": { - "label": "" + "label": "Administrar integraciones" }, "manageSearchEngine": { - "label": "" + "label": "Administrar motores de búsqueda" }, "manageMedia": { - "label": "" + "label": "Administrar imágenes" }, "manageUser": { "label": "Administrar usuarios" }, "manageInvite": { - "label": "" + "label": "Administrar invitaciones" }, "manageGroup": { - "label": "" + "label": "Administrar grupos" }, "manageDocker": { - "label": "" + "label": "Administrar docker" }, "manageApi": { - "label": "" + "label": "Swagger API" }, "manageLog": { - "label": "" + "label": "Ver registros" }, "manageTask": { - "label": "" + "label": "Administrar tareas" }, "manageSettings": { - "label": "" + "label": "Ajustes globales" }, "about": { "label": "Acerca de" }, "homeBoard": { - "label": "" + "label": "Tablero de inicio" }, "preferences": { "label": "Tus preferencias" @@ -4174,37 +4171,37 @@ } }, "userGroup": { - "help": "", + "help": "Buscar usuarios o grupos", "group": { "user": { "title": "Usuarios", "children": { "action": { "detail": { - "label": "" + "label": "Mostrar detalles de usuario" } }, "detail": { - "title": "" + "title": "Selecciona una acción para el usuario" } } }, "group": { - "title": "", + "title": "Grupos", "children": { "action": { "detail": { - "label": "" + "label": "Mostrar detalles del grupo" }, "manageMember": { - "label": "" + "label": "Administrar usuarios" }, "managePermission": { - "label": "" + "label": "Administrar permisos" } }, "detail": { - "title": "" + "title": "Selecciona una acción para el grupo" } } } @@ -4212,72 +4209,72 @@ } }, "engine": { - "search": "", + "search": "Buscar un motor de búsqueda", "field": { "name": { "label": "Nombre" }, "short": { - "label": "" + "label": "Abreviatura" }, "urlTemplate": { - "label": "" + "label": "Plantilla de búsqueda de URL" }, "description": { - "label": "" + "label": "Descripción" } }, "page": { "list": { - "title": "", + "title": "Motores de búsqueda", "noResults": { - "title": "", - "action": "" + "title": "Todavía no hay motores de búsqueda", + "action": "Crea tu primer motor de búsqueda" }, - "interactive": "" + "interactive": "Interactivo, utiliza una integración" }, "create": { - "title": "", + "title": "Nuevo motor de búsqueda", "notification": { "success": { - "title": "", - "message": "" + "title": "Motor de búsqueda creado", + "message": "El motor de búsqueda fue creado con éxito" }, "error": { - "title": "", - "message": "" + "title": "No se creó el motor de búsqueda", + "message": "El motor de búsqueda no pudo ser creado" } } }, "edit": { - "title": "", + "title": "Editar motor de búsqueda", "notification": { "success": { - "title": "", - "message": "" + "title": "Cambios aplicados con éxito", + "message": "El motor de búsqueda se guardó con éxito" }, "error": { - "title": "", - "message": "" + "title": "No se pudieron aplicar los cambios", + "message": "No se pudo guardar el motor de búsqueda" } }, - "configControl": "", + "configControl": "Configuración", "searchEngineType": { - "generic": "", - "fromIntegration": "" + "generic": "Genérico", + "fromIntegration": "Desde integración" } }, "delete": { - "title": "", - "message": "", + "title": "Eliminar motor de búsqueda", + "message": "¿Estás seguro de que quieres eliminar el motor de búsqueda {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Motor de búsqueda eliminado", + "message": "El motor de búsqueda fue eliminado con éxito" }, "error": { - "title": "", - "message": "" + "title": "Motor de búsqueda no eliminado", + "message": "No se ha podido eliminar el motor de búsqueda" } } } @@ -4285,15 +4282,15 @@ "media": { "request": { "modal": { - "title": "", + "title": "Solicitar \"{name}\"", "table": { "header": { - "season": "", - "episodes": "" + "season": "Temporada", + "episodes": "Episodios" } }, "button": { - "send": "" + "send": "Enviar solicitud" } } } @@ -4303,89 +4300,89 @@ "certificate": { "field": { "hostname": { - "label": "" + "label": "Nombre de host" }, "subject": { - "label": "" + "label": "Sujeto" }, "issuer": { - "label": "" + "label": "Emisor" }, "validFrom": { - "label": "" + "label": "Válido desde" }, "validTo": { - "label": "" + "label": "Válido hasta" }, "serialNumber": { - "label": "" + "label": "Número de serie" }, "fingerprint": { - "label": "" + "label": "Huella digital" } }, "page": { "list": { - "title": "", - "description": "", + "title": "Certificados de confianza", + "description": "Utilizado por Homarr para solicitar datos de las integraciones.", "noResults": { - "title": "" + "title": "Aún no hay certificados" }, "invalid": { "title": "Certificado no válido", "description": "Error al analizar el certificado" }, - "expires": "", - "toHostnames": "" + "expires": "Expira {when}", + "toHostnames": "Nombres de host de confianza" }, "hostnames": { - "title": "", - "description": "", + "title": "Nombres de host de certificado de confianza", + "description": "Algunos certificados no permiten que el dominio específico que utiliza Homarr los solicite, debido a esto todos los nombres de host de confianza con sus huellas digitales de certificado se utilizan para eludir estas restricciones.", "noResults": { - "title": "" + "title": "Aún no hay nombres de host" }, - "toCertificates": "" + "toCertificates": "Certificados" } }, "action": { "create": { - "label": "", + "label": "Añadir certificado", "notification": { "success": { - "title": "", - "message": "" + "title": "Certificado añadido", + "message": "El certificado fue añadido con éxito" }, "error": { - "title": "", - "message": "" + "title": "Error al añadir el certificado", + "message": "No se ha podido añadir el certificado" } } }, "remove": { - "label": "", - "confirm": "", + "label": "Eliminar certificado", + "confirm": "¿Estás seguro de que deseas eliminar el certificado?", "notification": { "success": { - "title": "", - "message": "" + "title": "Certificado eliminado", + "message": "El certificado fue eliminado con éxito" }, "error": { - "title": "", - "message": "" + "title": "Certificado no eliminado", + "message": "No se ha podido eliminar el certificado" } } }, "removeHostname": { - "label": "", - "confirm": "", + "label": "Eliminar nombre de host de confianza", + "confirm": "¿Estás seguro de que quieres eliminar este nombre de host de confianza? Esto puede causar que algunas integraciones dejen de funcionar.", "notification": { "success": { - "title": "", - "message": "" + "title": "Nombre de host eliminado", + "message": "El nombre de host fue eliminado con éxito" }, "error": { - "title": "", - "message": "" + "title": "Nombre de host no eliminado", + "message": "El nombre de host no pudo ser eliminado" } } } @@ -4394,10 +4391,10 @@ "log": { "level": { "option": { - "debug": "", - "info": "", - "warn": "", - "error": "" + "debug": "Depuración", + "info": "Información", + "warn": "Advertencia", + "error": "Error" } } } diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 115d0b2d3..84b767c28 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 681f1b031..d38cc1d31 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "Données du puit DNS" }, - "sessionCleanup": { - "label": "Nettoyage de session" - }, "updateChecker": { "label": "Vérificateur de mise à jour" }, diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index b9c39268f..bbbc44c3f 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "נתוני חור DNS" }, - "sessionCleanup": { - "label": "ניקוי סשן" - }, "updateChecker": { "label": "בודק עדכונים" }, diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index b7b0887ed..e9a4049df 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 0865b068b..c20a19906 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index bfc6c99ae..d9405bcd8 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index e5570fdc0..6ab6f650c 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Holeデータ" }, - "sessionCleanup": { - "label": "セッションのクリーンアップ" - }, "updateChecker": { "label": "アップデートチェッカー" }, diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index 7a6d01d9c..55011bace 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index a443804f1..a28c9cca4 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 6fd393007..e8f722beb 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 935d50667..648cca6dc 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS-hole gegevens" }, - "sessionCleanup": { - "label": "Sessie opruimen" - }, "updateChecker": { "label": "Update checker" }, diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index 08ce1c9b5..92ab8b8a0 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Hole Data" }, - "sessionCleanup": { - "label": "Økt opprydding" - }, "updateChecker": { "label": "Oppdateringssjekk" }, diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index d80068cd8..c2e4860c7 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "Dane DNS Hole" }, - "sessionCleanup": { - "label": "Czyszczenie sesji" - }, "updateChecker": { "label": "Sprawdzanie aktualizacji" }, diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index abac3cf08..c6750dfc1 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 6440f5ae4..3d2ee7d4d 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 47bcabf4a..0e6f2c4c0 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "Данные DNS-фильтра" }, - "sessionCleanup": { - "label": "Очистка сессий" - }, "updateChecker": { "label": "Проверка обновлений" }, diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 898bd6334..34b9ca904 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "Údaje o dierach DNS" }, - "sessionCleanup": { - "label": "Čistenie relácie" - }, "updateChecker": { "label": "Kontrola aktualizácií" }, diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index c55eb91f5..1261a03d5 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 8732c6833..db202e2a0 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 51ec6773b..f223f06f4 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -954,16 +954,16 @@ "newLabel": "Yeni API Anahtarı (Gizli Anahtar)" }, "githubAppId": { - "label": "", - "newLabel": "" + "label": "Uygulama Kimliği", + "newLabel": "Yeni Uygulama Kimliği" }, "githubInstallationId": { - "label": "", - "newLabel": "" + "label": "Kurulum Kimliği", + "newLabel": "Yeni Kurulum Kimliği" }, "privateKey": { - "label": "", - "newLabel": "" + "label": "Özel Anahtar", + "newLabel": "Yeni özel anahtar" } } }, @@ -2273,7 +2273,7 @@ "label": "Gönderi sayısı sınırı" }, "hideDescription": { - "label": "" + "label": "Açıklamayı gizle" } } }, @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Çözümleyici Verileri" }, - "sessionCleanup": { - "label": "Oturum Temizleme" - }, "updateChecker": { "label": "Güncelleme denetleyicisi" }, diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index edcee81cc..7f131069a 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index a4fc8f483..6883a4990 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "" }, - "sessionCleanup": { - "label": "" - }, "updateChecker": { "label": "" }, diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 4880f7965..b2b0e1aa1 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -3255,9 +3255,6 @@ "dnsHole": { "label": "DNS Hole 數據" }, - "sessionCleanup": { - "label": "會話清理" - }, "updateChecker": { "label": "更新檢查" }, diff --git a/packages/ui/package.json b/packages/ui/package.json index 34d5be407..1d59ce96b 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -30,12 +30,12 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^8.2.8", - "@mantine/dates": "^8.2.8", - "@mantine/hooks": "^8.2.8", + "@mantine/core": "^8.3.1", + "@mantine/dates": "^8.3.1", + "@mantine/hooks": "^8.3.1", "@tabler/icons-react": "^3.34.1", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.2", + "next": "15.5.3", "react": "19.1.1", "react-dom": "19.1.1", "svgson": "^5.3.1" diff --git a/packages/validation/package.json b/packages/validation/package.json index 0d0bfa8bd..79fa318aa 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -24,7 +24,7 @@ "dependencies": { "@homarr/definitions": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", - "zod": "^4.1.5", + "zod": "^4.1.8", "zod-form-data": "^3.0.1" }, "devDependencies": { diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 2b69d10ec..1167ed0ec 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -48,9 +48,9 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/charts": "^8.2.8", - "@mantine/core": "^8.2.8", - "@mantine/hooks": "^8.2.8", + "@mantine/charts": "^8.3.1", + "@mantine/core": "^8.3.1", + "@mantine/hooks": "^8.3.1", "@tabler/icons-react": "^3.34.1", "@tiptap/extension-color": "2.26.1", "@tiptap/extension-highlight": "2.26.1", @@ -72,13 +72,13 @@ "dayjs": "^1.11.18", "mantine-form-zod-resolver": "^1.3.0", "mantine-react-table": "2.0.0-beta.9", - "next": "15.5.2", + "next": "15.5.3", "react": "19.1.1", "react-dom": "19.1.1", "react-markdown": "^10.1.0", "recharts": "^2.15.4", "video.js": "^8.23.4", - "zod": "^4.1.5" + "zod": "^4.1.8" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/widgets/src/calendar/calendar-event-list.tsx b/packages/widgets/src/calendar/calendar-event-list.tsx index f601ecc05..0ad0a805f 100644 --- a/packages/widgets/src/calendar/calendar-event-list.tsx +++ b/packages/widgets/src/calendar/calendar-event-list.tsx @@ -11,9 +11,10 @@ import { Text, useMantineColorScheme, } from "@mantine/core"; -import { IconClock } from "@tabler/icons-react"; +import { IconClock, IconPin } from "@tabler/icons-react"; import dayjs from "dayjs"; +import { isNullOrWhitespace } from "@homarr/common"; import type { CalendarEvent } from "@homarr/integrations/types"; import { useI18n } from "@homarr/translation/client"; @@ -40,85 +41,108 @@ export const CalendarEventList = ({ events }: CalendarEventListProps) => { {events.map((event, eventIndex) => ( - - - {event.mediaInformation?.type === "tv" && ( - {`S${event.mediaInformation.seasonNumber} / E${event.mediaInformation.episodeNumber}`} - )} - + {event.image !== null && ( + + + {event.image.badge !== undefined && ( + + {event.image.badge.content} + + )} + + )} - + - {event.subName && ( + {event.subTitle !== null && ( - {event.subName} + {event.subTitle} )} - {event.name} + {event.title} - {event.dates ? ( + {event.metadata?.type === "radarr" && ( - {t( - `widget.calendar.option.releaseType.options.${event.dates.find(({ date }) => event.date === date)?.type ?? "inCinemas"}`, - )} - - - ) : ( - - - - {dayjs(event.date).format("HH:mm")} + {t(`widget.calendar.option.releaseType.options.${event.metadata.releaseType}`)} )} + + + + + {dayjs(event.startDate).format("HH:mm")} + + + {event.endDate !== null && ( + <> + -{" "} + + {dayjs(event.endDate).format("HH:mm")} + + + )} + - {event.description && ( + + {event.location !== null && ( + + + + {event.location} + + + )} + + {!isNullOrWhitespace(event.description) && ( {event.description} )} + {event.links.length > 0 && ( - {event.links.map((link) => ( - - ))} + {event.links + .filter((link) => link.href) + .map((link) => ( + + ))} )} diff --git a/packages/widgets/src/calendar/calender-day.tsx b/packages/widgets/src/calendar/calender-day.tsx index a0d2644ee..3629a937f 100644 --- a/packages/widgets/src/calendar/calender-day.tsx +++ b/packages/widgets/src/calendar/calender-day.tsx @@ -79,7 +79,7 @@ interface NotificationIndicatorProps { } const NotificationIndicator = ({ events, isSmall }: NotificationIndicatorProps) => { - const notificationEvents = [...new Set(events.map((event) => event.links[0]?.notificationColor))].filter(String); + const notificationEvents = [...new Set(events.map((event) => event.indicatorColor))].filter(String); /* position bottom is lower when small to not be on top of number*/ return ( diff --git a/packages/widgets/src/calendar/component.tsx b/packages/widgets/src/calendar/component.tsx index bb9a067c1..d3534176d 100644 --- a/packages/widgets/src/calendar/component.tsx +++ b/packages/widgets/src/calendar/component.tsx @@ -10,7 +10,6 @@ import dayjs from "dayjs"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; import { useRequiredBoard } from "@homarr/boards/context"; -import type { CalendarEvent } from "@homarr/integrations/types"; import { useSettings } from "@homarr/settings"; import type { WidgetComponentProps } from "../definition"; @@ -124,13 +123,11 @@ const CalendarBase = ({ isEditMode, events, month, setMonth, options }: Calendar }} renderDay={(tileDate) => { const eventsForDate = events - .map((event) => ({ - ...event, - date: (event.dates?.filter(({ type }) => options.releaseType.includes(type)) ?? [event]).find(({ date }) => - dayjs(date).isSame(tileDate, "day"), - )?.date, - })) - .filter((event): event is CalendarEvent => Boolean(event.date)); + .filter((event) => dayjs(event.startDate).isSame(tileDate, "day")) + .filter( + (event) => event.metadata?.type !== "radarr" || options.releaseType.includes(event.metadata.releaseType), + ) + .sort((eventA, eventB) => eventA.startDate.getTime() - eventB.startDate.getTime()); return ( { - setIsEditing(handleEditCancelCallback); - }, [setIsEditing, handleEditCancelCallback]); + openConfirmModal({ + title: t("widget.notebook.dismiss.title"), + children: t("widget.notebook.dismiss.message"), + labels: { + confirm: t("widget.notebook.dismiss.action.discard"), + cancel: t("widget.notebook.dismiss.action.keepEditing"), + }, + onConfirm: () => { + setIsEditing(handleEditCancelCallback); + }, + }); + }, [setIsEditing, handleEditCancelCallback, openConfirmModal, t]); const handleEditToggle = useCallback(() => { setIsEditing(handleEditToggleCallback); diff --git a/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx b/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx index d2db770da..38c72c72c 100644 --- a/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx +++ b/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx @@ -1,17 +1,23 @@ import { Box, Group, Paper, Stack, Text } from "@mantine/core"; +import { IconNetwork } from "@tabler/icons-react"; import { humanFileSize } from "@homarr/common"; import { useScopedI18n } from "@homarr/translation/client"; +import type { LabelDisplayModeOption } from ".."; import { CommonChart } from "./common-chart"; export const CombinedNetworkTrafficChart = ({ usageOverTime, + hasShadow, + labelDisplayMode, }: { usageOverTime: { up: number; down: number; }[]; + hasShadow: boolean; + labelDisplayMode: LabelDisplayModeOption; }) => { const chartData = usageOverTime.map((usage, index) => ({ index, up: usage.up, down: usage.down })); const t = useScopedI18n("widget.systemResources.card"); @@ -25,7 +31,10 @@ export const CombinedNetworkTrafficChart = ({ { name: "down", color: "yellow.5" }, ]} title={t("network")} + icon={IconNetwork} yAxisProps={{ domain: [0, "dataMax"] }} + chartType={hasShadow ? "area" : "line"} + labelDisplayMode={labelDisplayMode} tooltipProps={{ content: ({ payload }) => { if (!payload) { diff --git a/packages/widgets/src/system-resources/chart/common-chart.tsx b/packages/widgets/src/system-resources/chart/common-chart.tsx index 40760abdd..f7cc57c27 100644 --- a/packages/widgets/src/system-resources/chart/common-chart.tsx +++ b/packages/widgets/src/system-resources/chart/common-chart.tsx @@ -1,28 +1,38 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import type { LineChartSeries } from "@mantine/charts"; -import { LineChart } from "@mantine/charts"; +import type { ReactNode } from "react"; +import type { AreaChartSeries } from "@mantine/charts"; +import { AreaChart, LineChart } from "@mantine/charts"; import { Card, Center, Group, Loader, Stack, Text, useMantineColorScheme, useMantineTheme } from "@mantine/core"; import { useElementSize, useHover, useMergedRef } from "@mantine/hooks"; import type { TooltipProps, YAxisProps } from "recharts"; import { useRequiredBoard } from "@homarr/boards/context"; +import type { TablerIcon } from "@homarr/ui"; + +import type { LabelDisplayModeOption } from ".."; export const CommonChart = ({ data, dataKey, series, title, + icon: Icon, + labelDisplayMode, tooltipProps, yAxisProps, lastValue, + chartType = "line", }: { data: Record[]; dataKey: string; - series: LineChartSeries[]; - title: string; + series: AreaChartSeries[]; + title: ReactNode; + icon: TablerIcon; + labelDisplayMode: LabelDisplayModeOption; tooltipProps?: TooltipProps; yAxisProps?: Omit; lastValue?: string; + chartType?: "line" | "area"; }) => { const { ref: elementSizeRef, height } = useElementSize(); const theme = useMantineTheme(); @@ -35,6 +45,10 @@ export const CommonChart = ({ const backgroundColor = scheme.colorScheme === "dark" ? `rgba(57, 57, 57, ${opacity})` : `rgba(246, 247, 248, ${opacity})`; + const ChartComponent = chartType === "line" ? LineChart : AreaChart; + const showIcon = labelDisplayMode === "icon" || labelDisplayMode === "textWithIcon"; + const showText = labelDisplayMode === "text" || labelDisplayMode === "textWithIcon"; + return ( - 100 ? "md" : "xs"} fw={"bold"}> - {title} - + {showIcon && 100 ? 20 : 14} stroke={1.5} />} + {showText && ( + 100 ? "md" : "xs"} fw={"bold"}> + {title} + + )} {lastValue && ( 100 ? "md" : "xs"} lineClamp={1}> {lastValue} @@ -73,7 +91,7 @@ export const CommonChart = ({ ) : ( - = 64} yAxisProps={yAxisProps} + fillOpacity={chartType === "area" ? 0.3 : undefined} /> )} diff --git a/packages/widgets/src/system-resources/chart/cpu-chart.tsx b/packages/widgets/src/system-resources/chart/cpu-chart.tsx index 0e5f81e81..ceb6ba547 100644 --- a/packages/widgets/src/system-resources/chart/cpu-chart.tsx +++ b/packages/widgets/src/system-resources/chart/cpu-chart.tsx @@ -1,10 +1,20 @@ import { Paper, Text } from "@mantine/core"; +import { IconCpu } from "@tabler/icons-react"; import { useScopedI18n } from "@homarr/translation/client"; +import type { LabelDisplayModeOption } from ".."; import { CommonChart } from "./common-chart"; -export const SystemResourceCPUChart = ({ cpuUsageOverTime }: { cpuUsageOverTime: number[] }) => { +export const SystemResourceCPUChart = ({ + cpuUsageOverTime, + hasShadow, + labelDisplayMode, +}: { + cpuUsageOverTime: number[]; + hasShadow: boolean; + labelDisplayMode: LabelDisplayModeOption; +}) => { const chartData = cpuUsageOverTime.map((usage, index) => ({ index, usage })); const t = useScopedI18n("widget.systemResources.card"); @@ -14,11 +24,14 @@ export const SystemResourceCPUChart = ({ cpuUsageOverTime }: { cpuUsageOverTime: dataKey={"index"} series={[{ name: "usage", color: "blue.5" }]} title={t("cpu")} + icon={IconCpu} lastValue={ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion cpuUsageOverTime.length > 0 ? `${Math.round(cpuUsageOverTime[cpuUsageOverTime.length - 1]!)}%` : undefined } + chartType={hasShadow ? "area" : "line"} yAxisProps={{ domain: [0, 100] }} + labelDisplayMode={labelDisplayMode} tooltipProps={{ content: ({ payload }) => { if (!payload) { diff --git a/packages/widgets/src/system-resources/chart/memory-chart.tsx b/packages/widgets/src/system-resources/chart/memory-chart.tsx index 026128268..b0c6d14c1 100644 --- a/packages/widgets/src/system-resources/chart/memory-chart.tsx +++ b/packages/widgets/src/system-resources/chart/memory-chart.tsx @@ -1,16 +1,22 @@ import { Paper, Text } from "@mantine/core"; +import { IconBrain } from "@tabler/icons-react"; import { humanFileSize } from "@homarr/common"; import { useScopedI18n } from "@homarr/translation/client"; +import type { LabelDisplayModeOption } from ".."; import { CommonChart } from "./common-chart"; export const SystemResourceMemoryChart = ({ memoryUsageOverTime, totalCapacityInBytes, + hasShadow, + labelDisplayMode, }: { memoryUsageOverTime: number[]; totalCapacityInBytes: number; + hasShadow: boolean; + labelDisplayMode: LabelDisplayModeOption; }) => { const chartData = memoryUsageOverTime.map((usage, index) => ({ index, usage })); const t = useScopedI18n("widget.systemResources.card"); @@ -27,8 +33,11 @@ export const SystemResourceMemoryChart = ({ dataKey={"index"} series={[{ name: "usage", color: "red.6" }]} title={t("memory")} + icon={IconBrain} + labelDisplayMode={labelDisplayMode} yAxisProps={{ domain: [0, totalCapacityInBytes] }} lastValue={percentageUsed !== undefined ? `${Math.round(percentageUsed * 100)}%` : undefined} + chartType={hasShadow ? "area" : "line"} tooltipProps={{ content: ({ payload }) => { if (!payload) { diff --git a/packages/widgets/src/system-resources/chart/network-traffic.tsx b/packages/widgets/src/system-resources/chart/network-traffic.tsx index 91e9a201d..5edbabd61 100644 --- a/packages/widgets/src/system-resources/chart/network-traffic.tsx +++ b/packages/widgets/src/system-resources/chart/network-traffic.tsx @@ -1,11 +1,23 @@ import { Paper, Text } from "@mantine/core"; +import { IconArrowDown, IconArrowUp } from "@tabler/icons-react"; import { humanFileSize } from "@homarr/common"; import { useScopedI18n } from "@homarr/translation/client"; +import type { LabelDisplayModeOption } from ".."; import { CommonChart } from "./common-chart"; -export const NetworkTrafficChart = ({ usageOverTime, isUp }: { usageOverTime: number[]; isUp: boolean }) => { +export const NetworkTrafficChart = ({ + usageOverTime, + isUp, + hasShadow, + labelDisplayMode, +}: { + usageOverTime: number[]; + isUp: boolean; + hasShadow: boolean; + labelDisplayMode: LabelDisplayModeOption; +}) => { const chartData = usageOverTime.map((usage, index) => ({ index, usage })); const t = useScopedI18n("widget.systemResources.card"); @@ -18,8 +30,11 @@ export const NetworkTrafficChart = ({ usageOverTime, isUp }: { usageOverTime: nu dataKey={"index"} series={[{ name: "usage", color: "yellow.5" }]} title={isUp ? t("up") : t("down")} + icon={isUp ? IconArrowUp : IconArrowDown} yAxisProps={{ domain: [0, upperBound] }} lastValue={`${humanFileSize(Math.round(max))}/s`} + chartType={hasShadow ? "area" : "line"} + labelDisplayMode={labelDisplayMode} tooltipProps={{ content: ({ payload }) => { if (!payload) { diff --git a/packages/widgets/src/system-resources/component.module.css b/packages/widgets/src/system-resources/component.module.css deleted file mode 100644 index da1a998ed..000000000 --- a/packages/widgets/src/system-resources/component.module.css +++ /dev/null @@ -1,14 +0,0 @@ -.grid { - display: grid; - grid-template-rows: repeat(3, 1fr); - grid-template-columns: repeat(2, 1fr); - gap: 8px; - padding: 8px; - - height: 100%; -} - -.colSpanWide { - grid-column-start: 1; - grid-column-end: 3; -} diff --git a/packages/widgets/src/system-resources/component.tsx b/packages/widgets/src/system-resources/component.tsx index 501eddc65..623ed8aa2 100644 --- a/packages/widgets/src/system-resources/component.tsx +++ b/packages/widgets/src/system-resources/component.tsx @@ -1,6 +1,7 @@ "use client"; import { useState } from "react"; +import { Box, Group, Stack } from "@mantine/core"; import { useElementSize } from "@mantine/hooks"; import { clientApi } from "@homarr/api/client"; @@ -10,11 +11,10 @@ import { CombinedNetworkTrafficChart } from "./chart/combined-network-traffic"; import { SystemResourceCPUChart } from "./chart/cpu-chart"; import { SystemResourceMemoryChart } from "./chart/memory-chart"; import { NetworkTrafficChart } from "./chart/network-traffic"; -import classes from "./component.module.css"; const MAX_QUEUE_SIZE = 15; -export default function SystemResources({ integrationIds }: WidgetComponentProps<"systemResources">) { +export default function SystemResources({ integrationIds, options }: WidgetComponentProps<"systemResources">) { const { ref, width } = useElementSize(); const [data] = clientApi.widget.healthMonitoring.getSystemHealthStatus.useSuspenseQuery({ @@ -49,34 +49,60 @@ export default function SystemResources({ integrationIds }: WidgetComponentProps }, ); - const showNetwork = items.length === 0 || items.every((item) => item.network !== null); + const showNetwork = + items.length === 0 || (items.every((item) => item.network !== null) && options.visibleCharts.includes("network")); + const rowHeight = `calc((100% - ${(options.visibleCharts.length - 1) * 8}px) / ${options.visibleCharts.length})`; return ( -
-
- item.cpu)} /> -
-
- item.memory)} - totalCapacityInBytes={memoryCapacityInBytes} - /> -
+ + {options.visibleCharts.includes("cpu") && ( + + item.cpu)} + hasShadow={options.hasShadow} + labelDisplayMode={options.labelDisplayMode} + /> + + )} + {options.visibleCharts.includes("memory") && ( + + item.memory)} + totalCapacityInBytes={memoryCapacityInBytes} + hasShadow={options.hasShadow} + labelDisplayMode={options.labelDisplayMode} + /> + + )} {showNetwork && - (width > 200 ? ( - <> - {/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */} - item.network!.down)} isUp={false} /> + (width > 256 ? ( + + item.network!.down)} + isUp={false} + hasShadow={options.hasShadow} + labelDisplayMode={options.labelDisplayMode} + /> - {/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */} - item.network!.up)} isUp /> - + item.network!.up)} + isUp + hasShadow={options.hasShadow} + labelDisplayMode={options.labelDisplayMode} + /> + ) : ( -
- {/* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */} - item.network!)} /> -
+ + item.network!)} + hasShadow={options.hasShadow} + labelDisplayMode={options.labelDisplayMode} + /> + ))} -
+
); } diff --git a/packages/widgets/src/system-resources/index.ts b/packages/widgets/src/system-resources/index.ts index e808fd0c1..4e0fe27fa 100644 --- a/packages/widgets/src/system-resources/index.ts +++ b/packages/widgets/src/system-resources/index.ts @@ -1,12 +1,43 @@ -import { IconGraphFilled } from "@tabler/icons-react"; +import { IconAlignLeft, IconEyeOff, IconGraphFilled, IconListDetails, IconPhoto } from "@tabler/icons-react"; + +import { objectEntries } from "@homarr/common"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; +const labelDisplayModeOptions = { + textWithIcon: IconListDetails, + text: IconAlignLeft, + icon: IconPhoto, + hidden: IconEyeOff, +} as const; + export const { definition, componentLoader } = createWidgetDefinition("systemResources", { icon: IconGraphFilled, supportedIntegrations: ["dashDot", "openmediavault", "truenas"], createOptions() { - return optionsBuilder.from(() => ({})); + return optionsBuilder.from((factory) => ({ + hasShadow: factory.switch({ defaultValue: true }), + visibleCharts: factory.multiSelect({ + options: (["cpu", "memory", "network"] as const).map((key) => ({ + value: key, + label: (t) => t(`widget.systemResources.option.visibleCharts.option.${key}`), + })), + defaultValue: ["cpu", "memory", "network"], + withDescription: true, + }), + labelDisplayMode: factory.select({ + options: objectEntries(labelDisplayModeOptions).map(([key, icon]) => ({ + value: key, + label: (t) => t(`widget.systemResources.option.labelDisplayMode.option.${key}`), + icon, + })), + defaultValue: "textWithIcon", + }), + })); }, }).withDynamicImport(() => import("./component")); + +export type LabelDisplayModeOption = ReturnType< + (typeof definition)["createOptions"] +>["labelDisplayMode"]["options"][number]["value"]; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4d246ef5..dffaaba89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,16 +7,17 @@ settings: overrides: '@babel/helpers@<7.26.10': '>=7.28.4' '@babel/runtime@<7.26.10': '>=7.28.4' - axios@>=1.0.0 <1.8.2: '>=1.12.1' + axios@>=1.0.0 <1.8.2: '>=1.12.2' brace-expansion@>=2.0.0 <=2.0.1: '>=4.0.1' brace-expansion@>=1.0.0 <=1.1.11: '>=4.0.1' esbuild@<=0.24.2: '>=0.25.9' form-data@>=4.0.0 <4.0.4: '>=4.0.4' - hono@<4.6.5: '>=4.9.6' + hono@<4.6.5: '>=4.9.7' linkifyjs@<4.3.2: '>=4.3.2' nanoid@>=4.0.0 <5.0.9: '>=5.1.5' prismjs@<1.30.0: '>=1.30.0' - proxmox-api>undici: 7.15.0 + proxmox-api>undici: 7.16.0 + react-is: ^19.1.1 rollup@>=4.0.0 <4.22.4: '>=4.50.1' sha.js@<=2.4.11: '>=2.4.12' tar-fs@>=3.0.0 <3.0.9: '>=3.1.0' @@ -49,8 +50,8 @@ importers: specifier: ^10.0.1 version: 10.0.1(semantic-release@24.2.8(typescript@5.9.2)) '@semantic-release/github': - specifier: ^11.0.5 - version: 11.0.5(semantic-release@24.2.8(typescript@5.9.2)) + specifier: ^11.0.6 + version: 11.0.6(semantic-release@24.2.8(typescript@5.9.2)) '@semantic-release/npm': specifier: ^12.0.2 version: 12.0.2(semantic-release@24.2.8(typescript@5.9.2)) @@ -62,10 +63,10 @@ importers: version: 11.5.1 '@turbo/gen': specifier: ^2.5.6 - version: 2.5.6(@types/node@22.18.1)(typescript@5.9.2) + version: 2.5.6(@types/node@22.18.6)(typescript@5.9.2) '@vitejs/plugin-react': specifier: ^5.0.2 - version: 5.0.2(vite@7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) + version: 5.0.2(vite@7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/coverage-v8': specifier: ^3.2.4 version: 3.2.4(vitest@3.2.4) @@ -79,8 +80,8 @@ importers: specifier: ^10.0.0 version: 10.0.0 jsdom: - specifier: ^26.1.0 - version: 26.1.0 + specifier: ^27.0.0 + version: 27.0.0(postcss@8.5.6) prettier: specifier: ^3.6.2 version: 3.6.2 @@ -98,10 +99,10 @@ importers: version: 5.9.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) + version: 5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/ui@3.2.4)(jsdom@27.0.0(postcss@8.5.6))(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) apps/nextjs: dependencies: @@ -211,23 +212,23 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^8.2.8 - version: 8.2.8(chroma-js@3.1.2) + specifier: ^8.3.1 + version: 8.3.1(chroma-js@3.1.2) '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/dropzone': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/hooks': - specifier: ^8.2.8 - version: 8.2.8(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(react@19.1.1) '@mantine/modals': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/tiptap': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(@tiptap/extension-link@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1))(@tiptap/react@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(@tiptap/extension-link@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1))(@tiptap/react@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@million/lint': specifier: 1.0.14 version: 1.0.14(webpack-sources@3.2.3) @@ -235,23 +236,23 @@ importers: specifier: ^3.34.1 version: 3.34.1(react@19.1.1) '@tanstack/react-query': - specifier: ^5.87.1 - version: 5.87.1(react@19.1.1) + specifier: ^5.87.4 + version: 5.87.4(react@19.1.1) '@tanstack/react-query-devtools': - specifier: ^5.87.1 - version: 5.87.1(@tanstack/react-query@5.87.1(react@19.1.1))(react@19.1.1) + specifier: ^5.87.4 + version: 5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1) '@tanstack/react-query-next-experimental': - specifier: ^5.87.1 - version: 5.87.1(@tanstack/react-query@5.87.1(react@19.1.1))(next@15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1) + specifier: ^5.87.4 + version: 5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(next@15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1) '@trpc/client': specifier: ^11.5.1 version: 11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2) '@trpc/next': specifier: ^11.5.1 - version: 11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(next@15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + version: 11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(next@15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) '@trpc/react-query': specifier: ^11.5.1 - version: 11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + version: 11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) '@trpc/server': specifier: ^11.5.1 version: 11.5.1(typescript@5.9.2) @@ -283,14 +284,14 @@ importers: specifier: ^11.0.3 version: 11.0.3 jotai: - specifier: ^2.13.1 - version: 2.13.1(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) + specifier: ^2.14.0 + version: 2.14.0(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.1.13)(react@19.1.1) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 2.0.0-beta.9(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) postcss-preset-mantine: specifier: ^1.18.0 version: 1.18.0(postcss@8.5.6) @@ -316,14 +317,14 @@ importers: specifier: 2.2.2 version: 2.2.2 swagger-ui-react: - specifier: ^5.28.1 - version: 5.28.1(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^5.29.0 + version: 5.29.0(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.1.1) zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -338,17 +339,17 @@ importers: specifier: 3.1.1 version: 3.1.1 '@types/node': - specifier: ^22.18.1 - version: 22.18.1 + specifier: ^22.18.3 + version: 22.18.6 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.1.12 - version: 19.1.12 + specifier: 19.1.13 + version: 19.1.13 '@types/react-dom': specifier: 19.1.9 - version: 19.1.9(@types/react@19.1.12) + version: 19.1.9(@types/react@19.1.13) '@types/swagger-ui-react': specifier: ^5.18.0 version: 5.18.0 @@ -434,8 +435,8 @@ importers: specifier: 2.2.2 version: 2.2.2 undici: - specifier: 7.15.0 - version: 7.15.0 + specifier: 7.16.0 + version: 7.16.0 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -447,8 +448,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.18.1 - version: 22.18.1 + specifier: ^22.18.3 + version: 22.18.6 dotenv-cli: specifier: ^10.0.0 version: 10.0.0 @@ -629,26 +630,26 @@ importers: specifier: ^1.3.0 version: 1.3.0 '@tanstack/react-query': - specifier: ^5.87.1 - version: 5.87.1(react@19.1.1) + specifier: ^5.87.4 + version: 5.87.4(react@19.1.1) '@trpc/client': specifier: ^11.5.1 version: 11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2) '@trpc/react-query': specifier: ^11.5.1 - version: 11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + version: 11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) '@trpc/server': specifier: ^11.5.1 version: 11.5.1(typescript@5.9.2) '@trpc/tanstack-react-query': specifier: ^11.5.1 - version: 11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + version: 11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: specifier: 19.1.1 version: 19.1.1 @@ -660,10 +661,10 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^3.0.1 - version: 3.0.1(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.5.1(typescript@5.9.2))(zod-openapi@5.3.0(zod@4.1.5))(zod@4.1.5) + version: 3.0.1(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.5.1(typescript@5.9.2))(zod-openapi@5.3.0(zod@4.1.8))(zod@4.1.8) zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -723,11 +724,11 @@ importers: specifier: 8.0.9 version: 8.0.9 next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) next-auth: specifier: 5.0.0-beta.29 - version: 5.0.0-beta.29(next@15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1) + version: 5.0.0-beta.29(next@15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1) react: specifier: 19.1.1 version: 19.1.1 @@ -735,8 +736,8 @@ importers: specifier: 19.1.1 version: 19.1.1(react@19.1.1) zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -800,8 +801,8 @@ importers: specifier: workspace:^0.1.0 version: link:../db undici: - specifier: 7.15.0 - version: 7.15.0 + specifier: 7.16.0 + version: 7.16.0 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -877,8 +878,8 @@ importers: specifier: ^0.2.5 version: 0.2.5 next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) octokit: specifier: ^5.0.3 version: 5.0.3 @@ -889,14 +890,14 @@ importers: specifier: 19.1.1 version: 19.1.1(react@19.1.1) undici: - specifier: 7.15.0 - version: 7.15.0 + specifier: 7.16.0 + version: 7.16.0 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 zod-validation-error: specifier: ^4.0.1 - version: 4.0.1(zod@4.1.5) + version: 4.0.1(zod@4.1.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -918,13 +919,13 @@ importers: dependencies: '@t3-oss/env-nextjs': specifier: ^0.13.8 - version: 0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.5) + version: 0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.8) ioredis: specifier: 5.7.0 version: 5.7.0 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -957,8 +958,8 @@ importers: specifier: workspace:^0.1.0 version: link:../log '@tanstack/react-query': - specifier: ^5.87.1 - version: 5.87.1(react@19.1.1) + specifier: ^5.87.4 + version: 5.87.4(react@19.1.1) '@trpc/client': specifier: ^11.5.1 version: 11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2) @@ -967,7 +968,7 @@ importers: version: 11.5.1(typescript@5.9.2) '@trpc/tanstack-react-query': specifier: ^11.5.1 - version: 11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + version: 11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) node-cron: specifier: ^4.2.1 version: 4.2.1 @@ -975,8 +976,8 @@ importers: specifier: 19.1.1 version: 19.1.1 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -991,8 +992,8 @@ importers: specifier: ^3.0.11 version: 3.0.11 '@types/react': - specifier: 19.1.12 - version: 19.1.12 + specifier: 19.1.13 + version: 19.1.13 eslint: specifier: ^9.35.0 version: 9.35.0 @@ -1144,8 +1145,8 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 @@ -1166,13 +1167,13 @@ importers: version: 0.31.4 drizzle-orm: specifier: ^0.44.5 - version: 0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.4)(pg@8.16.3) + version: 0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.5)(pg@8.16.3) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.4)(pg@8.16.3))(zod@4.1.5) + version: 0.8.3(drizzle-orm@0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.5)(pg@8.16.3))(zod@4.1.8) mysql2: - specifier: 3.14.4 - version: 3.14.4 + specifier: 3.14.5 + version: 3.14.5 pg: specifier: ^8.16.3 version: 8.16.3 @@ -1223,8 +1224,8 @@ importers: specifier: ^5.2.5 version: 5.2.5 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1254,8 +1255,8 @@ importers: specifier: workspace:^0.1.0 version: link:../core dockerode: - specifier: ^4.0.7 - version: 4.0.7 + specifier: ^4.0.8 + version: 4.0.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1288,14 +1289,14 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^8.2.8 - version: 8.2.8(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(react@19.1.1) mantine-form-zod-resolver: specifier: ^1.3.0 - version: 1.3.0(@mantine/form@8.2.8(react@19.1.1))(zod@4.1.5) + version: 1.3.0(@mantine/form@8.3.1(react@19.1.1))(zod@4.1.8) zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1337,14 +1338,14 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: specifier: 19.1.1 version: 19.1.1 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1461,7 +1462,7 @@ importers: version: link:../log '@homarr/node-unifi': specifier: ^2.6.0 - version: 2.6.0(undici@7.15.0) + version: 2.6.0(undici@7.16.0) '@homarr/redis': specifier: workspace:^0.1.0 version: link:../redis @@ -1473,10 +1474,13 @@ importers: version: link:../validation '@jellyfin/sdk': specifier: ^0.11.0 - version: 0.11.0(axios@1.12.1) + version: 0.11.0(axios@1.12.2) '@octokit/auth-app': specifier: ^8.1.0 version: 8.1.0 + ical.js: + specifier: ^2.2.1 + version: 2.2.1 maria2: specifier: ^0.4.1 version: 0.4.1 @@ -1493,14 +1497,14 @@ importers: specifier: ^2.1.5 version: 2.1.5 undici: - specifier: 7.15.0 - version: 7.15.0 + specifier: 7.16.0 + version: 7.16.0 xml2js: specifier: ^0.6.2 version: 0.6.2 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1536,8 +1540,8 @@ importers: specifier: 3.17.0 version: 3.17.0 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1564,11 +1568,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/hooks': - specifier: ^8.2.8 - version: 8.2.8(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(react@19.1.1) react: specifier: 19.1.1 version: 19.1.1 @@ -1625,8 +1629,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@tabler/icons-react': specifier: ^3.34.1 version: 3.34.1(react@19.1.1) @@ -1634,8 +1638,8 @@ importers: specifier: ^1.11.18 version: 1.11.18 next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: specifier: 19.1.1 version: 19.1.1 @@ -1643,8 +1647,8 @@ importers: specifier: 19.1.1 version: 19.1.1(react@19.1.1) zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1668,8 +1672,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@tabler/icons-react': specifier: ^3.34.1 version: 3.34.1(react@19.1.1) @@ -1726,17 +1730,17 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/hooks': - specifier: ^8.2.8 - version: 8.2.8(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(react@19.1.1) adm-zip: specifier: 0.5.16 version: 0.5.16 next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: specifier: 19.1.1 version: 19.1.1 @@ -1747,11 +1751,11 @@ importers: specifier: 2.2.2 version: 2.2.2 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 zod-form-data: specifier: ^3.0.1 - version: 3.0.1(zod@4.1.5) + version: 3.0.1(zod@4.1.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1778,8 +1782,8 @@ importers: specifier: workspace:^0.1.0 version: link:../common zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1898,8 +1902,8 @@ importers: specifier: 2.2.2 version: 2.2.2 undici: - specifier: 7.15.0 - version: 7.15.0 + specifier: 7.16.0 + version: 7.16.0 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1954,11 +1958,11 @@ importers: specifier: workspace:^0.1.0 version: link:../server-settings '@mantine/dates': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: specifier: 19.1.1 version: 19.1.1 @@ -2015,23 +2019,23 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/hooks': - specifier: ^8.2.8 - version: 8.2.8(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(react@19.1.1) '@mantine/spotlight': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@tabler/icons-react': specifier: ^3.34.1 version: 3.34.1(react@19.1.1) jotai: - specifier: ^2.13.1 - version: 2.13.1(@babel/core@7.28.3)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) + specifier: ^2.14.0 + version: 2.14.0(@babel/core@7.28.3)(@babel/template@7.27.2)(@types/react@19.1.13)(react@19.1.1) next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: specifier: 19.1.1 version: 19.1.1 @@ -2074,13 +2078,13 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 2.0.0-beta.9(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) next-intl: - specifier: 4.3.7 - version: 4.3.7(next@15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1)(typescript@5.9.2) + specifier: 4.3.8 + version: 4.3.8(next@15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1)(typescript@5.9.2) react: specifier: 19.1.1 version: 19.1.1 @@ -2122,23 +2126,23 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/dates': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/hooks': - specifier: ^8.2.8 - version: 8.2.8(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(react@19.1.1) '@tabler/icons-react': specifier: ^3.34.1 version: 3.34.1(react@19.1.1) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 2.0.0-beta.9(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: specifier: 19.1.1 version: 19.1.1 @@ -2177,11 +2181,11 @@ importers: specifier: workspace:^0.1.0 version: link:../translation zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 zod-form-data: specifier: ^3.0.1 - version: 3.0.1(zod@4.1.5) + version: 3.0.1(zod@4.1.8) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2271,14 +2275,14 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/charts': - specifier: ^8.2.8 - version: 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(recharts@2.15.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)) + specifier: ^8.3.1 + version: 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(recharts@2.15.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)) '@mantine/core': - specifier: ^8.2.8 - version: 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@mantine/hooks': - specifier: ^8.2.8 - version: 8.2.8(react@19.1.1) + specifier: ^8.3.1 + version: 8.3.1(react@19.1.1) '@tabler/icons-react': specifier: ^3.34.1 version: 3.34.1(react@19.1.1) @@ -2338,13 +2342,13 @@ importers: version: 1.11.18 mantine-form-zod-resolver: specifier: ^1.3.0 - version: 1.3.0(@mantine/form@8.2.8(react@19.1.1))(zod@4.1.5) + version: 1.3.0(@mantine/form@8.3.1(react@19.1.1))(zod@4.1.8) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 2.0.0-beta.9(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next: - specifier: 15.5.2 - version: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + specifier: 15.5.3 + version: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: specifier: 19.1.1 version: 19.1.1 @@ -2353,7 +2357,7 @@ importers: version: 19.1.1(react@19.1.1) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@19.1.12)(react@19.1.1) + version: 10.1.0(@types/react@19.1.13)(react@19.1.1) recharts: specifier: ^2.15.4 version: 2.15.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -2361,8 +2365,8 @@ importers: specifier: ^8.23.4 version: 8.23.4 zod: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.8 + version: 4.1.8 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -2386,8 +2390,8 @@ importers: tooling/eslint: dependencies: '@next/eslint-plugin-next': - specifier: 15.5.2 - version: 15.5.2 + specifier: 15.5.3 + version: 15.5.3 eslint-config-prettier: specifier: ^10.1.8 version: 10.1.8(eslint@9.35.0) @@ -2396,7 +2400,7 @@ importers: version: 2.5.6(eslint@9.35.0)(turbo@2.5.6) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0) + version: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.35.0) @@ -2407,8 +2411,8 @@ importers: specifier: ^5.2.0 version: 5.2.0(eslint@9.35.0) typescript-eslint: - specifier: ^8.42.0 - version: 8.42.0(eslint@9.35.0)(typescript@5.9.2) + specifier: ^8.43.0 + version: 8.43.0(eslint@9.35.0)(typescript@5.9.2) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -2462,8 +2466,14 @@ packages: '@ark/util@0.46.0': resolution: {integrity: sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==} - '@asamuzakjp/css-color@2.8.2': - resolution: {integrity: sha512-RtWv9jFN2/bLExuZgFFZ0I3pWWeezAHGgrmjqGGWclATl1aDe3yhCUaI0Ilkp6OCk9zX7+FjvDasEX8Q9Rxc5w==} + '@asamuzakjp/css-color@4.0.4': + resolution: {integrity: sha512-cKjSKvWGmAziQWbCouOsFwb14mp1betm8Y7Fn+yglDMUUu3r9DCbJ9iJbeFDenLMqFbIMC0pQP8K+B8LAxX3OQ==} + + '@asamuzakjp/dom-selector@6.5.5': + resolution: {integrity: sha512-kI2MX9pmImjxWT8nxDZY+MuN6r1jJGe7WxizEbsAEPB/zxfW5wYLIiPG1v3UKgEOOP8EsDkp0ZL99oRFAdPM8g==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@auth/core@0.40.0': resolution: {integrity: sha512-n53uJE0RH5SqZ7N1xZoMKekbHfQgjd0sAEyUbE+IYJnmuQkbvuZnXItCU7d+i7Fj8VGOgqvNO7Mw4YfBTlZeQw==} @@ -2674,32 +2684,38 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/color-helpers@5.0.1': - resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.1': - resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.7': - resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-syntax-patches-for-csstree@1.0.14': + resolution: {integrity: sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} '@ctrl/deluge@7.2.0': @@ -2935,12 +2951,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3001,26 +3011,26 @@ packages: '@fastify/proxy-addr@5.0.0': resolution: {integrity: sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==} - '@floating-ui/core@1.6.8': - resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - '@floating-ui/dom@1.6.11': - resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} - '@floating-ui/react-dom@2.1.2': - resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/react@0.26.28': - resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} + '@floating-ui/react@0.27.16': + resolution: {integrity: sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==} peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' - '@floating-ui/utils@0.2.8': - resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} '@formatjs/ecma402-abstract@2.2.0': resolution: {integrity: sha512-IpM+ev1E4QLtstniOE29W1rqH9eTdx5hQdNL8pzrflMj/gogfaoONZqL83LUeQScHAvyMbpqP5C9MzNf+fFwhQ==} @@ -3072,7 +3082,7 @@ packages: resolution: {integrity: sha512-kz323qIQkNQElEGroo/E9MKPDuIR5pkuk/XEWd50K+cSEKdmdiYx0PKWUdaNY2ecJYngtF+njDMsMKplL6zfEg==} engines: {node: '>=18.14.1'} peerDependencies: - hono: '>=4.9.6' + hono: '>=4.9.7' '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -3256,7 +3266,7 @@ packages: '@jellyfin/sdk@0.11.0': resolution: {integrity: sha512-WmM4as9ptqH+CvC2YsUefNWQDmu2aWIamwAoj7h2BFR6l019pcRFG5FT22egwbdizR6DfdpmsoAWB4x9QCzcEQ==} peerDependencies: - axios: '>=1.12.1' + axios: '>=1.12.2' '@jridgewell/gen-mapping@0.3.12': resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} @@ -3318,88 +3328,88 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/charts@8.2.8': - resolution: {integrity: sha512-946gThrgoFOPl5sNOjQ7ILriGIsP/B24PQGt9GY0fL9Fg0B7Nmuhzn7lxZscBW5//NHgZTE7ul5zdU+Z00ST2Q==} + '@mantine/charts@8.3.1': + resolution: {integrity: sha512-Mb6rSbDbcL2lQmSVZA3dZfJf3734qsdN+UeZ8vAoh00e1hJEzu6hT0SUimP7G16q1yMaB+6bgN76lOQsG8vRug==} peerDependencies: - '@mantine/core': 8.2.8 - '@mantine/hooks': 8.2.8 + '@mantine/core': 8.3.1 + '@mantine/hooks': 8.3.1 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x recharts: '>=2.13.3' - '@mantine/colors-generator@8.2.8': - resolution: {integrity: sha512-bkxaZuLr5GuCAZMwJfrMDa78pXJsq1bB7AVMF8C/trIaHBBxzXe8nfTDhu2NYpojpd5pBhvHHyidXPwHdNkO5Q==} + '@mantine/colors-generator@8.3.1': + resolution: {integrity: sha512-1JJ/wIN+JaLhObWi3Ap4dvTk4ksN7dvOHa+ynEaxMg5Ienb2sv2V/zadiFISXkMw1zgBkcFe1UJbgm3QL4gsmg==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@8.2.8': - resolution: {integrity: sha512-dybAXrlQ+QiIhpnVCkdH6P4Sjm9I9RymYXfDp97oj9KfGRMEJGLDdPAwp/2GhXe7UdDkzqD48JCkbfRWF2Q+qA==} + '@mantine/core@8.3.1': + resolution: {integrity: sha512-OYfxn9cTv+K6RZ8+Ozn/HDQXkB8Fmn+KJJt5lxyFDP9F09EHnC59Ldadv1LyUZVBGtNqz4sn6b3vBShbxwAmYw==} peerDependencies: - '@mantine/hooks': 8.2.8 + '@mantine/hooks': 8.3.1 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@8.2.8': - resolution: {integrity: sha512-E6YsTj+2avwZL4gOc15aIIbb9D+ux7gdXQI67aobrwqqeEoW8O72h0bIE97DwAaUSbUsFdFPDhMh8xCFFR6yxw==} + '@mantine/dates@8.3.1': + resolution: {integrity: sha512-qCGlLnrwu9eQsl+yQC/tEYgTEO8rE6hopagNpTV2/wzLBUywlL/AbtB1yHuOikQgZxXAOLfvIBWNTWUHRtTnfw==} peerDependencies: - '@mantine/core': 8.2.8 - '@mantine/hooks': 8.2.8 + '@mantine/core': 8.3.1 + '@mantine/hooks': 8.3.1 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@8.2.8': - resolution: {integrity: sha512-aMohj+VkkBAtMLPkrfJ/zxyQo3B48Asp6undW6bIX0gV8h3APO0qNhiccXbSioMc+Mv3hpmj1lIH5LPOIqnzeg==} + '@mantine/dropzone@8.3.1': + resolution: {integrity: sha512-jsaZhX02Uu8FDWBYNk59wWEBNO0hrayuBfRGqSjY/FQwRHZXIBgfuBsE3AIBJte6ptX+gWSR0Bhwids0LicEtg==} peerDependencies: - '@mantine/core': 8.2.8 - '@mantine/hooks': 8.2.8 + '@mantine/core': 8.3.1 + '@mantine/hooks': 8.3.1 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@8.2.8': - resolution: {integrity: sha512-edigaUCmyxoPcqhMgkgJHXRgbzR1tym88xQNNgfGA1KYc9gr0BTk/3dOa5B93HIVdO9/DEXZwYKN4cjrKPDY+g==} + '@mantine/form@8.3.1': + resolution: {integrity: sha512-kmnF5o0Tl/Wi+ZGdqNknoN7QDswxuRo7OlPDRwXuxv/TcazuOIwf7j0p6kFzJ0c/wuqrZfjx3vnOg4Txtmwa1g==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@8.2.8': - resolution: {integrity: sha512-KK1krCcXizWT6JF8gWexv58imQBbviylAJqSqdZ4zUPgrpe81ehMyfxo5Z9EZsnSwMxkB4RLMhCCJhC5g8GvLA==} + '@mantine/hooks@8.3.1': + resolution: {integrity: sha512-lQutBS+Q0iz/cNFvdrsYassPWo3RtWcmDGJeOtKfHigLzFOhxUuLOkQgepDbMf3WcVMB/tist6Px1PQOv57JTw==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@8.2.8': - resolution: {integrity: sha512-+RzHK4uy/Gsk6RspunD8An9WYF921If8S2pDeveMwxVhUeNMZXeh9FpQWESlqVV+SHSPDDP4QeTkwhJm9DWf2g==} + '@mantine/modals@8.3.1': + resolution: {integrity: sha512-3+OL1VcrKI91eqfLR4j6gIKHxwCVINNBrBdIVKc4ozAPAF/XI5VXwhXYxV/Nd7B2lxQgsOlIK5rjEKFvTfHZBg==} peerDependencies: - '@mantine/core': 8.2.8 - '@mantine/hooks': 8.2.8 + '@mantine/core': 8.3.1 + '@mantine/hooks': 8.3.1 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@8.2.8': - resolution: {integrity: sha512-luNksAUkROoMzKCB/30nQ8o38wt54ktylbpBcTrAcjE1q00nH/IEYLS58iUYGf8l/xGBV1KH8jgSik58iqk++A==} + '@mantine/notifications@8.3.1': + resolution: {integrity: sha512-C1Iqa4g1HNNTLv2/CxOCR1mNlYNFCNtnS0u/JsR+HvtFVrun1namxDG6e6/U0hIva2klogYdivx4cyxmjPFerg==} peerDependencies: - '@mantine/core': 8.2.8 - '@mantine/hooks': 8.2.8 + '@mantine/core': 8.3.1 + '@mantine/hooks': 8.3.1 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@8.2.8': - resolution: {integrity: sha512-wZ4TMKC6LldI31DFOB89iat+4eyM29URN1uwklWUeigqR9/vywqXcKdzaSjpmbDxYelHFEp4AjgHzeG/8C915A==} + '@mantine/spotlight@8.3.1': + resolution: {integrity: sha512-Efmvk/uiG4MhmlkUGBu7afz5BgBDMwKUJMhMThDKZkaZfp7/VxOhHNEfC5ZPYMYd5Nk5i8Wo0urfybIMRwyO2A==} peerDependencies: - '@mantine/core': 8.2.8 - '@mantine/hooks': 8.2.8 + '@mantine/core': 8.3.1 + '@mantine/hooks': 8.3.1 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@8.2.8': - resolution: {integrity: sha512-xma5vcJlcR2UN6NZj0Rhskfppmz6wUTY/52EBU9sKZw60e1iiuTX2Bk/sfUa34VKZF4cRS46VLz2qstyCJne4Q==} + '@mantine/store@8.3.1': + resolution: {integrity: sha512-OZwg0YKbCEKnkFmS9oRLKA8TMriBzO1T6nUib1yfLCx0VFuznllYZiDtaSWNkEYSdnFWCv5hKh5aOD4RHUnQfQ==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@8.2.8': - resolution: {integrity: sha512-nO4sjNkfTjBiEucXNRYDwD7/5KVwGzGuLJV5B8GHeaQd7fQ/eLbAUdEiqPLV03aiozpQOQ5AhENWnwIw9yOJlQ==} + '@mantine/tiptap@8.3.1': + resolution: {integrity: sha512-JJ3shYUinUK582I0pGNOQWJdQTjvzaU8LCJ+0E7zfEV2WUZKZdu7lNKg3ywbmqGGwXvCFtJgBXsiHbCh/ms8xQ==} peerDependencies: - '@mantine/core': 8.2.8 - '@mantine/hooks': 8.2.8 + '@mantine/core': 8.3.1 + '@mantine/hooks': 8.3.1 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -3416,56 +3426,56 @@ packages: '@ndaidong/bellajs@12.0.1': resolution: {integrity: sha512-1iY42uiHz0cxNMbde7O3zVN+ZX1viOOUOBRt6ht6lkRZbSjwOnFV34Zv4URp3hGzEe6L9Byk7BOq/41H0PzAOQ==} - '@next/env@15.5.2': - resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==} + '@next/env@15.5.3': + resolution: {integrity: sha512-RSEDTRqyihYXygx/OJXwvVupfr9m04+0vH8vyy0HfZ7keRto6VX9BbEk0J2PUk0VGy6YhklJUSrgForov5F9pw==} - '@next/eslint-plugin-next@15.5.2': - resolution: {integrity: sha512-lkLrRVxcftuOsJNhWatf1P2hNVfh98k/omQHrCEPPriUypR6RcS13IvLdIrEvkm9AH2Nu2YpR5vLqBuy6twH3Q==} + '@next/eslint-plugin-next@15.5.3': + resolution: {integrity: sha512-SdhaKdko6dpsSr0DldkESItVrnPYB1NS2NpShCSX5lc7SSQmLZt5Mug6t2xbiuVWEVDLZSuIAoQyYVBYp0dR5g==} - '@next/swc-darwin-arm64@15.5.2': - resolution: {integrity: sha512-8bGt577BXGSd4iqFygmzIfTYizHb0LGWqH+qgIF/2EDxS5JsSdERJKA8WgwDyNBZgTIIA4D8qUtoQHmxIIquoQ==} + '@next/swc-darwin-arm64@15.5.3': + resolution: {integrity: sha512-nzbHQo69+au9wJkGKTU9lP7PXv0d1J5ljFpvb+LnEomLtSbJkbZyEs6sbF3plQmiOB2l9OBtN2tNSvCH1nQ9Jg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.2': - resolution: {integrity: sha512-2DjnmR6JHK4X+dgTXt5/sOCu/7yPtqpYt8s8hLkHFK3MGkka2snTv3yRMdHvuRtJVkPwCGsvBSwmoQCHatauFQ==} + '@next/swc-darwin-x64@15.5.3': + resolution: {integrity: sha512-w83w4SkOOhekJOcA5HBvHyGzgV1W/XvOfpkrxIse4uPWhYTTRwtGEM4v/jiXwNSJvfRvah0H8/uTLBKRXlef8g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.2': - resolution: {integrity: sha512-3j7SWDBS2Wov/L9q0mFJtEvQ5miIqfO4l7d2m9Mo06ddsgUK8gWfHGgbjdFlCp2Ek7MmMQZSxpGFqcC8zGh2AA==} + '@next/swc-linux-arm64-gnu@15.5.3': + resolution: {integrity: sha512-+m7pfIs0/yvgVu26ieaKrifV8C8yiLe7jVp9SpcIzg7XmyyNE7toC1fy5IOQozmr6kWl/JONC51osih2RyoXRw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.2': - resolution: {integrity: sha512-s6N8k8dF9YGc5T01UPQ08yxsK6fUow5gG1/axWc1HVVBYQBgOjca4oUZF7s4p+kwhkB1bDSGR8QznWrFZ/Rt5g==} + '@next/swc-linux-arm64-musl@15.5.3': + resolution: {integrity: sha512-u3PEIzuguSenoZviZJahNLgCexGFhso5mxWCrrIMdvpZn6lkME5vc/ADZG8UUk5K1uWRy4hqSFECrON6UKQBbQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.2': - resolution: {integrity: sha512-o1RV/KOODQh6dM6ZRJGZbc+MOAHww33Vbs5JC9Mp1gDk8cpEO+cYC/l7rweiEalkSm5/1WGa4zY7xrNwObN4+Q==} + '@next/swc-linux-x64-gnu@15.5.3': + resolution: {integrity: sha512-lDtOOScYDZxI2BENN9m0pfVPJDSuUkAD1YXSvlJF0DKwZt0WlA7T7o3wrcEr4Q+iHYGzEaVuZcsIbCps4K27sA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.2': - resolution: {integrity: sha512-/VUnh7w8RElYZ0IV83nUcP/J4KJ6LLYliiBIri3p3aW2giF+PAVgZb6mk8jbQSB3WlTai8gEmCAr7kptFa1H6g==} + '@next/swc-linux-x64-musl@15.5.3': + resolution: {integrity: sha512-9vWVUnsx9PrY2NwdVRJ4dUURAQ8Su0sLRPqcCCxtX5zIQUBES12eRVHq6b70bbfaVaxIDGJN2afHui0eDm+cLg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.2': - resolution: {integrity: sha512-sMPyTvRcNKXseNQ/7qRfVRLa0VhR0esmQ29DD6pqvG71+JdVnESJaHPA8t7bc67KD5spP3+DOCNLhqlEI2ZgQg==} + '@next/swc-win32-arm64-msvc@15.5.3': + resolution: {integrity: sha512-1CU20FZzY9LFQigRi6jM45oJMU3KziA5/sSG+dXeVaTm661snQP6xu3ykGxxwU5sLG3sh14teO/IOEPVsQMRfA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.2': - resolution: {integrity: sha512-W5VvyZHnxG/2ukhZF/9Ikdra5fdNftxI6ybeVKYvBPDtyx7x4jPPSNduUkfH5fo3zG0JQ0bPxgy41af2JX5D4Q==} + '@next/swc-win32-x64-msvc@15.5.3': + resolution: {integrity: sha512-JMoLAq3n3y5tKXPQwCK5c+6tmwkuFDa2XAxz8Wm4+IVthdBZdZGh+lmiLUHg9f9IDwIQpUjp+ysd6OkYTyZRZw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3904,8 +3914,8 @@ packages: peerDependencies: semantic-release: '>=18.0.0' - '@semantic-release/github@11.0.5': - resolution: {integrity: sha512-wJamzHteXwBdopvkTD6BJjPz1UHLm20twlVCSMA9zpd3B5KrOQX137jfTbNJT6ZVz3pXtg0S1DroQl4wifJ4WQ==} + '@semantic-release/github@11.0.6': + resolution: {integrity: sha512-ctDzdSMrT3H+pwKBPdyCPty6Y47X8dSrjd3aPZ5KKIKKWTwZBE9De8GtsH3TyAlw3Uyo2stegMx6rJMXKpJwJA==} engines: {node: '>=20.8.1'} peerDependencies: semantic-release: '>=24.1.0' @@ -3926,10 +3936,6 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} @@ -4087,27 +4093,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.87.1': - resolution: {integrity: sha512-HOFHVvhOCprrWvtccSzc7+RNqpnLlZ5R6lTmngb8aq7b4rc2/jDT0w+vLdQ4lD9bNtQ+/A4GsFXy030Gk4ollA==} + '@tanstack/query-core@5.87.4': + resolution: {integrity: sha512-uNsg6zMxraEPDVO2Bn+F3/ctHi+Zsk+MMpcN8h6P7ozqD088F6mFY5TfGM7zuyIrL7HKpDyu6QHfLWiDxh3cuw==} - '@tanstack/query-devtools@5.86.0': - resolution: {integrity: sha512-/JDw9BP80eambEK/EsDMGAcsL2VFT+8F5KCOwierjPU7QP8Wt1GT32yJpn3qOinBM8/zS3Jy36+F0GiyJp411A==} + '@tanstack/query-devtools@5.87.3': + resolution: {integrity: sha512-LkzxzSr2HS1ALHTgDmJH5eGAVsSQiuwz//VhFW5OqNk0OQ+Fsqba0Tsf+NzWRtXYvpgUqwQr4b2zdFZwxHcGvg==} - '@tanstack/react-query-devtools@5.87.1': - resolution: {integrity: sha512-YPuEub8RQrrsXOxoiMJn33VcGPIeuVINWBgLu9RLSQB8ueXaKlGLZ3NJkahGpbt2AbWf749FQ6R+1jBFk3kdCA==} + '@tanstack/react-query-devtools@5.87.4': + resolution: {integrity: sha512-JYcnVJBBW1DCPyNGM0S2CyrLpe6KFiL2gpYd/k9tAp62Du7+Y27zkzd+dKFyxpFadYaTxsx4kUA7YvnkMLVUoQ==} peerDependencies: - '@tanstack/react-query': ^5.87.1 + '@tanstack/react-query': ^5.87.4 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.87.1': - resolution: {integrity: sha512-AeZRThgx9cLkcRfE8W+qasgoyPvO4aJafdxqz+uHvCskjDkNt5Y3FAxuqIb9By1Z6VhA9ktyAEUgI/nqJGABiw==} + '@tanstack/react-query-next-experimental@5.87.4': + resolution: {integrity: sha512-58nv1vqNzGpwsUG6C8hSOri7kT2TvzxQd5oz195FtQaNAeID0HIGNduvQBylxHeBxHaujuMksh/A+MxfbzZ5YQ==} peerDependencies: - '@tanstack/react-query': ^5.87.1 + '@tanstack/react-query': ^5.87.4 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.87.1': - resolution: {integrity: sha512-YKauf8jfMowgAqcxj96AHs+Ux3m3bWT1oSVKamaRPXSnW2HqSznnTCEkAVqctF1e/W9R/mPcyzzINIgpOH94qg==} + '@tanstack/react-query@5.87.4': + resolution: {integrity: sha512-T5GT/1ZaNsUXf5I3RhcYuT17I4CPlbZgyLxc/ZGv7ciS6esytlbjb3DgUFO6c8JWYMDpdjSWInyGZUErgzqhcA==} peerDependencies: react: ^18 || ^19 @@ -4588,8 +4594,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.18.1': - resolution: {integrity: sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==} + '@types/node@22.18.6': + resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -4614,8 +4620,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.1.12': - resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} + '@types/react@19.1.13': + resolution: {integrity: sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -4671,63 +4677,63 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.42.0': - resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} + '@typescript-eslint/eslint-plugin@8.43.0': + resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.42.0 + '@typescript-eslint/parser': ^8.43.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.42.0': - resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} + '@typescript-eslint/parser@8.43.0': + resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.42.0': - resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} + '@typescript-eslint/project-service@8.43.0': + resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.42.0': - resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} + '@typescript-eslint/scope-manager@8.43.0': + resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.42.0': - resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} + '@typescript-eslint/tsconfig-utils@8.43.0': + resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.42.0': - resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} + '@typescript-eslint/type-utils@8.43.0': + resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.42.0': - resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} + '@typescript-eslint/types@8.43.0': + resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.42.0': - resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} + '@typescript-eslint/typescript-estree@8.43.0': + resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.42.0': - resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} + '@typescript-eslint/utils@8.43.0': + resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.42.0': - resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} + '@typescript-eslint/visitor-keys@8.43.0': + resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -5142,12 +5148,12 @@ packages: resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} engines: {node: '>=4'} - axios@1.11.0: - resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} - axios@1.12.1: resolution: {integrity: sha512-Kn4kbSXpkFHCGE6rBFNwIv0GQs4AvDT80jlveJDKFxjbTYMUeB4QtsdPCv6H8Cm19Je7IU6VFtRl2zWZI0rudQ==} + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + axios@1.9.0: resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} @@ -5230,6 +5236,9 @@ packages: resolution: {integrity: sha512-eGbYq2CT+tos1fBwLQ/tkBt9J5M3JEHjku4hbvQUePCckkvVf14xWj+1m7dGoK81M/fOjFT7yM9UMeKT/+vFLQ==} engines: {node: 20.x || 22.x || 23.x || 24.x} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -5397,6 +5406,9 @@ packages: resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} engines: {node: '>= 14.16.0'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + chroma-js@3.1.2: resolution: {integrity: sha512-IJnETTalXbsLx1eKEgx19d5L6SRM7cH4vINw/99p/M11HCuXGRWL+6YmCm7FWFGIo6dtWuQoQi1dc5yQ7ESIHg==} @@ -5654,6 +5666,10 @@ packages: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} @@ -5662,9 +5678,9 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@4.2.1: - resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} - engines: {node: '>=18'} + cssstyle@5.3.0: + resolution: {integrity: sha512-RveJPnk3m7aarYQ2bJ6iw+Urh55S6FzUiqtBq+TihnTDP4cI8y/TYDqGOyqgnG1J1a6BxJXZsV9JFSTulm9Z7g==} + engines: {node: '>=20'} csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -5720,9 +5736,9 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@6.0.0: + resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} + engines: {node: '>=20'} data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} @@ -5909,8 +5925,8 @@ packages: resolution: {integrity: sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==} engines: {node: '>= 8.0'} - dockerode@4.0.7: - resolution: {integrity: sha512-R+rgrSRTRdU5mH14PZTCPZtW/zw3HDWNTS/1ZAQpL/5Upe/ye5K9WQkIysu4wBoiMwKynsz0a8qWuGsHgEvSAA==} + dockerode@4.0.8: + resolution: {integrity: sha512-HdPBprWmwfHMHi12AVIFDhXIqIS+EpiOVkZaAZxgML4xf5McqEZjJZtahTPkLDxWOt84ApfWPAH9EoQwOiaAIQ==} engines: {node: '>= 8.0'} doctrine@2.1.0: @@ -6116,6 +6132,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + env-ci@11.1.0: resolution: {integrity: sha512-Z8dnwSDbV1XYM9SBF2J0GcNVvmfmfh3a49qddGIROhBoVro6MZVTji15z/sJbQ2ko2ei8n988EU1wzoLU/tF+g==} engines: {node: ^18.17 || >=20.6.1} @@ -6599,6 +6619,9 @@ packages: from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -6765,10 +6788,6 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -6869,8 +6888,8 @@ packages: highlightjs-vue@1.0.0: resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==} - hono@4.9.6: - resolution: {integrity: sha512-doVjXhSFvYZ7y0dNokjwwSahcrAfdz+/BCLvAMa/vHLzjj8+CFyV5xteThGUsKdkaasgN+gF2mUxao+SGLpUeA==} + hono@4.9.7: + resolution: {integrity: sha512-t4Te6ERzIaC48W3x4hJmBwgNlLhmiEdEE5ViYb02ffw4ignHNHa5IBtPjmbKstmtKa8X6C35iWwK4HaqvrzG9w==} engines: {node: '>=16.9.0'} hook-std@4.0.0: @@ -6936,6 +6955,9 @@ packages: resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} engines: {node: '>=18.18.0'} + ical.js@2.2.1: + resolution: {integrity: sha512-yK/UlPbEs316igb/tjRgbFA8ZV75rCsBJp/hWOatpyaPNlgw0dGDmU+FoicOcwX4xXkeXOkYiOmCqNPFpNPkQg==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -7398,8 +7420,8 @@ packages: jose@6.0.8: resolution: {integrity: sha512-EyUPtOKyTYq+iMOszO42eobQllaIjJnwkZ2U93aJzNyPibCy7CEvT9UQnaCVB51IAd49gbNdCew1c0LcLTCB2g==} - jotai@2.13.1: - resolution: {integrity: sha512-cRsw6kFeGC9Z/D3egVKrTXRweycZ4z/k7i2MrfCzPYsL9SIWcPXTyqv258/+Ay8VUEcihNiE/coBLE6Kic6b8A==} + jotai@2.14.0: + resolution: {integrity: sha512-JQkNkTnqjk1BlSUjHfXi+pGG/573bVN104gp6CymhrWDseZGDReTNniWrLhJ+zXbM6pH+82+UNJ2vwYQUkQMWQ==} engines: {node: '>=12.20.0'} peerDependencies: '@babel/core': '>=7.0.0' @@ -7435,9 +7457,9 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsdom@26.1.0: - resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} - engines: {node: '>=18'} + jsdom@27.0.0: + resolution: {integrity: sha512-lIHeR1qlIRrIN5VMccd8tI2Sgw6ieYXSVktcSHaNe3Z5nE/tcPQYQWOq00wxMvYOsz+73eAkNenVvmPC6bba9A==} + engines: {node: '>=20'} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -7757,6 +7779,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -7944,8 +7969,8 @@ packages: engines: {node: '>=8', npm: '>=5'} hasBin: true - mysql2@3.14.4: - resolution: {integrity: sha512-Cs/jx3WZPNrYHVz+Iunp9ziahaG5uFMvD2R8Zlmc194AqXNxt9HBNu7ZsPYrUtmJsF0egETCWIdMIYAwOGjL1w==} + mysql2@3.14.5: + resolution: {integrity: sha512-40hDf8LPUsuuJ2hFq+UgOuPwt2IFLIRDvMv6ez9hKbXeYuZPxDDwiJW7KdknvOsQqKznaKczOT1kELgFkhDvFg==} engines: {node: '>= 8.0'} mz@2.7.0: @@ -8012,8 +8037,8 @@ packages: nodemailer: optional: true - next-intl@4.3.7: - resolution: {integrity: sha512-2bVsHSnSj5boJMaUR5SY6bu3khFtNf0he+s1nj23PFGWPCYWHPqa+FOe4YCzkKw1BpB+3UkUn1PNqJCdZNpWwg==} + next-intl@4.3.8: + resolution: {integrity: sha512-epUuRSL1KRQtDdFVRb5j7ZaaF7Sx/aivVA7VY0fc5g1pmpT90ylK6AaBdNsOnc5n+AERVn+zO5HoBsXO0lhTZA==} peerDependencies: next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -8022,8 +8047,8 @@ packages: typescript: optional: true - next@15.5.2: - resolution: {integrity: sha512-H8Otr7abj1glFhbGnvUt3gz++0AF1+QoCXEBmd/6aKbfdFwrn0LpA836Ed5+00va/7HQSDD+mOoVhn3tNy3e/Q==} + next@15.5.3: + resolution: {integrity: sha512-r/liNAx16SQj4D+XH/oI1dlpv9tdKJ6cONYPwwcCC46f2NjpaRWY+EKCzULfgQYV6YKXjHBchff2IZBSlZmJNw==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -8224,9 +8249,6 @@ packages: - which - write-file-atomic - nwsapi@2.2.16: - resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} - oauth4webapi@3.3.0: resolution: {integrity: sha512-ZlozhPlFfobzh3hB72gnBFLjXpugl/dljz1fJSRdqaV2r3D5dmi5lg2QWI0LmUYuazmE+b5exsloEv6toUtw9g==} @@ -8443,8 +8465,8 @@ packages: parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} pascal-case@2.0.1: resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} @@ -8487,10 +8509,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -8903,11 +8921,8 @@ packages: peerDependencies: react: ^16.8.4 || ^17.0.0 || ^18.0.0 - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-is@19.1.1: + resolution: {integrity: sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==} react-markdown@10.1.0: resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} @@ -8915,8 +8930,8 @@ packages: '@types/react': '>=18' react: '>=18' - react-number-format@5.4.3: - resolution: {integrity: sha512-VCY5hFg/soBighAoGcdE+GagkJq0230qN6jcS5sp8wQX1qy1fYN/RX7/BXkrs0oyzzwqR8/+eSUrqXbGeywdUQ==} + react-number-format@5.4.4: + resolution: {integrity: sha512-wOmoNZoOpvMminhifQYiYSTCLUDOiUbBunrMrMjA+dV52sY+vck1S4UhR6PkgnoCquvvMSeJjErXZ4qSaWCliA==} peerDependencies: react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -8947,8 +8962,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.6.2: - resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} engines: {node: '>=10'} peerDependencies: '@types/react': '*' @@ -9446,10 +9461,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} @@ -9727,8 +9738,8 @@ packages: swagger-client@3.35.5: resolution: {integrity: sha512-ayCrpDAgm5jIdq1kmcVWJRfp27cqU9tSRiAfKg3BKeplOmvu3+lKTPPtz4x1uI8v5l5/92Aopvq0EzRkXEr7Rw==} - swagger-ui-react@5.28.1: - resolution: {integrity: sha512-JfLZvbCpsjwUnYKx+Q1YfkrgM7gD6Zb7HnO8/DwFNo5xppwC3MbL27/5MhPkmDyMZ669r6CNiJ0SALiivs7iQg==} + swagger-ui-react@5.29.0: + resolution: {integrity: sha512-dEDqs3et9cnflzwog0oBMjkrq7Uf6PNPVva4VFB4GICDWMRb6T2C+CzIfqJp9XX9eDvbmiZa/dTcnwvGcDpi5A==} peerDependencies: react: '>=16.8.0 <20' react-dom: '>=16.8.0 <20' @@ -9750,9 +9761,16 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + tar-fs@2.1.3: + resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} + tar-fs@3.1.0: resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -9919,6 +9937,10 @@ packages: resolution: {integrity: sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==} engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + traverse@0.6.8: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} @@ -10127,8 +10149,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.42.0: - resolution: {integrity: sha512-ozR/rQn+aQXQxh1YgbCzQWDFrsi9mcg+1PM3l/z5o1+20P7suOIaNg515bpr/OYt6FObz/NHcBstydDLHWeEKg==} + typescript-eslint@8.43.0: + resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10170,8 +10192,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@7.15.0: - resolution: {integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==} + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} unicode-emoji-modifier-base@1.0.0: @@ -10297,8 +10319,8 @@ packages: peerDependencies: react: '>=16.13' - use-intl@4.3.7: - resolution: {integrity: sha512-IkRFatZEIAm+JfFBAU2Bleb3f2DVt8WldIn5EZVSVu4D5U0QYq2hwB28LHAt15TDhfQw5sdEPsDpvJ2Uj8HjqA==} + use-intl@4.3.9: + resolution: {integrity: sha512-bZu+h13HIgOvsoGleQtUe4E6gM49CRm+AH36KnJVB/qb1+Beo7jr7HNrR8YWH8oaOkQfGNm6vh0HTepxng8UTg==} peerDependencies: react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 @@ -10320,12 +10342,12 @@ packages: '@types/react': optional: true - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true @@ -10497,6 +10519,10 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webidl-conversions@8.0.0: + resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} + engines: {node: '>=20'} + webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -10529,6 +10555,10 @@ packages: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -10748,8 +10778,8 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - zod@4.1.5: - resolution: {integrity: sha512-rcUUZqlLJgBC33IT3PNMgsCq6TzLQEG/Ei/KTCU0PedSWRMAXoOUN+4t/0H+Q8bdnLPdqUYnvboJT0bn/229qg==} + zod@4.1.8: + resolution: {integrity: sha512-5R1P+WwQqmmMIEACyzSvo4JXHY5WiAFHRMg+zBZKgKS+Q1viRa0C1hmUKtHltoIFKtIdki3pRxkmpP74jnNYHQ==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -10771,14 +10801,23 @@ snapshots: '@ark/util@0.46.0': optional: true - '@asamuzakjp/css-color@2.8.2': + '@asamuzakjp/css-color@4.0.4': dependencies: - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 lru-cache: 11.1.0 + '@asamuzakjp/dom-selector@6.5.5': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.1.0 + is-potential-custom-element-name: 1.0.1 + + '@asamuzakjp/nwsapi@2.3.9': {} + '@auth/core@0.40.0': dependencies: '@panva/hkdf': 1.2.1 @@ -11051,25 +11090,29 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@5.0.1': {} + '@csstools/color-helpers@5.1.0': {} - '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.1 - '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-tokenizer@3.0.3': {} + '@csstools/css-syntax-patches-for-csstree@1.0.14(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + + '@csstools/css-tokenizer@3.0.4': {} '@ctrl/deluge@7.2.0': dependencies: @@ -11253,11 +11296,6 @@ snapshots: '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.35.0)': - dependencies: - eslint: 9.35.0 - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0)': dependencies: eslint: 9.35.0 @@ -11334,30 +11372,30 @@ snapshots: '@fastify/forwarded': 3.0.0 ipaddr.js: 2.2.0 - '@floating-ui/core@1.6.8': + '@floating-ui/core@1.7.3': dependencies: - '@floating-ui/utils': 0.2.8 + '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.6.11': + '@floating-ui/dom@1.7.4': dependencies: - '@floating-ui/core': 1.6.8 - '@floating-ui/utils': 0.2.8 + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@floating-ui/dom': 1.6.11 + '@floating-ui/dom': 1.7.4 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@floating-ui/react@0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@floating-ui/react@0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@floating-ui/react-dom': 2.1.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@floating-ui/utils': 0.2.8 + '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@floating-ui/utils': 0.2.10 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) tabbable: 6.2.0 - '@floating-ui/utils@0.2.8': {} + '@floating-ui/utils@0.2.10': {} '@formatjs/ecma402-abstract@2.2.0': dependencies: @@ -11418,11 +11456,11 @@ snapshots: '@homarr/gridstack@1.12.0': {} - '@homarr/node-unifi@2.6.0(undici@7.15.0)': + '@homarr/node-unifi@2.6.0(undici@7.16.0)': dependencies: axios: 1.9.0 eventemitter2: 6.4.9 - http-cookie-agent: 6.0.8(tough-cookie@5.1.2)(undici@7.15.0) + http-cookie-agent: 6.0.8(tough-cookie@5.1.2)(undici@7.16.0) tough-cookie: 5.1.2 ws: 8.18.3 transitivePeerDependencies: @@ -11431,9 +11469,9 @@ snapshots: - undici - utf-8-validate - '@hono/node-server@1.13.0(hono@4.9.6)': + '@hono/node-server@1.13.0(hono@4.9.7)': dependencies: - hono: 4.9.6 + hono: 4.9.7 '@humanfs/core@0.19.1': {} @@ -11564,9 +11602,9 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jellyfin/sdk@0.11.0(axios@1.12.1)': + '@jellyfin/sdk@0.11.0(axios@1.12.2)': dependencies: - axios: 1.12.1 + axios: 1.12.2 '@jridgewell/gen-mapping@0.3.12': dependencies: @@ -11624,7 +11662,7 @@ snapshots: '@kubernetes/client-node@1.3.0': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/node-fetch': 2.6.12 '@types/stream-buffers': 3.0.7 form-data: 4.0.4 @@ -11657,91 +11695,91 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/charts@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(recharts@2.15.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1))': + '@mantine/charts@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(recharts@2.15.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1))': dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) recharts: 2.15.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/colors-generator@8.2.8(chroma-js@3.1.2)': + '@mantine/colors-generator@8.3.1(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@floating-ui/react': 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) + '@floating-ui/react': 0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) clsx: 2.1.1 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-number-format: 5.4.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - react-remove-scroll: 2.6.2(@types/react@19.1.12)(react@19.1.1) - react-textarea-autosize: 8.5.9(@types/react@19.1.12)(react@19.1.1) + react-number-format: 5.4.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + react-remove-scroll: 2.7.1(@types/react@19.1.13)(react@19.1.1) + react-textarea-autosize: 8.5.9(@types/react@19.1.13)(react@19.1.1) type-fest: 4.41.0 transitivePeerDependencies: - '@types/react' - '@mantine/dates@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mantine/dates@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) clsx: 2.1.1 dayjs: 1.11.18 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@mantine/dropzone@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mantine/dropzone@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) react-dropzone: 14.3.8(react@19.1.1) - '@mantine/form@8.2.8(react@19.1.1)': + '@mantine/form@8.3.1(react@19.1.1)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 19.1.1 - '@mantine/hooks@8.2.8(react@19.1.1)': + '@mantine/hooks@8.3.1(react@19.1.1)': dependencies: react: 19.1.1 - '@mantine/modals@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mantine/modals@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@mantine/notifications@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mantine/notifications@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) - '@mantine/store': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) + '@mantine/store': 8.3.1(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) react-transition-group: 4.4.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/spotlight@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mantine/spotlight@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) - '@mantine/store': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) + '@mantine/store': 8.3.1(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@mantine/store@8.2.8(react@19.1.1)': + '@mantine/store@8.3.1(react@19.1.1)': dependencies: react: 19.1.1 - '@mantine/tiptap@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(@tiptap/extension-link@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1))(@tiptap/react@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@mantine/tiptap@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(@tiptap/extension-link@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1))(@tiptap/react@2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) '@tiptap/extension-link': 2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1) '@tiptap/react': 2.26.1(@tiptap/core@2.26.1(@tiptap/pm@2.26.1))(@tiptap/pm@2.26.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 @@ -11767,7 +11805,7 @@ snapshots: '@axiomhq/js': 1.0.0-rc.3 '@babel/core': 7.26.0 '@babel/types': 7.26.0 - '@hono/node-server': 1.13.0(hono@4.9.6) + '@hono/node-server': 1.13.0(hono@4.9.7) '@million/install': 1.0.14 '@rollup/pluginutils': 5.1.0 '@rrweb/types': 2.0.0-alpha.16 @@ -11775,7 +11813,7 @@ snapshots: ci-info: 4.0.0 esbuild: 0.25.9 faster-babel-types: 0.1.0(@babel/types@7.26.0) - hono: 4.9.6 + hono: 4.9.7 isomorphic-fetch: 3.0.0 nanoid: 5.1.5 ohash: 1.1.4 @@ -11802,34 +11840,34 @@ snapshots: '@ndaidong/bellajs@12.0.1': {} - '@next/env@15.5.2': {} + '@next/env@15.5.3': {} - '@next/eslint-plugin-next@15.5.2': + '@next/eslint-plugin-next@15.5.3': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.5.2': + '@next/swc-darwin-arm64@15.5.3': optional: true - '@next/swc-darwin-x64@15.5.2': + '@next/swc-darwin-x64@15.5.3': optional: true - '@next/swc-linux-arm64-gnu@15.5.2': + '@next/swc-linux-arm64-gnu@15.5.3': optional: true - '@next/swc-linux-arm64-musl@15.5.2': + '@next/swc-linux-arm64-musl@15.5.3': optional: true - '@next/swc-linux-x64-gnu@15.5.2': + '@next/swc-linux-x64-gnu@15.5.3': optional: true - '@next/swc-linux-x64-musl@15.5.2': + '@next/swc-linux-x64-musl@15.5.3': optional: true - '@next/swc-win32-arm64-msvc@15.5.2': + '@next/swc-win32-arm64-msvc@15.5.3': optional: true - '@next/swc-win32-x64-msvc@15.5.2': + '@next/swc-win32-x64-msvc@15.5.3': optional: true '@noble/hashes@1.5.0': {} @@ -12236,7 +12274,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@semantic-release/github@11.0.5(semantic-release@24.2.8(typescript@5.9.2))': + '@semantic-release/github@11.0.6(semantic-release@24.2.8(typescript@5.9.2))': dependencies: '@octokit/core': 7.0.2 '@octokit/plugin-paginate-rest': 13.0.0(@octokit/core@7.0.2) @@ -12246,7 +12284,6 @@ snapshots: aggregate-error: 5.0.0 debug: 4.4.1 dir-glob: 3.0.1 - globby: 14.0.2 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 issue-parser: 7.0.1 @@ -12254,6 +12291,7 @@ snapshots: mime: 4.0.4 p-filter: 4.1.0 semantic-release: 24.2.8(typescript@5.9.2) + tinyglobby: 0.2.15 url-join: 5.0.0 transitivePeerDependencies: - supports-color @@ -12293,8 +12331,6 @@ snapshots: '@sindresorhus/is@4.6.0': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@sindresorhus/merge-streams@4.0.0': {} '@socket.io/component-emitter@3.1.2': {} @@ -12623,7 +12659,7 @@ snapshots: '@swagger-api/apidom-core': 1.0.0-beta.41 '@swagger-api/apidom-error': 1.0.0-beta.41 '@types/ramda': 0.30.2 - axios: 1.11.0 + axios: 1.12.1 minimatch: 7.4.6 process: 0.11.10 ramda: 0.30.1 @@ -12664,19 +12700,19 @@ snapshots: dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.5)': + '@t3-oss/env-core@0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.8)': optionalDependencies: arktype: 2.1.20 typescript: 5.9.2 - zod: 4.1.5 + zod: 4.1.8 - '@t3-oss/env-nextjs@0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.5)': + '@t3-oss/env-nextjs@0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.8)': dependencies: - '@t3-oss/env-core': 0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.5) + '@t3-oss/env-core': 0.13.8(arktype@2.1.20)(typescript@5.9.2)(zod@4.1.8) optionalDependencies: arktype: 2.1.20 typescript: 5.9.2 - zod: 4.1.5 + zod: 4.1.8 '@tabler/icons-react@3.34.1(react@19.1.1)': dependencies: @@ -12689,25 +12725,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.87.1': {} + '@tanstack/query-core@5.87.4': {} - '@tanstack/query-devtools@5.86.0': {} + '@tanstack/query-devtools@5.87.3': {} - '@tanstack/react-query-devtools@5.87.1(@tanstack/react-query@5.87.1(react@19.1.1))(react@19.1.1)': + '@tanstack/react-query-devtools@5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(react@19.1.1)': dependencies: - '@tanstack/query-devtools': 5.86.0 - '@tanstack/react-query': 5.87.1(react@19.1.1) + '@tanstack/query-devtools': 5.87.3 + '@tanstack/react-query': 5.87.4(react@19.1.1) react: 19.1.1 - '@tanstack/react-query-next-experimental@5.87.1(@tanstack/react-query@5.87.1(react@19.1.1))(next@15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1)': + '@tanstack/react-query-next-experimental@5.87.4(@tanstack/react-query@5.87.4(react@19.1.1))(next@15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1)': dependencies: - '@tanstack/react-query': 5.87.1(react@19.1.1) - next: 15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + '@tanstack/react-query': 5.87.4(react@19.1.1) + next: 15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: 19.1.1 - '@tanstack/react-query@5.87.1(react@19.1.1)': + '@tanstack/react-query@5.87.4(react@19.1.1)': dependencies: - '@tanstack/query-core': 5.87.1 + '@tanstack/query-core': 5.87.4 react: 19.1.1 '@tanstack/react-table@8.20.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': @@ -12974,21 +13010,21 @@ snapshots: '@trpc/server': 11.5.1(typescript@5.9.2) typescript: 5.9.2 - '@trpc/next@11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(next@15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': + '@trpc/next@11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(next@15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': dependencies: '@trpc/client': 11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2) '@trpc/server': 11.5.1(typescript@5.9.2) - next: 15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + next: 15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) typescript: 5.9.2 optionalDependencies: - '@tanstack/react-query': 5.87.1(react@19.1.1) - '@trpc/react-query': 11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + '@tanstack/react-query': 5.87.4(react@19.1.1) + '@trpc/react-query': 11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) - '@trpc/react-query@11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': + '@trpc/react-query@11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': dependencies: - '@tanstack/react-query': 5.87.1(react@19.1.1) + '@tanstack/react-query': 5.87.4(react@19.1.1) '@trpc/client': 11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2) '@trpc/server': 11.5.1(typescript@5.9.2) react: 19.1.1 @@ -12999,9 +13035,9 @@ snapshots: dependencies: typescript: 5.9.2 - '@trpc/tanstack-react-query@11.5.1(@tanstack/react-query@5.87.1(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': + '@trpc/tanstack-react-query@11.5.1(@tanstack/react-query@5.87.4(react@19.1.1))(@trpc/client@11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.1(typescript@5.9.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': dependencies: - '@tanstack/react-query': 5.87.1(react@19.1.1) + '@tanstack/react-query': 5.87.4(react@19.1.1) '@trpc/client': 11.5.1(@trpc/server@11.5.1(typescript@5.9.2))(typescript@5.9.2) '@trpc/server': 11.5.1(typescript@5.9.2) react: 19.1.1 @@ -13018,7 +13054,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.5.6(@types/node@22.18.1)(typescript@5.9.2)': + '@turbo/gen@2.5.6(@types/node@22.18.6)(typescript@5.9.2)': dependencies: '@turbo/workspaces': 2.5.6 commander: 10.0.1 @@ -13028,7 +13064,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.5.0 - ts-node: 10.9.2(@types/node@22.18.1)(typescript@5.9.2) + ts-node: 10.9.2(@types/node@22.18.6)(typescript@5.9.2) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -13054,11 +13090,11 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/asn1@0.2.4': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/aws-lambda@8.10.146': {} @@ -13085,16 +13121,16 @@ snapshots: '@types/bcrypt@6.0.0': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/better-sqlite3@7.6.13': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/chai@5.2.2': dependencies: @@ -13104,7 +13140,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/cookie@0.4.1': {} @@ -13113,11 +13149,11 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/cors@2.8.17': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/css-font-loading-module@0.0.7': {} @@ -13155,13 +13191,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.43': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/ssh2': 1.15.1 '@types/estree-jsx@1.0.5': @@ -13172,7 +13208,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13187,7 +13223,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/hast@2.3.10': dependencies: @@ -13235,7 +13271,7 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 form-data: 4.0.4 '@types/node-unifi@2.5.1(patch_hash=5e6ae51e2a17a7f9729bfa30b0eb3d0842a5810ac6db47603ab4a6efa1ed84c5)': @@ -13246,7 +13282,7 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.18.1': + '@types/node@22.18.6': dependencies: undici-types: 6.21.0 @@ -13254,7 +13290,7 @@ snapshots: '@types/pg@8.15.5': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 pg-protocol: 1.10.3 pg-types: 2.2.0 @@ -13268,11 +13304,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.1.9(@types/react@19.1.12)': + '@types/react-dom@19.1.9(@types/react@19.1.13)': dependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 - '@types/react@19.1.12': + '@types/react@19.1.13': dependencies: csstype: 3.1.3 @@ -13281,21 +13317,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -13304,15 +13340,15 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/swagger-ui-react@5.18.0': dependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 '@types/through@0.0.33': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/tinycolor2@1.4.6': {} @@ -13331,20 +13367,20 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 - '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/type-utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 eslint: 9.35.0 graphemer: 1.4.0 ignore: 7.0.4 @@ -13354,41 +13390,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2)': + '@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1 eslint: 9.35.0 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': + '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 debug: 4.4.1 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.42.0': + '@typescript-eslint/scope-manager@8.43.0': dependencies: - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.42.0(eslint@9.35.0)(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0)(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) debug: 4.4.1 eslint: 9.35.0 ts-api-utils: 2.1.0(typescript@5.9.2) @@ -13396,14 +13432,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.42.0': {} + '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/visitor-keys': 8.42.0 + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 debug: 4.4.1 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -13414,20 +13450,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.42.0(eslint@9.35.0)(typescript@5.9.2)': + '@typescript-eslint/utils@8.43.0(eslint@9.35.0)(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.35.0) - '@typescript-eslint/scope-manager': 8.42.0 - '@typescript-eslint/types': 8.42.0 - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) eslint: 9.35.0 typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.42.0': + '@typescript-eslint/visitor-keys@8.43.0': dependencies: - '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 '@umami/node@0.4.0': {} @@ -13462,7 +13498,7 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@5.0.2(vite@7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1))': + '@vitejs/plugin-react@5.0.2(vite@7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1))': dependencies: '@babel/core': 7.28.3 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.3) @@ -13470,7 +13506,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.34 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color @@ -13489,7 +13525,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/ui@3.2.4)(jsdom@27.0.0(postcss@8.5.6))(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color @@ -13501,13 +13537,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1))': + '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -13538,7 +13574,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/ui@3.2.4)(jsdom@27.0.0(postcss@8.5.6))(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) '@vitest/utils@3.2.4': dependencies: @@ -13950,7 +13986,7 @@ snapshots: axe-core@4.10.0: {} - axios@1.11.0: + axios@1.12.1: dependencies: follow-redirects: 1.15.9 form-data: 4.0.4 @@ -13958,7 +13994,7 @@ snapshots: transitivePeerDependencies: - debug - axios@1.12.1: + axios@1.12.2: dependencies: follow-redirects: 1.15.9 form-data: 4.0.4 @@ -14039,6 +14075,10 @@ snapshots: transitivePeerDependencies: - bare-buffer + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + big.js@5.2.2: {} bindings@1.5.0: @@ -14230,6 +14270,8 @@ snapshots: dependencies: readdirp: 4.0.1 + chownr@1.1.4: {} + chroma-js@3.1.2: {} chrome-trace-event@1.0.4: {} @@ -14499,14 +14541,22 @@ snapshots: dependencies: type-fest: 1.4.0 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css.escape@1.5.1: {} cssesc@3.0.0: {} - cssstyle@4.2.1: + cssstyle@5.3.0(postcss@8.5.6): dependencies: - '@asamuzakjp/css-color': 2.8.2 - rrweb-cssom: 0.8.0 + '@asamuzakjp/css-color': 4.0.4 + '@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6) + css-tree: 3.1.0 + transitivePeerDependencies: + - postcss csstype@3.1.3: {} @@ -14552,10 +14602,10 @@ snapshots: data-uri-to-buffer@6.0.2: {} - data-urls@5.0.0: + data-urls@6.0.0: dependencies: whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-url: 15.1.0 data-view-buffer@1.0.1: dependencies: @@ -14724,17 +14774,16 @@ snapshots: transitivePeerDependencies: - supports-color - dockerode@4.0.7: + dockerode@4.0.8: dependencies: '@balena/dockerignore': 1.0.2 '@grpc/grpc-js': 1.12.5 '@grpc/proto-loader': 0.7.13 docker-modem: 5.0.6 protobufjs: 7.4.0 - tar-fs: 3.1.0 + tar-fs: 2.1.3 uuid: 10.0.0 transitivePeerDependencies: - - bare-buffer - supports-color doctrine@2.1.0: @@ -14788,20 +14837,20 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.4)(pg@8.16.3): + drizzle-orm@0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.5)(pg@8.16.3): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.13 '@types/pg': 8.15.5 better-sqlite3: 12.2.0 gel: 2.0.0 - mysql2: 3.14.4 + mysql2: 3.14.5 pg: 8.16.3 - drizzle-zod@0.8.3(drizzle-orm@0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.4)(pg@8.16.3))(zod@4.1.5): + drizzle-zod@0.8.3(drizzle-orm@0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.5)(pg@8.16.3))(zod@4.1.8): dependencies: - drizzle-orm: 0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.4)(pg@8.16.3) - zod: 4.1.5 + drizzle-orm: 0.44.5(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(gel@2.0.0)(mysql2@3.14.5)(pg@8.16.3) + zod: 4.1.8 dunder-proto@1.0.1: dependencies: @@ -14856,7 +14905,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.18.1 + '@types/node': 22.18.6 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14876,6 +14925,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + env-ci@11.1.0: dependencies: execa: 8.0.1 @@ -15190,17 +15241,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) eslint: 9.35.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -15211,7 +15262,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.35.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.35.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -15223,7 +15274,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15617,6 +15668,8 @@ snapshots: inherits: 2.0.4 readable-stream: 2.3.8 + fs-constants@1.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -15837,15 +15890,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.2 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - globrex@0.1.2: {} gopd@1.0.1: @@ -15965,7 +16009,7 @@ snapshots: highlightjs-vue@1.0.0: {} - hono@4.9.6: {} + hono@4.9.7: {} hook-std@4.0.0: {} @@ -15989,12 +16033,12 @@ snapshots: html-url-attributes@3.0.1: {} - http-cookie-agent@6.0.8(tough-cookie@5.1.2)(undici@7.15.0): + http-cookie-agent@6.0.8(tough-cookie@5.1.2)(undici@7.16.0): dependencies: agent-base: 7.1.3 tough-cookie: 5.1.2 optionalDependencies: - undici: 7.15.0 + undici: 7.16.0 http-errors@2.0.0: dependencies: @@ -16024,6 +16068,8 @@ snapshots: human-signals@8.0.0: {} + ical.js@2.2.1: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -16486,24 +16532,24 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 merge-stream: 2.0.0 supports-color: 8.1.1 jose@6.0.8: {} - jotai@2.13.1(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1): + jotai@2.14.0(@babel/core@7.26.0)(@babel/template@7.27.2)(@types/react@19.1.13)(react@19.1.1): optionalDependencies: '@babel/core': 7.26.0 '@babel/template': 7.27.2 - '@types/react': 19.1.12 + '@types/react': 19.1.13 react: 19.1.1 - jotai@2.13.1(@babel/core@7.28.3)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1): + jotai@2.14.0(@babel/core@7.28.3)(@babel/template@7.27.2)(@types/react@19.1.13)(react@19.1.1): optionalDependencies: '@babel/core': 7.28.3 '@babel/template': 7.27.2 - '@types/react': 19.1.12 + '@types/react': 19.1.13 react: 19.1.1 js-base64@3.7.7: @@ -16521,30 +16567,31 @@ snapshots: jsbn@1.1.0: {} - jsdom@26.1.0: + jsdom@27.0.0(postcss@8.5.6): dependencies: - cssstyle: 4.2.1 - data-urls: 5.0.0 + '@asamuzakjp/dom-selector': 6.5.5 + cssstyle: 5.3.0(postcss@8.5.6) + data-urls: 6.0.0 decimal.js: 10.5.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 - parse5: 7.2.1 + parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.2 + tough-cookie: 6.0.0 w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 + webidl-conversions: 8.0.0 whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-url: 15.1.0 ws: 8.18.3 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil + - postcss - supports-color - utf-8-validate @@ -16784,16 +16831,16 @@ snapshots: make-error@1.3.6: {} - mantine-form-zod-resolver@1.3.0(@mantine/form@8.2.8(react@19.1.1))(zod@4.1.5): + mantine-form-zod-resolver@1.3.0(@mantine/form@8.3.1(react@19.1.1))(zod@4.1.8): dependencies: - '@mantine/form': 8.2.8(react@19.1.1) - zod: 4.1.5 + '@mantine/form': 8.3.1(react@19.1.1) + zod: 4.1.8 - mantine-react-table@2.0.0-beta.9(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + mantine-react-table@2.0.0-beta.9(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/dates@8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(@tabler/icons-react@3.34.1(react@19.1.1))(clsx@2.1.1)(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@mantine/core': 8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/dates': 8.2.8(@mantine/core@8.2.8(@mantine/hooks@8.2.8(react@19.1.1))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.2.8(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@mantine/hooks': 8.2.8(react@19.1.1) + '@mantine/core': 8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/dates': 8.3.1(@mantine/core@8.3.1(@mantine/hooks@8.3.1(react@19.1.1))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@mantine/hooks@8.3.1(react@19.1.1))(dayjs@1.11.18)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@mantine/hooks': 8.3.1(react@19.1.1) '@tabler/icons-react': 3.34.1(react@19.1.1) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -16918,6 +16965,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.12.2: {} + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -17148,7 +17197,7 @@ snapshots: '@babel/runtime': 7.28.4 global: 4.4.0 - mysql2@3.14.4: + mysql2@3.14.5: dependencies: aws-ssl-profiles: 1.1.2 denque: 2.1.0 @@ -17193,25 +17242,25 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.29(next@15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1): + next-auth@5.0.0-beta.29(next@15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1): dependencies: '@auth/core': 0.40.0 - next: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + next: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: 19.1.1 - next-intl@4.3.7(next@15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1)(typescript@5.9.2): + next-intl@4.3.8(next@15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1))(react@19.1.1)(typescript@5.9.2): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) + next: 15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1) react: 19.1.1 - use-intl: 4.3.7(react@19.1.1) + use-intl: 4.3.9(react@19.1.1) optionalDependencies: typescript: 5.9.2 - next@15.5.2(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1): + next@15.5.3(@babel/core@7.26.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1): dependencies: - '@next/env': 15.5.2 + '@next/env': 15.5.3 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001703 postcss: 8.4.31 @@ -17219,23 +17268,23 @@ snapshots: react-dom: 19.1.1(react@19.1.1) styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.1.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.2 - '@next/swc-darwin-x64': 15.5.2 - '@next/swc-linux-arm64-gnu': 15.5.2 - '@next/swc-linux-arm64-musl': 15.5.2 - '@next/swc-linux-x64-gnu': 15.5.2 - '@next/swc-linux-x64-musl': 15.5.2 - '@next/swc-win32-arm64-msvc': 15.5.2 - '@next/swc-win32-x64-msvc': 15.5.2 + '@next/swc-darwin-arm64': 15.5.3 + '@next/swc-darwin-x64': 15.5.3 + '@next/swc-linux-arm64-gnu': 15.5.3 + '@next/swc-linux-arm64-musl': 15.5.3 + '@next/swc-linux-x64-gnu': 15.5.3 + '@next/swc-linux-x64-musl': 15.5.3 + '@next/swc-win32-arm64-msvc': 15.5.3 + '@next/swc-win32-x64-msvc': 15.5.3 sass: 1.92.1 sharp: 0.34.3 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@15.5.2(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1): + next@15.5.3(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.92.1): dependencies: - '@next/env': 15.5.2 + '@next/env': 15.5.3 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001703 postcss: 8.4.31 @@ -17243,14 +17292,14 @@ snapshots: react-dom: 19.1.1(react@19.1.1) styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.1.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.2 - '@next/swc-darwin-x64': 15.5.2 - '@next/swc-linux-arm64-gnu': 15.5.2 - '@next/swc-linux-arm64-musl': 15.5.2 - '@next/swc-linux-x64-gnu': 15.5.2 - '@next/swc-linux-x64-musl': 15.5.2 - '@next/swc-win32-arm64-msvc': 15.5.2 - '@next/swc-win32-x64-msvc': 15.5.2 + '@next/swc-darwin-arm64': 15.5.3 + '@next/swc-darwin-x64': 15.5.3 + '@next/swc-linux-arm64-gnu': 15.5.3 + '@next/swc-linux-arm64-musl': 15.5.3 + '@next/swc-linux-x64-gnu': 15.5.3 + '@next/swc-linux-x64-musl': 15.5.3 + '@next/swc-win32-arm64-msvc': 15.5.3 + '@next/swc-win32-x64-msvc': 15.5.3 sass: 1.92.1 sharp: 0.34.3 transitivePeerDependencies: @@ -17310,7 +17359,7 @@ snapshots: node-ical@0.20.1: dependencies: - axios: 1.12.1 + axios: 1.12.2 moment-timezone: 0.5.47 rrule: 2.8.1 uuid: 10.0.0 @@ -17367,8 +17416,6 @@ snapshots: npm@10.9.3: {} - nwsapi@2.2.16: {} - oauth4webapi@3.3.0: {} object-assign@4.1.1: {} @@ -17642,9 +17689,9 @@ snapshots: parse5@6.0.1: {} - parse5@7.2.1: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.1 pascal-case@2.0.1: dependencies: @@ -17679,8 +17726,6 @@ snapshots: path-type@4.0.0: {} - path-type@5.0.0: {} - pathe@1.1.2: {} pathe@2.0.3: {} @@ -17890,7 +17935,7 @@ snapshots: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react-is: 16.13.1 + react-is: 19.1.1 proper-lockfile@4.1.2: dependencies: @@ -18025,12 +18070,12 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.1 + '@types/node': 22.18.6 long: 5.2.3 proxmox-api@1.1.1: dependencies: - undici: 7.15.0 + undici: 7.16.0 proxy-agent@6.5.0: dependencies: @@ -18149,15 +18194,13 @@ snapshots: dependencies: react: 19.1.1 - react-is@16.13.1: {} + react-is@19.1.1: {} - react-is@18.3.1: {} - - react-markdown@10.1.0(@types/react@19.1.12)(react@19.1.1): + react-markdown@10.1.0(@types/react@19.1.13)(react@19.1.1): dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - '@types/react': 19.1.12 + '@types/react': 19.1.13 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.6 html-url-attributes: 3.0.1 @@ -18171,40 +18214,40 @@ snapshots: transitivePeerDependencies: - supports-color - react-number-format@5.4.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + react-number-format@5.4.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-redux@9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.1.13)(react@19.1.1)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 react: 19.1.1 use-sync-external-store: 1.4.0(react@19.1.1) optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 redux: 5.0.1 react-refresh@0.17.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.1.12)(react@19.1.1): + react-remove-scroll-bar@2.3.8(@types/react@19.1.13)(react@19.1.1): dependencies: react: 19.1.1 - react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) + react-style-singleton: 2.2.3(@types/react@19.1.13)(react@19.1.1) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 - react-remove-scroll@2.6.2(@types/react@19.1.12)(react@19.1.1): + react-remove-scroll@2.7.1(@types/react@19.1.13)(react@19.1.1): dependencies: react: 19.1.1 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.12)(react@19.1.1) - react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) + react-remove-scroll-bar: 2.3.8(@types/react@19.1.13)(react@19.1.1) + react-style-singleton: 2.2.3(@types/react@19.1.13)(react@19.1.1) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.12)(react@19.1.1) - use-sidecar: 1.1.2(@types/react@19.1.12)(react@19.1.1) + use-callback-ref: 1.3.3(@types/react@19.1.13)(react@19.1.1) + use-sidecar: 1.1.3(@types/react@19.1.13)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 react-scan@0.0.31: dependencies: @@ -18227,13 +18270,13 @@ snapshots: react-dom: 19.1.1(react@19.1.1) react-transition-group: 4.4.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - react-style-singleton@2.2.3(@types/react@19.1.12)(react@19.1.1): + react-style-singleton@2.2.3(@types/react@19.1.13)(react@19.1.1): dependencies: get-nonce: 1.0.1 react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 react-syntax-highlighter@15.6.1(react@19.1.1): dependencies: @@ -18245,12 +18288,12 @@ snapshots: react: 19.1.1 refractor: 3.6.0 - react-textarea-autosize@8.5.9(@types/react@19.1.12)(react@19.1.1): + react-textarea-autosize@8.5.9(@types/react@19.1.13)(react@19.1.1): dependencies: '@babel/runtime': 7.28.4 react: 19.1.1 use-composed-ref: 1.3.0(react@19.1.1) - use-latest: 1.2.1(@types/react@19.1.12)(react@19.1.1) + use-latest: 1.2.1(@types/react@19.1.13)(react@19.1.1) transitivePeerDependencies: - '@types/react' @@ -18330,7 +18373,7 @@ snapshots: lodash: 4.17.21 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-is: 18.3.1 + react-is: 19.1.1 react-smooth: 4.0.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) recharts-scale: 0.4.5 tiny-invariant: 1.3.3 @@ -18637,7 +18680,7 @@ snapshots: dependencies: '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.8(typescript@5.9.2)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 11.0.5(semantic-release@24.2.8(typescript@5.9.2)) + '@semantic-release/github': 11.0.6(semantic-release@24.2.8(typescript@5.9.2)) '@semantic-release/npm': 12.0.2(semantic-release@24.2.8(typescript@5.9.2)) '@semantic-release/release-notes-generator': 14.1.0(semantic-release@24.2.8(typescript@5.9.2)) aggregate-error: 5.0.0 @@ -18843,8 +18886,6 @@ snapshots: slash@3.0.0: {} - slash@5.1.0: {} - smart-buffer@4.2.0: {} snake-case@2.1.0: @@ -19200,7 +19241,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.28.1(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + swagger-ui-react@5.29.0(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@babel/runtime-corejs3': 7.27.1 '@scarf/scarf': 1.4.0 @@ -19225,7 +19266,7 @@ snapshots: react-immutable-proptypes: 2.2.0(immutable@3.8.2) react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-inspector: 6.0.2(react@19.1.1) - react-redux: 9.2.0(@types/react@19.1.12)(react@19.1.1)(redux@5.0.1) + react-redux: 9.2.0(@types/react@19.1.13)(react@19.1.1)(redux@5.0.1) react-syntax-highlighter: 15.6.1(react@19.1.1) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) @@ -19257,6 +19298,13 @@ snapshots: tapable@2.2.1: {} + tar-fs@2.1.3: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.2 + tar-stream: 2.2.0 + tar-fs@3.1.0: dependencies: pump: 3.0.2 @@ -19267,6 +19315,14 @@ snapshots: transitivePeerDependencies: - bare-buffer + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + tar-stream@3.1.7: dependencies: b4a: 1.6.6 @@ -19313,14 +19369,14 @@ snapshots: byline: 5.0.0 debug: 4.4.1 docker-compose: 1.2.0 - dockerode: 4.0.7 + dockerode: 4.0.8 get-port: 7.1.0 proper-lockfile: 4.1.2 properties-reader: 2.3.0 ssh-remote-port-forward: 1.0.4 tar-fs: 3.1.0 tmp: 0.2.4 - undici: 7.15.0 + undici: 7.16.0 transitivePeerDependencies: - bare-buffer - supports-color @@ -19440,6 +19496,10 @@ snapshots: dependencies: punycode: 2.3.1 + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + traverse@0.6.8: {} tree-kill@1.2.2: {} @@ -19470,14 +19530,14 @@ snapshots: trough@2.2.0: {} - trpc-to-openapi@3.0.1(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.5.1(typescript@5.9.2))(zod-openapi@5.3.0(zod@4.1.5))(zod@4.1.5): + trpc-to-openapi@3.0.1(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.5.1(typescript@5.9.2))(zod-openapi@5.3.0(zod@4.1.8))(zod@4.1.8): dependencies: '@trpc/server': 11.5.1(typescript@5.9.2) co-body: 6.2.0 h3: 1.15.1 openapi3-ts: 4.4.0 - zod: 4.1.5 - zod-openapi: 5.3.0(zod@4.1.5) + zod: 4.1.8 + zod-openapi: 5.3.0(zod@4.1.8) optionalDependencies: '@rollup/rollup-linux-x64-gnu': 4.6.1 @@ -19487,14 +19547,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.18.1)(typescript@5.9.2): + ts-node@10.9.2(@types/node@22.18.6)(typescript@5.9.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.18.1 + '@types/node': 22.18.6 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -19674,12 +19734,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.42.0(eslint@9.35.0)(typescript@5.9.2): + typescript-eslint@8.43.0(eslint@9.35.0)(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/parser': 8.42.0(eslint@9.35.0)(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.42.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0)(typescript@5.9.2))(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0)(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0)(typescript@5.9.2) eslint: 9.35.0 typescript: 5.9.2 transitivePeerDependencies: @@ -19716,7 +19776,7 @@ snapshots: undici-types@6.21.0: {} - undici@7.15.0: {} + undici@7.16.0: {} unicode-emoji-modifier-base@1.0.0: {} @@ -19839,12 +19899,12 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.1.12)(react@19.1.1): + use-callback-ref@1.3.3(@types/react@19.1.13)(react@19.1.1): dependencies: react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 use-composed-ref@1.3.0(react@19.1.1): dependencies: @@ -19856,33 +19916,33 @@ snapshots: dequal: 2.0.3 react: 19.1.1 - use-intl@4.3.7(react@19.1.1): + use-intl@4.3.9(react@19.1.1): dependencies: '@formatjs/fast-memoize': 2.2.1 '@schummar/icu-type-parser': 1.21.5 intl-messageformat: 10.7.1 react: 19.1.1 - use-isomorphic-layout-effect@1.1.2(@types/react@19.1.12)(react@19.1.1): + use-isomorphic-layout-effect@1.1.2(@types/react@19.1.13)(react@19.1.1): dependencies: react: 19.1.1 optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 - use-latest@1.2.1(@types/react@19.1.12)(react@19.1.1): + use-latest@1.2.1(@types/react@19.1.13)(react@19.1.1): dependencies: react: 19.1.1 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.1.12)(react@19.1.1) + use-isomorphic-layout-effect: 1.1.2(@types/react@19.1.13)(react@19.1.1) optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 - use-sidecar@1.1.2(@types/react@19.1.12)(react@19.1.1): + use-sidecar@1.1.3(@types/react@19.1.13)(react@19.1.1): dependencies: detect-node-es: 1.1.0 react: 19.1.1 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 19.1.13 use-sync-external-store@1.4.0(react@19.1.1): dependencies: @@ -19960,13 +20020,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.2.4(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): + vite-node@3.2.4(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - '@types/node' - jiti @@ -19981,18 +20041,18 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)): + vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.9.2) optionalDependencies: - vite: 7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) transitivePeerDependencies: - supports-color - typescript - vite@7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): + vite@7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -20001,7 +20061,7 @@ snapshots: rollup: 4.48.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.18.1 + '@types/node': 22.18.6 fsevents: 2.3.3 sass: 1.92.1 sugarss: 5.0.0(postcss@8.5.6) @@ -20009,11 +20069,11 @@ snapshots: tsx: 4.20.5 yaml: 2.5.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.1)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(@vitest/ui@3.2.4)(jsdom@27.0.0(postcss@8.5.6))(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) + '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -20031,14 +20091,14 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.5(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) - vite-node: 3.2.4(@types/node@22.18.1)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite: 7.1.5(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) + vite-node: 3.2.4(@types/node@22.18.6)(sass@1.92.1)(sugarss@5.0.0(postcss@8.5.6))(terser@5.39.0)(tsx@4.20.5)(yaml@2.5.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.18.1 + '@types/node': 22.18.6 '@vitest/ui': 3.2.4(vitest@3.2.4) - jsdom: 26.1.0 + jsdom: 27.0.0(postcss@8.5.6) transitivePeerDependencies: - jiti - less @@ -20077,6 +20137,8 @@ snapshots: webidl-conversions@7.0.0: {} + webidl-conversions@8.0.0: {} + webpack-sources@3.2.3: {} webpack-virtual-modules@0.6.2: {} @@ -20124,6 +20186,11 @@ snapshots: tr46: 5.1.0 webidl-conversions: 7.0.0 + whatwg-url@15.1.0: + dependencies: + tr46: 6.0.0 + webidl-conversions: 8.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -20352,19 +20419,19 @@ snapshots: compress-commons: 6.0.2 readable-stream: 4.5.2 - zod-form-data@3.0.1(zod@4.1.5): + zod-form-data@3.0.1(zod@4.1.8): dependencies: '@rvf/set-get': 7.0.1 - zod: 4.1.5 + zod: 4.1.8 - zod-openapi@5.3.0(zod@4.1.5): + zod-openapi@5.3.0(zod@4.1.8): dependencies: - zod: 4.1.5 + zod: 4.1.8 - zod-validation-error@4.0.1(zod@4.1.5): + zod-validation-error@4.0.1(zod@4.1.8): dependencies: - zod: 4.1.5 + zod: 4.1.8 - zod@4.1.5: {} + zod@4.1.8: {} zwitch@2.0.4: {} diff --git a/static-data/contributors.json b/static-data/contributors.json index 06a95d084..1c038ef73 100644 --- a/static-data/contributors.json +++ b/static-data/contributors.json @@ -1 +1 @@ -[{"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":"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":"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":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?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":"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":"VinnyVynce","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":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?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":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?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":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?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":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?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":"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":"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":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"tancak","avatar_url":"https://avatars.githubusercontent.com/u/11760749?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":"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":"VinnyVynce","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":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?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":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"}] \ No newline at end of file diff --git a/static-data/translators.json b/static-data/translators.json index cc84953df..64bf3d0cb 100644 --- a/static-data/translators.json +++ b/static-data/translators.json @@ -1 +1 @@ -[{"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":"Skick","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12619811/medium/0331f1de413a645b4516bc4e037f31bb.jpg"},{"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":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"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":"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":"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":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"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":"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":"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"}] \ 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":"Skick","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12619811/medium/0331f1de413a645b4516bc4e037f31bb.jpg"},{"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":"vittoriosoccorso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16498805/medium/17086b2f1981f734edd1572f79c3158a.jpeg"},{"username":"Worgen325","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16533177/medium/4a62cc6b06095751aeb4b1b3e96db93f.png"},{"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":"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":"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":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"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":"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":"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"}] \ No newline at end of file diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index a12edb475..83076aa73 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -17,14 +17,14 @@ }, "prettier": "@homarr/prettier-config", "dependencies": { - "@next/eslint-plugin-next": "15.5.2", + "@next/eslint-plugin-next": "15.5.3", "eslint-config-prettier": "^10.1.8", "eslint-config-turbo": "^2.5.6", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", - "typescript-eslint": "^8.42.0" + "typescript-eslint": "^8.43.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index a84e3fb96..db9d781f5 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -5,7 +5,7 @@ runs: using: composite steps: - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v5 with: node-version: 22.19.0 cache: "pnpm"