Compare commits

...

4 commits

Author SHA1 Message Date
Mike Cao
401822582d Fixed version tags.
Some checks failed
Node.js CI / build (mysql, 18.18) (push) Has been cancelled
Node.js CI / build (postgresql, 18.18) (push) Has been cancelled
2025-12-11 17:00:22 -08:00
Mike Cao
ba707451df Updated workflows for ARM. 2025-12-11 16:54:56 -08:00
Mike Cao
7729bbf4a7 Updated workflows. 2025-12-11 16:41:23 -08:00
Mike Cao
3eb2e890ef Update next 2025-12-11 16:14:31 -08:00
6 changed files with 152 additions and 165 deletions

View file

@ -1,4 +1,4 @@
name: Create docker images name: Create docker images (cloud)
on: on:
push: push:

View file

@ -1,58 +0,0 @@
name: Create docker images (manual)
on:
workflow_dispatch:
inputs:
version:
type: string
description: Version
required: true
jobs:
build:
name: Build, push, and deploy
runs-on: ubuntu-latest
strategy:
matrix:
db-type: [postgresql, mysql]
steps:
- uses: actions/checkout@v3
- name: Extract version parts from input
id: extract_version
run: |
echo "version=$(echo ${{ github.event.inputs.version }})" >> $GITHUB_ENV
echo "major=$(echo ${{ github.event.inputs.version }} | cut -d. -f1)" >> $GITHUB_ENV
echo "minor=$(echo ${{ github.event.inputs.version }} | cut -d. -f2)" >> $GITHUB_ENV
- name: Generate tags
id: generate_tags
run: |
echo "tag_major=$(echo ${{ matrix.db-type }}-${{ env.major }})" >> $GITHUB_ENV
echo "tag_minor=$(echo ${{ matrix.db-type }}-${{ env.major }}.${{ env.minor }})" >> $GITHUB_ENV
echo "tag_patch=$(echo ${{ matrix.db-type }}-${{ env.version }})" >> $GITHUB_ENV
echo "tag_latest=$(echo ${{ matrix.db-type }}-latest)" >> $GITHUB_ENV
- uses: mr-smithers-excellent/docker-build-push@v6
name: Build & push Docker image to ghcr.io for ${{ matrix.db-type }}
with:
image: umami
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }}, ${{ env.tag_latest }}
buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
registry: ghcr.io
multiPlatform: true
platform: linux/amd64,linux/arm64
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: mr-smithers-excellent/docker-build-push@v6
name: Build & push Docker image to docker.io for ${{ matrix.db-type }}
with:
image: umamisoftware/umami
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }}, ${{ env.tag_latest }}
buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
registry: docker.io
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

View file

