diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index fe33dd84..00000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: Build container/push to container registry - -on: [workflow_dispatch] - -env: - # 950402358378.dkr.ecr.us-east-1.amazonaws.com/reflector - AWS_REGION: us-east-1 - ECR_REPOSITORY: reflector - -jobs: - build: - strategy: - matrix: - include: - - platform: linux/amd64 - runner: linux-amd64 - arch: amd64 - - platform: linux/arm64 - runner: linux-arm64 - arch: arm64 - - runs-on: ${{ matrix.runner }} - - permissions: - contents: read - - outputs: - registry: ${{ steps.login-ecr.outputs.registry }} - - steps: - - uses: actions/checkout@v4 - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and push ${{ matrix.arch }} - uses: docker/build-push-action@v5 - with: - context: server - platforms: ${{ matrix.platform }} - push: true - tags: ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:latest-${{ matrix.arch }} - cache-from: type=gha,scope=${{ matrix.arch }} - cache-to: type=gha,mode=max,scope=${{ matrix.arch }} - github-token: ${{ secrets.GHA_CACHE_TOKEN }} - provenance: false - - create-manifest: - runs-on: ubuntu-latest - needs: [build] - - permissions: - deployments: write - contents: read - - steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} - - - name: Login to Amazon ECR - uses: aws-actions/amazon-ecr-login@v2 - - - name: Create and push multi-arch manifest - run: | - # Get the registry URL (since we can't easily access job outputs in matrix) - ECR_REGISTRY=$(aws ecr describe-registry --query 'registryId' --output text).dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com - - docker manifest create \ - $ECR_REGISTRY/${{ env.ECR_REPOSITORY }}:latest \ - $ECR_REGISTRY/${{ env.ECR_REPOSITORY }}:latest-amd64 \ - $ECR_REGISTRY/${{ env.ECR_REPOSITORY }}:latest-arm64 - - docker manifest push $ECR_REGISTRY/${{ env.ECR_REPOSITORY }}:latest - - echo "✅ Multi-arch manifest pushed: $ECR_REGISTRY/${{ env.ECR_REPOSITORY }}:latest" diff --git a/.github/workflows/dockerhub-backend.yml b/.github/workflows/dockerhub-backend.yml index cd23f74c..6634caba 100644 --- a/.github/workflows/dockerhub-backend.yml +++ b/.github/workflows/dockerhub-backend.yml @@ -1,13 +1,12 @@ name: Build and Push Backend Docker Image (Docker Hub) on: - push: - branches: - - main - - dockerhub-2 + pull_request: + types: + - closed paths: - - 'server/**' - - '.github/workflows/dockerhub-backend.yml' + - "server/**" + - ".github/workflows/dockerhub-backend.yml" workflow_dispatch: env: @@ -17,6 +16,10 @@ env: jobs: build-and-push: runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + (github.event.pull_request.merged == true && + startsWith(github.event.pull_request.head.ref, 'release-please--branches--')) permissions: contents: read diff --git a/.github/workflows/dockerhub-frontend.yml b/.github/workflows/dockerhub-frontend.yml index 2dc25f42..a55fe656 100644 --- a/.github/workflows/dockerhub-frontend.yml +++ b/.github/workflows/dockerhub-frontend.yml @@ -1,13 +1,12 @@ name: Build and Push Frontend Docker Image on: - push: - branches: - - main - - dockerhub-2 + pull_request: + types: + - closed paths: - - 'www/**' - - '.github/workflows/dockerhub-frontend.yml' + - "www/**" + - ".github/workflows/dockerhub-frontend.yml" workflow_dispatch: env: @@ -17,6 +16,10 @@ env: jobs: build-and-push: runs-on: ubuntu-latest + if: | + github.event_name == 'workflow_dispatch' || + (github.event.pull_request.merged == true && + startsWith(github.event.pull_request.head.ref, 'release-please--branches--')) permissions: contents: read @@ -41,6 +44,7 @@ jobs: type=ref,event=branch type=sha,prefix={{branch}}- type=raw,value=latest,enable={{is_default_branch}} + github-token: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -55,4 +59,12 @@ jobs: labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max - platforms: linux/amd64,linux/arm64 \ No newline at end of file + platforms: linux/amd64,linux/arm64 + + - name: Trigger Coolify deployment + if: success() + run: | + curl -X POST "${{ secrets.COOLIFY_WEBHOOK_URL }}" \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer ${{ secrets.COOLIFY_WEBHOOK_TOKEN }}" \ + -f || (echo "Failed to trigger Coolify deployment" && exit 1) diff --git a/.gitignore b/.gitignore index f3249991..0d2121b4 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ CLAUDE.local.md www/.env.development www/.env.production .playwright-mcp +.secrets diff --git a/.secrets.example b/.secrets.example new file mode 100644 index 00000000..22e94406 --- /dev/null +++ b/.secrets.example @@ -0,0 +1,22 @@ +# Example secrets file for GitHub Actions workflows +# Copy this to .secrets and fill in your values +# These secrets should be configured in GitHub repository settings: +# Settings > Secrets and variables > Actions + +# DockerHub Configuration (required for frontend and backend deployment) +# Create a Docker Hub access token at https://hub.docker.com/settings/security +# Username: monadicalsas +DOCKERHUB_TOKEN=your-dockerhub-access-token + +# GitHub Token (required for frontend and backend deployment) +# Used by docker/metadata-action for extracting image metadata +# Can use the default GITHUB_TOKEN or create a personal access token +GITHUB_TOKEN=your-github-token-or-use-default-GITHUB_TOKEN + +# Coolify Deployment Webhook (required for frontend deployment) +# Used to trigger automatic deployment after image push +COOLIFY_WEBHOOK_URL=https://app.monadical.io/api/v1/deploy?uuid=your-uuid&force=false +COOLIFY_WEBHOOK_TOKEN=your-coolify-webhook-token + +# Optional: GitHub Actions Cache Token (for local testing with act) +GHA_CACHE_TOKEN=your-github-token-or-empty diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 9b032e40..72f404c8 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -3,10 +3,7 @@ services: web: - build: - context: ./www - dockerfile: Dockerfile - image: reflector-frontend:latest + image: monadicalsas/reflector-frontend:latest environment: - KV_URL=${KV_URL:-redis://redis:6379} - SITE_URL=${SITE_URL} @@ -36,4 +33,4 @@ services: - redis_data:/data volumes: - redis_data: \ No newline at end of file + redis_data: diff --git a/www/package.json b/www/package.json index f4412db0..63e68014 100644 --- a/www/package.json +++ b/www/package.json @@ -31,7 +31,7 @@ "ioredis": "^5.7.0", "jest-worker": "^29.6.2", "lucide-react": "^0.525.0", - "next": "^15.5.3", + "next": "^15.5.7", "next-auth": "^4.24.7", "next-themes": "^0.4.6", "nuqs": "^2.4.3", diff --git a/www/pnpm-lock.yaml b/www/pnpm-lock.yaml index 92667b7e..f33f0b6c 100644 --- a/www/pnpm-lock.yaml +++ b/www/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: version: 0.2.3(@fortawesome/fontawesome-svg-core@6.7.2)(react@18.3.1) "@sentry/nextjs": specifier: ^10.11.0 - version: 10.11.0(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1)(webpack@5.101.3) + version: 10.11.0(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(next@15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1)(webpack@5.101.3) "@tanstack/react-query": specifier: ^5.85.9 version: 5.85.9(react@18.3.1) @@ -62,17 +62,17 @@ importers: specifier: ^0.525.0 version: 0.525.0(react@18.3.1) next: - specifier: ^15.5.3 - version: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) + specifier: ^15.5.7 + version: 15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) next-auth: specifier: ^4.24.7 - version: 4.24.11(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 4.24.11(next@15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) nuqs: specifier: ^2.4.3 - version: 2.4.3(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1) + version: 2.4.3(next@15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1) openapi-fetch: specifier: ^0.14.0 version: 0.14.0 @@ -1184,10 +1184,10 @@ packages: integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==, } - "@next/env@15.5.3": + "@next/env@15.5.7": resolution: { - integrity: sha512-RSEDTRqyihYXygx/OJXwvVupfr9m04+0vH8vyy0HfZ7keRto6VX9BbEk0J2PUk0VGy6YhklJUSrgForov5F9pw==, + integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==, } "@next/eslint-plugin-next@15.5.3": @@ -1196,73 +1196,73 @@ packages: integrity: sha512-SdhaKdko6dpsSr0DldkESItVrnPYB1NS2NpShCSX5lc7SSQmLZt5Mug6t2xbiuVWEVDLZSuIAoQyYVBYp0dR5g==, } - "@next/swc-darwin-arm64@15.5.3": + "@next/swc-darwin-arm64@15.5.7": resolution: { - integrity: sha512-nzbHQo69+au9wJkGKTU9lP7PXv0d1J5ljFpvb+LnEomLtSbJkbZyEs6sbF3plQmiOB2l9OBtN2tNSvCH1nQ9Jg==, + integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==, } engines: { node: ">= 10" } cpu: [arm64] os: [darwin] - "@next/swc-darwin-x64@15.5.3": + "@next/swc-darwin-x64@15.5.7": resolution: { - integrity: sha512-w83w4SkOOhekJOcA5HBvHyGzgV1W/XvOfpkrxIse4uPWhYTTRwtGEM4v/jiXwNSJvfRvah0H8/uTLBKRXlef8g==, + integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==, } engines: { node: ">= 10" } cpu: [x64] os: [darwin] - "@next/swc-linux-arm64-gnu@15.5.3": + "@next/swc-linux-arm64-gnu@15.5.7": resolution: { - integrity: sha512-+m7pfIs0/yvgVu26ieaKrifV8C8yiLe7jVp9SpcIzg7XmyyNE7toC1fy5IOQozmr6kWl/JONC51osih2RyoXRw==, + integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@next/swc-linux-arm64-musl@15.5.3": + "@next/swc-linux-arm64-musl@15.5.7": resolution: { - integrity: sha512-u3PEIzuguSenoZviZJahNLgCexGFhso5mxWCrrIMdvpZn6lkME5vc/ADZG8UUk5K1uWRy4hqSFECrON6UKQBbQ==, + integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@next/swc-linux-x64-gnu@15.5.3": + "@next/swc-linux-x64-gnu@15.5.7": resolution: { - integrity: sha512-lDtOOScYDZxI2BENN9m0pfVPJDSuUkAD1YXSvlJF0DKwZt0WlA7T7o3wrcEr4Q+iHYGzEaVuZcsIbCps4K27sA==, + integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@next/swc-linux-x64-musl@15.5.3": + "@next/swc-linux-x64-musl@15.5.7": resolution: { - integrity: sha512-9vWVUnsx9PrY2NwdVRJ4dUURAQ8Su0sLRPqcCCxtX5zIQUBES12eRVHq6b70bbfaVaxIDGJN2afHui0eDm+cLg==, + integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@next/swc-win32-arm64-msvc@15.5.3": + "@next/swc-win32-arm64-msvc@15.5.7": resolution: { - integrity: sha512-1CU20FZzY9LFQigRi6jM45oJMU3KziA5/sSG+dXeVaTm661snQP6xu3ykGxxwU5sLG3sh14teO/IOEPVsQMRfA==, + integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==, } engines: { node: ">= 10" } cpu: [arm64] os: [win32] - "@next/swc-win32-x64-msvc@15.5.3": + "@next/swc-win32-x64-msvc@15.5.7": resolution: { - integrity: sha512-JMoLAq3n3y5tKXPQwCK5c+6tmwkuFDa2XAxz8Wm4+IVthdBZdZGh+lmiLUHg9f9IDwIQpUjp+ysd6OkYTyZRZw==, + integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==, } engines: { node: ">= 10" } cpu: [x64] @@ -6863,10 +6863,10 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.5.3: + next@15.5.7: resolution: { - integrity: sha512-r/liNAx16SQj4D+XH/oI1dlpv9tdKJ6cONYPwwcCC46f2NjpaRWY+EKCzULfgQYV6YKXjHBchff2IZBSlZmJNw==, + integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==, } engines: { node: ^18.18.0 || ^19.8.0 || >= 20.0.0 } hasBin: true @@ -9877,34 +9877,34 @@ snapshots: "@tybys/wasm-util": 0.10.0 optional: true - "@next/env@15.5.3": {} + "@next/env@15.5.7": {} "@next/eslint-plugin-next@15.5.3": dependencies: fast-glob: 3.3.1 - "@next/swc-darwin-arm64@15.5.3": + "@next/swc-darwin-arm64@15.5.7": optional: true - "@next/swc-darwin-x64@15.5.3": + "@next/swc-darwin-x64@15.5.7": optional: true - "@next/swc-linux-arm64-gnu@15.5.3": + "@next/swc-linux-arm64-gnu@15.5.7": optional: true - "@next/swc-linux-arm64-musl@15.5.3": + "@next/swc-linux-arm64-musl@15.5.7": optional: true - "@next/swc-linux-x64-gnu@15.5.3": + "@next/swc-linux-x64-gnu@15.5.7": optional: true - "@next/swc-linux-x64-musl@15.5.3": + "@next/swc-linux-x64-musl@15.5.7": optional: true - "@next/swc-win32-arm64-msvc@15.5.3": + "@next/swc-win32-arm64-msvc@15.5.7": optional: true - "@next/swc-win32-x64-msvc@15.5.3": + "@next/swc-win32-x64-msvc@15.5.7": optional: true "@nodelib/fs.scandir@2.1.5": @@ -10684,7 +10684,7 @@ snapshots: "@sentry/core@8.55.0": {} - "@sentry/nextjs@10.11.0(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1)(webpack@5.101.3)": + "@sentry/nextjs@10.11.0(@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0))(next@15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1)(webpack@5.101.3)": dependencies: "@opentelemetry/api": 1.9.0 "@opentelemetry/semantic-conventions": 1.37.0 @@ -10698,7 +10698,7 @@ snapshots: "@sentry/vercel-edge": 10.11.0 "@sentry/webpack-plugin": 4.3.0(webpack@5.101.3) chalk: 3.0.0 - next: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) + next: 15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) resolve: 1.22.8 rollup: 4.50.1 stacktrace-parser: 0.1.11 @@ -14093,13 +14093,13 @@ snapshots: neo-async@2.6.2: {} - next-auth@4.24.11(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-auth@4.24.11(next@15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: "@babel/runtime": 7.28.2 "@panva/hkdf": 1.2.1 cookie: 0.7.2 jose: 4.15.9 - next: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) + next: 15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) oauth: 0.9.15 openid-client: 5.7.1 preact: 10.27.0 @@ -14113,9 +14113,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0): + next@15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0): dependencies: - "@next/env": 15.5.3 + "@next/env": 15.5.7 "@swc/helpers": 0.5.15 caniuse-lite: 1.0.30001734 postcss: 8.4.31 @@ -14123,14 +14123,14 @@ snapshots: react-dom: 18.3.1(react@18.3.1) styled-jsx: 5.1.6(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react@18.3.1) optionalDependencies: - "@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 + "@next/swc-darwin-arm64": 15.5.7 + "@next/swc-darwin-x64": 15.5.7 + "@next/swc-linux-arm64-gnu": 15.5.7 + "@next/swc-linux-arm64-musl": 15.5.7 + "@next/swc-linux-x64-gnu": 15.5.7 + "@next/swc-linux-x64-musl": 15.5.7 + "@next/swc-win32-arm64-msvc": 15.5.7 + "@next/swc-win32-x64-msvc": 15.5.7 "@opentelemetry/api": 1.9.0 sass: 1.90.0 sharp: 0.34.3 @@ -14159,12 +14159,12 @@ snapshots: dependencies: path-key: 3.1.1 - nuqs@2.4.3(next@15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1): + nuqs@2.4.3(next@15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0))(react@18.3.1): dependencies: mitt: 3.0.1 react: 18.3.1 optionalDependencies: - next: 15.5.3(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) + next: 15.5.7(@babel/core@7.28.3)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.90.0) oauth@0.9.15: {}