@ -1,11 +1,18 @@
name: Create docker images name: Create docker images
on: [create] on:
create:
workflow_dispatch:
inputs:
tag:
description: 'Tag to build (e.g., v2.10.0, v2.10, v2)'
required: true
type: string
jobs: jobs:
build: build:
name: Build, push, and deploy name: Build, push, and deploy
if: ${{ startsWith(github.ref, 'refs/tags/v') }} if: ${{ startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
@ -14,6 +21,14 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with:
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Set env - name: Set env
run: | run: |
@ -22,15 +37,40 @@ jobs:
- name: Generate tags - name: Generate tags
id: generate_tags id: generate_tags
run: | run: |
echo "tag_patch=$(echo ${{ matrix.db-type }})-${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
echo "tag_minor=$(echo ${{ matrix.db-type }})-$(echo ${GITHUB_REF#refs/tags/} | cut -d. -f1,2)" >> $GITHUB_ENV TAG=${{ inputs.tag }}
echo "tag_major=$(echo ${{ matrix.db-type }})-$(echo ${GITHUB_REF#refs/tags/} | cut -d. -f1)" >> $GITHUB_ENV else
TAG=${GITHUB_REF#refs/tags/}
fi
# Ensure tag starts with 'v'
if [[ ! $TAG =~ ^v ]]; then
TAG="v${TAG}"
fi
# Remove 'v' prefix for splitting
VERSION=${TAG#v}
# Split version into parts
IFS='.' read -ra PARTS <<< "$VERSION"
# Generate tags based on number of version parts (keeping 'v' prefix)
if [ ${#PARTS[@]} -eq 1 ]; then
# Only major version (e.g., v2)
echo "TAGS=${{ matrix.db-type }}-v${PARTS[0]}" >> $GITHUB_ENV
elif [ ${#PARTS[@]} -eq 2 ]; then
# Major.minor version (e.g., v2.10)
echo "TAGS=${{ matrix.db-type }}-v${PARTS[0]}, ${{ matrix.db-type }}-v${PARTS[0]}.${PARTS[1]}" >> $GITHUB_ENV
else
# Full version (e.g., v2.10.0)
echo "TAGS=${{ matrix.db-type }}-v${PARTS[0]}, ${{ matrix.db-type }}-v${PARTS[0]}.${PARTS[1]}, ${{ matrix.db-type }}-v${VERSION}" >> $GITHUB_ENV
fi
- uses: mr-smithers-excellent/docker-build-push@v6 - uses: mr-smithers-excellent/docker-build-push@v6
name: Build & push Docker image to ghcr.io for ${{ matrix.db-type }} name: Build & push Docker image to ghcr.io for ${{ matrix.db-type }}
with: with:
image: umami image: umami
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }} tags: ${{ env.TAGS }}
buildArgs: DATABASE_TYPE=${{ matrix.db-type }} buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
registry: ghcr.io registry: ghcr.io
multiPlatform: true multiPlatform: true
@ -42,7 +82,7 @@ jobs:
name: Build & push Docker image to docker.io for ${{ matrix.db-type }} name: Build & push Docker image to docker.io for ${{ matrix.db-type }}
with: with:
image: umamisoftware/umami image: umamisoftware/umami
tags: ${{ env.tag_major }}, ${{ env.tag_minor }}, ${{ env.tag_patch }} tags: ${{ env.TAGS }}
buildArgs: DATABASE_TYPE=${{ matrix.db-type }} buildArgs: DATABASE_TYPE=${{ matrix.db-type }}
registry: docker.io registry: docker.io
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}

View file

@ -25,14 +25,19 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}
cache: 'yarn' cache: 'pnpm'
env: env:
DATABASE_TYPE: ${{ matrix.db-type }} DATABASE_TYPE: ${{ matrix.db-type }}
- run: npm install --global yarn
- run: yarn install - run: pnpm install
- run: yarn test - run: pnpm test
- run: yarn build - run: pnpm build

View file

@ -1,6 +1,6 @@
{ {
"name": "umami", "name": "umami",
"version": "2.20.1", "version": "2.20.2",
"description": "A modern, privacy-focused alternative to Google Analytics.", "description": "A modern, privacy-focused alternative to Google Analytics.",
"author": "Umami Software, Inc. <hello@umami.is>", "author": "Umami Software, Inc. <hello@umami.is>",
"license": "MIT", "license": "MIT",
@ -103,15 +103,15 @@
"kafkajs": "^2.1.0", "kafkajs": "^2.1.0",
"maxmind": "^4.3.24", "maxmind": "^4.3.24",
"md5": "^2.3.0", "md5": "^2.3.0",
"next": "15.5.7", "next": "^15.5.9",
"node-fetch": "^3.2.8", "node-fetch": "^3.2.8",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"papaparse": "^5.5.3", "papaparse": "^5.5.3",
"prisma": "6.7.0", "prisma": "6.7.0",
"pure-rand": "^6.1.0", "pure-rand": "^6.1.0",
"react": "^19.2.1", "react": "^19.2.3",
"react-basics": "^0.126.0", "react-basics": "^0.126.0",
"react-dom": "^19.2.1", "react-dom": "^19.2.3",
"react-error-boundary": "^4.0.4", "react-error-boundary": "^4.0.4",
"react-intl": "^6.5.5", "react-intl": "^6.5.5",
"react-simple-maps": "^2.3.0", "react-simple-maps": "^2.3.0",

178
pnpm-lock.yaml generated
View file

@ -25,7 +25,7 @@ importers:
version: 4.5.15 version: 4.5.15
'@hello-pangea/dnd': '@hello-pangea/dnd':
specifier: ^17.0.0 specifier: ^17.0.0
version: 17.0.0(@types/react@19.1.8)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 17.0.0(@types/react@19.1.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@prisma/client': '@prisma/client':
specifier: 6.7.0 specifier: 6.7.0
version: 6.7.0(prisma@6.7.0(typescript@5.8.3))(typescript@5.8.3) version: 6.7.0(prisma@6.7.0(typescript@5.8.3))(typescript@5.8.3)
@ -34,10 +34,10 @@ importers:
version: 0.4.1(@prisma/client@6.7.0(prisma@6.7.0(typescript@5.8.3))(typescript@5.8.3)) version: 0.4.1(@prisma/client@6.7.0(prisma@6.7.0(typescript@5.8.3))(typescript@5.8.3))
'@react-spring/web': '@react-spring/web':
specifier: ^9.7.3 specifier: ^9.7.3
version: 9.7.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 9.7.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-query': '@tanstack/react-query':
specifier: ^5.28.6 specifier: ^5.28.6
version: 5.83.0(react@19.2.1) version: 5.83.0(react@19.2.3)
'@umami/redis-client': '@umami/redis-client':
specifier: ^0.26.0 specifier: ^0.26.0
version: 0.26.0 version: 0.26.0
@ -123,8 +123,8 @@ importers:
specifier: ^2.3.0 specifier: ^2.3.0
version: 2.3.0 version: 2.3.0
next: next:
specifier: 15.5.7 specifier: ^15.5.9
version: 15.5.7(@babel/core@7.28.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 15.5.9(@babel/core@7.28.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
node-fetch: node-fetch:
specifier: ^3.2.8 specifier: ^3.2.8
version: 3.3.2 version: 3.3.2
@ -141,29 +141,29 @@ importers:
specifier: ^6.1.0 specifier: ^6.1.0
version: 6.1.0 version: 6.1.0
react: react:
specifier: ^19.2.1 specifier: ^19.2.3
version: 19.2.1 version: 19.2.3
react-basics: react-basics:
specifier: ^0.126.0 specifier: ^0.126.0
version: 0.126.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 0.126.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-dom: react-dom:
specifier: ^19.2.1 specifier: ^19.2.3
version: 19.2.1(react@19.2.1) version: 19.2.3(react@19.2.3)
react-error-boundary: react-error-boundary:
specifier: ^4.0.4 specifier: ^4.0.4
version: 4.1.2(react@19.2.1) version: 4.1.2(react@19.2.3)
react-intl: react-intl:
specifier: ^6.5.5 specifier: ^6.5.5
version: 6.8.9(react@19.2.1)(typescript@5.8.3) version: 6.8.9(react@19.2.3)(typescript@5.8.3)
react-simple-maps: react-simple-maps:
specifier: ^2.3.0 specifier: ^2.3.0
version: 2.3.0(prop-types@15.8.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 2.3.0(prop-types@15.8.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-use-measure: react-use-measure:
specifier: ^2.0.4 specifier: ^2.0.4
version: 2.1.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-window: react-window:
specifier: ^1.8.6 specifier: ^1.8.6
version: 1.8.11(react-dom@19.2.1(react@19.2.1))(react@19.2.1) version: 1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
request-ip: request-ip:
specifier: ^3.3.0 specifier: ^3.3.0
version: 3.3.0 version: 3.3.0
@ -184,7 +184,7 @@ importers:
version: 3.25.76 version: 3.25.76
zustand: zustand:
specifier: ^4.5.5 specifier: ^4.5.5
version: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.2.1) version: 4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.2.3)
devDependencies: devDependencies:
'@formatjs/cli': '@formatjs/cli':
specifier: ^4.2.29 specifier: ^4.2.29
@ -1826,8 +1826,8 @@ packages:
resolution: {integrity: sha512-F+HiQaUpISBmooALpwDULoCCwUhI6MugEEBstjuxOL2rh2ROFhK4abv87f4GxVXRSmw0AtXAp2eiP8vHcZ3NKQ==} resolution: {integrity: sha512-F+HiQaUpISBmooALpwDULoCCwUhI6MugEEBstjuxOL2rh2ROFhK4abv87f4GxVXRSmw0AtXAp2eiP8vHcZ3NKQ==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
'@next/env@15.5.7': '@next/env@15.5.9':
resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==} resolution: {integrity: sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==}
'@next/eslint-plugin-next@14.2.30': '@next/eslint-plugin-next@14.2.30':
resolution: {integrity: sha512-mvVsMIutMxQ4NGZEMZ1kiBNc+la8Xmlk30bKUmCPQz2eFkmsLv54Mha8QZarMaCtSPkkFA1TMD+FIZk0l/PpzA==} resolution: {integrity: sha512-mvVsMIutMxQ4NGZEMZ1kiBNc+la8Xmlk30bKUmCPQz2eFkmsLv54Mha8QZarMaCtSPkkFA1TMD+FIZk0l/PpzA==}
@ -4933,8 +4933,8 @@ packages:
natural-compare@1.4.0: natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
next@15.5.7: next@15.5.9:
resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==} resolution: {integrity: sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -5708,10 +5708,10 @@ packages:
react: ^18.2.0 react: ^18.2.0
react-dom: ^18.2.0 react-dom: ^18.2.0
react-dom@19.2.1: react-dom@19.2.3:
resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==} resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
peerDependencies: peerDependencies:
react: ^19.2.1 react: ^19.2.3
react-error-boundary@4.1.2: react-error-boundary@4.1.2:
resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==}
@ -5774,8 +5774,8 @@ packages:
react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react@19.2.1: react@19.2.3:
resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==} resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
read-babelrc-up@1.1.0: read-babelrc-up@1.1.0:
@ -8108,17 +8108,17 @@ snapshots:
optionalDependencies: optionalDependencies:
ts-jest: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(esbuild@0.25.8)(jest-util@29.7.0)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))(typescript@5.8.3) ts-jest: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(esbuild@0.25.8)(jest-util@29.7.0)(jest@29.7.0(@types/node@22.16.5)(ts-node@10.9.2(@types/node@22.16.5)(typescript@5.8.3)))(typescript@5.8.3)
'@hello-pangea/dnd@17.0.0(@types/react@19.1.8)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': '@hello-pangea/dnd@17.0.0(@types/react@19.1.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies: dependencies:
'@babel/runtime': 7.27.6 '@babel/runtime': 7.27.6
css-box-model: 1.2.1 css-box-model: 1.2.1
memoize-one: 6.0.0 memoize-one: 6.0.0
raf-schd: 4.0.3 raf-schd: 4.0.3
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react-redux: 9.2.0(@types/react@19.1.8)(react@19.2.1)(redux@5.0.1) react-redux: 9.2.0(@types/react@19.1.8)(react@19.2.3)(redux@5.0.1)
redux: 5.0.1 redux: 5.0.1
use-memo-one: 1.1.3(react@19.2.1) use-memo-one: 1.1.3(react@19.2.3)
transitivePeerDependencies: transitivePeerDependencies:
- '@types/react' - '@types/react'
@ -8442,7 +8442,7 @@ snapshots:
'@netlify/plugin-nextjs@5.11.6': {} '@netlify/plugin-nextjs@5.11.6': {}
'@next/env@15.5.7': {} '@next/env@15.5.9': {}
'@next/eslint-plugin-next@14.2.30': '@next/eslint-plugin-next@14.2.30':
dependencies: dependencies:
@ -8526,37 +8526,37 @@ snapshots:
dependencies: dependencies:
'@prisma/debug': 6.7.0 '@prisma/debug': 6.7.0
'@react-spring/animated@9.7.5(react@19.2.1)': '@react-spring/animated@9.7.5(react@19.2.3)':
dependencies: dependencies:
'@react-spring/shared': 9.7.5(react@19.2.1) '@react-spring/shared': 9.7.5(react@19.2.3)
'@react-spring/types': 9.7.5 '@react-spring/types': 9.7.5
react: 19.2.1 react: 19.2.3
'@react-spring/core@9.7.5(react@19.2.1)': '@react-spring/core@9.7.5(react@19.2.3)':
dependencies: dependencies:
'@react-spring/animated': 9.7.5(react@19.2.1) '@react-spring/animated': 9.7.5(react@19.2.3)
'@react-spring/shared': 9.7.5(react@19.2.1) '@react-spring/shared': 9.7.5(react@19.2.3)
'@react-spring/types': 9.7.5 '@react-spring/types': 9.7.5
react: 19.2.1 react: 19.2.3
'@react-spring/rafz@9.7.5': {} '@react-spring/rafz@9.7.5': {}
'@react-spring/shared@9.7.5(react@19.2.1)': '@react-spring/shared@9.7.5(react@19.2.3)':
dependencies: dependencies:
'@react-spring/rafz': 9.7.5 '@react-spring/rafz': 9.7.5
'@react-spring/types': 9.7.5 '@react-spring/types': 9.7.5
react: 19.2.1 react: 19.2.3
'@react-spring/types@9.7.5': {} '@react-spring/types@9.7.5': {}
'@react-spring/web@9.7.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': '@react-spring/web@9.7.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies: dependencies:
'@react-spring/animated': 9.7.5(react@19.2.1) '@react-spring/animated': 9.7.5(react@19.2.3)
'@react-spring/core': 9.7.5(react@19.2.1) '@react-spring/core': 9.7.5(react@19.2.3)
'@react-spring/shared': 9.7.5(react@19.2.1) '@react-spring/shared': 9.7.5(react@19.2.3)
'@react-spring/types': 9.7.5 '@react-spring/types': 9.7.5
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
'@redis/bloom@1.2.0(@redis/client@1.6.1)': '@redis/bloom@1.2.0(@redis/client@1.6.1)':
dependencies: dependencies:
@ -8767,10 +8767,10 @@ snapshots:
'@tanstack/query-core@5.83.0': {} '@tanstack/query-core@5.83.0': {}
'@tanstack/react-query@5.83.0(react@19.2.1)': '@tanstack/react-query@5.83.0(react@19.2.3)':
dependencies: dependencies:
'@tanstack/query-core': 5.83.0 '@tanstack/query-core': 5.83.0
react: 19.2.1 react: 19.2.3
'@trysound/sax@0.2.0': {} '@trysound/sax@0.2.0': {}
@ -12070,15 +12070,15 @@ snapshots:
natural-compare@1.4.0: {} natural-compare@1.4.0: {}
next@15.5.7(@babel/core@7.28.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): next@15.5.9(@babel/core@7.28.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
'@next/env': 15.5.7 '@next/env': 15.5.9
'@swc/helpers': 0.5.15 '@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001727 caniuse-lite: 1.0.30001727
postcss: 8.4.31 postcss: 8.4.31
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.2.1) styled-jsx: 5.1.6(@babel/core@7.28.0)(react@19.2.3)
optionalDependencies: optionalDependencies:
'@next/swc-darwin-arm64': 15.5.7 '@next/swc-darwin-arm64': 15.5.7
'@next/swc-darwin-x64': 15.5.7 '@next/swc-darwin-x64': 15.5.7
@ -12822,31 +12822,31 @@ snapshots:
dependencies: dependencies:
safe-buffer: 5.2.1 safe-buffer: 5.2.1
react-basics@0.126.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-basics@0.126.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
'@react-spring/web': 9.7.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) '@react-spring/web': 9.7.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
classnames: 2.5.1 classnames: 2.5.1
date-fns: 2.30.0 date-fns: 2.30.0
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react-hook-form: 7.60.0(react@19.2.1) react-hook-form: 7.60.0(react@19.2.3)
react-window: 1.8.11(react-dom@19.2.1(react@19.2.1))(react@19.2.1) react-window: 1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-dom@19.2.1(react@19.2.1): react-dom@19.2.3(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
scheduler: 0.27.0 scheduler: 0.27.0
react-error-boundary@4.1.2(react@19.2.1): react-error-boundary@4.1.2(react@19.2.3):
dependencies: dependencies:
'@babel/runtime': 7.27.6 '@babel/runtime': 7.27.6
react: 19.2.1 react: 19.2.3
react-hook-form@7.60.0(react@19.2.1): react-hook-form@7.60.0(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
react-intl@6.8.9(react@19.2.1)(typescript@5.8.3): react-intl@6.8.9(react@19.2.3)(typescript@5.8.3):
dependencies: dependencies:
'@formatjs/ecma402-abstract': 2.2.4 '@formatjs/ecma402-abstract': 2.2.4
'@formatjs/icu-messageformat-parser': 2.9.4 '@formatjs/icu-messageformat-parser': 2.9.4
@ -12857,7 +12857,7 @@ snapshots:
'@types/react': 18.3.23 '@types/react': 18.3.23
hoist-non-react-statics: 3.3.2 hoist-non-react-statics: 3.3.2
intl-messageformat: 10.7.7 intl-messageformat: 10.7.7
react: 19.2.1 react: 19.2.3
tslib: 2.8.1 tslib: 2.8.1
optionalDependencies: optionalDependencies:
typescript: 5.8.3 typescript: 5.8.3
@ -12866,39 +12866,39 @@ snapshots:
react-is@18.3.1: {} react-is@18.3.1: {}
react-redux@9.2.0(@types/react@19.1.8)(react@19.2.1)(redux@5.0.1): react-redux@9.2.0(@types/react@19.1.8)(react@19.2.3)(redux@5.0.1):
dependencies: dependencies:
'@types/use-sync-external-store': 0.0.6 '@types/use-sync-external-store': 0.0.6
react: 19.2.1 react: 19.2.3
use-sync-external-store: 1.5.0(react@19.2.1) use-sync-external-store: 1.5.0(react@19.2.3)
optionalDependencies: optionalDependencies:
'@types/react': 19.1.8 '@types/react': 19.1.8
redux: 5.0.1 redux: 5.0.1
react-simple-maps@2.3.0(prop-types@15.8.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-simple-maps@2.3.0(prop-types@15.8.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
d3-geo: 2.0.2 d3-geo: 2.0.2
d3-selection: 2.0.0 d3-selection: 2.0.0
d3-zoom: 2.0.0 d3-zoom: 2.0.0
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
topojson-client: 3.1.0 topojson-client: 3.1.0
react-use-measure@2.1.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-use-measure@2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
optionalDependencies: optionalDependencies:
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react-window@1.8.11(react-dom@19.2.1(react@19.2.1))(react@19.2.1): react-window@1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies: dependencies:
'@babel/runtime': 7.27.6 '@babel/runtime': 7.27.6
memoize-one: 5.2.1 memoize-one: 5.2.1
react: 19.2.1 react: 19.2.3
react-dom: 19.2.1(react@19.2.1) react-dom: 19.2.3(react@19.2.3)
react@19.2.1: {} react@19.2.3: {}
read-babelrc-up@1.1.0: read-babelrc-up@1.1.0:
dependencies: dependencies:
@ -13490,10 +13490,10 @@ snapshots:
style-search@0.1.0: {} style-search@0.1.0: {}
styled-jsx@5.1.6(@babel/core@7.28.0)(react@19.2.1): styled-jsx@5.1.6(@babel/core@7.28.0)(react@19.2.3):
dependencies: dependencies:
client-only: 0.0.1 client-only: 0.0.1
react: 19.2.1 react: 19.2.3
optionalDependencies: optionalDependencies:
'@babel/core': 7.28.0 '@babel/core': 7.28.0
@ -13880,13 +13880,13 @@ snapshots:
dependencies: dependencies:
punycode: 2.3.1 punycode: 2.3.1
use-memo-one@1.1.3(react@19.2.1): use-memo-one@1.1.3(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
use-sync-external-store@1.5.0(react@19.2.1): use-sync-external-store@1.5.0(react@19.2.3):
dependencies: dependencies:
react: 19.2.1 react: 19.2.3
util-deprecate@1.0.2: {} util-deprecate@1.0.2: {}
@ -14068,10 +14068,10 @@ snapshots:
zod@3.25.76: {} zod@3.25.76: {}
zustand@4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.2.1): zustand@4.5.7(@types/react@19.1.8)(immer@9.0.21)(react@19.2.3):
dependencies: dependencies:
use-sync-external-store: 1.5.0(react@19.2.1) use-sync-external-store: 1.5.0(react@19.2.3)
optionalDependencies: optionalDependencies:
'@types/react': 19.1.8 '@types/react': 19.1.8
immer: 9.0.21 immer: 9.0.21
react: 19.2.1 react: 19.2.3